計算機(jī)專業(yè)實(shí)訓(xùn)報告-lcd顯示萬年歷_第1頁
計算機(jī)專業(yè)實(shí)訓(xùn)報告-lcd顯示萬年歷_第2頁
計算機(jī)專業(yè)實(shí)訓(xùn)報告-lcd顯示萬年歷_第3頁
計算機(jī)專業(yè)實(shí)訓(xùn)報告-lcd顯示萬年歷_第4頁
計算機(jī)專業(yè)實(shí)訓(xùn)報告-lcd顯示萬年歷_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

湖南源點(diǎn)教育項(xiàng)目實(shí)訓(xùn)報告

LCD顯示萬年歷項(xiàng)目

專業(yè):計算機(jī)專業(yè)

班級:電子研發(fā)二班

姓名:李加誠,

學(xué)號:____________、

指導(dǎo)教師:王箏

2012年1月

摘要

隨著電子技術(shù)的迅速發(fā)展,尤其是單片機(jī)技術(shù)的應(yīng)用產(chǎn)品已經(jīng)

走進(jìn)了千家萬戶,電子萬年歷的出現(xiàn)給人們的生活帶來了諸多方

便,在家庭居室、大廳、車站和廣場等都可以見到各式各樣的萬年

歷。時間的流逝,至從觀太陽、擺鐘到現(xiàn)在電子鐘,人類不斷研

究,不斷創(chuàng)新紀(jì)錄,電子萬年歷是一種應(yīng)用非常廣泛的日常計時工

具,數(shù)字顯示的日歷時鐘已經(jīng)越來越流行,特別是適合在家庭居室、

辦公室、大廳、會議室、車站和廣場等使用,也出現(xiàn)了各式各樣的萬

年歷其中壁掛式LED數(shù)碼管顯示的日歷鐘已逐漸受到人們的歡迎

LED數(shù)字顯示的日歷鐘顯示清晰直觀、走時準(zhǔn)確、可以進(jìn)行夜視

等。并且在萬年歷上還可以增加很多其他功能比如溫度顯示、音樂

報時等。而對于這樣有讀取方便、顯示直觀、功能多樣、電路簡

潔、成本低廉等諸多優(yōu)點(diǎn),也符合電子儀器儀表的發(fā)展趨勢,具有

廣闊的市場前景。

本畢業(yè)論文利用單片機(jī)AT89S52,LCD液晶顯示屏等設(shè)計一個

萬年歷系統(tǒng),并采用單片機(jī)匯編語言編寫系統(tǒng)程序。萬年歷系統(tǒng)具

有年、月、日和時、分、秒的顯示功能,閏年、閏月和時間調(diào)整功

能。關(guān)鍵詞:萬年歷AT89S52單片機(jī)

電子研發(fā)專業(yè)工程項(xiàng)目訓(xùn)練任務(wù)書

姓名:學(xué)號:班級:

項(xiàng)目名稱LCD實(shí)現(xiàn)萬年歷指導(dǎo)教師王箏

萬年歷基本功能:1、時間日期的的顯示2、對當(dāng),月大小月的3為斷

3、對平閏年的判斷4、能用按鍵對時間日期進(jìn)行調(diào)

整5、有鬧鐘功能

LCD:

周次完成內(nèi)容提交的成果

1最終確定實(shí)訓(xùn)項(xiàng)目為L8顯示萬

確定項(xiàng)目名

年歷。

查閱相關(guān)資料給出綜合開發(fā)工

1項(xiàng)目背景,國內(nèi)外概況

具,給出項(xiàng)目架構(gòu)

確定具體模塊,最后整合,完成

1分析功能模塊,構(gòu)建流程圖表

流程圖表的制作。

對項(xiàng)目進(jìn)行準(zhǔn)確定位和確定實(shí)現(xiàn)

2總體設(shè)計

功能

2硬件設(shè)計完成原理圖和硬件的焊接工作

3軟件設(shè)計完成軟件的編寫

3測試將軟件寫入,測試其各項(xiàng)功能

方案選型

方案一:

顯示模塊用LED數(shù)碼管顯示

方案二:

顯ZF模塊用LCD1602液晶屏顯示i液晶顯示屏,液晶顯示屏的顯ZF功能強(qiáng)大,

可顯示大量文字,圖形,顯示多樣,清晰

方案選擇和方案驗(yàn)證

液晶顯ZF屏,液晶顯ZF屏的顯ZF功能強(qiáng)大,可顯ZF大量文字,圖形,顯ZF多

樣,清晰

所以選擇方案二。

產(chǎn)品功能描述

1、顯示時間功能

通過LCD1602液晶屏顯示

第一行對時分秒和星期的顯示

第二行實(shí)現(xiàn)對年月日的顯示

2、時間調(diào)整功能

利用獨(dú)立鍵盤對時分秒,年月日進(jìn)行加減的調(diào)整

按一次,響應(yīng)一次

3、鬧鐘功能

判斷當(dāng)前時間是否和設(shè)定的鬧鐘時間一致,一致則

鬧鐘響

總體設(shè)計

流程圖

主程序設(shè)計流程圖、

按鍵掃描模塊流程圖

按鍵掃描模

時間調(diào)整模塊流程圖

鬧鐘模塊流程圖

返回

產(chǎn)品介紹

硬件設(shè)計部分:

1、單片機(jī)最小系統(tǒng)

C1

U1

>XTAL1P0.0/AD0

P0.1/AD1

P0.2/AD2

XTAI_2P0.3/AD3

XP0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD7

C3rfRST

T—

P2.0/A8

P2.1/A9

10uF

tR1P2.2/A10

SW110kPSENP2.3/A11

ALEP2.4/A12

EAP2.5/A13

SW-SPSTP26Al4

P2.7/A15

P1.0P3.0/RXD

P1.1P3.1/TXD

P12P3.2/INTO

P1.3P3.3/INT1

PI.4P3.4/TO

P1.5P3.5/T1

P1.6P3.&WR

P1.7P3.7W

80C51

2、LCD1602顯示模塊

edmarket.com.cn

3、八個獨(dú)立按鍵控制模塊

4、無源蜂鳴器鬧鐘模塊

軟件設(shè)計部分:

1、按鍵掃描模塊

①功能鍵掃描模塊,實(shí)現(xiàn)對萬年歷功能的調(diào)整

②切換鍵掃描模塊,調(diào)整時間時,確定調(diào)整位置

③調(diào)整鍵掃描模塊(加一,減一按鍵)實(shí)現(xiàn)對顯示時間的調(diào)整

2、時鐘顯示模塊

①對L8進(jìn)行初始化

②顯示第一行

③顯示第二行

3、鬧鐘模塊

①判斷當(dāng)前時間是否和鬧鐘設(shè)定的時間一致

②一致則調(diào)用鬧鈴響應(yīng)模塊,不一致則正常顯示

程序源代碼:

;程序名稱:萬年歷

;編寫人:李加誠

;編寫時間;2012.03.10

;程序?qū)崿F(xiàn)功能:實(shí)現(xiàn)萬年歷時間日期的顯示,時間的調(diào)整等

.*****************************************

;LCD引腳定義

ENBITP2.6;時鐘信號

RSBITP2.4;決定要傳送的是

命令還是數(shù)據(jù)

RWBITP2.5;決定要讀

還是寫,一般寫的時候多.

SJEQUP0;顯示時間,日期輸入口

HourEQU30H;小時存儲單元

MinEQU31H;分鐘存儲

單元

SecEQU32H;秒鐘存儲

單元

WeekEQU33H;周期存儲單元

DayEQU34H;日存儲單

MoonEQU35H;月存儲單元

Year_hEQU36H;年(高位)存儲

單元

Year_lEQU37H;年(低位)存儲

單元

DayBufEQU38H;當(dāng)月日數(shù)

ChangeBufEQU39H;切換鍵按下次數(shù)

緩存

ChangeKeyBITP1.7徹?fù)Q鍵

HourKeyBITP1.1;小時調(diào)整鍵

MinKeyBITP1.2;分鐘調(diào)整鍵

WeekKeyBITP1.3;星期調(diào)整鍵

DayKeyBITP1.4;日數(shù)調(diào)整

MoonKeyBITP1.5;月份調(diào)整

YearKeyBITP1.6;年數(shù)調(diào)整

WeiBITP2.1;位選

DuanBITP2.0;段選

bDDOBIT23H.0;抖動標(biāo)志位

bDD1BIT23H.1

bDD2BIT23H.2

bDD3BIT23H.3

bDD4BIT23H.4

bDD5BIT23H.5

bDD6BIT23H.6

bDD7BIT23H.7

bXYOBIT24H.0;響應(yīng)標(biāo)志位

bXY1BIT24H.1

bXY2BIT24H.2

bXY3BIT24H.3

bXY4BIT24H.4

bXY5BIT24H.5

bXY6BIT24H.6

bXY7BIT24H.7

T_DOBIT25H.0;切換屏標(biāo)志位

bChangeDDBIT25H.1;切換調(diào)整鍵抖動位

bChangeXYBIT25H.2;切換調(diào)整鍵響應(yīng)位

bffbit26h.3

bHickerBIT25H.3;閃爍標(biāo)志位

.******************************************

ORG0000H

AJMPSTART

ORG000BH

AJMPT0_Ser

ORG001BH

AJMPT1_Ser

ORG0030H

.***********

J**第初始化****************************

Start:MOVTMOD,#01H;定時器。初

始化

MOVTH0,#3CH

MOVTL0,#0B0H

SETBEA

SETBETO

SETBTRO

MOVTH1,#3CH;定時器1

初始化

MOVTL1,#0B0H

SETBET1

SETBTR1

SETBPXO

MOVHour,#0;小

時初始化

MOVMin,#0汾

鐘初始化

MOVSec,#0;秒

鐘初始化

MOVWeek,#01;星期初始

MOVDay,#1舊

數(shù)初始化

MOVMoon,#1月

份初始化

MOVYear_h,#20;年份初始

化(高位)

MOVYearJ,#11;年份初始

化(低位)

MOV60H,#20;用

于定時器0記滿一秒\

MOV61H,#20;用

于定時器1記滿一秒

CALLchushihua

…*……主程序**…………*…

Main:

CALLChange;調(diào)整鍵切

CALLDispose;調(diào)用掃描

鍵盤程序

GALLIcddis;調(diào)用顯7F程序

;CALLNclock;調(diào)用鬧鐘程序

AJMPmain;返回

******調(diào)整鍵切換

****************************************

;輸入:ChangeKey(切換調(diào)整按鍵)

;輸出:ChangeBuf(切換鍵按下次數(shù))

;實(shí)現(xiàn)功能:得到切換鍵按下次數(shù),確定該響應(yīng)哪個調(diào)整鍵

Change:JNBbChangeDD,DY8;判

斷切換調(diào)整鍵抖動標(biāo)志

JBChangeKey,DY8;判

斷切換調(diào)整調(diào)整鍵是否按下

JBbChangeXY,D8;判

斷切換調(diào)整調(diào)整鍵是否響應(yīng)過

SETBbChangeXY;沒有響應(yīng)

過,日響應(yīng)位置一

INCChangeBuf;按

下次數(shù)加一

MOVA,ChangeBufJ

CJNEA,#2,D8;判

斷是否按下6次

MOVChangeBuf,#0;按

下八次,將次數(shù)清零i

D8:RET

DY8:JNBChangeKey,DD8;判

斷切換調(diào)整調(diào)整鍵是否按下

CLRbChangeDD;沒

有按下,清0抖動標(biāo)志位

CLRbChangeXY;沒

有按下,清零響應(yīng)標(biāo)志位

RET

DD8:SETBbChangeDD;按下,抖

動標(biāo)志位置一

RET

***鍵盤掃描子程序

;輸入:CchangeBuf(調(diào)整切換鍵按下次數(shù))

;輸出:按下次數(shù)所對應(yīng)的調(diào)整后的值

;實(shí)現(xiàn)功能:由ChangeBuf確定調(diào)整鍵,并對該鍵進(jìn)行調(diào)整

Dispose:

CALLTMin;查分鐘鍵

CALLTHour;查小時鍵

CALLTWeek;杳星期鍵

CALLTDay;查日鍵

CALLTMoon;查月鍵

CALLTYear;查年鍵

RET

;*********分鐘調(diào)整子程序

;**********************************

TMin:MOVA,ChangeBuf

CJNEA,#1,D1

JNBbDD1,DY1;判斷分鐘

抖動標(biāo)志

JBMinKey,DY1;判斷分鐘

調(diào)整鍵是否按下

JBbXY1,D1;判

斷分鐘調(diào)整鍵是否響應(yīng)過

SETBbXY1;沒有響應(yīng)過,響

應(yīng)為置一

INCMin汾

鐘加一

MOVA,Min

CJNEA,#60,D1;判斷是否加到

60分鐘

MOVMin,#0;加

到60分鐘,分鐘清零

D1:RET

DY1:JNBMinKey,DD1;判斷分鐘

調(diào)整鍵是否按下

CLRbDD1;沒有按

下,清。抖動標(biāo)志位

CLRbXY1;沒有按

下,清零響應(yīng)標(biāo)志位

RET

DD1:SETBbDD1;分鐘調(diào)整鍵按

下,抖動標(biāo)志位置一

RET;返

;**********小時調(diào)整子程序

THour:MOVA,ChangeBuf

CJNEA,#1,D0

JNBbDD0,DY0;判斷小時

抖動標(biāo)志

JBHourKey,DYO;判斷小時

調(diào)整鍵是否按下

JBbXYO.DO;判

斷小時調(diào)整鍵是否響應(yīng)過

SETBbXYO;沒有響應(yīng)過,響

應(yīng)位置一

INCHour;小時加一

MOVA,HourJ

CJNEA,#24,D0;判斷是否加到

24小時

MOVHour,#0;加

到24小時,清零小時單元

DO:RET

DYO:JNBHourKey,DDO;判斷小時

調(diào)整按鍵是否按下

CLRbDDO;沒有按

下,清零抖動標(biāo)志位

CLRbXYO;沒有按

下,清零響應(yīng)標(biāo)志位

RET;返

DDO:SETBbDDO;小時調(diào)整鍵按

下,抖動標(biāo)志位置一

RET

*星期調(diào)整子程序

TWeek:MOVA,ChangeBuf

CJNEA,#1,D2

JNBbDD2,DY2;判斷星期

抖動鍵

JBWeekKey,DY2;判

斷星期調(diào)整鍵是否按下

JBbXY2,D2;判

斷星期調(diào)整鍵是否響應(yīng)過

SETBbXY2;沒有響應(yīng)過,置

一響應(yīng)標(biāo)志位

INCWeek;星期加一

MOVA,Week

CJNEA,#8,D2;判斷是否

達(dá)到最大星期值

MOVWeek,#1;達(dá)

到最大星期值,星期1

D2:RET

DY2:JNBWeekKey,DD2;判

斷星期調(diào)整鍵是否按下

CLRbDD2;沒有按

下,清0抖動標(biāo)志位

CLRbXY2;沒有按

下,清零響應(yīng)標(biāo)志位

RET

DD2:SETBbDD2;按下,抖動標(biāo)志

位置一

RET;返

;*********曰調(diào)整子程序

TDay:MOVA,ChangeBuf

CJNEA,#1,D3

JNBbDD3,DY3;判斷日數(shù)

抖動標(biāo)志

JBDayKey,DY3;判斷日調(diào)

整鍵是否按下

JBbXY3,D3;判

斷日調(diào)整鍵是否響應(yīng)過

SETBbXY3;沒有響應(yīng)過,日

響應(yīng)位置一

INCDay;S

數(shù)加一

MOVA,DayJ

CJNEA,DayBuf,D3;判斷是否到了當(dāng)

月最大日數(shù)

MOVDay,#1倒

了當(dāng)月最大日數(shù),,將日數(shù)設(shè)為1

D3:RET

DY3:JNBDayKey,DD3;判斷日調(diào)

整鍵是否按下

CLRbDD3;沒有按

下,清。抖動標(biāo)志位

CLRbXY3;沒有按

下,清零響應(yīng)標(biāo)志位

RET

DD3:SETBbDD3;按下,抖動標(biāo)志

位置一

RET;返

;*********月調(diào)整子程序

***********************************************

TMoon:MOVA,ChangeBuf

CJNEA,#1,D4

JNBbDD4,DY4;判斷月份

抖動標(biāo)志位

JBMoonKey,DY4;判

斷月份調(diào)整鍵是否按下

JBbXY4,D4;判

斷月份調(diào)整鍵是否響應(yīng)過

SETBbXY4;沒有響應(yīng)過,月

份響應(yīng)位置一

INCMoon;月份加一

MOVA,Moon

CJNEA,#13,D4;判斷是否超過最

大月份

MOVMoon,#1;超

過最大月份,將月份設(shè)為1月

D4:RET

DY4:JNBMoonKey,DD4;判

斷月份調(diào)整鍵是否按下

CLRbDD4;沒有按

下,清。抖動標(biāo)志位

CLRbXY4;沒有按

下,清零響應(yīng)標(biāo)志位

RET

DD4:SETBbDD4;按下,抖動標(biāo)志

位置一

RET

;*********年調(diào)整子程序

:**********************************

TYear:MOVA,ChangeBuf

CJNEA,#1,D5

JNBbDD5,DY5;判斷年抖

動標(biāo)志位

JBYearKey,DY5;判斷年調(diào)

整鍵是否按下

JBbXY5,D5;判

斷年調(diào)整鍵是否響應(yīng)

SETBbXY5;沒有響應(yīng),年響

應(yīng)位置一

INCYear_l年加一

MOVA,YearJ

CJNEA,#100,D5;判斷是否加到一

百年

MOVYear_l,#0;加到一百

年,將年數(shù)清零

D5:RET

DY5:JNBYearKey,DD5;判斷年調(diào)

整鍵是否按下

CLRbDD5;沒有按

下,清。抖動標(biāo)志位

CLRbXY5;沒有按

下,清零響應(yīng)標(biāo)志位

RET

DD5:SETBbDD5;按下,抖動標(biāo)志

位置一

RET

;***********定時器TO中斷程序

:***************************************************

輸入:無

;輸出:無

;實(shí)現(xiàn)功能:時、分、秒、年、月、日、星期的自動累加

TO_Ser:

;PUSHACC

;PUSHPSW

MOVTH0,#3CH;定時器初值初始化

MOVTL0,#0B0H

DJNZ60H,LOOP;滿足一秒時間往下執(zhí)行,否則

跳出中斷

MOV60H,#20

INCSec;達(dá)到一

秒,秒加一

MOVA,Sec

CJNEA,#60,LOOP;判斷是否到了60秒

MOVSec,#0;滿了60

秒,秒清零

INCMin;達(dá)到一分鐘,

分加一

MOVA,Min

CJNEA,#60,LOOP;判斷是否到了60分

MOVMin,#0;滿了60

分,分清零

INCHour;達(dá)到一小時,小

時加一

MOVA,Hour

CJNEA,#24,LOOP;判斷是否到了24小時

MOVHour,#0;滿了24

小時,小時清零

INCWeek;達(dá)到一天,周期

加一

INCDay

MOVA,Week

CJNEA,#08,LOOP1;判斷是否到了星

期天

MOVWeek,#01;滿了七天,星期

清零

LOOP1:MOVA,Day

CJNEA,DayBuf,LOOP;判斷是否到達(dá)當(dāng)月最大

日數(shù)

MOVDay,#0;達(dá)到最大

日數(shù),日數(shù)清零

INCMoon;日數(shù)已滿,月份

加一

MOVA,Moon

CJNEA,#13,LOOP;判斷是否超過12月分

MOVMoon,#1;超過則將

月份置為一月份

INCYear_l;年份加一

MOVA,YearJ

CJNEA,#100,LOOP;判斷年份(低位)是

否到了一百年

MOVYear_l,#0;滿足一百年,將

年份(低位)清零

INCYear_h;年份(高

位)加一

MOVA,Year_h

CJNEA,#100,LOOP;判斷年份(高

位)是否到了一百年

MOVYear_h,#0;滿足一百年,將

年份(高位)清零

;POPPSW

;POPACC

LOOP:RETI

;***********定時器1,閃爍標(biāo)志位定時取反

T1Ser:

;PUSHACC

;PUSHPSW

MOVTH1,#3CH

MOVTL1,#0B0H

DJNZ61H.OT

MOV61H,#20

CPLbHicker

epibff

;POPPSW

;POPACC

OT:RETI

;**************平年閏年判斷子程序

***********************************

;輸入:YearJ和Year_h,

;輸出:DayBuf(二月份的天數(shù))

;確定當(dāng)年二月份的天數(shù)

YearJud:MOVA,YearJ;將年份(低位)送到

A,判斷是否為世紀(jì)年

CJNEA,#0,L1;不是世紀(jì)年,

則跳到L1

MOVA,Year_h;是世紀(jì)年,判

斷世紀(jì)(年份高位)能否被4整除

MOVB,#4;

DIVABJ

MOVA,BJ

CJNEA,#O,Same_Year;不能整除,跳到

Same_Year,該年為平年

AJMPLeap_Year;能整除,跳到

Leap_Year,該年為閏年

L1:MOVB,#4;不是世

紀(jì)年,則判斷年份是否能被4整除

DIVAB

MOVA,B

CJNEA,#O,Same_Year;不能整除,跳到

Same_Year,該年為平年

AJMPLeap_Year甫罐除,跳到

Leap_Year,該年為閏年

Same_Year:MOVDayBuf,#29;平年則二月只

有28天

AJMP1_2

Leap_Year:MOVDayBuf,#30;閏年則二月有

29天

AJMPL2

l-2:RET

;********************判斷月份大小

;輸入:Moon月份

輸出:DayBuf當(dāng)月日數(shù)

;實(shí)現(xiàn)功能:判斷當(dāng)月大小,確定當(dāng)月的天數(shù)

MoonJud:MOVA,Moon

CJNEA,#2,W;判斷是否為二

月,不是則判斷其他月份

CALLYearJud;二月份,

調(diào)用平年閏年判斷子程序

AJMPV5;返回

W:CJNEA,#4,V1;不是4月

則跳到V1

AJMPVO

V1:CJNEA,#6,V2

溫馨提示

  • 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

提交評論