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

標題: 用LCD顯示風向傳感器測得的風向,求大家幫忙看看單片機程序哪里不對,一直沒有現象 [打印本頁]

作者: 明日香    時間: 2020-12-3 19:27
標題: 用LCD顯示風向傳感器測得的風向,求大家幫忙看看單片機程序哪里不對,一直沒有現象
使用單片機串口獲取風向傳感器的數據,然后用LCD1602顯示,求求各位幫忙看看程序哪里有問題,改了好多遍了,但一直沒有現象
這是傳感器的說明:


以下為程序:

  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <intrins.h>
  6. #define uchar unsigned char
  7. #define uint  unsigned int
  8.         
  9. sbit E=P2^2;    //LCD1602使能引腳
  10. sbit RW=P2^1;    //LCD1602讀寫引腳   
  11. sbit RS=P2^0;    //LCD1602數據/命令選擇引腳
  12. uchar table[24]= //用來存儲SBUF的數據 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  13. uchar wind_direction[8]={0x01,0x03,0x00,0x00,0x00,0x02,0xC4,0x0B};//風向傳感器問詢幀
  14. uchar wind_direction1;//單片機接收風向數據
  15. uchar strwind[];  //用來把得到的整形數據轉為字符串
  16. int flag1;
  17. void delay(uint z)//延時函數
  18. {
  19.         uint x,y;
  20.         for(x=z;x>0;x--);
  21.                 for(y=110;y>0;y--);
  22. }

  23. void wcmd(uchar del)//LCD寫命令函數
  24. {
  25.   RS=0;//命令選擇端
  26.         delay(10);
  27.         RW=0;//寫命令
  28.         delay(10);
  29.         P0=del;  //把命令字寫入
  30.         delay(10);
  31.         E=1;//使能
  32.         delay(10);
  33.         E=0;
  34. }

  35. void lcd1602_writedata(uchar dat)//LCD寫數據函數
  36. {
  37.   delay(10);
  38.         RS=1;//數據選擇端
  39.         delay(10);
  40.         RW=0;//寫命令
  41.         delay(10);
  42.         P0=dat;  //把要顯示的數據寫入
  43.         delay(10);
  44.         E=1;
  45.         delay(10);
  46.         E=0;
  47. }

  48. void lcd1602_init()//LCD初始化
  49. {
  50. wcmd(0x38);
  51. wcmd(0x0C);
  52. wcmd(0x06);
  53. wcmd(0x01);
  54. }

  55. void init()  //系統初始化
  56. {
  57. TMOD=0X20;//定時器T1,方式2,波特率由PCON寄存器的SMOD決定
  58. TH1=0xfa;//設置波特率
  59. TL1=0xfa;
  60. TR1=1;//定時器1中斷打開
  61. SCON=0x50;//方式1 SCON是串行口1的串行控制寄存器
  62. PCON=0x00;//各工作方式波特率加倍
  63. IP=0X10;//
  64. REN=1; //串口1接收使能
  65. EA=1;//cpu開放中斷
  66. ES=1;//允許串行口中斷

  67. }
  68. void main()
  69. {
  70.         uchar m=0;
  71.         flag1=0;//判斷風速風向傳感器
  72.         init();
  73.   while(1)
  74.         {
  75.                 int i;
  76.                 if(flag1==0)//flag1=0則發送風向數據
  77.         {
  78.         for(i=0;i<8;i++)
  79.                 {
  80.                 SBUF=wind_direction[i];   //發送問詢幀
  81.                         while(!TI);  //數據發送結束時TI置1
  82.                         TI=0;
  83.                 }
  84.                 delay(500);
  85.                 strwind[0]=(wind_direction1/10)+'0';   //這里是把整數型數據轉為字符
  86.                 strwind[1]=(wind_direction1%10)+'0';
  87.                 lcd1602_init();
  88.                 delay(100);
  89.                 wcmd(0x80);  //LCD第一行第一個位置
  90.                 delay(100);
  91.                 for(m=0;m<3;m++)
  92.                 {
  93.                 lcd1602_writedata(strwind[m]);
  94.                 }
  95.                 delay(500);
  96.   }
  97. }
  98. }

  99. void UART_1() interrupt 4
  100. {
  101.         int i=0;
  102.         //接收完緩沖數據后RI置1
  103.         if(RI)//如果RI為1,即如果收到
  104.         {
  105.           RI=0; //RI置0
  106.                 table[i++]=SBUF;  //  得到的風向數據存在SBUF,把數據給table[i++]
  107.                 if(i>8)  //一個應答幀是9個字節,i>8表示一個風向數據傳輸完成
  108.                 {
  109.                 wind_direction1=table[6];//風向數據是第七個,即table[6],給wind_direction1[0]               
  110.                  }
  111.         }
  112. }
復制代碼


求各位幫忙看看以上程序哪里不太對,尤其是串口通信部分,改了好多遍但最后都沒有現象,求大家幫幫忙,謝謝。


作者: 明日香    時間: 2020-12-3 20:27
球球各位了,調了好多次一直不行,救救孩子吧
作者: 黃youhui    時間: 2020-12-4 08:25
LCD_Init()放在while(1)里面,LCD被初始化了多少次?
作者: wulin    時間: 2020-12-4 08:28
明日香 發表于 2020-12-3 20:27
球球各位了,調了好多次一直不行,救救孩子吧

樓主的程序有很多基礎知識錯誤。這是給壇友修改的一個甲醛檢測示例程序,硬件TX-1C實驗板。雖然不能直接解決樓主的問題,但可依照其程序構架、解題思路、書寫格式舉一反三,就可以輕易解決問題。 串口發收數據串甲醛檢測.zip (429.51 KB, 下載次數: 7)


作者: 黃youhui    時間: 2020-12-4 09:00
你說的現象是什么現象:LCD還是串口還是風向傳感器?

LCD和串口你可以修改代碼讓他們打印出其他東西,能打印就不是這兩者的問題、
風向傳感器,你先確定電路正常否?電壓正常否?然后在檢測風向變化時它有向單片機發送數據嗎?


看了你三個帖子,你一直在問代碼問題,你確保你電路沒問題嗎?
如果你確保電路沒問題,你要做的是去找買你傳感器的廠家要例程,然后燒錄,看喲沒有現象。

作者: 明日香    時間: 2020-12-4 13:30
黃youhui 發表于 2020-12-4 09:00
你說的現象是什么現象:LCD還是串口還是風向傳感器?

LCD和串口你可以修改代碼讓他們打印出其他東西,能 ...

謝謝指點
作者: 明日香    時間: 2020-12-4 13:30
wulin 發表于 2020-12-4 08:28
樓主的程序有很多基礎知識錯誤。這是給壇友修改的一個甲醛檢測示例程序,硬件TX-1C實驗板。雖然不能直接 ...

謝謝指點
作者: 黃youhui    時間: 2020-12-4 14:06
明日香 發表于 2020-12-4 13:30
謝謝指點

不客氣,
請共同遵守求貼禮儀,問題解決后發帖置頂然后來者學習
作者: 明日香    時間: 2020-12-4 15:22
wulin 發表于 2020-12-4 08:28
樓主的程序有很多基礎知識錯誤。這是給壇友修改的一個甲醛檢測示例程序,硬件TX-1C實驗板。雖然不能直接 ...

感謝指點




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 手机av在线免费观看 | 午夜国产在线 | 亚洲激情中文字幕 | 六月色| 国产三级在线播放 | 视频一区二区三区在线观看 | 在线观看网址你懂的 | 国产精品一区二区av | 国产精品av在线 | 成人福利在线观看 | 久久88 | 欧美日在线 | 中文字幕av一区 | 91视频在线看 | 欧美理论在线观看 | 亚洲黄色片 | 九九天堂 | 麻豆视频一区二区 | 免费欧美视频 | 国产日本在线 | 国产专区在线 | 亚洲国产日本 | 日本视频www | 夜夜操夜夜爽 | 欧美大片一区二区 | 久草视频在线播放 | 中文字幕不卡视频 | 婷婷综合 | a视频在线 | 久久av资源 | 三级黄色录像片 | 91狠狠干 | 亚洲第一在线 | 在线观看国产免费视频 | 4438成人网 | 91手机看片 | 久久精品国产一区二区 | 天天cao | 性久久久久 | 日韩三级中文字幕 | 一级黄毛片 |