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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求大神幫忙看一下lcd1602程序存在的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:251225 發(fā)表于 2017-11-19 22:25 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式



  1. #include <reg52.h>
  2. # include <intrins.h>
  3. #define uchar unsigned char   
  4. #define uint unsigned int
  5. sbit   io = P1^0;   
  6. sbit  rs = P2^0;   
  7. sbit  rw = P2^1;   
  8. sbit   ep = P2^2;   
  9. uchar data_byte ;
  10. uchar RH,RL,TH,TL;
  11. typedef bit BOOL;//此聲明一個布爾型變量即真或假


  12. BOOL lcd_bz()//測試lcd忙碌狀態(tài)返回值為布爾型數(shù)值真或假'1'.'0'  

  13. {

  14.         BOOL result;
  15.   rs=0;         
  16.   rw=1;
  17.   ep=1;
  18.   _nop_();
  19.   _nop_();
  20.   _nop_();
  21.   _nop_();
  22.   result = (BOOL)(P0&0x80);
  23.   ep=0;
  24.   result ;

  25. }   


  26. void delay(uchar ms) //延時模塊//

  27. {

  28.   uchar i;

  29.   while(ms--)                 

  30.   for(i=0;i<100;i++);

  31. }



  32. void delay1()//一個for循環(huán)大概需要8個多機(jī)器周期一個機(jī)器周期為1us晶振為12MHz也就是說本函數(shù)延時8us多此延時函數(shù)必須德稍微精確一點(diǎn)

  33. {

  34.   uchar i;

  35.   for(i=0;i<1;i++);

  36. }

  37. void write_com(uchar com)//寫指令//

  38. {
  39.         

  40.   while (lcd_bz());
  41.   rs=0;
  42.   rw=0;
  43.   ep=0;
  44.   _nop_();
  45.   _nop_();
  46.   P0=com;
  47.   _nop_();
  48.   _nop_();
  49.   _nop_();
  50.   _nop_();
  51.   ep=1;
  52.   _nop_();
  53.   _nop_();
  54.   _nop_();
  55.   _nop_();
  56.   ep=0;

  57. }


  58. void write_addr(uchar addr)//寫地址//

  59. {

  60.   write_com(addr+0x80);//LCD第一行的首地址為0x80第二行的首地址為0x80+0x40=0xc0

  61. }



  62. void write_byte(uchar dat) //寫數(shù)據(jù)//

  63. {

  64.   while (lcd_bz());
  65.   rs=1;
  66.   rw=0;
  67.   ep=0;
  68.   _nop_();
  69.   _nop_();
  70.   P0=dat ;
  71.   _nop_();
  72.   _nop_();
  73.   _nop_();
  74.   _nop_();
  75.   ep=1;
  76.   _nop_();
  77.   _nop_();
  78.   _nop_();
  79.   _nop_();
  80.   ep=0;

  81. }


  82. void lcd_init()   //液晶初始化
  83. {
  84.   ep=0;
  85.   rw=0;    //只寫不讀
  86.   write_com(0x38);   //顯示模式設(shè)置,設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
  87.   delay(2);
  88.   write_com(0x0c);   //顯示開關(guān)及光標(biāo)設(shè)置
  89.   delay(2);
  90.   write_com(0x06);  //讀一個字符后地址指針加一
  91.   delay(2);
  92.   write_com(0x01);   //清屏
  93.   delay(2);
  94. }


  95. void display(uchar addr,uchar q)//在某一地址上顯示內(nèi)容adder表示的是地址偏移量q表示顯示的字符或數(shù)字//

  96. {

  97.   delay(10);   

  98.         write_addr(addr);

  99.   write_byte(q);

  100.   delay(1);//修改此時間?梢愿淖僉CD上數(shù)值跳變的數(shù)度
  101.         
  102. }



  103.         
  104.         
  105. void start()//開始信號

  106. {

  107.   io=1;

  108.   delay1();

  109.   io=0;

  110.   delay(25);// 主機(jī)把總線拉低必須大于18ms保證DHT11能檢測到起始信號

  111.   io=1;    //發(fā)送開始信號結(jié)束后拉高電平延時20-40us

  112.   delay1();//以下三個延時函數(shù)差不多為24us符合要求

  113.   delay1();

  114.   delay1();

  115. }


  116. uchar receive_byte()//接收一個字節(jié)//

  117. {

  118.   uchar i,temp;

  119.   for(i=0;i<8;i++)//接收8bit的數(shù)據(jù)

  120.   {

  121.          while(!io);//等待50us的低電平開始信號結(jié)束

  122.          delay1();//開始信號結(jié)束之后延時26us-28us以下三個延時函數(shù)

  123.          delay1();

  124.          delay1();
  125.                
  126.                 delay1();
  127.                 delay1();
  128.                 delay1();
  129.                 delay1();

  130.          temp=0;//時間為26us-28us表示接收的為數(shù)據(jù)'0'
  131.                         delay1();
  132.                 delay1();
  133.                 delay1();
  134.                 delay1();
  135.                 delay1();
  136.                

  137.          if(io==1)

  138.          temp=1; //如果26us-28us之后還為高電平則表示接收的數(shù)據(jù)為'1'

  139.   data_byte<<=1;//接收的數(shù)據(jù)為高位在前右移
  140.         
  141.         data_byte|=temp;

  142.   }
  143.          return data_byte;

  144. }


  145. void receive()//接收數(shù)據(jù)//

  146. {

  147.   uchar T_H,T_L,R_H,R_L,check,num_check,i;

  148.   start();//開始信號//

  149.   io=1;   //主機(jī)設(shè)為輸入判斷從機(jī)DHT11響應(yīng)信號

  150.   if(!io)//判斷從機(jī)是否有低電平響應(yīng)信號//

  151.   {  
  152.         while(!io);//判斷從機(jī)發(fā)出 80us 的低電平響應(yīng)信號是否結(jié)束//

  153.         while(io);//判斷從機(jī)發(fā)出 80us 的高電平是否結(jié)束如結(jié)束則主機(jī)進(jìn)入數(shù)據(jù)接收狀態(tài)

  154.         R_H=receive_byte();//濕度高位

  155.          R_L=receive_byte();//濕度低位

  156.         T_H=receive_byte();//溫度高位

  157.         T_L=receive_byte();//溫度低位

  158.         check=receive_byte();//校驗(yàn)位

  159.         io=0; //當(dāng)最后一bit數(shù)據(jù)接完畢后從機(jī)拉低電平50us//

  160.         for(i=0;i<7;i++)//差不多50us的延時

  161.         delay1();

  162.         io=1;//總線由上拉電阻拉高進(jìn)入空閑狀態(tài)

  163.         num_check=R_H+R_L+T_H+T_L;

  164.         if(num_check==check)//判斷讀到的四個數(shù)據(jù)之和是否與校驗(yàn)位相同

  165.          {

  166.    RH=R_H;

  167.    RL=R_L;

  168.    TH=T_H;

  169.    TL=T_L;

  170.    check=num_check;

  171.          }

  172.   }

  173. }


  174. void main()//主函數(shù)模塊//

  175. {

  176.   lcd_init();//初始化LCD

  177.   while(1)

  178.   {

  179.     receive();//接收數(shù)據(jù)

  180. display(0x00,'R');//LCD的第一行顯示

  181. display(0x01,':');

  182. display(0x02,RH/10+0x30); //0x30表示帶字庫的LCD1602中0x30的位置放有數(shù)字0RH/10+0x30即表示濕度的十位數(shù)字在字庫RH/10+0x30的位置處放著

  183. display(0x03,RH%10+0x30);

  184. display(0X04,'%');

  185. display(0x40,'T');//LCD的第二行顯示

  186. display(0x41,':');

  187. display(0x42,TH/10+0x30);

  188. display(0x43,TH%10+0x30);

  189. display(0x44,0xdf);//以下兩個是溫度單位的處理

  190. display(0x45,0x43);

  191.   }
  192. }
復(fù)制代碼

無標(biāo)題.png (126.08 KB, 下載次數(shù): 32)

無標(biāo)題.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区久久久久久久久 | 最新日韩在线视频 | 狠狠影院 | 日韩久久久久 | 欧美aaaaaaaaaa| 中文字幕综合 | 黄色免费在线观看网址 | 国产高清视频一区 | 久久精品国产久精国产 | 国产黄色在线观看 | 午夜精品一区二区三区在线播放 | 欧美精品欧美精品系列 | 欧美色综合网 | 欧美成人a | 天天久久 | 在线免费观看黄色 | 国产视频1 | 欧美激情黄色 | 天天影视网天天综合色在线播放 | 在线成人 | 日韩在线视频一区 | 久久九九影视 | 日韩一区中文字幕 | 涩涩鲁亚洲精品一区二区 | 久久久久久久久久久久一区二区 | 国产精品免费av | 成人免费观看男女羞羞视频 | 国产片侵犯亲女视频播放 | 东京久久| 久久综合九色综合欧美狠狠 | 国产精品123区 | 亚洲一区中文字幕 | 国产精品视频中文字幕 | 国产精品99久久久久久人 | 91性高湖久久久久久久久_久久99 | 亚洲成人一区 | 久久亚洲一区二区 | 国产一区二区三区久久久久久久久 | 欧美日韩三级 | 日韩中文字幕2019 | 亚洲一区二区中文字幕在线观看 |