版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南源点教育项目实训报告
LCD显示万年历项目
专业:计算机专业
班级:电子研发二班
姓名:李加诚,
学号:____________、
指导教师:王筝
2012年1月
摘要
随着电子技术的迅速发展,尤其是单片机技术的应用产品已经
走进了千家万户,电子万年历的出现给人们的生活带来了诸多方
便,在家庭居室、大厅、车站和广场等都可以见到各式各样的万年
历。时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研
究,不断创新纪录,电子万年历是一种应用非常广泛的日常计时工
具,数字显示的日历时钟已经越来越流行,特别是适合在家庭居室、
办公室、大厅、会议室、车站和广场等使用,也出现了各式各样的万
年历其中壁挂式LED数码管显示的日历钟已逐渐受到人们的欢迎
LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视
等。并且在万年历上还可以增加很多其他功能比如温度显示、音乐
报时等。而对于这样有读取方便、显示直观、功能多样、电路简
洁、成本低廉等诸多优点,也符合电子仪器仪表的发展趋势,具有
广阔的市场前景。
本毕业论文利用单片机AT89S52,LCD液晶显示屏等设计一个
万年历系统,并采用单片机汇编语言编写系统程序。万年历系统具
有年、月、日和时、分、秒的显示功能,闰年、闰月和时间调整功
能。关键词:万年历AT89S52单片机
电子研发专业工程项目训练任务书
姓名:学号:班级:
项目名称LCD实现万年历指导教师王筝
万年历基本功能:1、时间日期的的显示2、对当,月大小月的3为断
3、对平闰年的判断4、能用按键对时间日期进行调
整5、有闹钟功能
LCD:
周次完成内容提交的成果
1最终确定实训项目为L8显示万
确定项目名
年历。
查阅相关资料给出综合开发工
1项目背景,国内外概况
具,给出项目架构
确定具体模块,最后整合,完成
1分析功能模块,构建流程图表
流程图表的制作。
对项目进行准确定位和确定实现
2总体设计
功能
2硬件设计完成原理图和硬件的焊接工作
3软件设计完成软件的编写
3测试将软件写入,测试其各项功能
方案选型
方案一:
显示模块用LED数码管显示
方案二:
显ZF模块用LCD1602液晶屏显示i液晶显示屏,液晶显示屏的显ZF功能强大,
可显示大量文字,图形,显示多样,清晰
方案选择和方案验证
液晶显ZF屏,液晶显ZF屏的显ZF功能强大,可显ZF大量文字,图形,显ZF多
样,清晰
所以选择方案二。
产品功能描述
1、显示时间功能
通过LCD1602液晶屏显示
第一行对时分秒和星期的显示
第二行实现对年月日的显示
2、时间调整功能
利用独立键盘对时分秒,年月日进行加减的调整
按一次,响应一次
3、闹钟功能
判断当前时间是否和设定的闹钟时间一致,一致则
闹钟响
总体设计
流程图
主程序设计流程图、
按键扫描模块流程图
按键扫描模
时间调整模块流程图
闹钟模块流程图
返回
产品介绍
硬件设计部分:
1、单片机最小系统
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、八个独立按键控制模块
4、无源蜂鸣器闹钟模块
软件设计部分:
1、按键扫描模块
①功能键扫描模块,实现对万年历功能的调整
②切换键扫描模块,调整时间时,确定调整位置
③调整键扫描模块(加一,减一按键)实现对显示时间的调整
2、时钟显示模块
①对L8进行初始化
②显示第一行
③显示第二行
3、闹钟模块
①判断当前时间是否和闹钟设定的时间一致
②一致则调用闹铃响应模块,不一致则正常显示
程序源代码:
;程序名称:万年历
;编写人:李加诚
;编写时间;2012.03.10
;程序实现功能:实现万年历时间日期的显示,时间的调整等
.*****************************************
;LCD引脚定义
ENBITP2.6;时钟信号
RSBITP2.4;决定要传送的是
命令还是数据
RWBITP2.5;决定要读
还是写,一般写的时候多.
SJEQUP0;显示时间,日期输入口
HourEQU30H;小时存储单元
MinEQU31H;分钟存储
单元
SecEQU32H;秒钟存储
单元
WeekEQU33H;周期存储单元
DayEQU34H;日存储单
元
MoonEQU35H;月存储单元
Year_hEQU36H;年(高位)存储
单元
Year_lEQU37H;年(低位)存储
单元
DayBufEQU38H;当月日数
ChangeBufEQU39H;切换键按下次数
缓存
ChangeKeyBITP1.7彻换键
HourKeyBITP1.1;小时调整键
MinKeyBITP1.2;分钟调整键
WeekKeyBITP1.3;星期调整键
DayKeyBITP1.4;日数调整
MoonKeyBITP1.5;月份调整
YearKeyBITP1.6;年数调整
WeiBITP2.1;位选
DuanBITP2.0;段选
bDDOBIT23H.0;抖动标志位
bDD1BIT23H.1
bDD2BIT23H.2
bDD3BIT23H.3
bDD4BIT23H.4
bDD5BIT23H.5
bDD6BIT23H.6
bDD7BIT23H.7
bXYOBIT24H.0;响应标志位
bXY1BIT24H.1
bXY2BIT24H.2
bXY3BIT24H.3
bXY4BIT24H.4
bXY5BIT24H.5
bXY6BIT24H.6
bXY7BIT24H.7
T_DOBIT25H.0;切换屏标志位
bChangeDDBIT25H.1;切换调整键抖动位
bChangeXYBIT25H.2;切换调整键响应位
bffbit26h.3
bHickerBIT25H.3;闪烁标志位
.******************************************
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旧
数初始化
MOVMoon,#1月
份初始化
MOVYear_h,#20;年份初始
化(高位)
MOVYearJ,#11;年份初始
化(低位)
MOV60H,#20;用
于定时器0记满一秒\
MOV61H,#20;用
于定时器1记满一秒
CALLchushihua
…*……主程序**…………*…
Main:
CALLChange;调整键切
换
CALLDispose;调用扫描
键盘程序
GALLIcddis;调用显7F程序
;CALLNclock;调用闹钟程序
AJMPmain;返回
******调整键切换
****************************************
;输入:ChangeKey(切换调整按键)
;输出:ChangeBuf(切换键按下次数)
;实现功能:得到切换键按下次数,确定该响应哪个调整键
Change:JNBbChangeDD,DY8;判
断切换调整键抖动标志
JBChangeKey,DY8;判
断切换调整调整键是否按下
JBbChangeXY,D8;判
断切换调整调整键是否响应过
SETBbChangeXY;没有响应
过,日响应位置一
INCChangeBuf;按
下次数加一
MOVA,ChangeBufJ
CJNEA,#2,D8;判
断是否按下6次
MOVChangeBuf,#0;按
下八次,将次数清零i
D8:RET
DY8:JNBChangeKey,DD8;判
断切换调整调整键是否按下
CLRbChangeDD;没
有按下,清0抖动标志位
CLRbChangeXY;没
有按下,清零响应标志位
RET
DD8:SETBbChangeDD;按下,抖
动标志位置一
RET
***键盘扫描子程序
;输入:CchangeBuf(调整切换键按下次数)
;输出:按下次数所对应的调整后的值
;实现功能:由ChangeBuf确定调整键,并对该键进行调整
Dispose:
CALLTMin;查分钟键
CALLTHour;查小时键
CALLTWeek;杳星期键
CALLTDay;查日键
CALLTMoon;查月键
CALLTYear;查年键
RET
;*********分钟调整子程序
;**********************************
TMin:MOVA,ChangeBuf
CJNEA,#1,D1
JNBbDD1,DY1;判断分钟
抖动标志
JBMinKey,DY1;判断分钟
调整键是否按下
JBbXY1,D1;判
断分钟调整键是否响应过
SETBbXY1;没有响应过,响
应为置一
INCMin汾
钟加一
MOVA,Min
CJNEA,#60,D1;判断是否加到
60分钟
MOVMin,#0;加
到60分钟,分钟清零
D1:RET
DY1:JNBMinKey,DD1;判断分钟
调整键是否按下
CLRbDD1;没有按
下,清。抖动标志位
CLRbXY1;没有按
下,清零响应标志位
RET
DD1:SETBbDD1;分钟调整键按
下,抖动标志位置一
RET;返
回
;**********小时调整子程序
THour:MOVA,ChangeBuf
CJNEA,#1,D0
JNBbDD0,DY0;判断小时
抖动标志
JBHourKey,DYO;判断小时
调整键是否按下
JBbXYO.DO;判
断小时调整键是否响应过
SETBbXYO;没有响应过,响
应位置一
INCHour;小时加一
MOVA,HourJ
CJNEA,#24,D0;判断是否加到
24小时
MOVHour,#0;加
到24小时,清零小时单元
DO:RET
DYO:JNBHourKey,DDO;判断小时
调整按键是否按下
CLRbDDO;没有按
下,清零抖动标志位
CLRbXYO;没有按
下,清零响应标志位
RET;返
回
DDO:SETBbDDO;小时调整键按
下,抖动标志位置一
RET
*星期调整子程序
TWeek:MOVA,ChangeBuf
CJNEA,#1,D2
JNBbDD2,DY2;判断星期
抖动键
JBWeekKey,DY2;判
断星期调整键是否按下
JBbXY2,D2;判
断星期调整键是否响应过
SETBbXY2;没有响应过,置
一响应标志位
INCWeek;星期加一
MOVA,Week
CJNEA,#8,D2;判断是否
达到最大星期值
MOVWeek,#1;达
到最大星期值,星期1
D2:RET
DY2:JNBWeekKey,DD2;判
断星期调整键是否按下
CLRbDD2;没有按
下,清0抖动标志位
CLRbXY2;没有按
下,清零响应标志位
RET
DD2:SETBbDD2;按下,抖动标志
位置一
RET;返
回
;*********曰调整子程序
TDay:MOVA,ChangeBuf
CJNEA,#1,D3
JNBbDD3,DY3;判断日数
抖动标志
JBDayKey,DY3;判断日调
整键是否按下
JBbXY3,D3;判
断日调整键是否响应过
SETBbXY3;没有响应过,日
响应位置一
INCDay;S
数加一
MOVA,DayJ
CJNEA,DayBuf,D3;判断是否到了当
月最大日数
MOVDay,#1倒
了当月最大日数,,将日数设为1
D3:RET
DY3:JNBDayKey,DD3;判断日调
整键是否按下
CLRbDD3;没有按
下,清。抖动标志位
CLRbXY3;没有按
下,清零响应标志位
RET
DD3:SETBbDD3;按下,抖动标志
位置一
RET;返
回
;*********月调整子程序
***********************************************
TMoon:MOVA,ChangeBuf
CJNEA,#1,D4
JNBbDD4,DY4;判断月份
抖动标志位
JBMoonKey,DY4;判
断月份调整键是否按下
JBbXY4,D4;判
断月份调整键是否响应过
SETBbXY4;没有响应过,月
份响应位置一
INCMoon;月份加一
MOVA,Moon
CJNEA,#13,D4;判断是否超过最
大月份
MOVMoon,#1;超
过最大月份,将月份设为1月
D4:RET
DY4:JNBMoonKey,DD4;判
断月份调整键是否按下
CLRbDD4;没有按
下,清。抖动标志位
CLRbXY4;没有按
下,清零响应标志位
RET
DD4:SETBbDD4;按下,抖动标志
位置一
RET
;*********年调整子程序
:**********************************
TYear:MOVA,ChangeBuf
CJNEA,#1,D5
JNBbDD5,DY5;判断年抖
动标志位
JBYearKey,DY5;判断年调
整键是否按下
JBbXY5,D5;判
断年调整键是否响应
SETBbXY5;没有响应,年响
应位置一
INCYear_l年加一
MOVA,YearJ
CJNEA,#100,D5;判断是否加到一
百年
MOVYear_l,#0;加到一百
年,将年数清零
D5:RET
DY5:JNBYearKey,DD5;判断年调
整键是否按下
CLRbDD5;没有按
下,清。抖动标志位
CLRbXY5;没有按
下,清零响应标志位
RET
DD5:SETBbDD5;按下,抖动标志
位置一
RET
;***********定时器TO中断程序
:***************************************************
输入:无
;输出:无
;实现功能:时、分、秒、年、月、日、星期的自动累加
TO_Ser:
;PUSHACC
;PUSHPSW
MOVTH0,#3CH;定时器初值初始化
MOVTL0,#0B0H
DJNZ60H,LOOP;满足一秒时间往下执行,否则
跳出中断
MOV60H,#20
INCSec;达到一
秒,秒加一
MOVA,Sec
CJNEA,#60,LOOP;判断是否到了60秒
MOVSec,#0;满了60
秒,秒清零
INCMin;达到一分钟,
分加一
MOVA,Min
CJNEA,#60,LOOP;判断是否到了60分
MOVMin,#0;满了60
分,分清零
INCHour;达到一小时,小
时加一
MOVA,Hour
CJNEA,#24,LOOP;判断是否到了24小时
MOVHour,#0;满了24
小时,小时清零
INCWeek;达到一天,周期
加一
INCDay
MOVA,Week
CJNEA,#08,LOOP1;判断是否到了星
期天
MOVWeek,#01;满了七天,星期
清零
LOOP1:MOVA,Day
CJNEA,DayBuf,LOOP;判断是否到达当月最大
日数
MOVDay,#0;达到最大
日数,日数清零
INCMoon;日数已满,月份
加一
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,闪烁标志位定时取反
T1Ser:
;PUSHACC
;PUSHPSW
MOVTH1,#3CH
MOVTL1,#0B0H
DJNZ61H.OT
MOV61H,#20
CPLbHicker
epibff
;POPPSW
;POPACC
OT:RETI
;**************平年闰年判断子程序
***********************************
;输入:YearJ和Year_h,
;输出:DayBuf(二月份的天数)
;确定当年二月份的天数
YearJud:MOVA,YearJ;将年份(低位)送到
A,判断是否为世纪年
CJNEA,#0,L1;不是世纪年,
则跳到L1
MOVA,Year_h;是世纪年,判
断世纪(年份高位)能否被4整除
MOVB,#4;
DIVABJ
MOVA,BJ
CJNEA,#O,Same_Year;不能整除,跳到
Same_Year,该年为平年
AJMPLeap_Year;能整除,跳到
Leap_Year,该年为闰年
L1:MOVB,#4;不是世
纪年,则判断年份是否能被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当月日数
;实现功能:判断当月大小,确定当月的天数
MoonJud:MOVA,Moon
CJNEA,#2,W;判断是否为二
月,不是则判断其他月份
CALLYearJud;二月份,
调用平年闰年判断子程序
AJMPV5;返回
W:CJNEA,#4,V1;不是4月
则跳到V1
AJMPVO
V1:CJNEA,#6,V2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 购车设备招标详情
- 购销合同带动乡村振兴
- 购销合同百货连锁
- 购销合同管材的环保政策与合规要求
- 足球场建设广告合作招标
- 足球场建设运营管理招标
- 软件开发与外包合同模板
- 轻松提高小学生阅读技能
- 运营商技术服务转让合同
- 透水混凝土施工材料配送风险管理
- 房屋建筑加固改造工程施工重点及难点分析与对策
- (高清版)JTGT 3360-01-2018 公路桥梁抗风设计规范
- 医疗和疾控机构后勤安全生产工作管理指南(2023版)-医用气体安全管理指南
- 《临床医学概论》题库与答案
- 公安职业生涯规划
- 走进民航智慧树知到期末考试答案章节答案2024年中国民航大学
- 2024学习解读新修订《公司法》课件
- 土默特右旗曼巧沟矿业有限责任公司曼巧沟煤矿2024 年度矿山地质环境治理与土地复垦计划书
- 舌尖上的历史与文化智慧树知到期末考试答案2024年
- 第18课+北洋军阀的统治【中职专用】《中国历史》(高教版2023基础模块)
- 银行应急预案演练方案总结报告
评论
0/150
提交评论