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

標題: 單片機溫度報警器設計,含源碼,仿真圖 [打印本頁]

作者: ss520    時間: 2019-9-24 15:57
標題: 單片機溫度報警器設計,含源碼,仿真圖
這是我去年單片機設計的溫度報警器,proteus仿真過,完美成功請看介紹

1、初始化時序圖
  圖3 初始化時序圖
(1)首先將數據線置高電平1。
(2)然后進行延時(盡可能短,沒有嚴格要求)。
(3)然后把數據線拉倒低電平0。
(4)再延時750μs (時間可以在480μs -960μs中選)
(5)再將數據線拉高到電平1。
(6)延時等待。如果初始化成功則在15-60μs內產生一個由DS18B20返回的低電平0。這個可以確定它的存在。
(7)假設是單片機的CPU讀到數據線上的低電平后,還要進行延時,那么時間從發出高電平算起不能少于480μs。
(8)最后將數據線再次拉到低電平后結束。
2、DS18B20寫數據
4 DS18B20
寫時序圖
(1)首先將數據線先置低電平0。
(2)然后延時確定的時間為15μs。
(3)再按從低位到高位的順序來發送數據。
(4)其中延時時間為45μs。
(5)再把數據線拉倒高電平1。
(6)然后再重復前面五步,直到發送完整一個字節。
(7)最后將數據線拉高到1。
3、DS18B20讀數據
(1)  首先將數據線拉高到1。
(2)  然后延時2μs。
(3)  再將數據線拉低到0。
(4)  然后延時5μs。(時間大于1μs)
(5)  再將數據線拉高到1。
(6)  延時4μs。
(7)  讀數據線狀態得到一個狀態位,并進行數據處理。
(8)  延時30μs。
(9)  重復以上所有步驟,直到讀取完一個字節。
3.3 LCD1602液晶顯示器
3.3.1功能
1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線15腳的VCC和16腳的GND,本次研究采用16引腳的LCD。專門用來顯示字母、數字、符號等的點陣型液晶模塊,通過驅動模塊與顯示器的有效連接,能直觀的顯示出程序中要求的內容。
3.3.2特點
顯示質量高:由于液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點。因此,液晶顯示器畫質高且不會閃爍。
數字式接口:液晶顯示器都是數字式的,和單片機系統的接口更加簡單可靠,操作更加方便。
體積小、重量輕:液晶顯示器通過顯示屏上的電極控制液晶分子狀態來達到顯示的目的,在重量上比相同顯示面積的傳統顯示器要輕得多。
功耗低:相對而言,液晶顯示器的功耗主要消耗在其內部的電極和驅動IC上,因而耗電量比其它顯示器要少得多。
3.3.3引腳
本次實驗采用16引腳LCD1602液晶顯示器
  引腳功能:
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。即電平=0為輸入指令;電平=1為輸入數據。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。
第6腳:E端為使能端,1時讀取信息,當E端由高電平跳變成低電平時,即當1→0(下降沿)液晶模塊執行命令。
7~14腳:D0~D7為8位雙向數據線。7號引腳為最低位,14號引腳為最高位。
第15腳:背光源正極。
第16腳:背光源負極。

在課題設計的溫度控制系統設計中,控制核心是STC89C52單片機,該單片  機為51系列增強型8位單片機,它有32個I/O口,片內含4K FLASH工藝的序存儲器,便于用電的方式瞬間擦除和改寫,而且價格便宜,其外部晶振為12M一個指令周期為1μs。使用該單片機完全可以完成設計任務,其最小系統主要包括:復位電路、震蕩電路以及存儲器選擇模式,報警時界面如圖16所示。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <REGX51.H>
  2. #include <intrins.h>

  3. typedef unsigned char u8;                 
  4. typedef unsigned int u16;

  5. sbit beep=P1^5;
  6. sbit Led1=P2^2;           //高溫閃爍
  7. sbit Led2=P2^3;           //低溫閃爍
  8. u8 code t0[]="Temperature is:";

  9. void TempDisplayTest(void);
  10. void delay500us(void);
  11. void BuzzerOnOff(void);

  12. void Lcd1602Init(void);
  13. void Lcd1602SetCursor(u8 x,u8 y);
  14. void Lcd1602ShowStr(u8 x, u8 y, u8 *pStr);
  15. void Lcd1602ShowTempU16(u8 x, u8 y, u16 temp);

  16. void Ds18b20TempConvertCmd(void);
  17. void Ds18b20TempReadCmd(void);
  18. u8 Ds18b20ReadByte(void);

  19. void main(void)
  20. {
  21.         Lcd1602Init();

  22.         while (1)
  23.         {
  24.                 TempDisplayTest();        
  25.         }
  26. }


  27. void TempDisplayTest(void)
  28. {
  29.     u16 tt, i;                                                // 控制蜂鳴器報警
  30.         u16 temp = 0;                                 // 用來暫存12位的AD值
  31.         u8 tmh = 0, tml = 0;                        // 用來暫存2個8位的AD值
  32.         u16 tDisp = 0;                                        // 用來存儲乘以100倍后的溫度值
  33.         double t = 0;                                        // 用來存儲轉換后以攝氏度為單位的溫度值

  34.         Ds18b20TempConvertCmd();                // 先寫入轉換命令
  35.         Ds18b20TempReadCmd();                        // 然后等待轉換完后發送讀取溫度命令
  36.         tml = Ds18b20ReadByte();                // 讀取溫度值共16位,先讀低字節
  37.         tmh = Ds18b20ReadByte();                // 再讀高字節

  38.         temp = tml | (tmh << 8);                // 默認是12位分辨率,前面4個S位是符號位
  39.         
  40.         t = temp * 0.0625;        
  41.         tDisp = (u16)(t * 100);                        // 為方便顯示將溫度值乘以100后強轉為u16
  42.         tt=tDisp/100;
  43.          

  44.         Lcd1602ShowStr(0, 0, t0);
  45.         Lcd1602ShowTempU16(0, 1, tDisp); // 調用LCD1602的顯示函數來顯示乘以100倍后的溫度值
  46.         if(tt>22)
  47.           {        for(i=500;i>0;i--)
  48.                 {
  49.                    BuzzerOnOff();
  50.                    Led1=0;Led2=1;
  51.                    delay500us();
  52.                    Led1=1;Led2=1;
  53.                 }
  54.           }
  55.          else if(tt<18)
  56.           {        for(i=500;i>0;i--)
  57.                 {
  58.                    BuzzerOnOff();
  59.                    Led1=1;Led2=0;
  60.                    delay500us();
  61.                    Led1=1;Led2=1;
  62.                 }
  63.           }
  64.          else {Led1=1;Led2=1;beep=1;}                  
  65. }

  66. void BuzzerOnOff(void)
  67. {
  68.         beep = 1;
  69.         delay500us();
  70.         beep = 0;
  71.         delay500us();
  72. }

  73. void delay500us(void)   //誤差 0us
  74. {
  75.     unsigned char a,b;
  76.     for(b=71;b>0;b--)
  77.         for(a=2;a>0;a--);
  78. }
復制代碼

Proteus7.5版本的仿真圖下載:
溫度測量.zip (109.04 KB, 下載次數: 152)


作者: 小仙帝    時間: 2019-11-6 17:43
需要用Proteus7.5打開才可以
作者: 前來求藥    時間: 2019-11-23 21:19
有原理圖和PCB嗎
作者: jianghaibing    時間: 2019-12-25 12:55
有總程序嗎
作者: heywhat    時間: 2020-3-4 08:51
非常不錯,結構清晰容易讀懂。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲成年人免费网站 | 国产精品视频免费观看 | 免费一区二区三区 | 中文字幕 国产 | 国产色网 | 成人午夜免费福利视频 | 一区二区三区免费在线观看 | 我要看一级片 | 五月天天丁香婷婷在线中 | 狠狠亚洲 | 国产精品一码二码三码在线 | 久久久精品综合 | 日本在线小视频 | av午夜电影 | 中文字幕在线二区 | 在线免费看黄 | 国产亚洲精品久久久久久豆腐 | 国产亚洲精品一区二区三区 | 久久久久久91 | 九九99久久| 国产女人与拘做受免费视频 | 91精品国产综合久久婷婷香蕉 | 色女人天堂 | 午夜爽爽男女免费观看hd | 操亚洲| 日本免费一区二区三区视频 | 久久久久久久一区 | 欧洲高清转码区一二区 | 日韩视频精品在线 | 手机日韩 | 91高清视频在线观看 | 围产精品久久久久久久 | 在线看亚洲| 污片在线观看 | 欧美日韩中文字幕在线 | 一区二区三区精品视频 | www.日韩| 欧美在线视频免费 | 亚洲美女网站 | 成人亚洲 | 成人av影院 |