【正文】
高兩位數(shù)碼管位閃,按 K2 與 K3 鍵修改 修改日,低兩位數(shù)碼管位閃,按 K2 與 K3 鍵修改 修改年份,高兩位顯示 20低兩位數(shù)碼管位閃,按 K2與 K3 鍵修改 修改星期,低兩位數(shù)碼管位閃,按 K2 與 K3 鍵修改 修改完畢,將修改信息寫入到 DS1302 芯片中 msta1=4 msta1=5 msta1=6 msta1=7 按鍵掃描 入口 初始化 DS18B20 跳過 ROM 溫度轉換 初始化 DS18B20 跳過 ROM 讀取溫度 讀低 8 位 讀高 8 位 將取出的數(shù)據(jù)轉換成溫度值,分為整數(shù)部分和小數(shù)部分 將整數(shù) 部分送顯緩存 將小數(shù)部分按 精度處理 將溫度值轉換為BCDma3,yongyu 溫度報警時溫度比較實用 返回 入口 讀鍵,保存鍵值 有鍵? 開定時中斷延時去抖 提取鍵前沿 關定時中斷 返回 N Y 中斷服務子程序 顯示方式 1 入口 重裝中斷定時初值 保存變化的鍵狀態(tài) 返回 Y N 顯示個位, dsw=1 關數(shù)碼管 i3? 根據(jù)狀態(tài)字進行散轉 入口 i=0 返回 顯示十位, dsw=2 顯示百位, dsw=3 顯示千位, dsw=0 dsw=0 dsw=1 dsw=2 dsw=3 初始化 DS1302 子程序流圖 溫顯模塊子程序流圖 入口 允許初始化標志位 =1? 寫保護關 寫入年份 寫入月份 寫入日 寫入小時 寫入分鐘 寫保護開 允許初始化標志位清零 返回 N Y 入口 將溫度值送顯緩 溫度值比較,超過上下限值,則報警 返回 讀取時間模塊子程序流圖 主程序部分 include //52 單片機頭文件 include //52 單片機頭文件 include include //52 單片機頭文件 define SM_PORT P0 //輸出口定義 define uint unsigned int define uchar unsigned char 讀取分鐘,將數(shù)據(jù)轉換為十進制數(shù)據(jù) 入口 變量定義 返回 讀取小時,將數(shù)據(jù)轉換為十進制數(shù)據(jù) 讀取日,將數(shù)據(jù)轉換為十進制數(shù)據(jù) 讀取月份,將數(shù)據(jù)轉換為十進制數(shù)據(jù) 讀取星期,將數(shù)據(jù)轉換為十進制數(shù)據(jù) 讀取年份,將數(shù)據(jù)轉換為十進制數(shù)據(jù) uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, //0,1,2,3......數(shù)碼管 //斷碼表, 16 關, 17H, 18— ,19L 0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1, 0x86,0x8e,0xff,0x89,0xbf,0xc7}。 X T 11 2 MC8 1 0 p fC9 1 0 p fE11 0 u fS1S W P BR 1 81 0 kR 1 73 3 0V D D3I /O2G N D1U3D S 1 8 B 2 0R 2 04 K 7C10 .1 U FR E SR E SV C CV C CV C CC S 0C S 3C S 1C S 2Q49 0 1 2V C CR 1 93 .3 KP 3 0V C C12+L S 1R 1 65 .1 KD1L E DQ09 0 1 2Q19 0 1 2Q29 0 1 2Q39 0 1 21 23 45 67 89 10I S P 1M O S IR E SS C KM I S OV C C在線編程接口復位電路電源指示燈報警模塊P 2 4P 2 5P 2 6P 2 7P 1 0P 1 1P 1 2P 1 3P 1 4P 1 5P 1 6P 1 7K0K1K2K3P 2 4P 2 5P 2 6P 2 7按鍵模塊V C CV C CP 1 0P 1 1P 1 2P 1 3P 1 4P 1 5P 1 6P 1 7R 1 32KR 1 21 0 0V C CP 3 0P 3 1P 3 6P 3 7V c c 21X12X23G N D4R S T5I /O6S C L K7V c c8U1D S 1 3 0 2V C CV C CX T 23 2 7 6 8 H ZR 1 45KR 1 55KP 3 5P 3 6P 3 7P 3 2P 3 3P 3 4+12J P 13V時鐘模塊液晶模塊溫度檢測模塊U S B 電源P 0 0P 0 1P 0 2P 0 3P 0 4P 0 5P 0 6P 0 71 23 4J P 2跳帽D2L E DD3L E DabR0 4 7 0R1 4 7 0R2 4 7 0R3 4 7 0R4 4 7 0R5 4 7 0R6 4 7 0R7 4 7 0V C C V C C V C C V C CR84 K 7R94 K 7R 1 04 K 7R 1 14 K 7P 0 0P 0 1P 0 2P 0 3P 0 4P 0 5P 0 6P 0 7cdefghabcdefghabcdefghabcdefghC S 0 C S 1 C S 2 C S 3數(shù)碼顯示部分C P U 及時鐘電路abfcgdedpa7b6c4d2e1f9g10dp5com3com8s h u 1S M 4 1 1 0 0 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8s h u 2S M 4 1 1 0 0 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8s h u 3S M 4 1 1 0 0 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8s h u 4S M 4 1 1 0 0 6abcdefghM O S IM I S OS C KV C C1G N D2P O W E RR 2 14 .7 KG N D1V C C2VO3RS4RW5E6D B 07D B 18D B 29D B 310D B 411D B 512D B 613D B 714B G V C C15B G G N D16LCD 1602L C DL C D 1 6 0 2P 3 2P 3 3P 3 4P 3 5E A / V P P31X119X218R E S E T9R D / P 3 717W R /P 3 616P 3 2 /I N T 012P 3 3 /I N T 113P 3 4 /T 014P 3 5 /T 115P 1 01P 1 12P 1 23P 1 34P 1 45P 1 56P 1 67P 1 78P 0 039P 0 138P 0 237P 0 336P 0 435P 0 534P 0 633P 0 732P 2 021P 2 122P 2 223P 2 324P 2 425P 2 526P 2 627P 2 728P S E N29A L E / P R D G30P 3 1 /T X D11P 3 0 /R X D10V C C40G N D20I C 6A T 8 9 C 5 2 主程序主要起到一個導向和決策功能,控制程序的走向。完成一個讀時序過程,至少需要 60us 才能完成。若主機想寫 1,在一開始拉低總線電平 1 微秒 后就釋放總線為高電平,一直到寫周期結束。 其工 作時序包括: 1. 初始化時序 2. 寫時序 3. 讀時序 初始化時序: 主機首先發(fā)出一個 480- 960 微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的 480 微秒時間內(nèi)對總線進行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應答。 8. 掉電保護功能 DS18B20 內(nèi)部含有 EEPROM ,在系統(tǒng)掉電以后,它 仍可保存分辨率及報警溫度的設定值。 176。 3 將寫保護寄存器再寫為 80H,防止誤改寫寄存器的值。接下來就是傳一個字節(jié)的數(shù)據(jù)給 DS1302,當傳完數(shù)據(jù)后,單片機將 CE 置為低電平,操作結束。 寫數(shù)據(jù): 控制字總是從最低位開始輸出。在 12 小時模式時, 位 5 是 ,當為 1 時,表示 PM。工作電壓寬達 ~ 。段選碼,位選碼每送入一次后延時 5MS,因人的視覺暫留時間為 ( 100MS),所以每位顯示的時間不能超過 20MS,并保持延時一段時間,以造成視覺暫留效果,給人看上去每個數(shù)碼管總在亮。采用雙電源供電(主電源和備用電源),可設置備用電源充電方式,提供了對后備電源進行涓細電流充電的能力。 對于方案一,采用熱敏電阻作為溫度檢測元件,有價格便宜,元件易購的優(yōu)點,但熱敏電阻對溫度的 細微變化不太敏感,并且由于熱敏電阻的RT 關系的非線性,其自身電阻對溫度的變化存在較大誤差,而且在人體所處環(huán)境溫度變化過程中難以檢測到小的溫度變化。 關鍵字 : 單片機, DS18B20, DS1302,共陽數(shù)碼管 . 1. 設計任務 設計任務 利用單片機、時鐘芯片 DS130溫度傳感器 DS18B數(shù)碼管等 實現(xiàn)日期、時間、溫度的顯示,即一個簡單的萬年歷。本設計就是應用單片機強大的控制功能制作而成的電子萬年歷,該電子萬年歷包括兩大功能:可顯示年、月、日、時、分;實時監(jiān)測環(huán)境溫度(具有超低溫的報警功能,且報警的上下限值可由用戶自定義設置) ,。 方案二:采用數(shù)字式的集成溫度傳感器 DS18B20 作為溫度檢測的核心元件,由其檢測并直接輸出數(shù)字溫度信號給單片機進行處理。工作電壓寬達 ~ 。而共陽極公共端分別接一個9012,由相應的 I/O 口線控制 9012,實現(xiàn)各位數(shù)碼管的分時選通。實時時鐘可提供秒、分、時、 日、星期、月和年,一個月小與 31 天時可以自動調(diào)整,且具有閏年補償功能。當為高時,選擇 12 小時模式。 讀數(shù)據(jù): 讀數(shù)據(jù)時在緊跟 8 位的控制字指令后的下一個 SCLK 脈沖的下降 沿,讀出 DS1302 的數(shù)據(jù),讀出的數(shù)據(jù)是從最低位到最高位。 單字節(jié)寫:在進行操作之前先得將 CE(也可說是 RST)置高電平,然后單片機將控制字的位 0 放到 I/O 上,當 I/O 的數(shù)據(jù)穩(wěn)定后,將 SCLK置高電平, DS1302 檢測到 SCLK 的上升沿后就將 I/O 上的數(shù)據(jù)讀取,然后單片機將 SCLK 置為低電平,再將控制字