
(2009 —2010 年度 第二学期)
题 目: 多功能走马灯设计
院 系: 电子信息学院
姓 名:
学 号:
专 业: 电子信息工程
指导老师:
2010 年 6 月 18 日
一、设计任务及要求
设计任务:设计一个具有多种显示结果的跑马灯。
要 求:
1、显示效果使用16个LED;
2、设置三个按键,K1-模式键,通过按键调整显示结果,要求有8种模式;K2-加速键,提高走马灯显示效果的速度;K3-减速键,放慢走马灯的显示效果速度;
3、8种模式通过一个共阴型数码管显示出来,比如,走马灯的显示效果为模式一时,数码管显示数字“1”。
| 年 月 日 |
| 二、成 绩
年 月 日 |
1设计要求…………………………………………………………………………
2设计的作用、目的………………………………………………………………
3设计的具体实现………………………………………………………………….
3.1系统概述…………………………………………………………………….
3.2 单元电路设计与分析………………………………………………………
3.3电路的安装与调试…………………………………………………………
4 心得体会及建议…………………………………………………………………
4.1 心得体会……………………………………………………………………
4.2 建议…………………………………………………………………………
5 附录………………………………………………………………………………
6参考文献…………………………………………………………………………
多功能走马灯设计报告
1 设计要求
1、显示效果使用16个LED;
2、设置三个按键,K1-模式键,通过按键调整显示结果,要求有8种模式;K2-加速键,提高走马灯显示效果的速度;K3-减速键,放慢走马灯的显示效果速度;
3、8种模式通过一个共阴型数码管显示出来,比如,走马灯的显示效果为模式一时,数码管显示数字“1”。
2 设计的作用、目的
1、通过本课程设计掌握单片机系统设计思想和基本步骤
2、掌握LED驱动电路、延时程序的设计
3、熟悉Keil、PROTEUS等相关软件的使用
3设计的具体实现
3.1系统概述
通过模式键来改变单片机的工作模式,进行程序控制,一共有八个模式。LED等工作在不同的模式下,有不同的现象。加速减速开关来控制灯泡的闪亮快慢。复位电路用来初始化芯片的工作状态。
控制电路是整个电路的核心,主要由单片机来完成。 ATS51的管脚如图所示。
单片机执行指令是在时钟脉冲控制下进行的。因此单片机必须外接振荡器构成时钟电路才能正常工作。另外,还应在 单片机的RES端外接电阻电容构成复位电路,当单片机运行错误时可以给一个复位信号使其复位。
单片机对接口电路的控制是由软件向单片机的I/O口来 实现的。ATS51单片机内部有两个定时/计数器,可以用其中一个定时/计数器来对时间进行计数,而另一个可以对显示器的显示延时进行定时并通过中断把相应的数据通过I/O口送给显示器显示。同时通过对外部按键的状态判断来进行时间的调整。
3.2 单元电路设计与分析
1、时钟电路
单片机执行指令是在脉冲控制下进行的,因此时钟信号是单片机的基本工作条件。时钟可以由内部和外部两种方式产生,本设计采用内部方式。如图所示,在XTAL1和XTAL2引脚上外接定时元件。定时元件通常采用振荡器和电容组成的并联谐振电路。X1为振荡器,C1、C2为电容。振荡的主要频率决定于晶振,电容对振荡频率起微调作用。其中,晶振选择12MHz
2、复位电路
一个时钟周期为振荡周期的2倍,12个时钟周期构成一个机器周期。在RES引脚上输入一个超过两个机器周期的高电平信号,单片机就可以复位。时钟频率为12MHz,则有效的复位信号至少应保持2us以上。下图为单片机的复位电路
3.C语言编程如下:
#include #define uchar unsiged char char k=0;unsigned int i,t=45000,j;sbit p3_0=P3^0; code char tab[9]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; int0()interrupt 0 { while(1){ k++; if(k<9) P1=tab[k]; else { k=0;P1=0x3f;} if(k==0) {P0=0xff;P2=0xff;} if(k==1){P0=0xfc;P2=0xff;} if(k==2){P0=0xf3;P2=0xff;} if(k==3){P0=0xcf;P2=0xff;} if(k==4){P0=0x3f;P2=0xff;} if(k==5){P0=0xff;P2=0xfc;} if(k==6){P0=0xff;P2=0xf3;} if(k==7){P0=0xff;P2=0xcf;} if(k==8){P0=0xff;P2=0x3f;} }} int1()interrupt 2 {while(1) { for(j=0;j<16;j++) { if(j<=7) { P2=0xff; P0<<=1; if(j!=0){P0=P0|0x01;} for(t=0;t<=20000-1000*j;t++); } if(j>7) {P0=0xff; P2<<=1; if(j!=8){P2=P2|0x01;} for(t=0;t<=20000-1000*j;t++);} } } } main() { EA=1; EX1=1; IT1=1; EX0=1; IT0=1; p3_0=0; if(p3_0==1) { while(1){ { for(j=0;j<16;j++) { if(j<=7) { P2=0xff; P0<<=1; if(j!=0){P0=P0|0x01;} for(t=0;t<=3000+1000*j;t++); } if(j>7) {P0=0xff; P2<<=1; if(j!=8){P2=P2|0x01;} for(t=0;t<=3000+1000*j;t++);} }} } } } 3.3电路的安装与调试 程序调试完成后直接运行,可看到l6只LED灯的走马灯效果。通过这个仿真可以直观地看到按键对程序的控制、走马灯运行的结果,效果非常好。本课程设计中用到了单片机的I/0、定时器中断等硬件功能, 同时涉及到软件查询定时、中断程序、按键控制、数码管动态显示等主要程序的设计方法。程序开始先使P1口为低电平,熄灭各LED,随后系统进入键盘检测循环,当检测到某个键被按下,则转到该键对应的程序处执行。按键处理执行程序各自的功能后,每循环一次后检测S1是否按下,如果按下,各LED熄灭,重新进入检测循环,否则继续循环。电路图如图所示 4 心得体会及建议 4.1 心得体会 我是工学专业的学生,设计是我们将来必需的技能,这次课程设计恰恰给我们提供了一个应用自己所学知识的机会,从到图书馆查找资料到对电路的设计以及程序的编写,对电路的仿真再到最后电路的成型,都对我所学的知识进行了检验。 我深刻的体会到在设计过程中,需要反复实践,其过程很可能相当烦琐,有时花很长时间设计出来的电路还是需要重做,那时心中未免有点灰心,有时还特别想放弃,此时更加需要静下心,查找原因。 总体来说,这次实习我受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。 在这里,我也非常感谢各位老师的耐心辅导以及同学们的热心帮助。我忠心的感谢各位老师,你们辛苦了! 4.2 建议 希望在今后的学习过程中,老师能够多加引领我们走向更尖端的科技和更复杂高深的领域,加强专业技术的培训和更多的开展科研创新研究。通过实践引导我们在理论指导下有所创新,为日后工程实践奠定基础。 5 附录 本次试验所使用的元器件:×1单片机 1个;LED 16个;共阴型数码管 1个;74LS373 1个;电键 4个;导线若干。 6参考文献 【1】肖洪兵. 跟我学用单片机. 北京:北京航空航天大学出版社,2002.8 【2】何立民. 单片机高级教程. 第1版.北京:北京航空航天大学出版社,2001 【3】赵晓安. MCS-51单片机原理及应用. 天津:天津大学出版社,2001.3 【4】李广第. 单片机基础. 第1版.北京:北京航空航天大学出版社,1999 【5】徐惠民、安德宁. 单片微型计算机原理接口与应用. 第1版. 北京:北京邮电大学出版社,1996
