国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于AT89S52單片機(jī)的電子萬年歷設(shè)計(jì)與實(shí)現(xiàn)

2014-10-27 19:42:04李楊
無線互聯(lián)科技 2014年9期

李楊

摘 要:本設(shè)計(jì)以AT89S52單片機(jī)為核心,構(gòu)成單片機(jī)控制電路,結(jié)合DS1302時(shí)鐘芯片和24C02FLASH存儲(chǔ)器,顯示陽歷年、月、日、星期、時(shí)、分、秒和陰歷年、月、日,在顯示陰歷時(shí)間時(shí),能標(biāo)明是否閏月,同時(shí)完成對(duì)它們的自動(dòng)調(diào)整和掉電保護(hù),全部信息用液晶顯示。人機(jī)接口由三個(gè)按鍵來實(shí)現(xiàn),用這三個(gè)按鍵對(duì)時(shí)間、日期可調(diào),并可對(duì)鬧鈴開關(guān)進(jìn)行設(shè)置。軟件控制程序?qū)崿F(xiàn)所有的功能。整機(jī)電路使用+5V穩(wěn)壓電源,可穩(wěn)定工作。

關(guān)鍵詞:AT89S52;DS1302;HD61202;HY12864

1 引言

在日新月異的21世紀(jì)里,家用電子產(chǎn)品得到了迅速發(fā)展。許多家電設(shè)備都趨于人性化、智能化,這些電器設(shè)備大部分都含有CPU控制器或者是單片機(jī)。本文設(shè)計(jì)的電子萬年歷屬于小型智能家用電子產(chǎn)品。本設(shè)計(jì)基于AT89S52單片機(jī)、DS1302時(shí)鐘芯片、24C02FLASH存儲(chǔ)器和HY-12864液晶顯示器等主要芯片,顯示陽歷年、月、日、星期、時(shí)、分、秒和陰歷年、月、日,在顯示陰歷時(shí)間時(shí),能標(biāo)明是否閏月,同時(shí)完成對(duì)它們的自動(dòng)調(diào)整和掉電保護(hù),全部信息用液晶顯示。

2 系統(tǒng)總體設(shè)計(jì)

本設(shè)計(jì)以AT89S52單片機(jī)為核心,構(gòu)成單片機(jī)控制電路,結(jié)合DS1302時(shí)鐘芯片和24C02FLASH存儲(chǔ)器,顯示陽歷年、月、日、星期、時(shí)、分、秒和陰歷年、月、日,在顯示陰歷時(shí)間時(shí),能標(biāo)明是否閏月,同時(shí)完成對(duì)它們的自動(dòng)調(diào)整和掉電保護(hù),全部信息用液晶顯示。人機(jī)接口由三個(gè)按鍵來實(shí)現(xiàn),用這三個(gè)按鍵對(duì)時(shí)間、日期可調(diào),并可對(duì)鬧鈴開關(guān)進(jìn)行設(shè)置。

按照系統(tǒng)設(shè)計(jì)功能的要求,確定設(shè)計(jì)系統(tǒng)由主控模塊、時(shí)鐘模塊、存儲(chǔ)模塊、鍵盤接口模塊、顯示模塊和鬧鈴模塊共6個(gè)模塊組成?;谝陨戏治?,系統(tǒng)設(shè)計(jì)框架如下所示。

3 系統(tǒng)硬件設(shè)計(jì)

根據(jù)系統(tǒng)設(shè)計(jì)的總體要求,本系統(tǒng)的硬件組成部分包括控制芯片,時(shí)鐘電路,存儲(chǔ)電路,鍵掃描電路,液晶顯示,鬧鈴電路6個(gè)部分。

3.1 器件選擇

考慮到體積、成本、市場(chǎng)等一系列因素,控制芯片最終選用STC89C52RC。其為增強(qiáng)型的8位8051單片機(jī),有8KB的可反復(fù)擦寫EEPROM和512字節(jié)的RAM,無需外擴(kuò),代碼改寫方便,滿足系統(tǒng)軟件設(shè)計(jì)要求;有內(nèi)置“看門狗”電路,3個(gè)16位定時(shí)/計(jì)數(shù)器,4個(gè)外部中斷,滿足系統(tǒng)硬件設(shè)計(jì)要求。

時(shí)鐘電路采用DS1302作為記錄測(cè)控系統(tǒng)中的數(shù)據(jù)記錄,其軟硬件設(shè)計(jì)簡(jiǎn)單,時(shí)間記錄準(zhǔn)確,可以免了連續(xù)記錄的大工作量,也避免了定時(shí)記錄的盲目性,給連續(xù)長(zhǎng)時(shí)間的測(cè)量、控制系統(tǒng)的正常運(yùn)行及檢查都來方便。

顯示器部分是由HD61202液晶顯示控制驅(qū)動(dòng)器和HY12864液晶顯示器組成的。HD61202液晶顯示控制驅(qū)動(dòng)器是一種帶有驅(qū)動(dòng)輸出的圖形液晶顯示控制器,它可直接與8位微處理器相連,它可與HD61203配合對(duì)液晶屏進(jìn)行行、列驅(qū)動(dòng);HY-12864是使用HD61202作為列驅(qū)動(dòng)器,同時(shí)使用HD61203作為行驅(qū)動(dòng)器的液晶模塊。

3.2 系統(tǒng)原理圖

4 系統(tǒng)軟件設(shè)計(jì)

4.1 陽歷程序的設(shè)計(jì)

因?yàn)槭褂昧藭r(shí)鐘芯片DS1302,陽歷程序可以從DS1302各寄存器中讀出年、周、月、日、[小]時(shí)、分、秒等數(shù)據(jù),再處理即可。在首次對(duì)DS1302進(jìn)行操作之前,必須進(jìn)行初始化,然后從DS1302中讀出數(shù)據(jù),再經(jīng)過處理,送給顯示緩沖單元。陽歷程序流程圖見圖3所示。

4.2 時(shí)間調(diào)整程序設(shè)計(jì)

調(diào)整時(shí)間用三個(gè)調(diào)整按鈕,一個(gè)作為移位、控制用,一個(gè)作為加用,一個(gè)作為退出調(diào)整和鬧鈴開關(guān)用。分別定義為控制按鈕、加按鈕、退出按鈕。在調(diào)整時(shí)間過程中,要調(diào)整的位與別的位應(yīng)該有區(qū)別,所以增加了閃爍功能,即調(diào)整的位一直在閃爍,直到調(diào)整下一位。閃爍原理就是,讓要調(diào)整的一位每隔一定的時(shí)間熄滅一次,例如間隔時(shí)間為50ms。利用定時(shí)器計(jì)時(shí),當(dāng)達(dá)到50ms溢出時(shí),就送給該位熄滅符,在下一次溢出時(shí),再送正常顯示的值,不斷交替,直到調(diào)整該位結(jié)束。此時(shí)送正常顯示值給該位,再進(jìn)入下一位調(diào)整閃爍程序。時(shí)間調(diào)整程序流程圖如圖4所示。

4.3 陰歷陽歷程序設(shè)計(jì)

陰歷程序的實(shí)現(xiàn)是要靠陽歷日期來推算的。推算方法是,根據(jù)陽歷當(dāng)前日期在一年中的天數(shù)來計(jì)算陰歷日期。陽歷一個(gè)月不是30天就是31天(2月除外,閏年2月為29天,平年2月為28天)。陰歷一年有12個(gè)月或13個(gè)月(含閏月),一個(gè)月為30天或29天。如果把一個(gè)只有29天的月稱為小月,用1為標(biāo)志,把30天的月稱為大月,用0為標(biāo)志,那么12位二進(jìn)制就能表示一年12個(gè)月的大小。如果有閏月,則把閏月的月份作為一個(gè)字節(jié)的高4位,低4位表示閏月大小,大月為0,小月為1,這樣一個(gè)字節(jié)就包括了所有閏月的信息。陰歷春節(jié)和陽歷元旦相差的天數(shù)也用一個(gè)字節(jié)表示。總共用4字節(jié)就可以存儲(chǔ)一年中任何一天陽歷和陰歷的對(duì)應(yīng)關(guān)系的有關(guān)數(shù)據(jù),例如2004年的陰歷和陽歷對(duì)應(yīng)關(guān)系如圖5所示。

2004年的春節(jié)和元旦差21天,這樣2004年的信息表示為:21,42H,52H,21H。其中表示12個(gè)月大小信息的字節(jié),第4位和第7位不用,第1個(gè)字節(jié)為十進(jìn)制,其它的都為十六進(jìn)制。按此方法,50年的陽歷和陰歷對(duì)應(yīng)關(guān)系表總共使用200字節(jié)。圖6為計(jì)算陽歷中任何一天在該年中為第幾天的程序流程圖。

計(jì)算出陽歷總天數(shù)后,就可以根據(jù)它來推算陰歷日期。推算方法是,先用總天數(shù)減去春節(jié)和元旦的日差,如果結(jié)果為1,則該天正好是春節(jié)(因?yàn)榇汗?jié)在元旦之后,在計(jì)算春節(jié)和元旦的日差時(shí),假設(shè)元旦為0天,春節(jié)為n天,則日差為n。而前面計(jì)算的陽歷總天數(shù)是該天在該年中的第幾天,是以元旦為1而得到的,與計(jì)算春節(jié)和元旦日差的這樣方法相比,其數(shù)值少了1,所以要在原來本應(yīng)該以0作為該天就是春節(jié)的依據(jù)的基礎(chǔ)上加1,所以以1作為該天是春節(jié)的標(biāo)志);如果結(jié)果小于1,則陰歷應(yīng)該是陽歷的前一年;如果結(jié)果大于1,說明陽歷和陰歷為同一年。再根據(jù)查表所得的該年的陰歷的閏年和大小月的信息,就可以推算出該天的陰歷日期了。圖5-4為由總天數(shù)推算出陰歷日期的程序流程圖。

5 系統(tǒng)運(yùn)行結(jié)果及評(píng)估

設(shè)計(jì)完成后,給系統(tǒng)上電,液晶顯示屏顯示結(jié)果如圖8所示。

調(diào)節(jié)10K電位器R4可調(diào)整液晶顯示屏的亮度。調(diào)整到合適亮度后,按控制按鈕,光標(biāo)會(huì)從陽歷年位開始閃爍,進(jìn)入設(shè)定調(diào)整狀態(tài)。此時(shí)按加按鈕,當(dāng)前數(shù)字就可改變。按一次,數(shù)字加1;若長(zhǎng)按,則數(shù)字連續(xù)加。此時(shí),調(diào)整的位一直在閃爍,直到再次按光標(biāo)移動(dòng)控制位,光標(biāo)跳到下一位閃爍。調(diào)整順序依次為:陽歷年、月、日,陰歷年、月、日,時(shí)、分、秒,鬧鈴時(shí)、分。當(dāng)全部參數(shù)調(diào)整完畢后,按退出按鈕,光標(biāo)停止閃爍,退出設(shè)定調(diào)整狀態(tài);當(dāng)再次按下此按鈕,鬧鈴顯示“開”;當(dāng)?shù)谌伟聪麓随I,鬧鈴顯示“關(guān)”。若當(dāng)前月為閏月,則屏幕左下角會(huì)顯示“閏月”;若不是閏月,則無顯示。

調(diào)試分為硬件調(diào)試和軟件調(diào)試。硬件調(diào)試主要是檢測(cè)硬件電路是否有短路、斷路、虛焊等。DS1302的硬件電路很簡(jiǎn)單,只通過3根線與單片機(jī)相連,很容易檢測(cè),主要是檢查其引腳,如晶振和電源等是否接好。另外可以通過軟件來調(diào)試硬件,如為了測(cè)試顯示電路連接是否正確,可以編寫一個(gè)簡(jiǎn)單的顯示程序來測(cè)試它。接下來可進(jìn)行軟件調(diào)試,可以編寫只含DS1302的計(jì)時(shí)和讀寫程序、顯示程序,測(cè)試DS1302是否正常工作。最后調(diào)試時(shí)間調(diào)整程序和陰歷推算程序。

6 結(jié)論

本設(shè)計(jì)硬件電路較簡(jiǎn)單,所用器件較少,電路中使用了AT89S52單片機(jī)、DS1302時(shí)鐘芯片、24C02FLASH存儲(chǔ)器和HY-12864液晶顯示器等主要芯片,實(shí)現(xiàn)了預(yù)計(jì)功能。

在對(duì)芯片的管腳功能和用法有充分的了解后,根據(jù)設(shè)計(jì)要求設(shè)計(jì)硬件電路,包括單片機(jī)控制電路、時(shí)鐘電路、存儲(chǔ)電路、鍵盤掃描電路、顯示電路和鬧鈴電路。然后通過軟件編程,實(shí)現(xiàn)了對(duì)年、月、日、時(shí)、分、秒、星期、閏年和陰歷的自動(dòng)調(diào)整,用按鍵進(jìn)行控制,用液晶模塊進(jìn)行顯示,并具有鬧鈴功能。

電子萬年歷可以正常顯示時(shí)間并進(jìn)行時(shí)間調(diào)整,完成了預(yù)期要實(shí)現(xiàn)的目標(biāo)??梢宰鳛橐院蠹矣没蛘呱逃玫漠a(chǎn)品,有很好的應(yīng)用前景。

[參考文獻(xiàn)]

[1]吳金戌,沈慶陽.8051單片機(jī)實(shí)踐與應(yīng)用.北京:清華大學(xué)出版社,2003.12,26-38.

[2]何立民.單片機(jī)應(yīng)用文集.北京:北京航空航天大學(xué)出版社,1991,53-72.

[3]公茂法.單片機(jī)人機(jī)接口實(shí)例集.北京:北京航空航天大學(xué)出版社,1998.2,32-59.

[4]何立明.單片機(jī)高級(jí)教程——應(yīng)用與設(shè)計(jì).北京:北京航天航空大學(xué)出版社,2000.4,149-173.

[5]李廣弟,朱月秀.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出版社,2001.8,36-85.

[6]樓然苗,李光飛.MCS-51系列單片機(jī)設(shè)計(jì)實(shí)例,北京:北京航天航空大學(xué)出版社,2001.3,75-83.

驻马店市| 岑溪市| 东安县| 黄梅县| 项城市| 石家庄市| 阳朔县| 浦东新区| 清镇市| 怀柔区| 丹阳市| 天全县| 万全县| 晋江市| 鹿邑县| 韶关市| 泸水县| 梁河县| 宁夏| 临城县| 林州市| 巧家县| 平度市| 乐平市| 舟山市| 永济市| 泾阳县| 中卫市| 博爱县| 泽库县| 安义县| 拉萨市| 松原市| 微山县| 南华县| 托克托县| 黎川县| 志丹县| 资阳市| 衡南县| 永定县|