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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用LCD顯示風向傳感器測得的風向,求大家幫忙看看單片機程序哪里不對,一直沒有現象

[復制鏈接]
回帖獎勵 60 黑幣 回復本帖可獲得 15 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:796670 發表于 2020-12-3 19:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
使用單片機串口獲取風向傳感器的數據,然后用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. }
復制代碼


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

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

使用道具 舉報

沙發
ID:796670 發表于 2020-12-3 20:27 | 只看該作者
球球各位了,調了好多次一直不行,救救孩子吧
回復

使用道具 舉報

板凳
ID:592807 發表于 2020-12-4 08:25 | 只看該作者
LCD_Init()放在while(1)里面,LCD被初始化了多少次?
回復

使用道具 舉報

地板
ID:213173 發表于 2020-12-4 08:28 | 只看該作者
明日香 發表于 2020-12-3 20:27
球球各位了,調了好多次一直不行,救救孩子吧

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

回復

使用道具 舉報

5#
ID:592807 發表于 2020-12-4 09:00 | 只看該作者
你說的現象是什么現象:LCD還是串口還是風向傳感器?

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


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

使用道具 舉報

6#
ID:796670 發表于 2020-12-4 13:30 | 只看該作者
黃youhui 發表于 2020-12-4 09:00
你說的現象是什么現象:LCD還是串口還是風向傳感器?

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

謝謝指點
回復

使用道具 舉報

7#
ID:796670 發表于 2020-12-4 13:30 | 只看該作者
wulin 發表于 2020-12-4 08:28
樓主的程序有很多基礎知識錯誤。這是給壇友修改的一個甲醛檢測示例程序,硬件TX-1C實驗板。雖然不能直接 ...

謝謝指點
回復

使用道具 舉報

8#
ID:592807 發表于 2020-12-4 14:06 | 只看該作者

不客氣,
請共同遵守求貼禮儀,問題解決后發帖置頂然后來者學習
回復

使用道具 舉報

9#
ID:796670 發表于 2020-12-4 15:22 | 只看該作者
wulin 發表于 2020-12-4 08:28
樓主的程序有很多基礎知識錯誤。這是給壇友修改的一個甲醛檢測示例程序,硬件TX-1C實驗板。雖然不能直接 ...

感謝指點
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一级片免费在线观看 | 国产二区三区 | 精品久久久久久久久久久 | 久久久久久久香蕉 | 爱综合 | 国产成人综合网 | 日韩在线视频一区 | 欧美久久视频 | 欧美xxxⅹ性欧美大片 | 小川阿佐美pgd-606在线 | 午夜男人免费视频 | www.中文字幕.com| 亚洲精品视频久久 | 国产亚洲欧美在线视频 | 91麻豆精品一区二区三区 | 午夜在线小视频 | 97成人在线| 日韩欧美三级 | 一本色道久久综合亚洲精品高清 | 99热热热热| 午夜爽爽爽男女免费观看影院 | 久久久精彩视频 | 九九热免费看 | 日韩免费视频 | 国产精品美女www爽爽爽视频 | 国产成人jvid在线播放 | 国产综合一区二区 | 日韩国产在线 | 色网站在线免费观看 | 免费成人高清 | 成人黄色av网站 | 在线免费观看黄色 | 亚洲欧美中文日韩在线v日本 | 成人av片在线观看 | 日本一区二区三区四区 | 一区二区三区高清 | 国产精品国产成人国产三级 | 在线免费观看视频黄 | 国产精品高潮呻吟久久av野狼 | 亚洲一区欧美 | 欧美日韩不卡 |