函数信号发生器的设计与实现(1) - 图文(3)

2019-09-01 17:17

I2C总线协议 主函数

初始化 根据相应的wave值进入相应的if语句 wave=1 wave=2 wave=3 输出三角波液晶显示 输出正弦波液晶显示 输出方波液晶显示 图(7)软件的流程图

部分程序代码: hnh.c文件:

#include #include #include\

#define uchar unsigned char #define uint unsigned int #define _Nop() _nop_()

#define AddW 0x90 #define AddR 0x91

sbit SDA=P2^0; sbit SCL=P2^1;

sbit key1=P3^2; sbit key2=P3^3; sbit key3=P3^4; sbit key4=P3^5; sbit key5=P3^6;

bit back;

uchar wave=0; uchar f=1; uchar A1=10; uchar A2=1; uint num=0;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,};

unsigned char code fangbo[]=

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,} ;

unsigned char code sanjiao[]

={ 0,4,8,12,16,20,24,28,32,36,40,44,48,52,56, 60,64,68,72,76,80,84,88,92,96,100,104, 108,112,116,120,124,128,124,120,116,112, 108,104,100,96,92,88,84,80,76,72,68,64,

60,56,52,48,44,40,36,32,28,24,20,16,12,8,4,0,};

unsigned char code sin[]

={135,145,158,167,176,188,199,209,218,226, 234,240,245,249,252,254,254,253,251,247, 243,237,230,222,213,204,193,182,170,158, 146,133,121,108,96,84,72,61,50,41,32,24, 17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66, 78,90,102,114,128 } ;

void delay1(uint z) {

uint x,y; for(x=z;x>0;x--) for(y=60;y>0;y--); }

void Start_I2c()

共阴 //

{

SDA=1; _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); _Nop(); SDA=0; _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; _Nop(); _Nop();

} //结束总线

void Stop_I2c() {

SDA=0; _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SDA=1; _Nop(); _Nop(); _Nop(); _Nop(); }

void SendByte(uchar c) {

unsigned char Bit; for(Bit=0;Bit<8;Bit++) { if((c<

//发送字节函数 //要传送的数据长度为8位 //判断发送位

SDA=0; _Nop(); SCL=1; //置时钟线为高 ,通知被控器开始接收数据位 _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; } _Nop(); _Nop(); SDA=1; _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); if(SDA==1) back=0; else back=1; SCL=0; _Nop(); _Nop(); }

bit WriteDAC(uchar dat, uchar num) {

unsigned char i; Start_I2c(); SendByte(AddW); if(back==0) return(0); SendByte(0x40); if(back==0) return(0); for(i=0;i

Stop_I2c(); }

void keys() { if(key1==0) { delay1(10); if(key1==0) { num++; while(!key1); wave++; if(wave==4) { wave=1; num=1; } P1=table[num]; } } }

void keys1() { if(key2==0) { delay1(10); if(key2==0) { while(!key2); f++; if(f>500) f=500; } } if(key3==0) { delay1(10); if(key3==0) { while(!key3); if(f>1) f--;


函数信号发生器的设计与实现(1) - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅谈高中语文自主创新课堂的建构

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: