PCF8591模数转换及1602LCD显示应用程序.doc

PCF8591模数转换及1602LCD显示应用程序.doc

ID:59783421

大小:28.00 KB

页数:7页

时间:2020-11-24

PCF8591模数转换及1602LCD显示应用程序.doc_第1页
PCF8591模数转换及1602LCD显示应用程序.doc_第2页
PCF8591模数转换及1602LCD显示应用程序.doc_第3页
PCF8591模数转换及1602LCD显示应用程序.doc_第4页
PCF8591模数转换及1602LCD显示应用程序.doc_第5页
资源描述:

《PCF8591模数转换及1602LCD显示应用程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include#include#defineucharunsignedchar#defineuintunsignedint#defineDelay4us(){_nop_();_nop_();_nop_();_nop_();}//引脚定义sbitLCD_RS=P2^0;sbitLCD_RW=P2^1;sbitLCD_EN=P2^2;//延时子程序voidDelayMS(intms){uchart;while(ms--)for(t=0;t<120;t++);}//LCD忙状态检测bitLCD_Busy_Che

2、ck(){bitResult;LCD_RS=0;LCD_RW=1;LCD_EN=1;Delay4us();Result=(bit)(P0&0x80);LCD_EN=0;returnResult;}//写LCD命令voidLCD_Write_Command(ucharcmd){//while(LCD_Busy_Check());DelayMS(5);LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P0=cmd;Delay4us();LCD_EN=1;Delay4us();LCD_EN=0;}//写LCD数据vo

3、idLCD_Write_Data(uchardat){//while(LCD_Busy_Check());//LCD是否忙?DelayMS(5);LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;Delay4us();LCD_EN=1;Delay4us();LCD_EN=0;}//LCD初始化voidLCD_Initialise(){LCD_Write_Command(0x38);DelayMS(5);//设置16*2行显示,5*7点阵,8位数据接口LCD_Write_Command(0x0C);DelayMS(5);//开显示

4、LCD_Write_Command(0x06);DelayMS(5);//地址指针加1,光标加1,整屏显示不移动LCD_Write_Command(0x01);DelayMS(5);//指针清零,显示清零}sbitSCL=P1^0;sbitSDA=P1^1;ucharRecv_Buffer[4];//数据接收缓冲(每通道1字节)uintVoltage[]={'0','0','0'};//数据分解为电压x.xxbitbdataIIC_ERROR;//设置I2C错误标志位ucharLCD_Line_1[]={"1-.V2-.V"};ucharLCD_

5、Line_2[]={"3-.V4-.V"};voidLCD_Set_Position(ucharpos){//设置LCD显示位置LCD_Write_Command(pos

6、0x80);}voidLCD_Display_A_Line(ucharLine_Addr,uchars[]){//显示一行uchari;LCD_Set_Position(Line_Addr);for(i=0;i<16;i++);LCD_Write_Data(s[i]);}//将模数转换后的值分解存入缓冲voidConvert_To_Voltage(ucharval){uchar

7、tmp;Voltage[2]=val/51+'0';//最大值为255,对应5伏电压,分度为255/5=51,一位整数tmp=val%51*10;Voltage[1]=tmp/51+'0';//第一位小数tmp=tmp%51+'0';Voltage[0]=tmp/51+'0';//第二位小数}//启动I2C总线voidIIC_Start(){SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;}//停止I2C总线voidIIC_Stop(){SDA=0;SCL=1;Delay4us();SDA=1;Dela

8、y4us();SCL=0;}//从机发送应答voidSlave_Ark(){SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;}//从机发送非应答voidSlave_NOArk(){SDA=1;SCL=1;Delay4us();SCL=0;SDA=0;}//发送一个字节voidIIC_SendByte(ucharwd){uchari;for(i=0;i<8;i++)//循环移入8位{SDA=(bit)(wd&0x80);_nop_();_nop_();SCL=1;Delay4us();SCL=0;wd<<1;}Delay4us

9、();SDA=1;SCL=1;Delay4us();//释放总线并准备读取应答IIC_ERROR=SDA;SCL=0;Delay4us(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。