资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
nOK西EH/P3C皿的QTDcmTW15弥?苏/RDJF3TFTJJJ2rrAii工Gtb51ME沏in匚NeCP8品0I|口AQ6arc.实物图三.程序代码(1).显示部分LCD1602程序a。头文件ififndefLCDH#defineLCD H/*当使用的是4位数据传输的时候定义*/*ddefineLCD16024PINS/* * * * * * *包含头文件* * * */#include#defineuintunsignedint#defineucharunsignedchar/*PIN口定义*#defineLCD1602DATAPINSP0sbitLCD1602_E=P2”sbitLCD1602_RW=P2A5;sbitLCD1602_RS=P2A6;* * * * */*函数声明*/*在51单片机12MHZ时钟下的延时函数voidDelay1us(uinta);/*LCD1602写入8位命令子函数/voidLcdWriteCom(ucharcom);/LCD1602写入8位数据子函数voidLcdWriteData(uchardat)/*LCD1602 初始化子程序*/voidLcdInit();endifb.c程序文件#includelcd.h/ * * * * * * * * * * * * * *函数名函数功能: 延时函数,延时延时1us输入输出* * * * * * * * * * * * */:Delay1usvoidDelay1us(uinta)uintb,c;forc=a;c0 ; c -)for(b=110;b0;b-)/* * * * * * * * * * * * * * * * * * * * * * * * * * *输入函数名函数功能输出* * * * * * * * * * *#ifndefLcdWriteCom: 向 LCD 写入一个字节的命令com* * * * * * * * * * * * * * * /LCD1602_4PINS/当没有定义这个LCD1602_4PINS 时/写入命令voidLcdWriteCom(ucharcom)LCD1602_E=0;LCD1602_RS=0;LCD1602_RW=0;LCD1602_DATAPINS=com;Delay1us(10);LCD1602_E=1;Delay1us(10);LCD1602_E=0;elsevoidLcdWriteCom(ucharcom)/写入命令LCD1602_E=0;LCD1602_RS=0;LCD1602_RW=0;LCD1602_DATAPINS=com;/由于4位的接线是接到P0口的高四位,所以传送高四位不用改Delay1us(10);LCD1602_E=1;Delay1us(10);LCD1602_E=0;Delay1us(10);LCD1602_DATAPINS=com4;Delay1us(10);LCD1602_E=1;Delay1us(10);LCD1602_E=0;#endif/* 函数名:LcdWriteData 函数功能:向LCD写入一个字节的数据 输入:dat* 输出:无* */#ifndefLCD1602_4PINSvoidLcdWriteData(uchardat)/写入数据LCD1602_E=0;LCD1602_RS=1;LCD1602_RW=0;LCD1602_DATAPINS=dat;Delay1us(10);LCD1602_E=1;Delay1us(10);LCD1602_E=0;elsevoid LcdWriteData(uchar dat) LCD1602_E=0;LCD1602_RS=1;LCD1602_RW=0 ;LCD1602_DATAPINS=dat ; 位不用改/写入数据/由于4 位的接线是接到P0 口的高四位,所以传送高四Delay1us(10) ;LCD1602_E=1 ;Delay1us(10 ) ;LCD1602_E=0;LCD1602_DATAPINS=dat 4;Delay1us(10);LCD1602_E=1 ;Delay1us ( 10) ; LCD1602_E=0;#endif/ * * * * * * * * * * * * * * * * * * * * * * * *函数名 函数功能输入输出* * *: LcdInit ): 初始化:无: 无*0LCD 屏* * * * * */#ifndefLCD1602_4PINSvoid LcdInit()LcdWriteCom/LCD 初始化子程序LcdWriteComLcdWriteCom0x38)0x0c)0x06);LcdWriteCom(0x01 ) ;LcdWriteCom(0x80) ; else/开显示/开显示不显示光标/ 写一个指针加1/清屏/设置数据指针起点void LcdInit ( )LcdWriteCom(0x32) ;LcdWriteCom ( 0x28);LcdWriteCom ( 0x0c ) ;/LCD 初始化子程序/将 8 位总线转为 4 位总线/在四位线下的初始化/开显示不显示光标LcdWriteCom(0x06);/写一个指针加1LcdWriteCom(0x01);/清屏LcdWriteCom(0x80);/设置数据指针起点#endif(2).A/D转换部分pcf8591a8591的头文件# ifndef_I2C_H_# define_I2C_H_# includereg51。hsbitSCL=P2A1;sbitSDA=P2A0;voidDelay10us();/延时voidI2cStart();voidI2cStop();unsignedcharI2cSendByte(unsignedchardat);unsignedcharI2cReadByte();endifb8591的c程序文件includei2c。h/ * * * * * * * * * * * * * * * * * * * 函数名:Delay1us()* 函数功能:延时* 输入:无* 输出:无*voidDelay10us()unsignedchara,b;for(b=1;b0;b-)for(a=2;a0;a-);*函数名:I2cStart() 函数功能:起始信号:在SCL时钟信号在高电平期间SDA信号产生一个下降沿 输入:无 输出:无 备注:起始之后SDA和SCL都为0* * * * * */voidI2cStart()SDA=1;Delay10us();SCL=1;Delay10us();/建立时间是SDA保持时间4。7usSDA=0;Delay10us();/保持时间是4usSCL=0;Delay10us();* * * * * * * * * * * * * * * * * * * * * * 函数名:I2cStop()* 函数功能:终止信号:在SCL时钟信号高电平期间SDA信号产生一个上升沿* 输入:无* 输出:无备注:结束之后保持SDA和SCL都为1;表示总线空闲* * * * * * * */void I2cStop ( )SDA=0;Delay10us( );SCL=1
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号