基于單片機(jī)的電子時鐘_第1頁
基于單片機(jī)的電子時鐘_第2頁
基于單片機(jī)的電子時鐘_第3頁
基于單片機(jī)的電子時鐘_第4頁
基于單片機(jī)的電子時鐘_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、專業(yè)設(shè)計(jì)報(bào)告題目:基于單片機(jī)的電子時鐘系別 班級 姓名 學(xué)號 指導(dǎo)教師 2011年11月摘 要本設(shè)計(jì)主要為實(shí)現(xiàn)一款可正常顯示時間、日期與溫度,并且能夠通過簡單的按鍵進(jìn)行調(diào)整的電子時鐘。該時鐘以AT89C52芯片為核心,1602 LCD為顯示器,使用DS1302實(shí)時時鐘日歷芯片完成時鐘/日歷的基本功能,并使用18B20芯片作為溫度傳感器。關(guān)鍵詞:電子時鐘;18B20;AT89C52;DS1302;目 錄一、緒論···············

2、3;····························11.1多功能電子時鐘研究的背景和意義··················

3、83;11.2 電子時鐘的功能··································1二、方案設(shè)計(jì)············&#

4、183;··························22.1方案比對與論證·····················

5、83;·············22.2主要芯片簡介···································

6、;··32.2.1微處理器選擇···································32.2.2 DS1302簡介········&#

7、183;···························52.2.3 DS1302引腳說明···················

8、83;············62.2.4 DS18B20簡介···································

9、;72.2.5 DS18B20引腳說明·······························82.3電子時鐘硬件電路設(shè)計(jì)·············

10、83;···············92.4電子時鐘軟件設(shè)計(jì)································10

11、2.4.1軟件流程圖····································102.4.2 proteus仿真圖·········&#

12、183;······················11四、附錄··························&#

13、183;·················12 (一)源程序語言······························

14、83;·····12 (二)參考文獻(xiàn)·······································23基于單片機(jī)的電子時鐘一、緒論時間是人類生活

15、必不可少的重要元素,如果沒有時間的概念,社會的發(fā)展將會受到很大影響。人類一直在嘗試量度時間,從古代的水漏、十二天干地支,到后來的機(jī)械鐘表以及當(dāng)今的石英鐘,都充分顯現(xiàn)出了時間的重要,同時計(jì)時工具的變化以及計(jì)時準(zhǔn)確率的提高也代表著科技的進(jìn)步。致力于計(jì)時器的研究和充分發(fā)揮時鐘的作用,將有著重要的意義。電子鐘是一種利用數(shù)字電路來顯示秒、分、時的計(jì)時裝置,與傳統(tǒng)的機(jī)械鐘相比,它具有擁有時鐘精確、體積小、界面友好、可擴(kuò)展性能強(qiáng)等特點(diǎn),走時準(zhǔn)確、顯 示直觀、無機(jī)械傳動裝置等優(yōu)點(diǎn),因而得到廣泛應(yīng)用。隨著人們生活環(huán)境的不斷改善和美化,在許多場合可以看到數(shù)字電子鐘。 1.1 多功能電子時鐘研究的背景和意義近代電子

16、技術(shù)獲得了飛速的發(fā)展。在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透到了社會的各個領(lǐng)域,有力的推動和提高了社會生產(chǎn)力的發(fā)展與信息化程度,同時也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提升,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。 時間的計(jì)量與利用對人類生活有重要的意義,工作的忙碌和繁雜的容易使人忘記當(dāng)前的時間,然而遇到重大事情的時候,忘記時間,就會給自己或他人造成很大麻煩。平時我們要求上班準(zhǔn)時,約會或召開會議必然要提及時間;火車要準(zhǔn)點(diǎn)到達(dá),航班要準(zhǔn)點(diǎn)起飛;工業(yè)生產(chǎn)中,很多環(huán)節(jié)都需要用時間來確定工序替換時刻。所以說能隨時準(zhǔn)確的知道時間并利用時間,是我們生活和工作中必不可少的。電子鐘是采用電子電路實(shí)現(xiàn)對時、分、秒進(jìn)行數(shù)字顯示的計(jì)時裝置,

17、廣泛應(yīng)用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?。由于?shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時功能。諸如定時自動報(bào)警、0按時自動打鈴、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。1.2 電子時鐘的功能電子時鐘主要是利用電子技術(shù)將時鐘電子化、數(shù)字化,擁有時間精確、體積小、界面友好、可擴(kuò)展性能強(qiáng)等特點(diǎn),被廣泛應(yīng)用于生活和工作當(dāng)中

18、。當(dāng)今市場上的電子時鐘品類繁多,外形小巧別致。也有體型較大的,諸如公共場所的大型電子報(bào)時器等。電子時鐘首先是數(shù)字化了的時間顯示或報(bào)時器,在此基礎(chǔ)上,人們可以根據(jù)不同場合的要求,在時鐘上加置其他功能,比如定時鬧鈴,萬年歷,環(huán)境溫度、濕度檢測,環(huán)境空氣質(zhì)量檢測,USB擴(kuò)展口功能等。本設(shè)計(jì)電子時鐘主要功能與特點(diǎn)為:1、具有年、月、日顯示和手動校對功能;2、具有溫度顯示功能;3、 24小時制二、方案設(shè)計(jì)2.1方案比對與論證1、電子時鐘方案考慮單片機(jī)貨源充足、價格低廉,可軟硬件結(jié)合使用,能夠較方便的實(shí)現(xiàn)系統(tǒng)的多功能性,故采用單片機(jī)作為本設(shè)計(jì)的硬件基礎(chǔ)。此時對于計(jì)時芯片的選擇有兩種思路:1,用單片機(jī)定時器

19、來做,其優(yōu)點(diǎn)是外圍電路簡單,只需要一個單片機(jī)最小系統(tǒng),和一個顯示模塊;缺點(diǎn)是:定時不是很準(zhǔn)確,計(jì)時誤差較大,并且程序的編寫較繁瑣,2,采用DS1302時鐘芯片計(jì)時,優(yōu)點(diǎn)是:定時準(zhǔn)確,誤差很小,在有備用電池的情況下,即使單片機(jī)掉電,也可以維持很長時間,程序編寫相對簡單。缺點(diǎn)是:外圍電路比前者相對復(fù)雜一點(diǎn)。本設(shè)計(jì)中,采用誤差小精度高的DS1302時鐘芯片計(jì)時。2、顯示器方案采用LCD1602顯示器,其特點(diǎn)為顯示字母和數(shù)字方便,而且成本較低3、溫度傳感器方案方案一:采用數(shù)字式溫度傳感器DS18B20此類傳感器為數(shù)字式傳感器,僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,可以去除A/D模塊,方案二:用熱敏電阻與一個相

20、應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進(jìn)行A/D轉(zhuǎn)換。此設(shè)計(jì)方案需用A/D轉(zhuǎn)換電路,而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線性的,所以誤差較大。故本設(shè)計(jì)中采用DS18BB20數(shù)字式傳感器2.2主要芯片簡介2.2.1 AT89C52簡介目前在單片機(jī)系統(tǒng)中,應(yīng)用比較廣泛的微處理器芯片主要為8XC5X系列單片機(jī)。該系列單片機(jī)均采用標(biāo)準(zhǔn)MCS-52內(nèi)核,硬件資源相互兼容,品類齊全,功能完善,性能穩(wěn)定,體積小,價格低廉,貨源充足,調(diào)試和編程方便,所以應(yīng)用極為廣泛。比較常用的有AT89C52單片機(jī),AT89C52是一個低電壓,高性能CMOS 8位單片機(jī),

21、片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。本設(shè)計(jì)中,采用AT89C52作為微處理器。AT89C2051提供以下標(biāo)準(zhǔn)功能:2K字節(jié)閃速存儲器,128字節(jié)RAM,15根I/O口,兩個16位定時器,一個五向量兩級中斷結(jié)構(gòu),一個全雙工串行口,一個精密模擬比較器以及兩種可選 的軟件節(jié)電工作方式??臻e方停止CPU工作但允許RAM、定時器/計(jì)數(shù)器、串行工作口和中斷

22、系統(tǒng)繼續(xù)工作。掉電方式保存RAM內(nèi)容但振蕩器停止工作并禁止有其它部件的工作到下一個硬件復(fù)位。AT89C52具有以下主要性能:1、兼容MCS51指令系統(tǒng) 2、8k可反復(fù)擦寫(大于1000次)Flash ROM; 3、32個雙向I/O口; 4、256x8bit內(nèi)部RAM; 5、3個16位可編程定時/計(jì)數(shù)器中斷; 6、時鐘頻率0-24MHz; 7、2個串行中斷,可編程UART串行通道; 8、2個外部中斷源,共8個中斷源; 9、2個讀寫中斷口線,3級加密位; 10、低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能; 11、有PDIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應(yīng)不同產(chǎn)品的需求。此外,

23、AT89C52是用靜態(tài)邏輯來設(shè)計(jì)的,其工作頻率可下降到0Hz,并提供兩種可用軟件來選擇的省電方式空閑方式(Idle Mode)和掉電方式(Power Down Mode)。在空閑方式中,CPU停止工作,而RAM、定時器/計(jì)數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。在掉電方式中,片內(nèi)振蕩器停止工作,由于時鐘被“凍結(jié)”,使一切功能都暫停,只保存片內(nèi)RAM中的內(nèi)容,直到下一次硬件復(fù)位為止。 圖2.1 AT89C2051芯片PDIP封裝引腳圖AT89C52為適應(yīng)不同的產(chǎn)品需求,采用PDIP、TQFP、PLCC三種封裝形式,本系統(tǒng)采用雙列直插PDIP封裝形式。2.2.2 DS1302簡介DS1302是美國DAL

24、LAS公司推出的涓流充電時鐘芯片,內(nèi)含有一個實(shí)時時鐘/日歷和31字節(jié)靜態(tài)RAM,通過簡單的串行。實(shí)時時鐘/日歷電路提供秒、分、時、日、日期、月、年的信息,每月的天數(shù)和閏年的天數(shù)可以自動調(diào)整,時鐘操作可通過AM/PM只是決定采用24或12小時格式。DS1302與單片機(jī)之間能簡單地采用同步串行的方式進(jìn)行通信,僅需用到三個口線:(1)RES(復(fù)位),(2)I/O(數(shù)據(jù)線),(3)SCLK(串行時鐘)。時鐘/RAM的讀/寫數(shù)據(jù)以一個字節(jié)或者多達(dá)31字節(jié)的字符組方式通信。DS1302工作時功耗很低,保持?jǐn)?shù)據(jù)和時鐘信息時功率小魚1mW。DS1302是由DS 1202改進(jìn)而來,增加了以下的特性:雙電源管教用

25、于主電源和輩分電源供應(yīng),Vcc1為可編程涓流充電電源,附加七個字節(jié)存儲器。他廣泛應(yīng)用于電話、傳真、便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。下面將主要的性能治標(biāo)作一綜合:(1)實(shí)時時鐘具有能計(jì)算2100年之前的秒、分、時、日、日期、星期、月、年的能力,還有閏年調(diào)整的能力。(2)318位暫存數(shù)據(jù)存儲RAM(3)串行I/O口方式使得管腳數(shù)量最少(4)寬范圍工作電壓:2.05.5V(5)工作電流:2.0V是,小于300nA(6)讀/寫時鐘或RAM數(shù)據(jù)時,有兩種傳送方式:單字節(jié)傳送和多字節(jié)傳送(7)8腳DIP封裝或可選的8腳SOIC封裝(根據(jù)表面裝配)(8)簡單三線接口(9)與TTL兼容(Vcc=5

26、V)(10)可選工業(yè)級溫度范圍:-40+85(11)在DS1202基礎(chǔ)上增加的特性:對Vcc1有可選的涓流充電能力;雙電源管用于主電源和備份電源供應(yīng);備份電源管腳可由電池或大容量電容輸入;附加的7字節(jié)暫存存儲器2.2.3 DS1302引腳說明圖2.2 DS1302芯片引腳圖其他引腳功能參照表2.1。表2.1 DS1302引腳功能說明引腳號名稱功能1VCC1備份電源輸入2X132.768KHz晶振輸入3X232.768KHz晶振輸出4GND地5RST控制移位寄存器/復(fù)位6I/O數(shù)據(jù)輸入/輸出7SCLK串行時鐘8VCC2主電源輸入2.2.4 DS18B20簡介DS18B20數(shù)字溫度傳感器接線方便,

27、封裝成后可應(yīng)用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應(yīng)用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機(jī)房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。技術(shù)性能描述 、 獨(dú)特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。 、測溫范圍 55+125,固有測溫分辨率0.5。 、支持多點(diǎn)組網(wǎng)功能,多個DS18B20可以并

28、聯(lián)在唯一的三線上,最多只能并聯(lián)8個,實(shí)現(xiàn)多點(diǎn)測溫,如果數(shù)量過多,會使供電電源電壓過低,從而造成信號傳輸?shù)牟环€(wěn)定。 、工作電源: 35V/DC 、在使用中不需要任何外圍元件 、 測量結(jié)果以912位數(shù)字量方式串行傳送 、不銹鋼保護(hù)管直徑 6 、適用于DN1525, DN40DN250各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測溫 、 標(biāo)準(zhǔn)安裝螺紋 M10X1, M12X1.5, G1/2”任選 、PVC電纜直接出線或德式球型接線盒出線,便于與其它電器設(shè)備連接。2.2.5 DS18B20引腳說明DS18B201 2 3DQ圖2.3DS18B20芯片引腳圖其引腳功能參照表2.2序號名稱引腳功能描述1GND地信號2

29、DQ數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當(dāng)工作于寄生電源時,此引腳必須接地。表2.2DS18B20芯片引腳說明2.3電子時鐘硬件電路設(shè)計(jì)電子時鐘主要要包括時鐘電路、溫度傳感器指示電路、時間顯示電路、等幾部分。硬件電路框圖參照圖2.3。該系統(tǒng)使用AT89C52單片機(jī)作為核心,通過讀取時鐘日歷芯片DS1302數(shù)據(jù),完成此電子時鐘的主要功能時鐘,通過讀取溫度傳感器DS18B20芯片顯示完成電子鐘的溫度測量功能,再以LM1601作為顯示屏,分成兩行,第一行顯示日期,第二行恒顯示時、分、秒,通過按鍵的切換,可以由時鐘界面切換到溫度

30、顯示界面,同時,按鍵還可以實(shí)現(xiàn)時間的調(diào)整功能。DS18B20AT89C52DS1302按鍵LM1601圖2.3 多功能電子時鐘硬件系統(tǒng)框圖圖2.4 系統(tǒng)時鐘電路2.4電子時鐘軟件設(shè)計(jì)2.4.1軟件流程圖2.4.2 Proteus仿真圖圖4.1 數(shù)字鐘仿真圖四、附錄(一)源程序語言C語言編寫:24/使用uchar數(shù),否則出錯/請注意 int uint char uchar的用法。#include<reg51.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define po

31、rt P0static unsigned char buf3 ; /存儲轉(zhuǎn)換后溫度的高8位與低8位 static unsigned char buf13;unsigned char temper_value; /存儲轉(zhuǎn)化后溫度的結(jié)果值 uchar num="0123456789"sbit MODE=P12;/顯示溫度和顯示時間相互切換sbit ADD=P13;/給日期加一sbit MIN=P14;/給日期減一/-18B20-/端口定義及開辟相應(yīng)的存儲單元sbit DQ = P23; /DS18B20單總線接入點(diǎn) bit flag ; /檢測芯片是否存在的標(biāo)志位bit sig

32、nal; /溫度符號標(biāo)志位sbit b=P10; /芯片存在P1.0置0點(diǎn)亮LED燈sbit c=P11;/芯片不存在P1.1置0點(diǎn)亮LED燈unsigned char code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf; /8段數(shù)碼管09數(shù)字的共陽顯示代碼/延時函數(shù)void delay_1(unsigned char i) while(-i); /1302初始化函數(shù)reset_signal() DQ = 1; _nop_(); DQ = 0; /主機(jī)發(fā)送復(fù)位脈沖至少持續(xù)480uS delay_1(250); /480

33、uS960uS之間 DQ = 1; delay_1(20); /延時至少16uS flag = DQ; /DS18B20等待16uS后發(fā)送存在脈沖(低電平)持續(xù)60uS240uS if(flag=0) /若flag=0則表示存在 b = 0; /P1.0亮 delay_1(90); /延時60uS240uS之間 else c=0; /不存在則P1.1亮 DQ = 1; /寫入將要執(zhí)行操作的命令void w_order(unsigned char cmd) unsigned char i; for(i=0;i<8;i+) if(cmd&(0x01<<i)/寫1 DQ =

34、 0;/主機(jī)將數(shù)據(jù)線拉至低電平產(chǎn)生寫時間片 _nop_();/最好是拉至低電平后就釋放(但延時至少1uS以上),這樣才能在15uS內(nèi)恢復(fù)到高電平 _nop_();/15uS內(nèi)必須拉至高電平(因?yàn)镈S18B20在15uS60uS之間對數(shù)據(jù)線進(jìn)行采樣) DQ = 1; delay_1(28); /延時60uS(因?yàn)橐粋€寫周期至少延時60uS) else /寫0 DQ = 0;/主機(jī)將數(shù)據(jù)線拉至低電平產(chǎn)生寫時間片 delay_1(40); /延時60uS以上(因?yàn)橐粋€寫周期至少延時60uS) DQ = 1; _nop_();/恢復(fù)延時(因?yàn)閭€寫周期之間至少有1uS的恢復(fù)時間) _nop_(); _n

35、op_(); _nop_(); /讀出轉(zhuǎn)換后的溫度結(jié)果存入 buf 1中void r_data() unsigned int i,j; for(j=0;j<2;j+) bufj = 0; for(i=0;i<8;i+) DQ = 1; _nop_(); DQ = 0; /主機(jī)將數(shù)據(jù)線拉至低電平產(chǎn)生讀時間片 _nop_(); /最好是拉至低電平后就釋放(但延時至少1uS以上),這樣才能在15uS內(nèi)恢復(fù)到高電平 _nop_(); /15uS內(nèi)必須驅(qū)動至高電平(因?yàn)镈S18B20輸出數(shù)據(jù)在讀時間片下降沿后15uS有效) DQ = 1; _nop_(); if(DQ) /提高總線后馬上讀取

36、 bufj|=(1<<i); else bufj&=(1<<i); delay_1(28); /每個讀周期至少持續(xù)60uS DQ = 1; _nop_(); /恢復(fù)延時(因?yàn)閭€讀周期之間至少有1uS的恢復(fù)時間) / 獲得當(dāng)前的溫度值 void get_temper_value() DQ = 1; reset_signal(); /初始化 ,檢測是否存在 DS18B20 if(flag=0) w_order(0xcc); /跳過ROM w_order(0x44); /啟動溫度變換 reset_signal(); /復(fù)位 w_order(0xcc); /跳過ROM

37、w_order(0xbe); /準(zhǔn)備讀暫存器 r_data(); /讀暫存器中溫度變化的結(jié)果 void Conversion() /將二進(jìn)制數(shù)轉(zhuǎn)入十進(jìn)制中 signal = (buf1&0xf8); /檢溫度測是正還是負(fù) buf12 = 0; /溫度的符號位 if(signal) buf0=buf0; buf1=buf1; buf12=10; buf0=(buf0>>4); /將溫度轉(zhuǎn)換結(jié)果的低8位的高4位移入低4位 /這里我們拋棄了溫度轉(zhuǎn)換結(jié)果的第四位(小數(shù)部分,因?yàn)槲覀儾恍枰敲礈?zhǔn)確) buf0=(buf0&0x0f); /保留低4位并存入buf0中 buf1=

38、(buf1<<4); /將溫度轉(zhuǎn)換結(jié)果的高8位的低4位移入高4位 buf1=(buf1&0xf0); /保留高4位并存入buf1中 temper_value=(buf0|buf1); /將buf0與buf1相或得溫度轉(zhuǎn)換結(jié)果存入temper_value中 if(signal) temper_value+; /為負(fù)時取反加1 buf10=temper_value%10; /將個位保存在buf10中 buf11=temper_value/10; /將十位保存在buf11中/-1302-sbit rst=P30;/ds1302sbit sclk=P31;/時鐘sbit io=P3

39、2;/數(shù)據(jù)口sbit h=P36;/小時sbit m=P37; /分鐘sbit e=P22;/使能sbit rw=P21;/讀寫sbit rs=P20;/數(shù)據(jù)/命令sbit busy=P07;/檢測忙int hour=23,minute=51;/-發(fā)送一個字節(jié)(8位)-用于傳輸首地址或者具體時鐘起始日期時間或者用于初始化芯片void send(uchar dt) uchar i; for(i=0;i<8;i+) sclk=0;io=dt&0x01;/取第一位dt>>=1;/左移一位sclk=1;/上升沿有效 /-寫地址、數(shù)據(jù)-void write(uchar addr

40、,uchar dat) rst=0;sclk=0;rst=1; send(addr);/發(fā)送地址 send(dat);/發(fā)送數(shù)據(jù) rst=1;/-讀取8位-用于從1302中讀取具體的時間參數(shù),以便顯示在1602uchar receive() uchar i; uchar dat=0; /循環(huán)8次 for(i=0;i<8;i+) sclk=1; dat>>=1; sclk=0;/下降沿讀取 io=1;/讀引腳前置一 if(io=1)dat|=0x80; /此時dat為16進(jìn)制比如說0x10 dat=(dat/16)*10+dat%16; /轉(zhuǎn)化為10進(jìn)制,現(xiàn)在是10; retu

41、rn(dat);/返回值/-讀時鐘-uchar read(uchar addr) uchar dat=0; rst=0;sclk=0;rst=1; send(addr);/發(fā)送地址 dat=receive();/接收 rst=0;return(dat);/-1602-/延時void delay(uint n) uint i; for(;n>0;n-) for(i=200;i>0;i-);/判斷是否忙void check() rs=0; rw=1; /讀 e=1;port=0x00;e=1; while(busy);e=0;/寫指令void sendcommand(uchar com

42、mand) check();rs=0; /指令rw=0; /寫 e=0;port=command;e=1;_nop_();_nop_();e=0;/寫入指令/寫數(shù)據(jù)void writedata(uchar dat) check();rs=1; /數(shù)據(jù)rw=0;port=dat;e=1; _nop_();_nop_();e=0;/光標(biāo)位置void pos(uint p) sendcommand(p|0x80);/第一行第一個0x80;void init()/1602初始化程序 sendcommand(0x38); / 8位數(shù)據(jù),雙列,5*7字形 delay(1); sendcommand(0x0

43、c); /開 0x08關(guān) delay(1); sendcommand(0x06);/地址增加一 delay(1); sendcommand(0x01);/清屏 delay(1);void welcome() int i=0; uchar string="data:" uchar up="time:" init();delay(10); pos(0);delay(1); while(stringi!='0') writedata(stringi+);delay(1); i=0;delay(10); pos(0x40);delay(1); w

44、hile(upi!='0') writedata(upi+);delay(1); /從1302中讀取數(shù)據(jù),并且在1602中顯示出來void writetime() int i=0; uchar sign=':' uchar note='-' /read(0x81);read(0x83);read(0x85); pos(5);delay(10); delay(1);writedata(numread(0x8d)/10); delay(1);writedata(numread(0x8d)%10); delay(1);writedata(note); dela

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論