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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6681|回復: 6
打印 上一主題 下一主題
收起左側

單片機超聲波測距Proteus仿真代碼,LCD1602顯示

  [復制鏈接]
跳轉到指定樓層
樓主
超聲波測距仿真,LCD1602顯示帶程序

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


單片機源程序如下:
  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;                //觸發控制信號輸入
  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()函數需要用到,所以先提前聲明
  26. //************LCD1602初始化函數************************
  27. void init_lcd()
  28. {
  29.         write_com(0x38);           //設置16*2顯示,5*7點陣,8位數據接口
  30.         write_com(0x08);           //寫一個字符后地址指針加1
  31.         write_com(0x01);           //顯示清零,數據指針清零
  32.         write_com(0x06);           //寫一個字符后地址指針加1
  33.         write_com(0x0c);           //關顯示,光標不顯示不閃爍
  34. }


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


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

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

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

  83. }
  84. void HC05_Init()                          //超聲波模塊初始化函數
  85. {
  86.         Tx=1;                                                //觸發脈沖
  87.         NOP();NOP();NOP();NOP();
  88.         Tx=0;
  89.         distance=0.1725*t;                        //距離計算
  90. }
  91. void distance_convert(long int dat)             //距離計算函數
  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;                        //設置為下降沿中斷方式
  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);        //計算高電平持續的時間,上升沿到來時候開始計時,下降沿到來進入外部中斷,關閉計時器,停止計時
  128.         TH0=0;
  129.         TL0=0;
  130. }
復制代碼

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


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:922968 發表于 2021-5-18 13:10 | 只看該作者
程序有誤,1602讀寫命令錯了
回復

使用道具 舉報

板凳
ID:112693 發表于 2021-10-2 18:07 | 只看該作者
下載程序中,仿真報錯啊
回復

使用道具 舉報

地板
ID:262 發表于 2021-10-3 02:13 | 只看該作者
dragon19790000 發表于 2021-10-2 18:07
下載程序中,仿真報錯啊

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

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

51hei.png
回復

使用道具 舉報

5#
ID:838572 發表于 2021-11-29 16:55 | 只看該作者
很好的資源,準備去試一試。
回復

使用道具 舉報

6#
ID:1027882 發表于 2022-5-22 01:19 | 只看該作者
剛下載,明天好好研究
回復

使用道具 舉報

7#
ID:1058494 發表于 2022-12-20 21:16 | 只看該作者
剛下載準備試試看
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一本一道久久a久久精品蜜桃 | 国产精品久久久久久久毛片 | 亚洲视频二区 | 国产在线观看网站 | 美女视频黄色片 | 国产精品一区二区三区在线 | 欧美一区二区大片 | 精品福利视频一区二区三区 | 美女黄网站 | 欧美激情欧美激情在线五月 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 国产a区 | 中文字幕乱码一区二区三区 | 成人亚洲片 | 国产综合在线视频 | 国产精品区一区二区三区 | 中文字幕日本一区二区 | 91精品国产综合久久国产大片 | 免费一区二区三区 | 亚洲在线看| 日本在线观看视频 | 国产在线精品一区二区 | 久久小视频 | 在线国产一区二区三区 | 久久国产一区二区 | 日韩成人av在线 | 色综合久久88色综合天天 | 国产一区二区三区四区hd | 日本xx视频免费观看 | 欧洲一区在线观看 | www4虎| 亚洲一级淫片 | 亚洲午夜精品在线观看 | 国产一区二 | 欧美高清dvd | 亚洲高清在线 | 国产精品国产三级国产aⅴ原创 | 国产激情第一页 | 欧美久久影院 | 国产高清视频一区 | 九九久久精品 |