版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)課程設(shè)計(jì)設(shè)計(jì)題目:電子時(shí)鐘設(shè)計(jì)學(xué) 院_物理與光電工程學(xué)院專 業(yè)一電子科學(xué)與技術(shù) 年級(jí)班別08級(jí)電子一班 學(xué) 號(hào) 3108009109 學(xué)生姓名_指導(dǎo)教師2010年12月18 日目錄一、設(shè)計(jì)目的、設(shè)計(jì)題目二、設(shè)計(jì)任務(wù)、功能描述三、硬件原理分析四、軟件設(shè)計(jì)五、程序清單一、設(shè)計(jì)目的、設(shè)計(jì)題目本設(shè)計(jì)的目的是設(shè)計(jì)一個(gè)實(shí)用的電子時(shí)鐘,該時(shí)鐘能夠?qū)崿F(xiàn)曰常的時(shí)鐘顯示,它可 以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,同時(shí)具有時(shí)鐘調(diào)整、 鬧鐘等功能。二、設(shè)計(jì)任務(wù)、功能描述整體設(shè)計(jì)任務(wù):本電子吋鐘設(shè)計(jì)首要的工作是結(jié)合以往所學(xué)的單片機(jī)程序編寫理論 和編寫規(guī)則來編寫電子時(shí)鐘的軟件部分,編寫時(shí)要結(jié)
2、合所配的stm8s105芯片的管腳 功能和其他硬件電路,如ds1302時(shí)鐘芯片和lcd 1602液晶顯示屏,該部分運(yùn)用stvd 單片機(jī)軟件來完成。在編寫完軟件并檢測(cè)完正確后用仿真硬件檢測(cè)運(yùn)行檢測(cè)程序是否正 確,并凋試。待這一切工作做好后再利用系統(tǒng)板硬件電路來實(shí)踐實(shí)現(xiàn)軟件功能與硬件的 結(jié)合。三、硬件原理分析電路設(shè)計(jì)分析電路原理設(shè)計(jì)是基于小系統(tǒng)包括電源電路、復(fù)位電路、按鍵電路、吋鐘電路、lcd液晶顯示驅(qū)動(dòng)電路、輸出控制電路。電源部分是用直流電源經(jīng)變壓來提供的5v,晶體振蕩器采用的是16mhz的石英晶體振蕩器。部分硬件設(shè)計(jì):(1) 本設(shè)計(jì)采用ds1302實(shí)時(shí)時(shí)鐘芯片來進(jìn)行計(jì)時(shí),并將1302的數(shù)裾輸入
3、單片機(jī) 進(jìn)行處理,送入lcd1602液晶顯示屏進(jìn)行顯示。(2) 用叫個(gè)電位按鍵來實(shí)現(xiàn)對(duì)電子時(shí)鐘的調(diào)試工作,當(dāng)按第一下總控鍵時(shí)進(jìn)入中 斷程序,即時(shí)鐘的調(diào)整狀態(tài),有兩個(gè)電位按鍵分別來調(diào)整時(shí)鐘的加和減;第四個(gè)按鍵用 來調(diào)整時(shí)分秒日月年,按一下調(diào)整秒,連按兩下調(diào)整分,按三下調(diào)整時(shí),四下調(diào)整日, 五下調(diào)整月,六下調(diào)整年,七下退出時(shí)間設(shè)罝。(3) 用一個(gè)按鍵和其他部件組成的復(fù)位電路與芯片連接來實(shí)現(xiàn)整個(gè)程序及硬件的 重新復(fù)位功能。部分電路圖如下:1. 1復(fù)位電路本次設(shè)計(jì)采川按鍵電平復(fù)位,按鍵電平復(fù)位相當(dāng)于按復(fù)位鍵后,復(fù)位端通過電阻與 vdd電源接通,如下圖:1.2振蕩器和時(shí)鐘電路設(shè)計(jì)stm8可賴外時(shí)鐘或內(nèi)時(shí)
4、鐘,當(dāng)使鵬時(shí)柵,如果mcu主臟過欄hz,要在選項(xiàng)字節(jié)中 配置等待綳為stm啪時(shí)鐘為欄hz,可棚颥f步分頻。其內(nèi)部有3或4位.率 翻器,經(jīng)過校正后其頻賴差理論上可不大刊.5%(頻輪調(diào)器為3位)或0.25%卿微調(diào)器 鱗本次設(shè)計(jì)采用常用的內(nèi)部時(shí)鐘方式接法:通過在引腳oscin和oscolt兩端跨接晶體 或陶瓷諧振器,再利用芯片內(nèi)部的振蕩電路,就構(gòu)成了穩(wěn)定的a激振蕩器,其發(fā)出的脈 沖直接送入內(nèi)部時(shí)鐘電路,如圖所示,外接晶振時(shí),c1和c2的值通常選擇力20_30pf。 cl、c2對(duì)頻率有微調(diào)作用,影響振蕩的穩(wěn)定性和起振速度。所采用的晶體或陶瓷諧振器 得頻率選擇0-24mhz。為了減小寄生電容,更好的保證
5、振蕩器穩(wěn)定、可靠的工作,諧振器 和電容蠃盡可能與單片機(jī)芯片靠近安裝。1.3電源因?yàn)樵撾娐匪桦妷簽?v,可直接用電池供應(yīng)或也可以用直流電源供應(yīng),但需經(jīng)過變壓才行。1.4 ds1302實(shí)時(shí)時(shí)鐘芯片ds1302是美國dallas公司推出的一種高性能、低功耗、帶ram的實(shí)吋吋鐘電路,它可 以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5v5.5v。 采用三線接口與cpu進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或ram 數(shù)據(jù)。ds1302內(nèi)部有一個(gè)31x8的用于臨時(shí)性存放數(shù)據(jù)的ram寄存器。ds1302是ds1202 的升級(jí)產(chǎn)品,與ds1202兼容,但增加了
6、主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電 源進(jìn)行涓細(xì)電流充電的能力。ds1302的引腳排列中vccl為后備電源,vcc2為主電源。在主 電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。ds1302由vccl或vcc2兩者中的較大者供 電。當(dāng) vcc2 大于 vccl+o. 2v 時(shí),vcc2 給 ds1302 供電。當(dāng) vcc2 小于 vccl 時(shí),ds1302 由 vccl供電。xi和x2是振蕩源,外接32. 768khz晶振。rst是復(fù)位/片選線,通過把rst輸 入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯, 允許地址/命令序列送入移位寄存器;其次,r
7、st提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。 當(dāng)rst為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)ds1302進(jìn)行操作。如果在傳送過程 屮kst貫為低電平,則會(huì)終止此次數(shù)據(jù)傳送,1/0引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在vcc彡2. 5v 之前,rst必須保持低電平。只有在sclk為低電平時(shí),才能將rst置為高電平。i/o為串行 數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說明。sclk始終是輸入端。電路圖如下:vcci sclk i/o cevcc2 ez x1 c x2 gnd 口 4 q p 1ds13o2的夕卜部弓|腳分配1-03 cumxix2晶體振蕩器 及實(shí)時(shí) 時(shí)w31x8 ram1 w:倒計(jì)數(shù)謎ds
8、13o2的內(nèi)部結(jié)構(gòu)1.4 lcd1602液晶屏顯示電路1602是一種字符型液晶顯示模塊,專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式lcd,目 前常用16*1, 16*2, 20*2和40*2行等的模塊。下面以某公司的1602字符型液晶顯示器為 例,介紹其用法。一般1602字符型液晶顯示器實(shí)物如圖1602lcd分為帶背光和不帶背光兩種,基控制器大部分為hd44780,帶背光的比不帶 背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如丁圖*蘺光癮部uqujt1602lcd采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下:第1腳:vss為地電源。第2腳:vdd接5v正電源。第3腳:v
9、l為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最商, 對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10k的電位器調(diào)整對(duì)比度。第4腳:rs力寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:r/w為讀寫信號(hào)線,高電平吋進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)rs和r/w共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)rs為低電平r/w為高電平時(shí)可以讀 忙信號(hào),當(dāng)rs為高電平r/w為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:e端為使能端,當(dāng)e端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:dod7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極 1.5輸出控制電路將
10、pb 口用于單片機(jī)和lcd顯示器的數(shù)據(jù)傳輸通道,如下圖所示,通過控制lcd的讀寫 校制端將1302的數(shù)據(jù)顯示出來。芯po1pe1p2po1gf*clpc?pc3:lpooxi<xo1 1000 000 00000000sdceepvm123457 vsvcvtnodocmoofou*j«6l1.6整體布局圖r5 4k7-> pooos1302x2i/oo rd5->pg1-£> pd611 12 工j.3j67zlu_15- 16 17z:19il, 21vssapd3vddapd2rxpd1pdonr8tpeopa1pe1pa2pe2vssiojp
11、61vssvcappe6vddpe5vddio.1pcipc2pb7pc3pb6pcspbsvddi0pb4vssiopb3pb2pgopb1pc7pboxopc6 32.-rysclk68kpbtalvcc2 xi vcc1£> pa5 -o pa4- -c> pa6vccds1302-39 -j8-j635332225 -j6 _2i 82932ie306nd q vod o vee opci o pci o pc3 opbo o pb1 o pb2 o pb3 q pb4 o pbs o pb6 q pb7 olm016l四、軟件設(shè)計(jì)分析1、地址空間及端口分配_bo
12、oi rs pc_odr:1; /pc作為lcd的控制端,設(shè)置為輸入 _bool rw pc_odr:2;_bool en pc_odr:3;_bool sclk pa_odr:4;/串行時(shí)鐘,輸入輸出控制_bool dio pa_odr:5; /三線接口時(shí)的數(shù)據(jù)線 _bool id pa_idr:5;_bool ce pa_odr:6;/作為復(fù)位端口_bool id1 pg_idr:0; m pd6引腳設(shè)置為外部中斷的輸入引腳2、總體架構(gòu)說明該時(shí)鐘程序設(shè)計(jì)思路如下:(1) 、在程序頭將設(shè)計(jì)中的一些10 口進(jìn)行分配并注釋。(2) 、初始化程序,對(duì)單片機(jī)的10 口設(shè)置為輸入輸出等,對(duì)1302,
13、1602的參數(shù)進(jìn)行設(shè)置, 如設(shè)定時(shí)鐘運(yùn)行為24小時(shí)制;將一些未到時(shí)鐘設(shè)計(jì)功能的功能端口關(guān)閉等。(3) 開始主程序進(jìn)行程序掃描,先掃初始化字子程序初始化ds1302和lcd1602,啟動(dòng)時(shí) 鐘芯片進(jìn)行計(jì)時(shí),初始化1602的顯示方式,將分配好的時(shí)分秒等數(shù)字調(diào)入到顯示子程序屮。 一一顯示子程序通過分配的空間對(duì)應(yīng)口將ds1302吋鐘芯片的數(shù)據(jù)顯示相應(yīng)的吋分秒,年 月口等。一一進(jìn)入按鍵掃描,判斷按鍵是否有變動(dòng),若有就根據(jù)設(shè)計(jì)程序?qū)ο鄳?yīng)的按鍵按入次數(shù)而進(jìn)行實(shí)現(xiàn)相應(yīng)的功能。如進(jìn)入?yún)奸g調(diào)整,中斷進(jìn)入、退出等。一一最后返回主程 序頭重新依次掃描。顯示過程設(shè)有消隱,按鍵通過軟件去斗。(4)、子程序部分。在主程序的
14、調(diào)用卜依據(jù)不同的子程序工能而編寫子程序,有多級(jí)肷套。 這些子程序包括顯示子程序、延時(shí)子程序、時(shí)間計(jì)數(shù)子程序、按鍵處理子程序、調(diào)時(shí)間子程 序等。3、各子程序功能顯示子程序:將時(shí)鐘芯片1302內(nèi)的時(shí)鐘數(shù)據(jù)送入單片機(jī)進(jìn)行處理再送入lcd 1602內(nèi)進(jìn) 行顯示,顯示格式為:年/月/日/時(shí)/分/秒/星期。延時(shí)子程序:該子程序是為了實(shí)現(xiàn)1302及1602在讀寫過程屮的上升下降沿讓芯片有足 夠的讀寫時(shí)間,以及字符有足夠的顯示時(shí)間,同時(shí)作為按鍵開關(guān)掃描去抖的延遲時(shí)間。時(shí)間計(jì)數(shù)子程序:該程序功能是調(diào)動(dòng)ds1302的初始化程序、讀寫程序,并將其內(nèi)部數(shù) 據(jù)送入單片機(jī)內(nèi)進(jìn)行處理。ds1302選擇24小時(shí)工作方式,秒計(jì)
15、數(shù),走到59后進(jìn)位分,后 變00從新開始計(jì)時(shí),分走到59后進(jìn)位時(shí),分從新開始00計(jì)時(shí),時(shí)走到23,分走到59,秒 走到59后進(jìn)入從新日期周期計(jì)時(shí)。按鍵處理子程序:該程序進(jìn)行按鍵處理的功能判斷分別對(duì)時(shí)分秒、年月日等進(jìn)行調(diào)整已 經(jīng)中斷的進(jìn)入與退出等。4、程序清單include "stm8slo5c_s. huchar nl,n2, n3;uchar uo, ul, u2, u3;uchar table = /z20 - -*;uchar tablel= :;uchar table2 = f o', 1, 2'3',' 4, 5',' 6
16、39;, 7',' 8',' 9' uchar table3="montuewedthufrisatsun; uchar table4 = " happy birthday ;/16 個(gè)字符uchar table5 = *<««to you"define uint unsigned intdefine uchar unsigned char0x80 /秒寫寄存器地址 0x82/分寫寄存器地址 0x84/時(shí)寫寄存器地址 0x86/日寫寄存器地址 0x88/月寫寄存器地址 0x8a/周寫寄存器地址 0x
17、8c/年寫寄存器地址define pb pb_odr define write_second define write_minute define write_hour define write_day define write_month define write_week define write_yeardefine write_protect 0x8e/寫保護(hù)字節(jié)寫寄存器地址define write_chongdian 0x90 /慢充電寄存器地址define read_second define readminute define read hour0x81/秒讀寄存器地址 0x83
18、/分讀寄存器地址 0x85/時(shí)讀寄存器地址0x87/日讀寄存器地址0x89/月讀寄存器地址0x8b/周讀寄存器地址0x8d/年讀寄存器地址 /pc作為led的控制端,設(shè)置為輸入define read_day #define read_month #define read_week define read_year _bool rs pc_odr:1: bool rw pc odr:2; bool en pc odr:3; bool sclk pa odr:4; bool dio pa odr:5; bool id pa idr:5; bool ce pa odr:6;/串行時(shí)鐘,輸入輸出控制
19、/三線接口時(shí)的數(shù)據(jù)線 /復(fù)位bool da od pa ddr:5;bool da cr1 pa cr1:5;bool da cr2 pa cr2:5;,_bool id1pg_idr:0;/將pd6引腳設(shè)置我外部中斷的輸入引腳_bool id2pd_idr:5;_bool id3pg_idr:1;_bool id4pd_idr:6;/鍵盤的輸入/shfm_key(void) uchar lshi; uchar an=0, n=0; doif(!idl)delay(6): if(!idl)while1);lshi=l; an+; if(an=l)write_dsl302 (write_seco
20、nd, 0x80);/先暫停時(shí)鐘秒u2=read_dsl302(read_second ); u2=(u2&0x70)»4)*10+(u2&0x0f); write_sfra(6, u2);lcd_wcom(0x80+0x40+7); lcd_wcom(0x38);lcd_wcom(0x0f);/顯示功能開,有光標(biāo)if (an=2)ul=read_dsl302(read_minute); ul=(ul&0x70)»4)*10+(ul&0x0f); write_sfm(3, ul);lcd_wcom(0x80+0x40+4);/顯示分lcd_w
21、com(0x38);lcd_wcom(0x0f);/顯示功能幵,有光標(biāo)if (an=3)u0=read_dsl302(read_hour); u0=(u0&0x70)»4)*10+(u0&0x0f); write_sfra(0, uo);lcd_wcom (0x80+0x40+1) ;/顯示時(shí)lcd_wcom(0x38);lcd_wcom(oxof):/顯示功能開,有光標(biāo)if(an=4)n3=read_dsl302(read_day); n3=(n3&0x70)»4)*10+(n3&0x0f); write_sfral (8, n3);lcd
22、_wcom(0x80+9);/顯示日lcd_wcom(0x38);lcd_wcom(oxof);/顯示功能開,有光標(biāo)if(an=5)n2=read_dsl302(read_month); n2= (n2&0x70) »4) *10+ (n2&0x0f); write_sfml(5, n2);lcd_wcom(0x80+6);/顯示月lcd_wcom(0x38);lcd_wcom(oxof) ;/顯示功能開,有光標(biāo)if(an=6)nl=read_dsl302(read_year):nl=(nl&0x70) »4)*10+(nl&0x0f); w
23、rite_sfml (2, nl);lcd_wcom (0x80+3);/顯示年lcd_wcom(0x38);lcd_wcom(0x0f) ;/顯示功能開,有光標(biāo)if(an=7)lshi=0;an=0;write_dsl302(write_second, 0x00);/從新幵啟時(shí)鐘lcd_wcom(0x38); lcd_wcom(0x0c); n=l;switch(an)easel:if(id2=0)delay (4);if(id2=0) while(!id2);_asm("n0p");jia_key(write_second, read_second, 6, 1);_as
24、m("nop");if(id3=0)/秒的減 delay(4);if(id3=0) while(!id3);_asm(n0p");jia_key(write_second, read_second, 6, 0);一asm("nop");break;case 2 : if (id2=0)/分的加delay(4);if(id2=0)while(!id2);_asm(n0p");jia_key(write_minute , read_minute, 3, 1); _asm("nop");if(id3=0)/分的減dela
25、y(4);if(id3=0) while3);_asm("nop");jia_key(write_minute , read_minute, 3, 0): _asm("nop");break;case 3 : if(id2=0)/時(shí)的加 delay (4);if(id2=0) while(!id2);_asm("n0p");hj ia_key(wr i te_hour, read hour, 0, 1); _asm("n0p");if(id3=0)/小時(shí)的減 delay(4);if(id3=0) while(!id
26、3);_asm("nop");hjia_key(write_hour, read_hour, 0, 0);一asm("nop");break;case 4: if (id2=0)/日的加 delay(4);if(id2=0) while(!id2);_asm("n0p");rjia_key(write_day, read_day, 8, 1); _asm("n0p");if (id3=0)/日的減 delay(4);if(id3=0) while(!id3);_asm("nop");rj ia_
27、key(write_day, read day, 8, 0); _asm("n0p");break;case 5: if (id2=0)/月的加delay(4):if(id2=0) while(!id2);_asm("nop");yjia_key(write_month , read_month, 5, 1); _asm("n0p");if(id3=0)/月的減delay (4); if(id3=0) while3);_asm("n0p");yjia_key(writemonth , read_month, 5,
28、0); _asm(*n0p");break;case 6:if (id2=0)/年的加 delay (4);if(id2=0) while 2);_asm("n0p");njia_key (write_year, read_year, 2, 1); _asm("n0p");delay(4):if(id3=0) while(!id3);一asm ("nop。;njia_key(write_year, read year, 2, 0);asmrnop");break;while(lshi=l);_asm("n0p&qu
29、ot;);return (n);return (n);void write_dsl302(uchar addr, uchar dat)uchar i ;pc_ddr |=0xff;pc_cr1 |=0xff;pc_cr2 |=0x00;ce = 0;/先復(fù)位sclk = 0;/清零,保持io 口的低電平,以待數(shù)據(jù)的寫入ce = 1;/置1,開始寫數(shù)據(jù)/發(fā)送地址for(i =0;i<8;i+)dio= addr&oxol;/將一位bed碼的數(shù)據(jù)送給io 口addr=addr »1;/右移一位sclk =1;/產(chǎn)生上升沿,發(fā)送數(shù)據(jù)sclk =0;/發(fā)送數(shù)據(jù)for(i=0;i
30、<8;i+)dio= dat&oxol;/將一位bed碼的地址數(shù)據(jù)送給io 口/產(chǎn)生上升沿,發(fā)送數(shù)據(jù)dat =dat»l; sclk=l; delay(1); sclk=0;ce = 0;/讀操作/read_dsl302(uchar addr) uchar i;uchar k;uchar dat;da_od=0;da_crl=0;da_cr2=0;ce=0;sclk=0;ce=l;/發(fā)送地址for(i=0;i<8;i+)sclk=0;delay(10);if(addr&oxol)dio=l;else dio=0;addr»=l;sclk=l;de
31、lay(2);da_od=0;da_crl=o;da_cr2=0;/讀取數(shù)據(jù)/for (k=0;k8;k+) dat»=l;sclk=l;delay(2);sclk=0;delay(2);if(id=0)dat&=0x7f;else dat |= 0x80 ;sclk=l; ce=o;return(dat);/io 口的初始化/void gpio_init(void)pc_ddr |=oxof;pc_cr1 |=oxof;pc_cr2 |=0x00;pg_ddr |=0x00;pg_cr1 |=0x03;pg_cr2 |=0x00;pdddr |=ox1c;pd_cr1 |=
32、0x0f;exti_cr1|=oxoo;itc_sfr2|=0x30;pd_cr2 |=0x40;pa_ddr |=oxff;pa_cr1 |=0xff;pa_cr2 |=0x00;pb_ddr |=0xff;pb_cr1 |=0xff;pb_cr2 |=0x00;/延時(shí)函數(shù)/ void delay(uint n)uint x, y;for (x=n;x0;x)for(y=110;y>0;y);/1602寫命令函/void lcd_wcom(uchar com)rs=0;/選擇指令寄存器rw=0;/選擇寫pb=com;/把命令字送入pbdelay (5);/延時(shí)一小會(huì)兒,讓1602準(zhǔn)備接
33、收數(shù)據(jù)en=l;/使能線電平變化,命令送入1602的8位數(shù)據(jù)口en=0;/1602寫數(shù)據(jù)函數(shù)/ void lcd_wdat(uchar dat)rs=l;/選擇數(shù)據(jù)寄存器rw=0;/選擇寫pb=dat;/把要顯示的數(shù)據(jù)送入p2delay (5):/延時(shí)一小會(huì)兒,讓1602準(zhǔn)備接收數(shù)據(jù)en=l;/使能線電平變化,數(shù)據(jù)送入1602的8位數(shù)據(jù)?en=0;/1602初始化函數(shù)/void lcd_init(void) 一 uchar a, k;delay (15);/等待電源穩(wěn)定lcd_wcom(0x38) :/8 位數(shù)據(jù),雙列,5*7 字形lcd_wcom(0x0c);/開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍
34、lcd_wcom(0x06) ;/顯示地址遞増,即寫一個(gè)數(shù)據(jù)后顯示位置右移一位lcd_wcom(0x01) ;/清屏/顯示第一行/ lcd_wcom(0x80); for(a=0;a<15;a+)lcd_wdat(tablea); delay (5);/顯示第二行/lcdwcom(0x80+0x40); for(k=0;k<8;k+) lcd_wdat(tablelk);delay(5);/年月日時(shí)分秒輸入的子函數(shù)/秒分的加減子函數(shù)/輸入/void jia_key(uchar rd, uchar wd, uchar fd,uchar fen) ul=read_dsl302(wd);
35、_asmcnop");ul=(ul&0x70)»4)*10+(ul&0x0f); if(fen=l) ul+;if (ul=60) ul=o;else ul; if(ul+l)=o) ul=59;if(ul>59) ul=59;write_dsl302(rd, (ul/10)«4 | (ul%10);/秒 write_sfm(fd, ul);icd_wcom(0x80+0x40+fd) ;/顯示分 lcd_wcom(0x38);lcd_wcom(oxof) ;/顯示功能開,有光標(biāo) /時(shí)的加減子函數(shù)/輸入/void hjia_key(uchar
36、 rd, uchar wd,uchar fd, uchar shi) u0=read_dsl302(wd); u0=(u0&0x70)»4)*10+(u0&0x0f);if(shi=l) u0+; if(u0=24)u0=0;else uo ; if(u0+l)=0) u0=23;if(u0>23) u0=23;write_dsl302(rd, (u0/10)«4 | (u0%10);/秒_asm( nop ); write_sfm(fd, uo);icd_wcom(0x80+0x40+fd);/顯示分_asm( nop );lcd_wcom(0x38
37、);lcd_wcom(0x0f);/顯示功能開,有光標(biāo)icd_wcom(0x80+0x40+fd);/日的加減子函數(shù)/輸入/void rjia_key(uchar rd, uchar wd, uchar fd, uchar day) n3=read_dsl302(wd);n3=( (n3&0x70) »4) *10+ (n3&0x0f); if (day=l) n3+; if(n3=32) n3=0;elsen3;if(n3+l)=0)n3=31;_asmcnop");if(n3>31) n3=31;write_dsl302(rd, (n3/10)
38、171;4 | (n3%10);_asm( nop );write_sfml (fd, n3);_asm( nop );lcd_wcom(0x80+fd) ;/顯示lcd_wcom(0x38);lcd_wcom(0x0f) ;/顯示功能幵,有光標(biāo)/月的子函數(shù)/輸入/void yjia_key(uchar rd, uchar wd, uchar fd, uchar yue)n2=read_dsl302(wd);n2=( (n2&0x70) »4) *10+ (n2&0x0f);_asm( nop );if(yue=l) n2+;if(n2=13) n2=0;elsen2
39、;if(n2+l)=0) n2=12;if(n212) n2=12;write_dsl302(rd, (n2/10)«4 | (n2%10);_asm( nop );write_sfml(fd, n2);_asm( nop );lcd_wcom(0x80+fd);_asm( nop );lcd_wcom(0x38);lcd_wcom(0x0f) ;/顯示功能開,有光標(biāo)/年的子函數(shù)/輸入/void njia_key(uchar rd, uchar wd, uchar fd, uchar nian) nl=read_dsl302(wd);nl=(nl&0xf0)»4)*
40、10+(nl&0x0f);if (nian=l)nl+;if(nl=100) nl=0;elsenl;if(nl+l)=0) nl=99;if(nl>99) nl=99;write_dsl302(rd, (nl/10)«4 | (nl%10);write_sfml(fd, nl);lcd_wcom(0x80+fd) ;/顯示lcd_wcom(0x38);lcd_wcom(oxof) ;/顯示功能開,有光標(biāo)lcd_wcom(0x80+fd);/初始化1302,設(shè)置開始時(shí)候的時(shí)分秒void init_ds1302(void)write_dsl302(writejprotec
41、t, 0x00);write_dsl302(write_year, oxoa):/年 write_dsl302(write_month, oxc);/月write_dsl302(write_day, 0x22);/日write_dsl302 (write_hour, 0x23) ;/小時(shí)write_dsl302(write_minute, 0x59);/分write_dsl302(write_second, 0x00);/秒write_dsl302 (write_protect, 0x80);/關(guān)閉寄存器操作void write_sfm(uchar add, uchar dat) uchar
42、shi, ge; shi=dat/10; ge=dat%10;icd_wcom(0x80+0x40+add); lcd_wdat(table2shi);lcd_wdat(table2ge);void write_sfml(uchar add, uchar dat) uchar shi, ge; shi=dat/10; ge=dat%10; lcd_wcom(0x80+add); lcdwdat(table2shi):lcd_wdat(table2ge);void write_sfm2(uchar add, uchar dat) uchar k, ge; ge=dat%10; lcd_wcora(0x80+add);for (k= (ge*3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物聯(lián)網(wǎng)時(shí)代的移動(dòng)設(shè)備中嵌入式開發(fā)新機(jī)遇
- 環(huán)??萍荚谕苿?dòng)綠色能源發(fā)展中的作用
- 現(xiàn)代家庭教育與孩子未來職業(yè)規(guī)劃的聯(lián)動(dòng)
- Unit 5 The colourful world Part C Reading time大單元整體說課稿表格式-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)001
- Unit 1 Wish you were here Integrated skills (1) 說課稿-2024-2025學(xué)年高中英語牛津譯林版(2020)選擇性必修第三冊(cè)
- 2023三年級(jí)英語下冊(cè) Unit 10 Is he a farmer第2課時(shí)說課稿 湘少版
- Unit 4 History and Traditions Reading for Writing 說課稿-2024-2025學(xué)年高中英語人教版(2019)必修第二冊(cè)
- 2024年五年級(jí)語文下冊(cè) 第六單元 17 跳水說課稿 新人教版
- 《3 熱空氣和冷空氣》說課稿-2023-2024學(xué)年科學(xué)三年級(jí)上冊(cè)蘇教版
- 2025地質(zhì)災(zāi)害治理工程施工合同
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 企業(yè)員工食堂管理制度框架
- 電力溝施工組織設(shè)計(jì)-電纜溝
- 《法律援助》課件
- 小兒肺炎治療與護(hù)理
- 《高處作業(yè)安全》課件
- 春節(jié)后收心安全培訓(xùn)
- 小學(xué)教師法制培訓(xùn)課件
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 市政綠化養(yǎng)護(hù)及市政設(shè)施養(yǎng)護(hù)服務(wù)方案(技術(shù)方案)
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫含答案解析
評(píng)論
0/150
提交評(píng)論