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

標(biāo)題: 單片機(jī)使用LCD1602接收串口數(shù)據(jù) [打印本頁(yè)]

作者: maomao12    時(shí)間: 2017-5-2 20:43
標(biāo)題: 單片機(jī)使用LCD1602接收串口數(shù)據(jù)
單片機(jī)使用LCD1602接收串口數(shù)據(jù)

  1. /*
  2. 晶振12MHz,波特率1200,
  3. 程序啟動(dòng)后單片機(jī)主動(dòng)發(fā)出Hello Server,
  4. PC使用串口助手應(yīng)答單片機(jī),
  5. 單片機(jī)收到數(shù)據(jù)后,不做任何修改返回PC。
  6. 使用LCD1602顯示單片機(jī)接受到的數(shù)據(jù)
  7. */
  8. #include<reg51.h>
  9. #define uchar unsigned char
  10. #define uint unsigned int
  11. uchar code data1[]="Hello Server";
  12. sbit EN = P3 ^ 4;                //液晶使能端
  13. sbit RS = P3 ^ 5;                        //液晶數(shù)據(jù)命令選擇端
  14. sbit RW = P3 ^ 6;                                //讀/寫(xiě)選擇端(H/L)

  15. uchar num;
  16. uchar count=0;
  17. char a;
  18. char old_CNT;
  19. char CNT = 0;
  20. bit flag;
  21. char temp[16];
  22. //作用:延時(shí) z ms
  23. //參數(shù):z
  24. //返回值:
  25. void delay(uint z)
  26. {
  27.         uint x, y;
  28.         for (x = z; x>0; x--)
  29.         for (y = 110; y>0; y--);
  30. }

  31. //作用:寫(xiě)命令
  32. //參數(shù):
  33. //返回值:
  34. void write_com(uchar com)
  35. {
  36.         RS = 0;        //命令選擇
  37.         RW = 0;
  38.         P0 = com;
  39.         delay(5);
  40.         EN = 1;        //使能E開(kāi)
  41.         delay(5);
  42.         EN = 0;        //使能E關(guān)
  43.         delay(5);
  44. }

  45. //作用:寫(xiě)數(shù)據(jù)
  46. //參數(shù):
  47. //返回值:
  48. void write_date(uchar date)
  49. {
  50.         RS = 1;        //數(shù)據(jù)選擇
  51.         RW = 0;
  52.         P0 = date;
  53.         delay(5);
  54.         EN = 1;        //使能E開(kāi)
  55.         delay(5);
  56.         EN = 0;        //使能E關(guān)
  57. }

  58. //作用:LCD初始化
  59. //參數(shù):
  60. //返回值:
  61. void init_LCD()
  62. {
  63.         EN = 0;
  64.         write_com(0x38);        //設(shè)置16x2顯示,5x7點(diǎn)陣,8位數(shù)據(jù)接口
  65.         write_com(0x0c);        //設(shè)置開(kāi)顯示,不顯示光標(biāo)
  66.         write_com(0x06);        //寫(xiě)一個(gè)字符后,地址指針加1
  67.         write_com(0x01);        //顯示清0,數(shù)據(jù)指針清0
  68.         write_com(0x80);
  69. }
  70. //作用:串口中斷初始化
  71. //參數(shù):
  72. //返回值:
  73. void init_Serial()
  74. {
  75.     SCON=0X50;        //工作方式1,允許接收
  76.         //SM0 = 0;
  77.         //SM1 = 1;
  78.         //REN = 1;
  79.     TMOD=0X20;        //定時(shí)器 工作方式2
  80.     TH1=TL1=230;//波特率為1200
  81.     EA=1;                                        //開(kāi)總中斷
  82.     TR1=1;                                //T1啟動(dòng)
  83.     SBUF=data1[count];
  84.     ES=1;                                    //開(kāi)串口
  85. }
  86. //作用:串口中斷服務(wù)程序
  87. //參數(shù):
  88. //返回值:
  89. void S_proc() interrupt 4
  90. {
  91.     if(TI)                //發(fā)送結(jié)束
  92.     {
  93.         TI=0;
  94.         if(count<12)
  95.         {
  96.             SBUF=data1[++count];
  97.         }
  98.     }
  99.     else                //接收結(jié)束
  100.     {
  101.         RI=0;
  102.         a=SBUF;                //存數(shù)據(jù)
  103.         SBUF=a;                //發(fā)送數(shù)據(jù)
  104.         while(!TI);        //等待發(fā)送完成
  105.                                 TI=0;
  106.                                 temp[CNT++]=a;
  107.                                 flag = 1;
  108.     }
  109. }
  110. //作用:主函數(shù)
  111. //參數(shù):
  112. //返回值:
  113. void main()
  114. {
  115.                 int i;
  116.                 init_Serial();
  117.                 init_LCD();
  118.     while(1)
  119.                 {
  120.                                 // LCD顯示
  121.                                 write_com(0x80);
  122.                                 if(flag)
  123.                                 {
  124.                                                 //write_com(0x01);
  125.                                                 for(i=0; i<CNT; i++)
  126.                                                 {
  127.                                                                 write_date(temp[i]);
  128.                                                                 // temp[i] = ' '; temp[i] != '\0'
  129.                                                                 delay(5);
  130.                                                 }
  131.                                 }
  132.                                 old_CNT = CNT;
  133.                                 delay(100);
  134.                                 if(old_CNT == CNT)
  135.                                 {
  136.                                                 CNT = 0;
  137.                                                 flag = 0;
  138.                                 }
  139.                 }
  140. }










復(fù)制代碼


LCD1602-SC.rar

54.36 KB, 下載次數(shù): 108, 下載積分: 黑幣 -5

含Proteus仿真


作者: wgb    時(shí)間: 2018-1-7 20:43
你的程序不能顯示啊
作者: maomao12    時(shí)間: 2019-4-17 10:12
wgb 發(fā)表于 2018-1-7 20:43
你的程序不能顯示啊

可以顯示啊,附件中有仿真,你運(yùn)行就可以看見(jiàn)了。如果是實(shí)物不能顯示的話,你調(diào)節(jié)一下LCD的對(duì)比度呢。
作者: naye    時(shí)間: 2019-10-28 19:27
maomao12 發(fā)表于 2019-4-17 10:12
可以顯示啊,附件中有仿真,你運(yùn)行就可以看見(jiàn)了。如果是實(shí)物不能顯示的話,你調(diào)節(jié)一下LCD的對(duì)比度呢。

樓主你好,下載了你的程序 運(yùn)行正常,但是我想請(qǐng)教一個(gè)問(wèn)題
  1.   old_CNT = CNT;
  2.                                 delay(100);
  3.                                 if(old_CNT == CNT)
  4.                                 {
  5.                                                 CNT = 0;
  6.                                                 flag = 0;
  7.                                 }
復(fù)制代碼


這段代碼當(dāng)中 old_CNT=CNT  然后再判斷的意思是什么沒(méi)看明白。這里如果不加這個(gè)直接延時(shí)以后就是CNT置0,可以 嗎?
作者: lihongquan123    時(shí)間: 2020-12-20 21:38
naye 發(fā)表于 2019-10-28 19:27
樓主你好,下載了你的程序 運(yùn)行正常,但是我想請(qǐng)教一個(gè)問(wèn)題

意思是  接收到的新數(shù)據(jù)如果與舊數(shù)據(jù)一樣,標(biāo)志位為0
作者: wwh2382    時(shí)間: 2020-12-22 21:45
不錯(cuò)!對(duì)串口初始化做了一點(diǎn)修改,在普中A5成功運(yùn)行
作者: 878615787    時(shí)間: 2020-12-23 22:46
大佬 這個(gè)51開(kāi)發(fā)板可以做嗎
作者: wwh2382    時(shí)間: 2020-12-24 21:02
878615787 發(fā)表于 2020-12-23 22:46
大佬 這個(gè)51開(kāi)發(fā)板可以做嗎

應(yīng)該可以,程序使用的功能、模塊都是常用開(kāi)發(fā)板具備的
作者: asdfqwerzxcv    時(shí)間: 2020-12-25 09:00
不錯(cuò)!對(duì)串口初始化做了一點(diǎn)修改,在普中A5成功運(yùn)行
作者: 失河    時(shí)間: 2021-6-10 21:22
在發(fā)送123456后如果之后發(fā)送222,就會(huì)顯示222456;
一點(diǎn)修改建議:
128行                                               //write_com(0x01);
這一句如果不注釋并且再加上一句將顯示光標(biāo)定在第一行的句子(write_com(0x80);)就可以在發(fā)送123456后發(fā)送222時(shí)正常顯示222;




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品久久影院 | 日本免费在线观看视频 | 97国产在线视频 | 国产精品久久久久久久久久三级 | 亚洲精品视频在线看 | 午夜在线免费观看 | 野狼在线社区2017入口 | 日韩高清成人 | 99久久精品免费看国产四区 | 五月婷婷导航 | 久久精品成人 | 国产精品一区二区欧美黑人喷潮水 | 欧美精品91 | 成人在线免费观看视频 | 亚洲免费一区 | 大伊人久久 | 亚洲国产精品精华素 | 精品成人69xx.xyz | 欧美一级免费看 | 在线亚洲欧美 | 99一级毛片 | 久久精品国产99国产精品 | 成人网av| 国产日韩欧美在线观看 | 中文字幕 国产精品 | 91久久精品一区二区二区 | 日韩中文字幕在线观看视频 | 精品欧美乱码久久久久久 | 国产精品国产三级国产aⅴ无密码 | 久久久99精品免费观看 | 一级在线观看 | 少妇一级淫片免费放播放 | 欧美日韩在线一区二区 | 亚洲欧洲成人在线 | 羞羞视频网站免费观看 | 精品无码久久久久久国产 | 亚洲精品久久久久avwww潮水 | 国产精品激情小视频 | 日韩在线精品视频 | 日韩精品激情 | 韩日一区二区 |