1、微机课程设计报告数字时钟系统与自动报时系统设计课程名称微机系统课程设计成绩课 题数字时钟系统与自动报时系统设计评语: 指导教师: 年 月 日班 级: 13030 学 号: 1303 姓 名: # 地 点: B-312 批 次: 第一批 时 间: 2016年3月 微机系统课程设计 数字时钟系统与自动报时系统设计 时间:2016年3月1. 课设题目及成员分工 课设题目:数字时钟与自动报时系统 小组成员介绍及分工学号姓名 任务分工组长1410030总体设计,硬件电路的测试、连接、调试组员130088参与设计,软件编程1303014参与设计,软件测试,调整130305参与设计,资料查找,报告书写2.
2、课设内容及要求 课程设计目的:1、了解以微机为核心的总线方式访问总线设备的原理,提高接口扩展硬件电路的连接能力;2、你阿姐数字时钟和语音报时的工作原理,提高应用系统的设计和调试的综合能力;3、加深对定时器/计数器、并行接口芯片和语音芯片的硬件电路和软件编程的工作方式和编程方法的理解。 课程设计内容:1、设计数字时钟,能够动态时间显示,整点语音报时;2、利用定时器产生精确的时钟源, 通过中断或者查询的方式将时钟源数值传送到微机控制台;3、微机控制台在进行数据的处理后,控制并行接口芯片进行 DLED 的动态扫描,正确的显示时钟;4、当系统运行后,数码管显示时分秒,每到整点,喇叭播放报时音。 系统功
3、能和设计要求1、基本功能要求:a.系统显示界面:1. 在 DLED 数码管上进行实时刷新显示;2. 使用 8255 扫描数码管,显示时分秒,小时和分钟分别为两位显示,秒使用 LED3的 DP 显示, 亮, 灭。b.自动报时要求:1. 通过编程实现语音录制,播放,可以随时修改报时音内容;2. 报时音以 12 时制录制,12 个报时音以连续地址存放在 ISD1420 芯片内,录音顺序如表 所示:表 录音顺序表地址报音时地址报音时00十二点整06六点整01一点整07七点整02二点整08八点整03三点整09九点整04四点整10十点整05五点整11十一点整2、发挥部分:1.增加“语音提醒”功能,自行设计
4、提醒时间和播放的录音内容。打开“语音提醒”功能后,数字钟运行到设定的时刻,喇叭发声提醒事先录制的语音;2. 增加“秒表计时”功能,启动该功能后可在 DLED 上进行 秒计时;3. 增加“时区转换”功能,根据设定的时区表随时转换相应时区的时刻。 3. 课设实现方案 总体设计思路1、数字时钟部分:1.利用 CLOCK 分频器提供的信号作为可编程定时器 8254 的时钟源,通过 8254 进行 16分频,产生 秒的精确时钟;2.监控时钟通过查询获取时钟,根据时钟计算出时分秒,然后驱动 4 位数码管实时显示出时间;3.基本 I/O 驱动器 74LS244 作为可编程定时器 8254 的时钟监控端口。2
5、、自动报时部分:1.通过调用电脑系统的蜂鸣器函数beep()实现报时2.系统可以通过可编程并行接口 8255 的PA 口和 PB 口控制时间显示数码管的段和位 硬件设计方案1、总体布局:该系统主要使用的 QTH-2008PCI 实验箱和个人 PC 机,涉及到的芯片有通用可编程并行接口 8255、可编程定时器 8254、驱动器 74LS244、32Hz 的时钟源 CLOCK等,除此之外,还有 DLED 数码管、按键和一些导线等硬件。其中,数码管 DLED 主要显示时钟的时分秒,语音芯片 ISD1420 主要用于录音。2、硬件连接图:总体硬件连接图如图 所示: 图3、详细设计:如图所示, 该系统可
6、分为两大部分, 通用可编程并行接口8255部分和可编程定时器8253部分:8255 部分:a.输入部分:8255 的 8 位数据信号线与总线的数据信号线相连,两个地址 A0、A1分别接总线的 LA0、LA1,RD 和 WR 信号分别接总线的 IORD 和 IOWR 信号, 片选信号 CS2 接总线的地址 0020H。PC 口的 PC4、PC5、PC6、PC7、作为输入分别与按键 KEY4、KEY7、KEY3、KEY4 相连。其中,KEY4 主要用于时钟模式下分钟的减,KEY7 主要用于从时钟模式切换到特殊功能状态,KEY2 主要用于秒表的启动和暂停,KEY3 主要用于秒表的退出。b.输出部分:
7、8255 的 PA 口 8 条信号线作为输出与数码管的段相连,PB 口的低四位作为输出与数码管部分的四位相连,PC 口的 PC0、PC1、PC2 作为输出分别于语音芯片 ISD1420 的 REC、PLAYE、PLAYL 相连。8254 部分:c. 输入部分:8254 的 8 位数据信号线与总线的数据信号线相连,两个地址 A0、A1分别接总线的 LA0、LA1,RD 和 WR 信号分别接总线的 IORD 和 IOWR 信号, 片选信号 CS1 接总线的地址 0000H。通道 0 中 CLK0 作为输入连接 32Hz 的时钟源CLOCK0,门控位 GET0 连接按键 KEY1;通道 1 中 CL
8、K1 作为输入连接 1024Hz的时钟源 CLOCK1,门控位 GET1 连接按键 KEY8。d. 输出部分:通道 0 中的输出 OUT0 连接驱动器 74LS244 的输入口 A1,通道 1 中的输出 OUT1 连接驱动器 74LS244 的输入口 A2。e.驱动器 74LS244 部分:按键 KEY5 连接驱动器 74LS244 的输入口 A3,输出口 Y1、Y2、Y3 连接总线的数据信号线 LD1、LD2、LD3,片选信号 CS4 连接总线的地址0060H。其中,按键 KEY5 主要用于在时钟状态下调节分钟部分的加。 软件设计方案1、开发环境:对于软件开发环境,我们采用的 PC 机中的
9、VC+ 软件,新建了一个 C+ 的工程,将与总线驱动有关的文件加进去,然后编写自己的程序。2、软件流程图:该系统软件流程图如图 所示:图 程序流程图4. 完成内容及实验结果 本系统实际完成的功能:1、数字时钟显示功能:对程序进行编译,运行后,数码管 DLED 正常显示所设定的时间,小数点作为秒单位以预定的 秒的频率闪烁。四位数码管可正常显示时和分;如果按下按键 KEY7,就会退出时钟模式,进入特殊模式,实现相应的语音提醒功能、秒表定时功能、时区转换功能等。2、自动报时功能:运行程序,选择自动录音功能,每到整点就会自动报时3、语音提醒功能:运行程序,进入特殊模式,选择语音提醒功能,然后数字钟运行
10、到设定的时刻,就会自动蜂鸣4、秒表计时功能:运行程序,进入特殊模式,选择秒表计时功能,按下对应的按键 KEY2,启动秒表定时,在数码管 DLED 上就会显示秒表计时,然后再次按下对于的按键 KEY2,秒表计时就会停止。按下相应的按键 KEY3,就会使秒表计时功能停止,然后退出。5、时区转换功能:在此功能中,我们定义了东 0 区到东 11 区共 12 个区时,对应的城市分别是伦敦、布鲁塞尔、雅典、德黑兰、莫斯科、卡斯兰、阿拉木图、曼谷、北京、首尔、关岛、悉尼、马加达等。运行程序,输入对应的区时数字,就可以实现相应的时区转换功能。 团队实验总结:(共同编写)1、经过本次实验,我们非常清楚的掌握了一
11、个完整系统的设计与实现,更加清晰的体会了要用系统的观点去看待问题,解决问题。2、通过本次实验,我们对硬件系统中一些芯片,如 8255、8254、ISD1420 等,有了一个更好的掌握,更加清楚了它们的用途,并学会了硬件连线和编程使用,感觉收获很大。3、通过本次实验,我们对 VC+ 软件有了一个更加深入的了解,并用它成功的写出了整个系统的程序,运行通过,下载到实验箱中,硬件系统可以按照预先设定的功能进行工作。4、通过本次实验,我们体会到了团队合作的重要性,大家分工协作,相互讨论,互帮互助,最终顺利的完成了本次实验。6. 遇到的问题及解决办法1、软件方面:a. 新建工程时添加文件问题:在新建工程时
12、,我们添加原有的文件出现了问题,我们仔细查找了资料,终于找到了正确的方法,添加文件成功。b.编译过程中存在错误:在编程中,有的变量定义和使用的不合适,导致了最后的编译错误,我们仔细查找原因,最终找到了错误,改正之后运行通过。c.单线程处理时钟进度,在整点响铃时,时钟停止,运用算法进行弥补,也是不足支出。验收后,课下学会了用多线程进行处理。d.在数码显示时未能注意到数码管的刷新频率太低,导致显示有闪烁现象。个人收获、体会和建议: 通过本次微机课程设计,深切了解体会到一个项目或一件产品从设计到完成再到检验的完整过程,从中收获颇大,作为本次课设的组长及硬件设计者,收获亦多,课设活动的整体安排计划分工
13、,的确给组长带来了不少问题,在了解大家的长处之后,方便大家的分工及合作,通过小组人员的共同合作,终于完成了本次课设,作为硬件及总体方案设计者,从刚开始的一头雾水,到老师的指导,组员的帮助解答,终于找到突破口,并从实践中真正理解了8255、8254等器件的功能,编程方法,对系统与外设、总线与接口等方面有了更加清晰的认识,对以后工作与学习提供了巨大的帮助,这是一次非常好的课设,期待有机会可以再尝试,收获更多。8. 附录序:本次实验的主要源程#include #include #include #include #ifdef _DEBUG#define new DEBUG_NEW#undef THI
14、S_FILEstatic char THIS_FILE = _FILE_;#endifCWinApp theApp;using namespace std;void Init8254() ULONG adr8254=0x00; ULONG adr,dat; adr=adr8254+3; CString strHello; cout (LPCTSTR)strHello endl; ULONG adr8254=0x00; ULONG adr8255=0x20; ULONG adrisd=0x40; Init9054(); OpenInt(); Init8254(); 音提醒endl; cout 2.秒表计时endl; cout 3.时区转换endl; cout 4.时钟flag; switch(flag) case 1: Clock(); break; case 2: Second(); break; case 3: shiqubiao(); break; case 4: shizhong(); break; CloseInt(); Cleanup(); return nRetCode;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1