久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3332|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

PCF8591模數(shù)轉(zhuǎn)換及1602LCD顯示應(yīng)用程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:283071 發(fā)表于 2018-3-29 11:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
PCF8591模數(shù)轉(zhuǎn)換及1602LCD顯示應(yīng)用程序

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define Delay4us(){_nop_();_nop_();_nop_();_nop_();}
  6. sbit LCD_RS=P2^2;
  7. sbit LCD_RW=P2^1;
  8. sbit LCD_EN=P2^0;
  9. sbit SCL=P1^0;                            //I2C時(shí)鐘引腳
  10. sbit SDA=P1^1;                            //I2C數(shù)據(jù)輸入輸出引腳
  11. uchar Recv_Buffer[4];                     //數(shù)據(jù)接收緩沖
  12. uint Voltage[]={'0','0','0','0','0','0'};         //數(shù)據(jù)分解為電壓x.xx
  13. bit bdata IIC_ERROR;                      //I2C錯(cuò)誤標(biāo)志位
  14. uchar LCD_Line_1[]={"DQ      .  ppm       "};
  15. //延時(shí)
  16. void delay(int ms)
  17. {
  18. uchar i;
  19. while(ms--) for(i=0;i<250;i++) Delay4us();
  20. }
  21. //LCD忙檢測(cè)
  22. bit LCD_Busy_Check()
  23. {
  24. bit Result;
  25. LCD_RS=0;LCD_RW=1;
  26. LCD_EN=1;Delay4us();Result=(bit)(P0&0x80);
  27. LCD_EN=0;
  28. return Result;
  29. }
  30. //寫指令
  31. void LCD_Write_Command(uchar cmd)
  32. {
  33. while(LCD_Busy_Check());
  34. LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();
  35. P0=cmd;Delay4us();
  36. LCD_EN=1;Delay4us();LCD_EN=0;
  37. }
  38. // 寫數(shù)據(jù)
  39. void LCD_Write_Data(uchar dat)
  40. {
  41. while(LCD_Busy_Check());
  42. LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;Delay4us();
  43. LCD_EN=1;Delay4us();LCD_EN=0;
  44. }
  45. //初始化
  46. void LCD_Initialise()
  47. {
  48. LCD_Write_Command(0x38);delay(5);
  49. LCD_Write_Command(0x0c);delay(5);
  50. LCD_Write_Command(0x06);delay(5);
  51. LCD_Write_Command(0x01);delay(5);
  52. LCD_Write_Command(0x03);delay(5);
  53. LCD_Write_Command(0x02);delay(5);
  54. }
  55. //設(shè)置顯示位置
  56. void LCD_Set_Position(uchar pos)
  57. {
  58. LCD_Write_Command(pos|0x80);
  59. }
  60. //顯示一行
  61. void LCD_Display_A_Line(uchar Line_Addr,uchar s[])
  62. {
  63. uchar i;
  64. LCD_Set_Position(Line_Addr);
  65. for(i=0;i<16;i++)LCD_Write_Data(s[i]);
  66. }
  67. // 將模數(shù)轉(zhuǎn)換后得到的值分解存入緩存
  68. void Convert_To_Voltage(uchar val)
  69. {
  70. uchar Tmp;                       //最大值為255,對(duì)應(yīng)5V
  71. Voltage[2]=val/100+'0';           //整數(shù)部分
  72. Voltage[3]=val/10%10+'0' ;
  73. Voltage[4]=val%10+'0' ;
  74. Tmp=val*10;                   // 第一位小數(shù)
  75. Voltage[1]=Tmp%10+'0';
  76. Tmp=Tmp*10;
  77. Voltage[0]=Tmp%10+'0';
  78. }
  79. //啟動(dòng)I2C總線
  80. void IIC_Start()
  81. {
  82. SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;
  83. }
  84. //停止I2C總線
  85. void IIC_Stop()
  86. {
  87. SDA=0;SCL=1;Delay4us();SDA=1; Delay4us();SCL=0;
  88. }
  89. // 從機(jī)發(fā)送應(yīng)答位
  90. void Slave_ACK()
  91. {
  92. SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;
  93. }
  94. // 從機(jī)發(fā)送非應(yīng)答位
  95. void Slave_NOACK()
  96. {
  97. SDA=1;SCL=1;Delay4us();SCL=0;SDA=0;
  98. }
  99. //發(fā)送一字節(jié)
  100. void IIC_SendByte(uchar wd)
  101. {
  102. uchar i;
  103. for(i=0;i<8;i++) //循環(huán)移入8位
  104. {
  105. SDA=(bit)(wd&0x80);_nop_();_nop_();
  106. SCL=1;Delay4us();SCL=0;wd<<=1;
  107. }
  108. Delay4us();
  109. SDA=1;                                 //釋放總線并準(zhǔn)備讀取應(yīng)答
  110. SCL=1;
  111. Delay4us();
  112. IIC_ERROR=SDA;                        //IIC_ERROR=1表示無應(yīng)答
  113. SCL=0;
  114. Delay4us();
  115. }
  116. //接收一字節(jié)
  117. uchar IIC_ReceiveByte()
  118. {
  119. uchar i,rd=0x00;
  120. for(i=0;i<8;i++)
  121. {
  122. SCL=1;rd<<=1;rd|=SDA;Delay4us();SCL=0;Delay4us();
  123. }
  124. SCL=0;Delay4us();
  125. return rd;
  126. }
  127. //連續(xù)讀入4路通道的A/D轉(zhuǎn)換結(jié)果并保存到Recv_Buffer
  128. void ADC_PCF8591(uchar CtrlByte)
  129. {
  130. uchar i;
  131. IIC_Start();
  132. IIC_SendByte(0x90);                         // 發(fā)送寫地址
  133. if(IIC_ERROR==1)return;
  134. // IIC_SendByte(CtrlByte);                  //發(fā)送控制字節(jié)
  135. //if(IIC_ERROR==1)return;
  136. IIC_Start();                               //重新發(fā)送開始命令
  137. IIC_SendByte(0x91);                        // 發(fā)送讀地址
  138. if(IIC_ERROR==1)return;
  139. IIC_ReceiveByte();                        //空讀一次,調(diào)整讀順序
  140. Slave_ACK();                             //收到一字節(jié)后發(fā)送一個(gè)應(yīng)答位
  141. for(i=0;i<4;i++)
  142. {
  143. Recv_Buffer[i++]=IIC_ReceiveByte();
  144. Slave_ACK();                          //收到一個(gè)字節(jié)后發(fā)送一個(gè)應(yīng)答位
  145. }
  146. Slave_NOACK();
  147. IIC_Stop();                          //收到一個(gè)字節(jié)后發(fā)送一個(gè)非應(yīng)答位
  148. }
  149. // 向 PCF8591發(fā)送1字節(jié)進(jìn)行AD轉(zhuǎn)換
  150. //主程序
  151. void main()
  152. {
  153. LCD_Initialise();
  154. while(1)
  155. {
  156. ADC_PCF8591(0x04);
  157. Convert_To_Voltage(Recv_Buffer[0]);
  158. LCD_Line_1[5]=Voltage[2];
  159. LCD_Line_1[6]=Voltage[3];
  160. LCD_Line_1[7]=Voltage[4];
  161. LCD_Line_1[9]=Voltage[1];
  162. LCD_Line_1[10]=Voltage[0];

  163. LCD_Display_A_Line(0x00, LCD_Line_1);
  164. }
  165. }



復(fù)制代碼

所有資料51hei提供下載:
PCF8591 LCD1602AD采集程序.zip (35.69 KB, 下載次數(shù): 46)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:241545 發(fā)表于 2018-4-2 16:41 | 只看該作者
謝謝………………………………
回復(fù)

使用道具 舉報(bào)

板凳
ID:472242 發(fā)表于 2019-2-5 01:07 | 只看該作者
收下了先,謝謝!

評(píng)分

參與人數(shù) 4黑幣 +120 收起 理由
yoxi + 15 很給力!
刀刀見紅 + 35
jinsheng7533967 + 35
Sawardeakar + 35

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:21069 發(fā)表于 2019-2-5 20:17 | 只看該作者
佩奇好可愛喲!哈哈哈!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲三级国产 | 一区二区三区不卡视频 | 欧美精品首页 | 欧美日韩一区在线观看 | 日韩欧美手机在线 | 老头搡老女人毛片视频在线看 | 伊人久久综合 | 亚洲高清视频在线观看 | 一级黄色裸片 | 九九九色 | 在线观看黄色电影 | 久久伦理中文字幕 | 一区二区日韩 | 久久精品国产久精国产 | 成人黄色电影在线播放 | 日韩成人免费 | 国产成人一区二 | 999免费视频 | 欧美黄色大片在线观看 | 久久九九网站 | 国产精久久久 | 久久高清 | 欧美日韩国产一区二区三区不卡 | 日韩精品一区二区三区中文在线 | 9191在线观看| 99久久婷婷国产综合精品 | 天天做日日做 | 97色在线视频 | 97超碰免费| 亚洲精品一区在线 | 91免费入口 | 嫩草视频在线免费观看 | 成人国产在线视频 | 成人在线免费视频 | 国产精品国产三级国产aⅴ无密码 | 日本欧美国产在线 | 日本亚洲欧美 | 久久久亚洲成人 | 中文字幕二区三区 | 99reav| 日韩视频在线免费观看 |