51微控制器 PC資料傳輸 溫度 距離 監控系統設計

2021-09-06 16:29:15 字數 3882 閱讀 6048

>_<:>

通過串列埠pc

和微控制器通訊,可以詢問微控制器測得的溫度,可以詢問聲吶測距的測量距離,同時把測量溫度顯示在數碼管上。

這裡com.cpp

和com.h

是串列埠通訊的函式封裝,在主函式中:

1

if(openport("

com4"))

2 printf("

open comport success\n");

3if(setupdcb(9600

))4 printf("

setupdcb success\n");

5if(setuptimeout(0,0,0,0,0)) //

如果所有寫超時引數均為0,那麼就不使用寫超時

6 printf("

setuptimeout success\n");

7 clearall();//

全清

1

while(1

)else

if(a==6

)else

28 }

>_<:>裝置:連線:這裡選用11.0592mhz的晶振,將8位7段數碼管公共線接p0的8個埠,p2.3接位碼,p2.2接段碼;串列埠通訊採用max232連線如圖所示。

main函式介紹:

#初始化部分介紹:

2 init_timer0();

3 uart_init(); // 串列埠初始化

4 init_timer1();

5 6 readtemperature();//這裡放置3個溫度讀取,防止出現初始化溫度不穩定情況

7 readtemperature();

8 readtemperature();

1

void uart_init(void)2

#主迴圈介紹:

1

while (1

) 28

if(uart_flag==1) //

接收到9

else

if(come=='

2')else

//其他操作

26switch(a)

32 uart_send_byte('\n'

);33

break;34

case'2

'://

要距離35

for(i=0;i<16;i++)

3639 uart_send_byte('\n'

);40

break;41

case'3

':42if

(isinclude)else

64break;65

case'4

':66if

(isabove)else

86break;87

case'5

':88 come='1'

;89break;90

case'6

':91 come='2'

;92break;93

default://

錯誤操作

94for(i=0;i<16;i++)

9598 uart_send_byte('\n'

);99

break

;100

}101 es=1; //

允許串列埠中斷

102 uart_flag=0; //

中斷標誌位置0

103}

104else

if(readtempflag==1)//

通過定時器,每隔1200ms掃瞄一次溫度

105114

else

115 tempdata[0]=0;//

其他情況就該顯示負號的不顯示

116117 temph=temp>>4;//

去除低四位

118 templ=temp&0x0f;//

獲取溫度低四位

119 templ=templ*6/10;//

小數近似處理!

120121

if(temph>0 && temph>maxwendu)isabove=1;//

界限判斷

122123

if(temph/100==0)//

百位資料

124 tempdata[1]=0

;125

else

126 tempdata[1]=duanma[temph/100]; //

百位溫度

127if((temph%100)/10==0)//

十位溫度

128 tempdata[2]=0

;129

else

130 tempdata[2]=duanma[(temph%100)/10

];131 tempdata[3]=duanma[(temph%100)%10]|0x80; //

個位溫度,帶小數點

132 tempdata[4]=duanma[templ];

133 tempdata[6]=0x39; //

顯示c符號

134135

136 senddata[11]=(unsigned char)(temph/100+'0'

);137 senddata[12]=(unsigned char)(temph%100/10+'0'

);138 senddata[13]=(unsigned char)(temph%100%10+'0'

);139 senddata[14]='.'

;140 senddata[15]=(unsigned char)(templ+'0'

);141 }else

if(readtempflag==2

)150 }

1

void uart(void) interrupt 4

29 }

1

void timer0_isr(void) interrupt 1

2else

if(num==150

)

1216 }

1

void conut(void)2

12if(s1;//

界限判斷

13//

.......

14 }

全部資源連線:

微控制器和MODEM介面及遠端資料傳輸

2007 12 25 11 12 07 摘要 介紹了一種以w78e52微控制器為控制核心和數據機 modem 介面進行遠端資料採集與傳送的實用電路。該電路結構簡單 可靠性高 控制方便。文中講述了modem的at指令描述以及用微控制器控制modem的方法,並結合系統功能及原理給出了主程式流程圖。隨著自...

8051微控制器資料傳輸介面擴充套件技術與應用例項

書名 8051微控制器資料傳輸介面擴充套件技術與應用例項 isbn 7115128944 定價 楊金巖 鄭應強 譯者 出版社 人民郵電 出版商 出版日期 2005 01 01 開本 16開 裝幀 平裝 字數580 頁數 371 內容簡介 第1章 微控制器資料傳輸介面概述 11.1 微控制器並行資料介...

基於51微控制器的溫度探測

這次的專案姑且算作舊瓶裝新酒吧,以前做過stm32和dht11的溫度探測,這一次是較為低價版的c51和ds18b20溫度探測。ds18b20是常用的數字溫度感測器,其輸出的是數碼訊號,具有體積小,硬體開銷低,抗干擾能力強,精度高的特點。個人感覺主要特點就是 低,這對於很多精度要求不高的量產產品來說很...