要求:
語音播報溫度計以STC12C5A60S2單片機為核心,
采用DS18B20單總線溫度傳感器,測量水箱的溫度,
用語音芯片ISD1420P播報溫度,同時用LCD1602顯示溫度值。
應用所學專業知識,設計硬件電路,C語言編寫相應的程序
原理
系統上電,單片機MCU開始運行,首先對lcd1602進行初始化,
之后對溫度傳感器DS18B20進行初始化,讀取溫度數據,然后判斷按鍵是否按下,
若是按鍵按下則開始操作語音芯片ISD1420,根據單片機讀取到的溫度數據控制ISD1420
語音芯片的地址線播報ISD1420語音的內容,播報完成之后,將溫度數據在1602顯示,
顯示完成后再次讀取溫度數據,以及循環。
單片機源程序如下:
- #include "main.h"
- #include "LCD1602.h"
- #include "clock.h"
- #include "key.h"
- #include "DS18B20.h"
- #include "temp.h"
- #include "BEEP.h"
- #include "ISD1420.h"
- #include "speakTEMP.h"
- #include "UART.h"
- //unsigned char code str0[]={"--- : : -----"};
- //unsigned char code str1[]={"temp: . oC-----"};
- char uart;
- /*********延時K*1ms,12.000mhz**********/
- void delayMs(unsigned int ms)
- {
- unsigned char j;
- while(ms--)
- {
- for(j=0; j<=125; j++);
- }
- }
- /***************初始化*******************/
- void init()
- {
- P1=0xff; //初始化p1口,全設為1 語音芯片播放的地址
- P3=0xff; //1602控制端 以及溫度播報按鍵
- top_temp = 30; //最高溫度
- bottom_temp = 1; ///最低溫度
- initLCM( ); //1602初始化
- initClock(); //定時器初始化
- initTemp(); // 溫度傳感器初始化
- // initSpeakTemp();
- BEEP = 1; //蜂鳴器?
- }
- /***************the main funtion****************/
- void main(void)
- {
- init( ); //lcd1602初始化
- Uart1Init(); //串口1初始化
- while (1)
- {
- scan_key(); //按鍵掃描子函數
- ReadTemperature( ); // 讀取溫度子函數
- displayTemp(); //顯示溫度子函數
-
-
-
- }
- }
- void Uart1() interrupt 4 //串口中斷函數
- {
- if (RI)
- {
- RI = 0; //清除RI位
- }
- if (TI)
- {
- TI = 0; //清除TI位
- }
- }
復制代碼
所有資料51hei提供下載:
溫度播報1420.7z
(10.58 MB, 下載次數: 125)
2020-2-24 16:47 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|