43单片机课程设计实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计实验报告
题目:数字电子钟
小组成员及分工:
B00020433 管荣黎主程序设计
B00020434 张健初始化设计、课题报告
B00020436 吕鹏硬件设计、GAL编程
一、开题报告
数字电子钟
基本要求:
1 用8位显示器动态显示年、月、日或时、分、秒。

显示误差小于每分钟一秒。

2 可用按键任意设定时间和日期。

3 显示状态稳定,清晰,在按键时不应中断显示。

4 定时闹钟功能
发挥部分:
5 设计秒表功能,精度为0.01秒。

6 可同时记录和存储10个秒表数据。

(连续记录并显示已存储记录数)
7 秒表记录数据查询和清除功能。

8 声音提示功能
动态显示格式:循环刷新
系统采用8051、8255芯片、8个LED显示器、GAL16V8地址分配器、
4×4键盘、闹铃电路。

使用8051内部T0计时器产生5ms定时中断,并在中断服务程序中生成秒计时,得到模拟时钟信号,通过驱动LED显示出来。

时钟调整方面,通过键盘扫描判断是否按键并修改时钟。

闹铃方面,通过比较闹铃定时与当前时间是否一致,决定输出闹铃信号。

二、系统原理图
三、源程序
已存入软盘,随报告一起交上来
四、操作使用说明文件
4个按键:
k1: 功能选择/时间调整
k2: 日期显示/调整
k3: 闹铃显示/调整
k4: 闹铃开关
开机后初始化为时间显示,按下k2可显示日期,按下k3显示闹铃,在任意状态下按下k1可进行当前显示调整。

调整时,k2用于选择调整位置,k3用于正调整。

在闹铃显示下,按下k4可开关闹铃。

五、文件清单
GAL原程序gal.pld
汇编语言原程序clock.asm
六、设计报告
选题思想
本次实验我们组被分配做MCS-51单片机综合实验,共可以选做十个实验课题。

我们曾做过作息时间闹铃系统,用到了较多的LED显示技术和时钟计数技术,鉴于此,我们组决定做“数字电子钟”这个课题!相信以前的实验经验能够得到较大的帮助。

对选题的理解
基本要求:
1. 用8位显示器动态显示年、月、日或时、分、秒。

显示误差小于每分钟一秒。

2. 可用按键任意设定时间和日期。

3. 显示状态稳定,清晰,在按键时不应中断显示。

4. 定时闹钟功能
发挥部分:
5. 设计秒表功能,精度为0.01秒。

6. 可同时记录和存储10个秒表数据。

(连续记录并显示已存储记录数)
7. 秒表记录数据查询和清除功能。

8. 声音提示功能
动态显示格式:循环刷新
实现的方案
1.设计实时时钟
实时时钟是用单片机来模拟时钟,由定时器/计数器产生一个5ms的时基信号,每隔5ms定时器/计数器向CPU发出一次中断请求,CPU响应中断后转入中断服务程序。

中断服务程序以5ms对实时时钟进行计数。

每产生一次中断,5ms 时基计数单元的内容加1,当5ms单元的内容等于200时,便产生1s的定时,使秒计数单元的内容加1,并将5ms单元请0。

时间溢出调整子程序当秒计数单元计满60后,向分计数单元进位,使分计数单元的内容加1,并将秒单元清0;当分计数单元计满60后,向时计数单元进位,使时计数单元的内容加1,并将分单元清0;时计数单元计满24后清0并向天计数单元进位。

然后由日期溢出调整子程序根据当前月份判断何时向月计数单元进位,同时完成计满12月后向年计数单元进位。

2.外部设备
单片机外接LED数码显示器和键盘。

显示器用于显示秒、分、时计数单元中的秒、分、时值,以及年、月、日计时单元中的年月日值。

由显示子程序把秒、分、时计数单元的内容取出送入显示缓冲区,然后由显示驱动子程序进行输出显示。

现行的标准时间借助键盘输入到秒、分、时计数单元中,作为计数的初始值。

启动时钟程序后,定时时钟便开始运行,并像电子钟一样显示出标准时间。

3.程序流程图
4.子程序名称及功能
WRDATA—数据写入子程序
将数据区的相应(时间/日期/闹铃)数据写入显存中DISPLAY—显示子程序
将显存中的数据查表得字型码后循环显示在LED显示器上DELAY—延迟子程序
延迟一定的时间
SCANKEY—键盘扫描子程序
用于判断是否有按键,以及按下何键
CTIME—时间溢出调整子程序
判断时间数据区内各单元计数是否溢出,若溢出进位后将相应计数单元清零。

CDDA TE—日期溢出调整子程序
判断日期数据区内各单元计数是否益处,若溢出进位后将相应计数单元清零。

MTIME—时间调整子程序
根据按键操作修改时间数据区的相应内容。

MDA TE—日期调整子程序
根据按键操作修改日期数据区的相应内容。

MALARM—闹铃调整子程序
根据按键操作修改闹铃数据区的相应内容。

5.系统内存区分配
本系统占用了8051芯片的内部数据单元30H—4FH。

其中30H—43H为系统数据区,由中断服务子程序,时间、日期、闹铃调整子程序进行修改,其它程序无权更改。

具体分配如下表:
完成的功能
由于本次实验安排的时间较少,我们组完成了四项实验基本要求:用8位显示器动态显示时、分、秒,显示误差小于每分钟一秒;可用按键任意设定时间和日期;显示状态稳定,清晰,在按键时不应中断显示;定时闹钟功能。

对于发挥部分,有待于以后的研究和开发。

本次实验的特色部分就是我们组将按键数目压缩到最少,使用四键组合完成时间/日期/闹铃的调整和显示切换功能。

不足之处在于系统的结构不够清晰,按键功能部分过于复杂。

测试和分析
在测试过程中,我们遇到以下一些问题:
1.按键消抖动一开始时,当按下按键,数字不停走动。

于是,我们将按键改为
每按下一次,数字调整一位,彻底解决抖动问题。

2.闹铃持续不停经检查,发现闹铃延时计数器未能清零,导致关闹铃程序无法
执行。

通过修改闹铃延迟语句,在正确的地方及时清零,解决了问题。

3.按键状态转移由于我们采用了4个按键组合完成调整时间、日期、闹铃的功
能,所以在按键的状态转移过程中的汇编语言编程较为复杂,逻辑错误和疏忽很多,调试过程耗费了很多精力,不过经我们全体组员的认真测试,最终完成了正确的按键状态转移,取得了成功。

体会和建议
经过了为期九天的实验,我们组成功地完成了本次实验。

在设计和测试过程中,虽然遇到了许多困难,但我们通过共同的努力克服了各种困难,从中不仅得到了许多技术方面的知识和实践经验,也学会了如何协同合作。

本次课程设计,对我们将来做毕业设计,甚至是走上工作岗位都有很大的帮助。

我们也会在以后的学习工作中更加努力。

第四十三实验小组
B00020433 管荣黎
B00020434 张健
B00020436 吕鹏
2004/01/07。

相关文档
最新文档