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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5388|回復: 4
收起左側

單片機溫度報警器設計,含源碼,仿真圖

[復制鏈接]
ID:615726 發表于 2019-9-24 15:57 | 顯示全部樓層 |閱讀模式
這是我去年單片機設計的溫度報警器,proteus仿真過,完美成功請看介紹
51hei.gif
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仿真工程文件可到本帖附件中下載)
仿真.png

單片機源程序如下:
  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)

回復

使用道具 舉報

ID:632952 發表于 2019-11-6 17:43 來自觸屏版 | 顯示全部樓層
需要用Proteus7.5打開才可以
回復

使用道具 舉報

ID:647786 發表于 2019-11-23 21:19 | 顯示全部樓層
有原理圖和PCB嗎
回復

使用道具 舉報

ID:673021 發表于 2019-12-25 12:55 來自觸屏版 | 顯示全部樓層
有總程序嗎
回復

使用道具 舉報

ID:701702 發表于 2020-3-4 08:51 | 顯示全部樓層
非常不錯,結構清晰容易讀懂。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 婷婷午夜天 | 二区成人 | 亚洲国产成人精品女人久久久 | 国产精品一区二区三 | 99久久中文字幕三级久久日本 | 九九热最新地址 | av网站免费 | 夜夜精品浪潮av一区二区三区 | 国产精品视频免费观看 | 久久久久国 | 精品一区二区三区不卡 | 日本一区二区三区精品视频 | 在线日韩中文字幕 | 日韩三级免费网站 | 欧美精品福利 | 天堂资源最新在线 | 国产亚洲一区二区在线观看 | 精品视频一区二区三区在线观看 | 国产一区二区三区亚洲 | 99精品久久久国产一区二区三 | 91精品久久久 | 精品视频一区二区三区 | 久久99精品久久久久久国产越南 | 精品亚洲一区二区三区 | 久久99深爱久久99精品 | 男人天堂久久 | 免费看91| 欲色av | 欧美国产激情 | 久久久这里只有17精品 | 久久99久久 | 欧美a区 | 精品视频在线播放 | 91在线免费视频 | 久久亚洲高清 | 欧美日韩精品免费观看 | 精品影院 | 中文字幕视频免费 | 免费观看www| 操到爽| www.亚洲|