电子钟课程设计
- 格式:doc
- 大小:202.00 KB
- 文档页数:8
湖南科技大学
潇湘学院
《课程设计报告》
题目:电子钟
专业:电子信息工程
班级:电子002班
姓名:付亚欢
学号:0854030212
任务书
一、目的和要求。
《DSP原理及应用课程设计》是配合DSP原理及应用理论教学,为通信工程和电子信息工程专业开设的专业技术技能设计,课程设计对通信工程和电子信息工程专业的学生是一个非常重要的实践教学环节。通过课程设计,使学生综合运用DSP技术课程和其他有关先修课程的理论和生产实际知识去分析和解决具体问题的能力得到提高,并使其所学知识得到进一步巩固、深化和发展。通过课程设计初步培养学生对工程设计的独立工作能力,学习设计的一般方法。通过课程设计树立正确的设计思想,提高学生分析问题、解决问题的能力。通过课程设计训练学生的设计基本技能,如计算、绘图、查阅设计资料和手册,熟悉标准与规范等。
(1)按时参加课程设计指导,定期汇报课程设计进展情况。
(2)广泛收集相关技术资料。
(3)独立思考,刻苦钻研,严禁抄袭。
(4)按时完成课程设计任务,认真、正确地书写课程设计报告。
(5)培养实事求是、严谨的工作态度和认真的工作作风。
二、方案的论证。
1、数字时钟方案
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉线等突发情况下仍能正常工作,芯片内部包含锂电池。
方案二:本方案完全用软件实现数字时钟。原理为:在DSP芯片内部存储设三个字节分别存放时钟的时,分,秒信息。利用定时器与软件结合实现1秒的时间中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将其相应的分值加1;同理若分值达到60,则清零并时值加1,当时值达到24时,则将其清零。该方案具有硬件电路简单的特点,而且由于是软件实现,当DSP芯片不上电时,程序不执行时,时钟不工作。
数字时钟方案论证:基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能,该方案具有硬件电路简单的特点。
2、数码管显示方案
方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二级管恒定的导通或截止。该显示每一位都需要一个8位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需要的I/ O
口太多,造成了资源的浪费。
方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也与点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节约了I/O口,降低了能耗。
数码管显示方案论证:从节省I/O口和降低能耗出发,本设计采用方案二。
三、调试过程及结果分析。
1、连接设备。
2、开启设备:打开计算机电源;打开试验箱电源开关;通过USB将电脑与实验性连接起来。
3、打开CCS2000,通过CCS2000将电脑与仿真器连接起来。CCS不能提示有错误,否则将不能正确连接,必须重新连接。
4、打开自己编写的工程文件,通过编译生成.out输出文件,然后通过CCS软件下载到DSP 芯片中。
5、运行程序,观察是否正常运行,电子钟是否正常显示。没有正常先死,重新编写电子钟的运行程序,然后重新编译,返回第四部操作。
结果分析:实验最后能显示时钟,分钟,秒钟。中间用横杆隔开。电子钟可以正常的运行,只要调节程序中的时间中断延迟,就能改变电子钟的时间间隔。
四、设计及调试中的体会。
1、硬件设计
利用TMS320C2407 DSP芯片制作简易电子时钟,由8个LED数码管,数码管驱动74HC573在完成。
2、软件设计(1)、程序流程图
(2)、实验程序
void InitDSP()//DSP时钟中断初始化
{
asm(" SETC INTM"); /// Disable all interrupt asm(" CLRC SXM"); //
asm(" CLRC OVM"); ///-----
asm(" CLRC CNF"); ///B0---data
SCSR1 =0x0E00; // 1*fin disable all clock
SCSR2 =0x000E; //disable rom;/mc;don=1,pon=0 WDCR =0x0E8;
WSGR =0x0FFF;
}
void delay(u32 k);
{
u32 i; for(i=0;i } char led [10] = {0x77,0x14,0xb3,0xb6,0xd4,0xe6,0xe7,0x34,0xf7,0xf6}; void main(void) { asm(" SETC INTM"); InitDSP(); LED1=0x77; LED2=0x77; LED3=0x80; LED4=0x77; LED5=0x77; LED6=0x80; LED7=0x77; LED8=0x77; int h=0,m=0,s; while(1) { for (s=0;s<60;s++) { LED7=led[s/10]; LED8=led[s%10]; delay (65535); } LED5=led[m%10]; LED4=led[m/10]; LED2=led[h%10]; LED1=led[h/10]; m++; if(m==60) { m=0; h++; if(h==24)