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

標(biāo)題: 單片機(jī)超聲波測距Proteus仿真代碼,LCD1602顯示 [打印本頁]

作者: 賊六的噠噠噠    時間: 2021-5-6 20:16
標(biāo)題: 單片機(jī)超聲波測距Proteus仿真代碼,LCD1602顯示
超聲波測距仿真,LCD1602顯示帶程序

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint  unsigned int
  4. #define uchar unsigned char
  5. #define NOP() {_nop_();_nop_();_nop_();_nop_();}
  6. //------LCD引腳-----
  7. sbit lcd_rs=P0^6;

  8. sbit lcd_en=P0^7;
  9. //------超聲波引腳-------
  10. sbit Tx=P3^3;                //觸發(fā)控制信號輸入
  11. sbit Rx=P3^2;                //回響信號輸出
  12. uchar xuehao[]={"   17110201138  "};
  13. uchar xingming[]={"NAME:zhaolongda"};
  14. uchar code table[]={" Distance Test:"};                //LCD第一行顯示
  15. uchar temp_dis[]= {"    000.0 cm"};                                //LCD第二行
  16. long int t,distance;
  17. uchar cache[4]={0,0,0,0};
  18. //--------延時-------
  19. void delay(uint ms)
  20. {
  21.         uint t;
  22.         while(ms--)
  23.                 for(t=0;t<30;t++);
  24. }
  25. void write_com(uchar com);//init_lcd()函數(shù)需要用到,所以先提前聲明
  26. //************LCD1602初始化函數(shù)************************
  27. void init_lcd()
  28. {
  29.         write_com(0x38);           //設(shè)置16*2顯示,5*7點陣,8位數(shù)據(jù)接口
  30.         write_com(0x08);           //寫一個字符后地址指針加1
  31.         write_com(0x01);           //顯示清零,數(shù)據(jù)指針清零
  32.         write_com(0x06);           //寫一個字符后地址指針加1
  33.         write_com(0x0c);           //關(guān)顯示,光標(biāo)不顯示不閃爍
  34. }


  35. //************LCD1602寫指令函數(shù)************************
  36. void write_com(uchar com)   //lcd1602寫指令:rs低電平,rw低電平,en從高電平變?yōu)榈碗娖?br />
  37. {
  38.         delay(5);
  39.         lcd_rs = 0;                           // 選擇寫指令
  40.         lcd_en = 0;                           // 將使能端置0
  41.         P2 = com;                           // 將要寫的命令送到數(shù)據(jù)總線上
  42.         delay(5);                           // 延時5ms,待數(shù)據(jù)穩(wěn)定
  43.         lcd_en = 1;                           // 由于初始化已將lcd_en置為0,使能端給一個高脈沖,
  44.         delay(5);                           // 延時5ms,待數(shù)據(jù)穩(wěn)定
  45.         lcd_en = 0;                           // 將使能端置0以完成脈沖
  46. }


  47. //************LCD1602寫數(shù)據(jù)函數(shù)************************
  48. void write_data(uchar date)//lcd1602寫數(shù)據(jù):rs高電平,rw低電平,en從高電平變低電平
  49. {
  50.         delay(5);
  51.         lcd_rs = 1;                           // 選擇寫數(shù)據(jù)
  52.         lcd_en = 0;                           // 將使能端置0
  53.         P2 = date;                           // 將要寫的數(shù)據(jù)送到數(shù)據(jù)總線上
  54.         delay(5);                           // 延時5ms,待數(shù)據(jù)穩(wěn)定
  55.         lcd_en = 1;                           // 由于初始化已將lcd_en置為0,使能端給一個高脈沖,
  56.         delay(5);                           // 延時5ms,待數(shù)據(jù)穩(wěn)定
  57.         lcd_en = 0;                           // 將使能端置0以完成脈沖
  58. }

  59. //************LCD1602顯示函數(shù)******************
  60. void lcd1602_display(uchar *q,uchar *p)//*通過指針p和q分別指向兩個數(shù)組的第一個數(shù),然后進(jìn)行數(shù)組掃描顯示,一次性顯示兩行字符
  61. {
  62.         write_com(0x80);             // 現(xiàn)將數(shù)據(jù)指針定位到第一行第一個字處
  63.         while(*q!='\0')
  64.         {
  65.                 write_data(*q);
  66.                 q++;
  67.                 delay(1);       
  68.         }
  69.         write_com(0xc0);           // 現(xiàn)將數(shù)據(jù)指針定位到第二行第一個字處
  70.         while(*p!='\0')
  71.         {
  72.                 write_data(*p);
  73.                 p++;
  74.                 delay(1);       
  75.         }
  76. }

  77. //************LCD1602顯示歡迎函數(shù)******************
  78. void welcome()        //掃描顯示學(xué)號加姓名,幾秒延時后結(jié)束
  79. {       
  80.         init_lcd();
  81.         lcd1602_display(xuehao,xingming);
  82.         delay(200);          

  83. }
  84. void HC05_Init()                          //超聲波模塊初始化函數(shù)
  85. {
  86.         Tx=1;                                                //觸發(fā)脈沖
  87.         NOP();NOP();NOP();NOP();
  88.         Tx=0;
  89.         distance=0.1725*t;                        //距離計算
  90. }
  91. void distance_convert(long int dat)             //距離計算函數(shù)
  92. {
  93.         cache[0]=dat/1000;
  94.         cache[1]=dat/100%10;
  95.         cache[2]=dat/10%10;
  96.         cache[3]=dat%10;
  97.         temp_dis[4]=cache[0]+'0';
  98.         temp_dis[5]=cache[1]+'0';
  99.         temp_dis[6]=cache[2]+'0';
  100.         temp_dis[8]=cache[3]+'0';
  101. }
  102. //------------主程序-----------
  103. void main()
  104. {
  105.        
  106.       
  107.         welcome();
  108.         
  109.         init_lcd();
  110.         delay(5);
  111.         TMOD=0x09;        //定時器T0工作方式1  GATE0=1
  112.         EA=1;                        //開總中斷
  113.         TR0=1;                        //啟動定時器
  114.         EX0=1;                        //開外部中斷
  115.         IT0=1;                        //設(shè)置為下降沿中斷方式
  116.         while(1)
  117.         {
  118.                 HC05_Init();
  119.                 distance_convert(distance);
  120.                 lcd1602_display(table,temp_dis);  
  121.                
  122.         }
  123. }
  124. //外部中斷0
  125. void int0() interrupt 0
  126. {
  127.         t=(TH0*256+TL0);        //計算高電平持續(xù)的時間,上升沿到來時候開始計時,下降沿到來進(jìn)入外部中斷,關(guān)閉計時器,停止計時
  128.         TH0=0;
  129.         TL0=0;
  130. }
復(fù)制代碼

所有資料51hei提供下載:
超聲波測距仿真.zip (90.57 KB, 下載次數(shù): 426)



作者: 黑泡泡    時間: 2021-5-18 13:10
程序有誤,1602讀寫命令錯了
作者: dragon19790000    時間: 2021-10-2 18:07
下載程序中,仿真報錯啊
作者: heicad    時間: 2021-10-3 02:13
dragon19790000 發(fā)表于 2021-10-2 18:07
下載程序中,仿真報錯啊

我用Proteus8.8打開,雙擊單片機(jī)重新選擇hex文件,可以運行呢

51hei.png (26.72 KB, 下載次數(shù): 109)

51hei.png

作者: 魚文韻    時間: 2021-11-29 16:55
很好的資源,準(zhǔn)備去試一試。
作者: CHANGSTM51    時間: 2022-5-22 01:19
剛下載,明天好好研究
作者: Y97    時間: 2022-12-20 21:16
剛下載準(zhǔn)備試試看




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 啪啪免费网| av在线二区 | 嫩草网 | 成人 在线 | 逼逼网 | 亚洲午夜精品视频 | 欧美精品一区二区在线观看 | 日韩精品一区二区在线 | 91资源在线观看 | 国产伦精品一区二区三区在线 | 久久久久国产精品免费免费搜索 | 别c我啊嗯国产av一毛片 | 日韩电影一区 | 国产精品日韩一区 | 久久久成人网 | 国产精品久久久久久久久久久久久 | 久久久久久国产精品 | 国产日批 | 九九精品视频在线 | 亚洲一区自拍 | 天天摸天天干 | 超碰97干| 尤物在线视频 | 国产精品美女久久久久久免费 | 亚洲一区网站 | 男女免费视频网站 | 久久久久国产一级毛片 | 91在线精品秘密一区二区 | 国产人成精品一区二区三 | 青青草精品视频 | 精品成人av | av性色全交蜜桃成熟时 | 欧美一区二 | 欧美乱做爰xxxⅹ久久久 | 久久这里只有精品首页 | 欧美一区二区在线 | 成人看片在线观看 | 在线观看 亚洲 | 亚洲国产高清高潮精品美女 | 一区二区在线不卡 | 欧美日韩精品在线免费观看 |