![基于某stc51單片機的LCD1602顯示時間_的電子萬年歷顯示當(dāng)前溫度_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/a227838d-afd2-4c94-8701-fe50f02f91b8/a227838d-afd2-4c94-8701-fe50f02f91b81.gif)
![基于某stc51單片機的LCD1602顯示時間_的電子萬年歷顯示當(dāng)前溫度_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/a227838d-afd2-4c94-8701-fe50f02f91b8/a227838d-afd2-4c94-8701-fe50f02f91b82.gif)
![基于某stc51單片機的LCD1602顯示時間_的電子萬年歷顯示當(dāng)前溫度_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/a227838d-afd2-4c94-8701-fe50f02f91b8/a227838d-afd2-4c94-8701-fe50f02f91b83.gif)
![基于某stc51單片機的LCD1602顯示時間_的電子萬年歷顯示當(dāng)前溫度_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/a227838d-afd2-4c94-8701-fe50f02f91b8/a227838d-afd2-4c94-8701-fe50f02f91b84.gif)
![基于某stc51單片機的LCD1602顯示時間_的電子萬年歷顯示當(dāng)前溫度_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/a227838d-afd2-4c94-8701-fe50f02f91b8/a227838d-afd2-4c94-8701-fe50f02f91b85.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、標(biāo)準(zhǔn)1課設(shè)所需軟件簡介1.1 Keil uVision4的簡要介紹2009年2月發(fā)布KeilVision4, Keil v Vision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺監(jiān)視器,并提供了視覺上的表面對窗口位置的完 全控制的任何地方。新的用戶界面可以更好地利用屏幕空間和更有效地組 織多個窗口,提供一個整潔,高效的環(huán)境來開發(fā)應(yīng)用程序。新版本支持更 多最新的ARM芯片,還添加了一些其他新功能。2011年3月ARM公司發(fā)布最新集成開發(fā)環(huán)境 RealView MDK開發(fā)工 具中集成了最新版本的 Keil uVision4 ,其編譯器、調(diào)試工具實現(xiàn)與 ARM器 件的最完美匹配。Keil C5
2、1開發(fā)系統(tǒng)基本知識 Keil C51開發(fā)系統(tǒng)基本知識1 .系統(tǒng)概述Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全 Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就 能體會到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代 碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面 詳細(xì)介紹Keil C51開發(fā)系統(tǒng)各部分功能和使用。2 . Keil C51單片機軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu)C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是 C51 for Windows 和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編
3、譯、連接、調(diào)試、仿真等整 個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的 Hex文件,以供調(diào)試器 dScope51或tScope51使用進行源代碼級調(diào)試,也可由仿真器使用直接對目 標(biāo)板進行調(diào)試,也可以直接寫入程序存貯器如EPROM中。文案標(biāo)準(zhǔn)使用獨立的Keil仿真器時,注意事項:* 仿真器標(biāo)配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔 中換插其他頻率的晶振。* 仿真器
4、上的復(fù)位按鈕只復(fù)位仿真芯片,不復(fù)位目標(biāo)系統(tǒng)。* 仿真芯片的31腳(/EA)已接至高電平,所以仿真時只能使用片內(nèi)ROM ,不能使用片外 ROM ;但仿真器外引插針中的31腳并不與仿真芯片的31腳相連,故該仿真器仍可插入到擴展有外部ROM (其CPU的/EA引腳接至低電平)的目標(biāo)系統(tǒng)中使用。 優(yōu)點:1 .Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。2 .與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu) 勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。KeilC51軟件提供豐富的庫函數(shù)和功能
5、強大的集成開發(fā)調(diào)試工具,全 Windows 界面。圖1.1 KEIL操作界面文案標(biāo)準(zhǔn)1.2 STC-ISP的簡要介紹STC-ISP是一款單片機下載編程燒錄軟件,是針對 STC系列單片機而 設(shè)計的,可下載 STC89系列、12C2052系列和12C5410等系列的STC單 片機,使用簡便,現(xiàn)已被廣泛使用。操作說明如下: 打開STC-ISP ,如下圖界面,在 MCU Type欄目下選中單片機,如 STC89C52RC。5二F-2SPwxe 壬品存元將*xw.GT二MCU.8E 攜行克衿U為2230519口甜除毛14.SSSUH/OL 注皿1 Wil Tm電達拄單片11變£IfTir T對
6、修好 Ntugry K如客氏南蔗正r HOK - 1TFT在匠文件| 4串口助手|工程嵬件r/必明沃1五北葉片步嘴與tkvzdoTSl失點下負(fù)卷g冉優(yōu)U里里匕浮動 上, &L q *4/ T3SJteBctiiJj<in£ 壟息卜甄"|r由川下布前更斯,酎已打不在嘴牌ketn牛,方伸師匕陸用r當(dāng)當(dāng)陽代就生駕化旨至函岐件并上醵塔砌消冠JJno gj m Di m rw 葉uujuuj00 00 00 00 uO OQ 00 00OQWLD00 00 OO 00 OT Cd W KJmm 口00 Offl oo CO CO rc rc rcMW00 011 Q0
7、00 00 .L LL L(J0110340n ao m m m do ra面調(diào)00 00 00 m Ceil 00 M M口口國時W 皿 W CO 8 8 DQ WOflCflTDao am m cxn m m mUULU 肌ao 00 OU UU LO UI LO LUQQLCIfiDW W W CO 00 00 DQ 由UDO 仙ao ao ao co co co in wUUX5JUU 00 00 00 uO UJ UU ULOQWCDoo ao oo w co ca oa k口值時00 00 00 co co rd M mUULUAJao aa qo u co qq 國 國nnmyn
8、aa aa ao m co co no mOftDIODoo oo oo co co re rc coQ0D1LDao ao qo co co al dq mUDODDODD UDn-uoo Unn-D OOQQ口 ooouaQOQQn口 O 口 cowmajmmwm 山 m mcowo-vummw 008 mojnnm BmwoomaJwcouunnozUJ (JUROO如frlwulJnntJLIOJmOJsoownroouu L)JRDOl)J71KJU71JU8roJJRffiJJ71mE uuBDOuumMJUR山 Ron山rklpjeotlu 艮 BDabumM&ncJLw
9、T山xmEHMx詡質(zhì)I自定"叫 觥下鼠I號卦牌官比整I】能 即 一用戶缸體啟訥向部西口狗后廣F有年卷美舌i期啟復(fù)叵夫也匚的以產(chǎn)功。就座-髭中歸有理ALE pib廣 用作E4.5 療倡力臼油匚就可叮T競,嗡再用戶應(yīng)用杵好住晤-gEahi+lfcfii " 口.|清鍍¥皿師m,8«網(wǎng)志3B附嫩不覺由S武昌崔示:* TT5前三鼻一隸麗暇回吧:T;圖1.2 ISP操作界面(2)根據(jù)您的9針數(shù)據(jù)線連接情況選中COM端口,波特率一般保持默認(rèn),如果遇到下載問題,可以適當(dāng)下調(diào)一些。文案標(biāo)準(zhǔn)(3)先確認(rèn)硬件連接正確,點擊打開文件”并在對話框內(nèi)找到您要下載的HEX文件。T
10、_需 ETC-fSPuewtrfwrrTCMCU.com 31922805190(5平:,¥4和案”|蟀| "“小"nr 選/甲耳嘰型H閨UJJ出用Nmor尸:KugeISICaSCSEH: I- :"T, 理庫史4Fr旗55Fl-"<二理#H正oi OC 03 Ji京X J?加國沖加:c.WOOEOOOO EQOODS 加卬mmE mooEDm皿 moomm一皿 mDOmmm TT XTX Mm無MR mtilumm mmlumw MrrlHMR Mm的mmKIOJ 88mm 皿 lirITLLITIJZ mtiemo:白腐亡/打開文件
11、R件劃刪來flWD)-1期瓏址泗U枝驗粕何!*打開文件前說續(xù)用 E開和師,門siwa sa cj * *叱大”鳴LM 加一三 -單片及程字 1小21"潔七日唱片最-K3輪里我巾omaon omnw 0DD02D DO 口次 ooooo迪娘歲電二關(guān)電白二.,分而同的位言小陣W PPT戒步 序制.J圖NA*tSTJ>r嬴器雁atRin下鐳st"”號騎q骨舌本(I幣B c ir 孑?(百快 振節(jié)取大宣翎工耨式椅LEWF長才啟動”,WTL 1 內(nèi)卻折麗1Mgigf步罌 口2aJw 3“ ad/T5£成咖前Tj? Cl nr町開:5 ,(二2<'.oir
12、«下就r. =y耳租理前日地We201.J/LO/1 17; 3&H EX S&1 即電口5 2i4iHEX 5_£ HU JINWELDSXH2/6/1S 檢齡HFX 3F jiar Da*初皿81 2U22HEXSZip2011/10/27 72:3 5HEXMxiiyiwn 22 題KK,且8>12/6/15 1&J5HEXiJ 2Ciai/uyi 2ft isHEX J*zoiuiQm O:3£H EX S脖圖1.3選擇HEX文件(4)選擇所要下載的文件,這樣可以使您在每次編譯KEIL時HEX代碼能自動加載到 STC-ISP,
13、點擊“Download/T載”。(5)手動按下電源開關(guān)便即可把可執(zhí)行文件HEX寫入到單片機內(nèi),如圖是正在寫入程序截圖。(6)程序?qū)懭胪戤?,目?biāo)板開始運行程序結(jié)果。文案標(biāo)準(zhǔn)2方案分析與確定2.1方案思路分析由題目要求,根據(jù)設(shè)置的年份日的顯示全年的年月公歷、 星期等信息。由于 需要顯示去年的日期以及星期等信息,普通的LED數(shù)碼管顯然已經(jīng)不能勝任,為此,我們可以選擇LCD1602液晶顯示器完成課設(shè)要求。目前所具備的設(shè)備只 有一塊以STC89C52為內(nèi)核的單片機,PC機。課設(shè)要求顯示日期等信息,我們可以充分利用單片機上面集成的 DS1302 時鐘芯片。該芯片可以產(chǎn)生年份,月份,日期,星期,時,分,秒的
14、數(shù)據(jù),因此, 完全可以完成實驗的各項要求?;谝陨戏治?,我們可以利用DS1302產(chǎn)生的各種時鐘數(shù)據(jù),由CPU完成對 數(shù)據(jù)的讀取,然后通過 CPU將數(shù)據(jù)寫至LCD1602,以顯示數(shù)據(jù),達到可視化的 效果。對于課程設(shè)計的拓展部分,我們可以利用單片機開發(fā)板上面集成的 DS18B20 溫度傳感器來測試周圍環(huán)境的溫度,同樣通過LCD1602來顯示。此外可以通過測試按鍵是否閉合來改變各種時間數(shù)據(jù),已達到校準(zhǔn)的目的。CPULCD1602DS18B20 4圖2.1整體設(shè)計框架圖文案標(biāo)準(zhǔn)圖2.2設(shè)計流程圖文案標(biāo)準(zhǔn)3單元芯片電路的設(shè)置及總體設(shè)計3.1 DS1302芯片引腳功能DS1302是美國DALLAS公司推出
15、的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年 補償功能,工作電壓為2.5V5.5V。采用三線接口與 CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31X8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與 DS1202兼容,但增加了主電源 /后備電源雙電源引腳,同 時提供了對后備電源進行涓細(xì)電流充電的能力。DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān) 閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大
16、者供電。當(dāng) Vcc2大于 Vcc1+0.2V 時,Vcc2給DS1302供電。當(dāng) Vcc2 小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接 32.768kHz 晶振。RST是復(fù)位/片選線,通過把 RST輸入驅(qū)動置高電平來啟動所有的數(shù) 據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址 /命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對 DS1302進行 操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc>2.0V之前,RST
17、必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出 端(雙向),后面有詳細(xì)說明。SCLK為時鐘輸入端。下圖為DS1302的弓唧功能圖:文案標(biāo)準(zhǔn)VCC2 匚 xiD X2 ZGND 一VcciSCLKI/ORST圖3.1 DS1302引腳圖DS1302比較類似,管腳描述:X1 X2 GND -RST I/O SCLK Vcc1,Vcc2 此外,拓展中用到32.768KHZ晶振管腳地復(fù)位腳數(shù)據(jù)輸入/輸出引腳串行時鐘電源供電管腳DS18B20溫度傳感器,因此這里不再贅述文案標(biāo)準(zhǔn)3.2 DS1302的使用方法使用DS1302時,要對其引腳和寄存器進行特殊設(shè)置,以
18、實現(xiàn)所需功能。引 腳設(shè)置后面會提及,這里不做說明,主要講一下程序的編寫。DS1302的的工作過程中包過讀寫一個字節(jié)數(shù)據(jù)等過程,下面做相應(yīng)的解釋。/*功能:往DS1302寫入數(shù)據(jù)*/void W1302(uchar ucAddr, uchar ucDa) (T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr); /* 地址,命令 */RTInputByte(ucDa); /* 寫 1Byte 數(shù)據(jù)*/T_CLK = 1;T_RST = 0;/*功能:讀取DS1302某地址的數(shù)據(jù)*/uchar R1302(uchar ucAddr) (uchar uc
19、Data;T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr);/* 地址,命令 */ucData = RTOutputByte();/* 讀 1Byte 數(shù)據(jù) */T_CLK = 1;文案標(biāo)準(zhǔn)T_RST = 0;return(ucData);產(chǎn)*功能:設(shè)置初始時間*1void Set1302(uchar *pClock)uchar i;uchar ucAddr = 0x80;EA = 0;W1302(0x8e,0x00);/*控制命令,WP=0,寫操作?*/for(i =7; i>0; i-)W1302(ucAddr,*pClock);/*
20、秒分時日月星期年*/pClock+;ucAddr +=2;W1302(0x8e,0x80);/*控制命令,WP=1,寫保護?*/EA = 1;產(chǎn)*功能:讀取DS1302當(dāng)前時間mam*void Get1302(uchar ucCurtime口)uchar i;uchar ucAddr = 0x81;EA = 0;文案標(biāo)準(zhǔn)for (i=0; i<7; i+)(ucCurtimei = R1302(ucAddr);/*格式為:秒分時日月星期年 */ ucAddr += 2;EA = 1;3.3 LCD1602引腳功能1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號等的點
21、陣型液晶模塊它有若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也 有間隔起到了字符間距和行間距的作用,正因為如此所以他不能顯示圖形n1602LCD是指顯示的內(nèi)容為 16X2,即可以顯示兩行,每行16個字符液 晶模塊(顯示字符和數(shù)字)。圖3.2 LCD1602引腳圖1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為電源地第2腳:VDD接5V電源正極文案標(biāo)準(zhǔn)第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接 地電源時對比度最高(對比度過高時會產(chǎn)生鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。第4腳:RS為寄存器選擇
22、,高電平1時選擇數(shù)據(jù)寄存器、低電平 0時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平 (1)時進行讀操作,低電平 (0)時進 行寫操作。第6腳:E(或EN)端為使能(enable)端。第714腳:D0D7為8位雙向數(shù)據(jù)端。第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。3.4LCD1602 的使用LCD1602的使用與前面的DS1302的使用有類似的地方,包括引腳的設(shè)置和 對應(yīng)的編程,引腳的設(shè)置后面會提及到,這里只涉及對應(yīng)的編程。/*LCD1602 延時*/void Lcd_delay(uchar ms)uchar j;while(ms-)for(j=0;j<250;j
23、+);/*LCD1602 忙等待*/void Lcd_busy_wait()Lcd_rs = 0;文案標(biāo)準(zhǔn)Lcd_rw = 1;Lcd_en =1;Lcd_data = 0xff;while (Lcd_data&0x80);Lcd_en = 0;/*LCD1602 命令字寫入*/void Lcd_command_write(uchar command)Lcd_busy_wait();Lcd_rs = 0;Lcd_rw = 0;Lcd_en = 0;Lcd_data = command;Lcd_en =1;Lcd_en = 0;/*LCD1602 初始化 */void Init_lcd(
24、)Lcd_delay(20);Lcd_command_write(0x38);Lcd_delay(100);Lcd_comman/*LCD1602 延時*/d_whte(0x38);Lcd_delay(50);Lcd_command_write(0x38);Lcd_delay(10);文案標(biāo)準(zhǔn)Lcd_command_write(0x08);Lcd_command_write(0x01);Lcd_command_write(0x06);Lcd_command_write(0x0c);Lcd_data = 0xff; /* 釋放數(shù)據(jù)端 口 */void Lcd_char_write(uchar x
25、_pos,y_pos,lcd_dat)/*LCD1602 字符寫入 */ x_pos &= 0x0f; /* X 位置范圍 015 */y_pos &= 0x01; /* Y 位置范圍 01 */if(y_pos=1) x_pos += 0x40;x_pos += 0x80;Lcd_command_write(x_pos);Lcd_busy_wait();Lcd_rs = 1;Lcd_rw = 0;Lcd_en = 0;Lcd_data = lcd_dat;Lcd_en =1;Lcd_en = 0;Lcd_data = 0xff; /* 釋放數(shù)據(jù)端 口 */文案標(biāo)準(zhǔn)4整體電路設(shè)
26、計和程序由上面的分析可以得到實驗的電路圖如下:C1::' 一 :一舸: +憂口加j,日嚴(yán), " VCC2 , J1二廣f,xi娜二,麗三1印廨!,I丁 $CLK | '乖9,, -M- I附於3二目期 上/攻1叩帆0pj wP»W>wpjjyp邙p)rap&mpaw.-aR$rPJ7假J?冏町1WP2 2/AD雨MEpi 蜘i2尊P)I4P2?冏 5FLDJ2FU順F1.1.12Bpj.imoF1.Ip;.回F1,JF9jwnFL4P3.WHFl!PUjTIF1.B府.6源Fl?PJ.rL ->r工 5 4 Jy d 7 ,11:1-2-
27、3 4 f 6 7 Ef 0臚曲用/片M等習(xí)齦F怔_泡1時F尋仃冏出題前幗言悔同懈窗且C0I.6蝴由磁I五掰.圖4.1仿真電路圖設(shè)計源代碼如下:產(chǎn)*程序名稱:LCD1602顯示時間 顯示當(dāng)前溫度*/文案標(biāo)準(zhǔn)/*頭文件*/#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define nop() _nop_()sbit s1=P1A0;sbit s2=P1Al;sbit s3=P1A2;sbit s4=P1A3;sbit DQ =P1A3;
28、/定義 DS18B20 通信端口sbit lcd_rs_port = P2A4; /* 定義 LCD 控制端口 */sbit lcd_rw_port = P2A5;sbit lcd_en_port = P2A6;#define lcd_data_port P0sbit led_latch_port = P2A5; /*發(fā)光二極管寄存器 LE 引腳*/sbit sled_latch_port = P3A6; /啾碼管寄存器 LE 引腳*/sbit T_CLK = P3A6;/*實時時鐘時鐘線引腳 */sbit T_IO = P3A4;/*實時時鐘數(shù)據(jù)線引腳*/sbit T_RST = P3A5;
29、/*實時時鐘復(fù)位線引腳 */sbit ACC0 = ACCA0;sbit ACC7 = ACCA7;uchar code mun_to_char = "0123456789ABCDEF"); /* 定義數(shù)字跟 ASCII 碼 的關(guān)系*/uchar data time_data_buff7=0x50,0x59,0x23,0x31,0x12,0x04,0x12;/* 格式 為:秒分時日月星期年*/uchar data lcd1602_line1=" 2000/00/00 000 "uchar data lcd1602_line2=" 00:00:0
30、0 00.0"文案標(biāo)準(zhǔn)codeucharWeeks3="SUN","MON","TUE"WED"THU","FRI","SAT', "SUN"產(chǎn)*函數(shù)名:RTInputByte()能:實時時鐘寫入一字節(jié)明:往DS1302寫入1Byte數(shù)據(jù)(內(nèi)部函數(shù))入口參數(shù):d寫入的數(shù)據(jù)返回值:無*/void RTInputByte(uchar d)uchar i;ACC = d;for(i=8; i>0; i-)T_IO = ACC0;/*相當(dāng)于匯編中的
31、RRC */T_CLK = 1;T_CLK = 0;ACC = ACC >> 1;產(chǎn)*函數(shù)名:RTOutputByte()能:實時時鐘讀取一字節(jié)明:從DS1302讀取IByte數(shù)據(jù)(內(nèi)部函數(shù))入口參數(shù):無返回化ACC*文案標(biāo)準(zhǔn)uchar RTOutputByte(void) ( uchar i;for(i=8; i>0; i-) (ACC = ACC >>1;/*相當(dāng)于匯編中的 RRC */ACC7 = T_IO;T_CLK = 1;T_CLK = 0;) return(ACC);)產(chǎn)*函數(shù)名:W1302()功能:往DS1302寫入數(shù)據(jù)說明:先寫地址,后寫命令/數(shù)
32、據(jù)(內(nèi)部函數(shù))調(diào)用:RTInputByte() , RTOutputByte()入口參數(shù):ucAddr: DS1302地址,ucData:要寫的數(shù)據(jù) 返回值:無*/void W1302(uchar ucAddr, uchar ucDa) (T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr); /* 地址,命令 */ RTInputByte(ucDa); /* 寫 IByte 數(shù)據(jù)*/ T_CLK = 1;T_RST = 0;文案標(biāo)準(zhǔn))產(chǎn)*函數(shù)名:R1302()功能:讀取DS1302某地址的數(shù)據(jù)說明:先寫地址,后讀命令/數(shù)據(jù)(內(nèi)部函數(shù))調(diào)用:RTI
33、nputByte() , RTOutputByte()入口參數(shù):ucAddr: DS1302地址返回值:ucData讀取的數(shù)據(jù)*/uchar R1302(uchar ucAddr)uchar ucData;T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr);/* 地址,命令 */ucData = RTOutputByte();/* 讀 1Byte 數(shù)據(jù) */T_CLK = 1;T_RST = 0;return(ucData);)產(chǎn)*函數(shù)名:Set1302()功能:設(shè)置初始時間說明:先寫地址,后讀命令/數(shù)據(jù)(寄存器多字節(jié)方式)調(diào)用:W1302()入
34、口參數(shù):pClock:設(shè)置時鐘數(shù)據(jù)地址 格式為:秒分 時日月 星期年7Byte (BCD 碼)1B 1B 1B 1B 1B 1B 1B返回值:無文案標(biāo)準(zhǔn)*/void Set1302(uchar *pClock)(uchar i;uchar ucAddr = 0x80;EA = 0;W1302(0x8e,0x00);/* 控制命令,WP=0,寫操作?*/for(i =7; i>0; i-)(W1302(ucAddr,*pClock); /* 秒分時日月星期年 */ pClock+;ucAddr +=2;W1302(0x8e,0x80);/* 控制命令,WP=1,寫保護?*/EA = 1;產(chǎn)
35、*函數(shù)名:Get1302()功能:讀取DS1302當(dāng)前時間說明:調(diào)用:R1302()入口參數(shù):ucCurtime:保存當(dāng)前時間地址。當(dāng)前時間格式為:秒分時日 月星期年7Byte (BCD 碼) 1B 1B 1B 1B 1B 1B 1B返回值:無*/void Get1302(uchar ucCurtime口)(uchar i;文案標(biāo)準(zhǔn)uchar ucAddr = 0x81;EA = 0;for (i=0; i<7; i+)(ucCurtimei = R1302(ucAddr);/*格式為:秒分 時日月 星期 年*/ ucAddr += 2;EA = 1;/DS18B20延時函數(shù)void d
36、elay(unsigned int i)(while(i-);/DS18B20初始化函數(shù)void Init_DS18B20(void)(unsigned char x=0;DQ = 1; /DQ 復(fù)位delay(8); /稍做延時DQ = 0;/單片機將DQ拉低delay(80); /端確延時大于480usDQ = 1; /拉高總線delay(14);x=DQ; /稍做延時后 如果x=0則初始化成功x=1則初始化失敗delay(20);/DS18B20讀一個字節(jié)文案標(biāo)準(zhǔn)uchar ReadOneChar(void)(unsigned char i=0;unsigned char dat = 0
37、;for (i=8;i>0;i-)DQ = 0; /給脈沖信號dat>>=1;DQ = 1; /給脈沖信號if(DQ) dat|=0x80;delay(4);return(dat);/DS18B20寫一個字節(jié)void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;/DS18B20讀取溫度uint ReadTemperature(void) 文案標(biāo)準(zhǔn)unsigned char
38、a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0x44); / 啟動溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC);/跳過讀序號列號的操作WriteOneChar(0xBE);/讀取溫度寄存器等(共可讀9個寄存器)前兩個就 是溫度a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;tt=t*0.0625; /將溫度的高位與低位合并t= tt*
39、10+0.5; /對結(jié)果進行4舍5入return(t);/void lcd_delay(uchar ms) /*LCD1602 延時*/uchar j;while(ms-)for(j=0;j<250;j+);文案標(biāo)準(zhǔn)void lcd_busy_wait() /*LCD1602 忙等待 */(lcd_rs_port = 0;lcd_rw_port = 1;lcd_en_port = 1;lcd_data_port = 0xff;while (lcd_data_port&0x80);lcd_en_port = 0;void lcd_command_write(uchar comman
40、d) /*LCD1602 命令字寫入 */ (lcd_busy_wait();lcd_rs_port = 0;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = command;lcd_en_port = 1;lcd_en_port = 0;void lcd_system_reset() /*LCD1602 初始化 */(lcd_delay(20);lcd_command_write(0x38);lcd_delay(100);lcd_command_write(0x38);lcd_delay(50);lcd_command_write(0x38);l
41、cd_delay(10);文案標(biāo)準(zhǔn)lcd_command_write(0x08);lcd_command_write(0x01);lcd_command_write(0x06);lcd_command_write(0x0c);lcd_data_port = 0xff; /* 釋放數(shù)據(jù)端口 */void lcd_char_write(uchar x_pos,y_pos,lcd_dat)/*LCD1602 字符寫入 */ x_pos &= 0x0f; /* X 位置范圍 015 */y_pos &= 0x01; /* Y 位置范圍 0 1 */if(y_pos=1) x_pos +
42、= 0x40;x_pos += 0x80;lcd_command_write(x_pos);lcd_busy_wait();lcd_rs_port = 1;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = lcd_dat;lcd_en_port = 1;lcd_en_port = 0;lcd_data_port = 0xff; /* 釋放數(shù)據(jù)端口 */void keyscan()if(s1=0)lcd_delay(10);if(s1=0)文案標(biāo)準(zhǔn)time_data_buff1+;if(time_data_buff 1=0x5a)(time_data
43、_buff1=0x00;)while(!s1);if(time_data_buff1=0x0a)(time_data_buff 1=0x10;)if(time_data_buff1=0x1a)(time_data_buff1=0x20;)if(time_data_buff1=0x2a)(time_data_buff1=0x30;)if(time_data_buff1=0x3a)(time_data_buff1=0x40;)if(time_data_buff1=0x4a)(time_data_buff1=0x50;)Set1302(time_data_buff);)文案標(biāo)準(zhǔn))if(s2=0)(l
44、cd_delay(10);if(s2=0)(time_data_buff2+;if(time_data_buff2=0x24)(time_data_buff2=0x00;)if(time_data_buff2=0x0a)(time_data_buff2=0x10;)if(time_data_buff2=0x1a)(time_data_buff2=0x20;)while(!s2);Set1302(time_data_buff);)if(s3=0)(lcd_delay(10);if(s3=0)(time_data_buff5+;文案標(biāo)準(zhǔn)if(time_data_buff5=0x07)(time_d
45、ata_buff5=0x00;)while(!s3);Set1302(time_data_buff);)if(s4=0)(lcd_delay(10);if(s4=0)(time_data_buff3+;if(time_data_buff3=0x32)(time_data_buff3=0x01;)if(time_data_buff3=0x0a)(time_data_buff3=0x10;)if(time_data_buff3=0x1a)(time_data_buff3=0x20;)if(time_data_buff3=0x2a)(time_data_buff3=0x30;文案標(biāo)準(zhǔn)while(!s
46、4);Set1302(time_data_buff);void main()uchar i;uint temp; /溫度值lcd_system_reset(); /*LCD1602 初始化 */lcd_data_port = 0xff; /*釋放 P0端口*/led_latch_port = 0;sled_latch_port = 0;Set1302(time_data_buff); /* 設(shè)置時間 */while(1)Get1302(time_data_buff); /*讀取當(dāng)前時間 */ temp = ReadTemperature(); /恢取當(dāng)前溫度值 */lcd1602_line13
47、/*刷新顯示*/=mun_to_chartime_data_buff6/0x10;lcd1602_line14=mun_to_chartime_data_buff6%0x10;/* 年*/lcd1602_line16=mun_to_chartime_data_buff4/0x10;lcd1602_line17=mun_to_chartime_data_buff4%0x10;/* 月*/lcd1602_line19=mun_to_chartime_data_buff3/0x10;lcd1602_line110 = mun_to_chartime_data_buff3%0x10;/* 日*/for
48、(i=0;i<3;i+)lcd1602_line1i+12=Weekstime_data_buff5&0x07i;/*星期*/lcd1602_line22=mun_to_chartime_data_buff2/0x10;文案lcd1602_line23=mun_to_chartime_data_buff2%0x10; /* 時*/標(biāo)準(zhǔn)lcd1602_line25 = mun_to_chartime_data_buff1/0x10;lcd1602_line26 = mun_to_chartime_data_buff1%0x10; /* 分*/lcd1602_line28 = mun_to_chartime_data_buff0/0x10;lcd1602_line29 = mun_to_chartime_data_buff0%0x10; /* 秒*
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人股權(quán)轉(zhuǎn)讓合同模板范文
- 三孩子離婚子女撫養(yǎng)合同范本
- KTV采購合同管理規(guī)范及范文
- 個人設(shè)備租賃合同樣本
- 狗咬人賠償協(xié)議書的格式
- 城市交通管理信息化系統(tǒng)開發(fā)合同
- 酒店消防工程安裝承包合同書
- 商品貿(mào)易具體化買賣合同
- 舊設(shè)備買賣合同協(xié)議
- 國際公路貨物運輸合同范文
- 體檢科運營可行性報告
- 廣東省廣州市黃埔區(qū)2023-2024學(xué)年八年級上學(xué)期期末生物試卷+
- 北京市豐臺區(qū)市級名校2024屆數(shù)學(xué)高一第二學(xué)期期末檢測模擬試題含解析
- 設(shè)立項目管理公司組建方案
- 薪酬戰(zhàn)略與實踐
- 答案之書(解答之書)-電子版精選答案
- 中國古代文學(xué)史 馬工程課件(上)01總緒論
- GB/T 22085.1-2008電子束及激光焊接接頭缺欠質(zhì)量分級指南第1部分:鋼
- 上海中心大廈-介紹 課件
- 非酒精性脂肪性肝病防治指南解讀課件
- 地理微格教學(xué)課件
評論
0/150
提交評論