通信工程方向综合设计
附录
附录1
图1 符合条件,LED灯亮起
图2 未达到条件,LED灯灭
18
通信工程方向综合设计
附录2
Keil程序: #include
#define uchar unsigned char #define uint unsigned int unsigned char dispcount; sbit a=P1^0;//段控制 sbit b=P1^1;//位控制
sbit LeDen=P1^2;//LED灯控制端 sbit Line=P1^3;//点阵行控制端
sbit rst=P3^4;//DS1302复位端,低电平关闭 sbit SDA=P3^2; sbit SCL=P3^3; Unsignedchar
Duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar tempdata[8]; void Delay(uint z) { }
//////////启动总线//////// void Start() {
//延时函数延时1ms
///////延时函数//////
uchar x,y; for(x=0;x SDA=1; SCL=1; //时钟保持高,数据线从高到低一次跳变,I2C通信开始 Delay(0); SDA=0; Delay(0); SCL=0; 19 通信工程方向综合设计 } //////////结束总线/////////// void Stop() { } //////非应答函数///////// void Noack() 程结束 { } void Ack() 束 { } /////////数据发送函数////// void Send(uchar c) { SDA=0; SCL=1; //时钟保持高,数据线从低到高一次跳变,I2C通信停止 Delay(0); SDA=1; Delay(0); SCL=0; // 函数功能: 从机发送非应答位子程序,迫使数据传输过 SDA=1; SCL=1; Delay(0); Delay(0); SCL=0; // 函数功能: 主机应答位检查子程序,迫使数据传输过程结 SDA=0; Delay(0); SCL=1; Delay(0); SCL=0; uchar bite; 20 通信工程方向综合设计 } for(bite=0;bite<8;bite++) { if((c< // 向SDA上发送一位数据字节, 共八位 // 若要发送的数据最高位为1则 发送位1 // 传送位0 } ///////接收函数/////////// uchar Rec() { } //////////显示函数////////////// 21 uchar byte,bite; SDA=1; { SCL=0; Delay(0); SCL=1; Delay(0); byte<<=1; if(SDA==1)byte+=1; // 若接收到的位为1,则数据的最后一位置1 } SCL=0; //结束接收 Delay(0); return(byte); //从SDA线上读取上一数据字节,共八位 for(bite=0;bite<8;bite++) 通信工程方向综合设计 void Display(unsigned char FirstBit,unsigned char Num) { static uchar i=0; P0=0x00 ; //数码管消隐 a=1; Delay(0); P0=0x00; b=1; Delay(0); P0=0x00; a=0; P0=Weima[i+FirstBit]; b=0; P0=0x00; a=1; P0=tempdata[i]; Delay(0); a=0; //缓存数据 i++; if(i==Num) i=0; } ///////////读取数值//////// uchar Read(uchar AI) { uchar z; Start(); Send(0x90); Ack(); Send(0x40|AI); //括号中的参数AI数值从0--3为四路AD的地址,通过 Ack(); Start(); Send(0x91); 22 改变该参数可以改变输入通道