|
這是單片機(jī)原理圖:
捕獲111.PNG (193.31 KB, 下載次數(shù): 90)
下載附件
2020-11-6 10:57 上傳
這是風(fēng)向傳感器的說(shuō)明書(shū):
風(fēng)向傳感器1.PNG (140.06 KB, 下載次數(shù): 113)
下載附件
2020-11-6 10:59 上傳
風(fēng)向傳感器3.PNG (91.17 KB, 下載次數(shù): 98)
下載附件
2020-11-6 10:59 上傳
風(fēng)向傳感器4.PNG (148.41 KB, 下載次數(shù): 86)
下載附件
2020-11-6 10:59 上傳
風(fēng)向傳感器5.PNG (134.94 KB, 下載次數(shù): 145)
下載附件
2020-11-6 10:59 上傳
以下是源程序:
- #include<stc12c5a.h>
- #include <stdio.h>
- #include <string.h>
- #include<stdlib.h>
- #include<math.h>
- #include<intrins.h>
- #include<LCD.h>
- uchar table[24]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
- uchar wind_direction[8]={0x01,0x03,0x00,0x00,0x00,0x02,0xC4,0x0B};//風(fēng)向傳感器問(wèn)詢幀
- uchar wind_direction1[2]={0x00,0x00};//單片機(jī)接收風(fēng)向數(shù)據(jù)
- void delay(uint z)//延時(shí)函數(shù)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void init() //系統(tǒng)初始化
- {
- TMOD=0X10;//8位重裝定時(shí)器
- TH1=0xfa;
- TL1=0xfa;
- TR1=1;//定時(shí)器1中斷
- SCON=0x50;//方式1
- TR1=1;//定時(shí)器1中斷??
- IP=0X10;
- EA=1;
- ES=1;
- }
- void main()
- {
- init();
- while(1)
- {
- int i;
- for(i=0;i<8;i++)
- {
- SBUF=wind_direction[i];
- while(!TI); //數(shù)據(jù)發(fā)送結(jié)束時(shí)TI置1
- TI=0;
- }
- }
- lcd1602_init();//LCD部分程序
- lcd1602_locate(0x80,wind_direction[0]);
- }
- void UART_1() interrupt 4
- {
- int i=0;
- //接收完緩沖數(shù)據(jù)后RI置1
- if(RI)//如果RI為1
- {
- RI=0,//RI置0
- //風(fēng)向傳感器
-
- table[i++]=SBUF;
- if(i>8)
- {
- wind_direction1[0]=table[3];
- }
- }
- }
復(fù)制代碼
想請(qǐng)大家看看除了LCD1602部分外,單片機(jī)通過(guò)串口獲取風(fēng)向傳感器數(shù)據(jù)這部分程序哪里不對(duì),謝謝大家。
|
|