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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1809|回復(fù): 4
收起左側(cè)

各位大神請問一下這個(gè)單片機(jī)程序哪里出了錯(cuò)誤嗎?屏幕顯示是min,但我設(shè)置的是r/min

[復(fù)制鏈接]
ID:704156 發(fā)表于 2020-3-30 16:33 | 顯示全部樓層 |閱讀模式
單片機(jī)顯示模塊.PNG

單片機(jī)源程序如下:
  1. #include <reg52.H>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char         //宏定義
  5. /*-----------------------端口命名------------------------*/
  6. sbit rs=P2^0;       //LCD的數(shù)據(jù)/命令選擇端
  7. sbit rw=P2^1;       //LCD的讀寫選擇端
  8. sbit e=P2^2;      //LCD的使能信號端  
  9. /*-------------------------------------------------------*/
  10. /*-----------------------定義參數(shù)------------------------*/
  11. uint i,z,count,zhuan,msec;     //定義參數(shù)
  12. uchar display[]={"speed=     r/min "};     //定義顯示參數(shù)
  13. /*-------------------------------------------------------*/
  14. /*-----------------------毫秒延時(shí)------------------------*/
  15. void delay(uint ms)
  16. {  
  17.         uint i,j;      //為延時(shí)引入i,j兩參數(shù)  
  18.         for (j=0;j<ms;j++)     //延時(shí)第一循環(huán)   
  19.         for (i=0;i<120;i++);    //延時(shí)第二循環(huán)  
  20. }
  21. /*-------------------------------------------------------*/
  22. /*--------------------向LCD1602寫命令--------------------*/
  23. void write_command(uchar command)
  24. {
  25.         rs=0;       //數(shù)據(jù)、命令選擇端0為命令
  26.         rw=0;       //讀、寫選擇端0為寫
  27.         P0=command;      //向LCD寫命令
  28.         delay(5);      //稍做延遲,代替檢測忙狀態(tài)  
  29.         e=1;      //信號使能端高電平
  30.         delay(5);      //稍做延遲,代替檢測忙狀態(tài)  
  31.         e=0;      //信號使能端低電平
  32. }
  33. /*-------------------------------------------------------*/
  34. /*--------------------向LCD1602寫數(shù)據(jù)--------------------*/
  35. void write_data(uchar data0)
  36. {
  37.         rs=1;       //數(shù)據(jù)、命令選擇端 1為數(shù)據(jù)
  38.         rw=0;       //讀、寫選擇端0為寫
  39.         P0=data0;      //向LCD寫數(shù)據(jù)
  40.         delay(5);      //稍做延遲,代替檢測忙狀態(tài)
  41.         e=1;      //信號使能端高電平
  42.         delay(5);     //稍做延遲,代替檢測忙狀態(tài)
  43.         e=0;      //信號使能端低電平
  44. }
  45. /*-------------------------------------------------------*/
  46. /*-------------------外部中斷0計(jì)數(shù)程序-------------------*/
  47. void counter(void) interrupt 0
  48. {   
  49.         EX0=0;       //關(guān)外部中斷1  
  50.         count++;  
  51.         if(count==2)      //2次循環(huán)為發(fā)動(dòng)機(jī)轉(zhuǎn)一圈  
  52.         {   
  53.              count=1;     //初始化計(jì)數(shù)   
  54.              z++;      //轉(zhuǎn)圈計(jì)數(shù)加1
  55.           }      //計(jì)數(shù)+1  
  56.           EX0=1;       //開外部中斷1  
  57.              return;
  58. }
  59. /*-------------------------------------------------------*/
  60. /*------------------------LCD顯示------------------------*/
  61. void displaytolcd()
  62. {  
  63.           write_command(0x80);     //向LCD1602寫命令80H  
  64.           for (i=0;i<16;i++)   //循環(huán)要傳輸?shù)淖址麄(gè)數(shù)次,每一次傳一個(gè)字符  
  65.         {   
  66.             write_data(display[i]);   
  67.               delay(5);  
  68.           }
  69. } /*-------------------------------------------------------*/  
  70. /*-----------------內(nèi)部中斷0計(jì)時(shí)計(jì)數(shù)程序-----------------*/
  71. void Timer_0(void) interrupt 1
  72. {  
  73.            TH0=0x3c;      //50ms定時(shí)  
  74.            TL0=0xb0;  
  75.            msec++;  
  76.            if(msec==20)      //50*20=1S  
  77.         {   
  78.              displaytolcd();   
  79.              msec=0;   
  80.              zhuan=30*z;   
  81.              z=0;
  82.                  TH0=0x3c;      //相比原程序,這里重新計(jì)數(shù)器賦初值50ms定時(shí)  
  83.          TL0=0xb0;  
  84.         }
  85. }
  86. /*-------------------------------------------------------*/
  87. /*----------------------端口初始化-----------------------*/
  88. void int_all()
  89. {  
  90.         z=0;       //初始化z的值  
  91.         count=0;      //初始化count的值  
  92.         zhuan=0;      //初始化轉(zhuǎn)的值  
  93.         rw=0;       //選擇LCD寫數(shù)據(jù)指令  
  94.         delay(15);      //延時(shí)15ms  
  95.         write_command(0x38);     //向LCD1602寫命令38H  
  96.         delay(5);      //延時(shí)5ms  
  97.         write_command(0x0e);     //向LCD1602寫命令0EH  
  98.         delay(5);      //延時(shí)5ms  
  99.         write_command(0x06);     //向LCD1602寫命令06H
  100.         TMOD=0x01;      //內(nèi)部中斷定時(shí)器選擇  
  101.         TH0=0x3c;      //50ms定時(shí)  
  102.         TL0=0xb0;  
  103.         EA=1;       //開中斷總開關(guān)  
  104.         ET0=1;       //開內(nèi)部中斷0
  105.         TR0=1;       //計(jì)時(shí)器開始工作  
  106.         IT0=1;       //外部中斷0為下降沿觸發(fā)  
  107.         EX0=1;       //開外部中斷0
  108. }
  109. /*-------------------------------------------------------*/
  110. /*-----------------------數(shù)據(jù)處理------------------------*/
  111. void  disp_count()
  112. {  
  113.         display[9]=(zhuan/1000+'0');    //轉(zhuǎn)換轉(zhuǎn)速的千位  
  114.         display[10]=(zhuan/100%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的百位  
  115.         display[11]=(zhuan/10%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的十位   
  116.         display[12]=(zhuan%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的個(gè)位
  117. }
  118. /*-------------------------------------------------------*/
  119. /*------------------------主函數(shù)-------------------------*/
  120. void main()
  121. {  
  122.            int_all();     //全局初始化  
  123.            while(1)  
  124.           {
  125.            disp_count();     //數(shù)據(jù)處理
  126.            displaytolcd();     //LCD顯示  
  127.           }
  128. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:235200 發(fā)表于 2020-3-30 21:23 | 顯示全部樓層
顯然是數(shù)據(jù)送入到LCD1602的地址位置錯(cuò)了,把之前送入的r/min覆蓋掉了
回復(fù)

使用道具 舉報(bào)

ID:602576 發(fā)表于 2020-3-30 22:49 | 顯示全部樓層
display[7]=(zhuan/1000+'0');    //轉(zhuǎn)換轉(zhuǎn)速的千位  
        display[8]=(zhuan/100%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的百位  
        display[9]=(zhuan/10%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的十位   
        display[10]=(zhuan%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的個(gè)位
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-3-31 11:34 | 顯示全部樓層
無標(biāo)題.jpg
  1. #include <reg52.H>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char         //宏定義
  5. /*-----------------------端口命名------------------------*/
  6. sbit rs=P2^0;       //LCD的數(shù)據(jù)/命令選擇端
  7. sbit rw=P2^1;       //LCD的讀寫選擇端
  8. sbit e=P2^2;      //LCD的使能信號端  
  9. /*-------------------------------------------------------*/
  10. /*-----------------------定義參數(shù)------------------------*/
  11. uint i,z,count,zhuan,msec;     //定義參數(shù)
  12. uchar display[]={"speed=    r/min "};     //定義顯示參數(shù)
  13. /*-------------------------------------------------------*/
  14. /*-----------------------毫秒延時(shí)------------------------*/
  15. void delay(uint ms)
  16. {  
  17.         uint i,j;      //為延時(shí)引入i,j兩參數(shù)  
  18.         for (j=0;j<ms;j++)     //延時(shí)第一循環(huán)   
  19.                 for (i=0;i<120;i++);    //延時(shí)第二循環(huán)  
  20. }
  21. /*-------------------------------------------------------*/
  22. /*--------------------向LCD1602寫命令--------------------*/
  23. void write_command(uchar command)
  24. {
  25.         rs=0;       //數(shù)據(jù)、命令選擇端0為命令
  26.         rw=0;       //讀、寫選擇端0為寫
  27.         P0=command;      //向LCD寫命令
  28.         delay(5);      //稍做延遲,代替檢測忙狀態(tài)  
  29.         e=1;      //信號使能端高電平
  30.         delay(5);      //稍做延遲,代替檢測忙狀態(tài)  
  31.         e=0;      //信號使能端低電平
  32. }
  33. /*-------------------------------------------------------*/
  34. /*--------------------向LCD1602寫數(shù)據(jù)--------------------*/
  35. void write_data(uchar data0)
  36. {
  37.         rs=1;       //數(shù)據(jù)、命令選擇端 1為數(shù)據(jù)
  38.         rw=0;       //讀、寫選擇端0為寫
  39.         P0=data0;      //向LCD寫數(shù)據(jù)
  40.         delay(5);      //稍做延遲,代替檢測忙狀態(tài)
  41.         e=1;      //信號使能端高電平
  42.         delay(5);     //稍做延遲,代替檢測忙狀態(tài)
  43.         e=0;      //信號使能端低電平
  44. }
  45. /*-------------------------------------------------------*/
  46. /*-------------------外部中斷0計(jì)數(shù)程序-------------------*/
  47. void counter(void) interrupt 0
  48. {   
  49.         EX0=0;       //關(guān)外部中斷1  
  50.         count++;  
  51.         if(count==2)      //2次循環(huán)為發(fā)動(dòng)機(jī)轉(zhuǎn)一圈  
  52.         {   
  53.                 count=1;     //初始化計(jì)數(shù)   
  54.                 z++;      //轉(zhuǎn)圈計(jì)數(shù)加1
  55.         }      //計(jì)數(shù)+1  
  56.         EX0=1;       //開外部中斷1  
  57.         return;
  58. }
  59. /*-------------------------------------------------------*/
  60. /*------------------------LCD顯示------------------------*/
  61. void displaytolcd()
  62. {  
  63.         write_command(0x80+0x06);     //向LCD1602寫命令80H  
  64.         for (i=6;i<10;i++)   //更新部分字符
  65.         {   
  66.                 write_data(display[i]);   
  67.                 delay(1);  
  68.         }
  69. } /*-------------------------------------------------------*/  
  70. /*-----------------內(nèi)部中斷0計(jì)時(shí)計(jì)數(shù)程序-----------------*/
  71. void Timer_0(void) interrupt 1
  72. {  
  73.         TH0=0x3c;      //50ms定時(shí)  
  74.         TL0=0xb0;  
  75.         msec++;  
  76.         if(msec==20)      //50*20=1S  
  77.         {   
  78. //                displaytolcd();   
  79.                 msec=0;   
  80.                 zhuan=30*z;   
  81.                 z=0;
  82. //                TH0=0x3c;      //相比原程序,這里重新計(jì)數(shù)器賦初值50ms定時(shí)  
  83. //                TL0=0xb0;  
  84.         }
  85. }
  86. /*-------------------------------------------------------*/
  87. /*----------------------端口初始化-----------------------*/
  88. void int_all()
  89. {  
  90.         z=0;       //初始化z的值  
  91.         count=0;      //初始化count的值  
  92.         zhuan=0;      //初始化轉(zhuǎn)的值  
  93.         rw=0;       //選擇LCD寫數(shù)據(jù)指令  
  94.         delay(15);      //延時(shí)15ms  
  95.         write_command(0x38);     //向LCD1602寫命令38H  
  96.         delay(5);      //延時(shí)5ms  
  97.         write_command(0x01);     //向LCD1602寫命令0EH  
  98.         delay(5);      //延時(shí)5ms  
  99.         write_command(0x0c);     //向LCD1602寫命令0EH  
  100.         delay(5);      //延時(shí)5ms  
  101.         write_command(0x06);     //向LCD1602寫命令06H
  102.         TMOD=0x01;      //內(nèi)部中斷定時(shí)器選擇  
  103.         TH0=0x3c;      //50ms定時(shí)  
  104.         TL0=0xb0;  
  105.         EA=1;       //開中斷總開關(guān)  
  106.         ET0=1;       //開內(nèi)部中斷0
  107.         TR0=1;       //計(jì)時(shí)器開始工作  
  108.         IT0=1;       //外部中斷0為下降沿觸發(fā)  
  109.         EX0=1;       //開外部中斷0
  110. }
  111. /*-------------------------------------------------------*/
  112. /*-----------------------數(shù)據(jù)處理------------------------*/
  113. void  disp_count()
  114. {  
  115.         if(zhuan<1000)
  116.                 display[6]=' ';//不顯示
  117.         else
  118.                 display[6]=(zhuan/1000%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的千位  
  119.         if(zhuan<100)
  120.                 display[7]=' ';//不顯示
  121.         else
  122.                 display[7]=(zhuan/100%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的百位  
  123.         if(zhuan<10)
  124.                 display[8]=' ';//不顯示
  125.         else
  126.                 display[8]=(zhuan/10%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的十位   
  127.         display[9]=(zhuan%10+'0');            //轉(zhuǎn)換轉(zhuǎn)速的個(gè)位
  128. }
  129. /*-------------------------------------------------------*/
  130. /*------------------------主函數(shù)-------------------------*/
  131. void main()
  132. {         
  133.         int_all();     //全局初始化  
  134.         write_command(0x80);     //向LCD1602寫命令80H  
  135.         for (i=0;i<16;i++)   //寫入固定字符  
  136.         {   
  137.                 write_data(display[i]);   
  138.         }
  139.         while(1)  
  140.         {
  141.                 disp_count();     //數(shù)據(jù)處理
  142.                 displaytolcd();     //LCD顯示  
  143.         }
  144. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:704156 發(fā)表于 2020-4-2 12:09 | 顯示全部樓層
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线播放国产视频 | 国产视频中文字幕在线观看 | 日日综合 | 久久国产精品网 | 99精品免费 | 久久另类视频 | 国产高清免费 | 国产一区二区在线播放视频 | 欧美在线一区二区三区 | 有码在线| 免费久久99精品国产婷婷六月 | 美女激情av | 综合久久av | av在线播放免费 | 国产 日韩 欧美 在线 | 不卡一区二区三区四区 | 99pao成人国产永久免费视频 | 欧美日韩国产一区二区三区 | 在线观看免费av网站 | 日一日操一操 | 仙人掌旅馆在线观看 | 中文字幕一区在线观看视频 | 日韩国产一区 | 国产婷婷| 欧美日本一区 | 国产不卡一区在线观看 | 成人免费精品视频 | 精品国产三级 | 成人九色 | 精品国产乱码久久久久久果冻传媒 | 秋霞在线一区 | 欧美日韩国产在线观看 | 精品国产91 | 国产精产国品一二三产区视频 | 免费视频一区 | 成人免费视频观看视频 | 久久久久亚洲 | 最新中文在线视频 | 天堂素人约啪 | 99久久婷婷国产综合精品首页 | 亚洲一区电影 |