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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5305|回復: 4
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:615726 發表于 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)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:632952 發表于 2019-11-6 17:43 來自手機 | 只看該作者
需要用Proteus7.5打開才可以
回復

使用道具 舉報

板凳
ID:647786 發表于 2019-11-23 21:19 | 只看該作者
有原理圖和PCB嗎
回復

使用道具 舉報

地板
ID:673021 發表于 2019-12-25 12:55 來自手機 | 只看該作者
有總程序嗎
回復

使用道具 舉報

5#
ID:701702 發表于 2020-3-4 08:51 | 只看該作者
非常不錯,結構清晰容易讀懂。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久草在线在线精品观看 | 国产午夜精品视频 | 91精品国产综合久久久动漫日韩 | 中文字幕亚洲欧美 | 国产成人免费视频 | 97国产精品 | 二区中文字幕 | 九九色综合| 国产日韩一区二区 | 欧产日产国产精品99 | 久久99精品久久 | 亚洲欧洲成人av每日更新 | 欧美激情一区二区三区 | 成人免费视频在线观看 | 中文字幕在线中文 | 成人二区 | 涩在线 | 日韩三级在线 | 三级免费 | 九色 在线| 国产做a爱片久久毛片 | 欧美日韩一卡 | 日韩一区二区在线视频 | 亚洲视频免费在线看 | 国产丝袜一区二区三区免费视频 | 国产亚洲精品久久19p | 午夜影院在线观看视频 | 欧洲视频一区二区 | 国产精品久久久久久久久久久久久久 | 这里有精品 | 黄色亚洲网站 | av大片 | 国产一区二区三区四区五区加勒比 | 2019天天干夜夜操 | 激情av网站 | 亚洲a一区二区 | 97久久精品午夜一区二区 | 天堂网中文字幕在线观看 | 九九精品网| 国产精品久久久久久久久久久久久久 | 国产一区二区精品在线观看 |