当前位置:文档之家› 可以调控的走马灯设计

可以调控的走马灯设计

单片机技术课程设计说明书可以调控的走马灯设计专业学生姓名班级学号指导教师完成日期2011年 6 月 20 日目录1概述 (2)1.1单片机的发展和现状 (2)2课题方案设计 (3)2.1系统总体设计要求 (3)2.2系统模块结构 (3)3系统硬件设计 (3)3.1总体设计 (3)3.2单片机最小系统 (4)3.3按键电路 (5)3.4数码管显示电路 (5)3.5发光二极管显示电路 (6)4系统软件设计 (6)5软硬件联调及调试结果 (7)5.1软硬件调试中出现的问题及解决措施 (7)5.2实物图 (8)5.3调试结果 (9)5.4各模式灯亮 (9)结束语 (10)参考文献 (11)附录 (12)附录1:基于单片机可以调控的走马灯原理图 (12)附录2;基于单片机可以调控的走马灯PCB图 (13)附录3:基于单片机可以调控的走马灯仿真 (14)附录4:程序代码 (15)附录5:元件清单 (20)1概述1.1单片机的发展和现状单片机是所有微处理机中性价比最高的一种,随着种类的不断全面,功能不断完善,其应用领域也迅速扩大。

单片机在智能仪表、实时控制、机电一体化、办公机械、家用电器等方面都有相当的应用领域。

当前,8位单片机主要用于工业控制,如温度、压力、流量、计量和机械加工的测量和控制场合;高效能的16位单片机(如MCS-96、MK-68200)可用在更复杂的计算机网络。

可以说,微机测控技术的应用已渗透到国民经济的各个部门,微机测控技术的应用是产品提高档次和推陈出新的有效途径。

纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:1.低功耗CMOS化MCS-51系列的80C51推出时的功耗达120mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。

CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,更适合于在要求低功耗像电池供电的应用场合。

所以这种工艺将是今后一段时期单片机发展的主要途径。

2.微型单片化常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。

甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。

3.主流与多品种共存现在虽然单片机的品种繁多,各具特色,但仍以MCS-51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的WinBond系列单片机。

以8031为核心的单片机占据了半壁江山,在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。

2课题方案设计2.1系统总体设计要求1、根据选题查找相关资料;2、确定方案后,画出电路原理图;3、根据设计要求,编写好软件程序(利用Keil软件开发)4、根据电路原理图,在Proteus软件里画好仿真原理图,并将Keil软件开发的可执行文件加载到Proteus软件的仿真芯片中(即单片机芯片中);5、在仿真没有问题的前提下,依据方案,确定选用器件;6、焊接、烧录、调试;7、完成课程设计说明书2.2系统模块结构多功能走马灯设计使用AT98C51芯片,显示效果使用16个LED,设置三个按键,K1-模式键,通过按键调整显示结果,要求有8种模式;K2-加速键,提高走马灯显示效果的速度;K3-减速键,放慢走马灯的显示效果速度;且8种模式通过一个共阴型数码管显示出来,P0和P1引脚控制着16个LED的显示,P2.0、P2.1和P2.2引脚是相应的键控模式,而P3引脚则控制着数码管的显示,通过键控来实现单片机的相关中断,通过计数器/定时器T1设计相关中断来执行K1-模式键要求的功能,利用延时程序和中断程序来执行所要求的相应功能。

3系统硬件设计3.1总体设计1、显示效果使用16个LED;2、设置三个按键,K1-模式键,通过按键调整显示结果,要求有8种模式K2加速键,提高走马灯显示效果的速度;K3-减速键,放慢走马灯的显示效果速度;3、8种模式通过一个共阳型数码管显示出来,比如,走马灯的显示效果为模式一时,数码管显示数字“1”。

4、系统总体设计图如下:图3.1系统总设计图3.2单片机最小系统(1)时钟电路单片机执行指令是在脉冲控制下进行的,因此时钟信号是单片机的基本工作条件。

时钟可以由内部和外部两种方式产生,本设计采用内部方式。

如图所示,在XTAL1和XTAL2引脚上外接定时元件。

定时元件通常采用振荡器和电容组成的并联谐振电路。

X1为振荡器,C1、C2为电容。

振荡的主要频率决定于晶振,电容对振荡频率起微调作用。

其中,晶振选择11.0596MHz。

晶振接在18到19两管脚之间。

(2)复位电路一个时钟周期为振荡周期的2倍,12个时钟周期构成一个机器周期。

在RES引脚上输入一个超过两个机器周期的高电平信号,单片机就可以复位。

时钟频率为12MHz,则有效的复位信号至少应保持2us以上。

下图为单片机的复位电路。

RST复位是9脚,在9脚和31(EA)脚之间接一个复位按钮。

图3.2最小系统图3.3按键电路系统按键电路如下图所示:图3.3按键电路图图中K1接P2.0,K1是模式按钮共有8种模式;K2接P2.1,是用来进行加速的;K3接P2.2,是用来减速的。

3.4数码管显示电路数码显示器件是一种八个LED发光二极管组合显示字符的显示器件,其中七个用于显示字符,一个用于显示小数点,故通常称为七段LED数码显示器。

本电路中共阳极接法,把七段发光二极管的阳极连在一起构成公共阳极,使用时阳极接+5V电源,每个发光二极管的阴极通过电阻与输入端连接,阴极输入低电平时,发光二极管,输入高电平则不亮,连接方法如图;图3.4数码管显示电路图数码管通过排阻RN1接到P3口。

3.5发光二极管显示电路16个发光二极管显示电路如下图所示:图3.5发光二极管显示电路图图中D1,D2,D3,D4到D8分别接的是P1.0,P1.1,到P1.7;D9,D10到D16分别接的是P0.0到P0.7。

4系统软件设计软件程序设计主要由开始、初始化、主程序、以及延时程序等组成。

其程序流程如下图4.1所示:图中K1键用来选择模式的,初始时运行模式0,按一次运行模式1,以此类推按7次则云行模式7,当再一次按下时又运行模式0。

K2键用来加速按的次数越多则速度越快。

K3用来减速同K2按的越多则越慢。

速度的选择可见附录4程序中的调速表,程序通过不同的顺序来改变速度。

图中数码管的数字显示是根据K1的模式选择的,初始时数码管显示0,程序运行模式0,同理当运行模式7时,则数码管显示7。

图4.1程序流程图5软硬件联调及调试结果5.1软硬件调试中出现的问题及解决措施在画PCB 图时发现P3口的排阻RN1只能连接一边,数码管连接不上,后来发现排阻只有输入没有输出所以不行。

原有的电路图如下图5.1所示;修改过的电路图如图5.2所示;图5.1 开始初始化 运行模式0K1按键 K2按键 K3按键模式的选择 加速 减速数码管显示图5.2 5.2实物图(1)正面图(2)反面图5.3调试结果图中为模式2显示。

5.4各模式灯亮1、模式0:灯由左向右一个一个顺序熄灭(第一个熄灭后第二个熄灭时第一个又亮)。

2、模式1:灯由右向左一个一个顺序熄灭(同上)。

3、模式2:四个灯由右向左又由左向右顺序熄灭。

4、模式3:四个灯由右向左又由左向右循环点亮。

5、模式4:六个灯由右向左又由左向右循环熄灭。

6、模式5:一个灯由右向左又由左向右顺序熄灭。

7、模式6:一个灯由右向左又由左向右顺序点亮。

8、模式7:一个灯由右向左又由左向右依次点亮。

结束语我是工学专业的学生,设计是我们将来必需的技能,这次课程设计恰恰给我们提供了一个应用自己所学知识的机会,从到图书馆查找资料到对电路的设计以及程序的编写,对电路的仿真再到最后电路的成型,都对我所学的知识进行了检验。

我深刻的体会到在设计过程中,需要反复实践,其过程很可能相当烦琐,有时花很长时间设计出来的电路还是需要重做,那时心中未免有点灰心,有时还特别想放弃,此时更加需要静下心,查找原因。

总体来说,这次实习我受益匪浅。

在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。

在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。

在这里,我也非常感谢各位老师的耐心辅导以及同学们的热心帮助。

我忠心的感谢各位老师,你们辛苦了!希望在今后的学习过程中,老师能够多加引领我们走向更尖端的科技和更复杂高深的领域,加强专业技术的培训和更多的开展科研创新研究。

通过实践引导我们在理论指导下有所创新,为日后工程实践奠定基础。

参考文献[1] 吴微,文军等.单片机原理及制作[M].武汉:武汉大学出版社,2003[2] 王宏民.LED显示屏的驱动方案[M].哈尔滨:黑龙江电子技术出版社,1999[3] 李华.MCS—51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993[4] 陈元灯、陈宇.LED制造技术与应用[M].北京:电子工业出版社,2009[5] 余锡存,曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000[6] 沈国琴. 51单片机C语言开发与实例[M].北京:人民邮电出版社,2008[7] 徐泳龙.单片机原理及应用[M].北京:机械工业出版社,2004[8] 周航慈.单片机应用程序设计[M].北京:北京航空航天大学出版社,1991[9] 陈汝全.实用微机与单片机控制技术[M].成都:电子科技大学出版社,1995[10] 宋贤法. Altium Designer6. x 入门与实用[M].北京:机械工业出版社,2009[11] 刘修文.实用电子电路设计制作300例[M].北京:中国电力出版社,2004[12] 诸昌矜.LED显示屏系统原理及工程技术[M].西安:电子科技大学出版社,2000[13] 游华.大屏幕图文动画显示屏系统[M].电子技术应用,1994附录附录1:基于单片机可以调控的走马灯原理图附录2;基于单片机可以调控的走马灯PCB图附录3:基于单片机可以调控的走马灯仿真附录4:程序代码#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar ModeNo; //模式编号uint Speed;uchar tCount = 0;uchar Idx; //速度取值索引uchar mb_Count = 0; //移动位数bit Dirtect = 1; //滚动方向//断码表Uchar code DSY_CODE[]= = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //调速表uint code sTable[] = {0,1,3,5,7,9,15,30,50,100,200,230,280,300,350};//延时void Delay(uint x){uchar i;while(x--)for(i=0;i<120;i++);}//检测按键uchar GetKey(){uchar K;if(P2 == 0xFF) return 0;Delay(10);switch(P2){case 0xFE:K = 1;break;case 0xFD:K = 2;break;case 0xFB:K = 3;break;default: K=0;}while (P2 != 0xFF);//等待释放按键return K;}////16只LED显示//void Led_Demo(uint Led16){P1 = (uchar)(Led16 & 0x00FF);//显示低8位P0 = (uchar)(Led16 >> 8);}////定时器2//void T0_INT() interrupt 1{if( ++tCount < Speed) return;tCount=0;switch (ModeNo){case 0: Led_Demo(0x0001 << mb_Count);break;case 1: Led_Demo(0x8000 >> mb_Count);break;case 2: if(Dirtect) Led_Demo(0x000F << mb_Count);else Led_Demo(0xF000 >> mb_Count);if(mb_Count == 15) Dirtect= !Dirtect;break;case 3: if(Dirtect) Led_Demo(~(0x000F<<mb_Count));else Led_Demo(~(0xF000>>mb_Count));if(mb_Count == 15) Dirtect= !Dirtect;break;case 4: if(Dirtect) Led_Demo(0x003F<<mb_Count);else Led_Demo(0xFC00>>mb_Count);if(mb_Count == 15) Dirtect= !Dirtect;break;case 5: if(Dirtect) Led_Demo(0x0001 << mb_Count);else Led_Demo(0x8000 >> mb_Count);if(mb_Count == 15) Dirtect= !Dirtect;break;case 6: if(Dirtect) Led_Demo(~(0x0001<<mb_Count));else Led_Demo(~(0x8000>>mb_Count));if(mb_Count == 15) Dirtect= !Dirtect;break;case 7: if(Dirtect) Led_Demo(0xFFFE << mb_Count);else Led_Demo(0x7FFF >> mb_Count);if(mb_Count == 15) Dirtect = !Dirtect;break;}mb_Count = (mb_Count + 1) % 16;}////键盘按键处理//void KeyProcess(uchar Key){switch (Key){case 1://重设模式Dirtect = 1;mb_Count = 0;ModeNo = (ModeNo + 1) % 8;P3 = DSY_CODE[ModeNo];break;case 2://加速if(Idx > 1) Speed = sTable[--Idx]; break;case 3://减速if(Idx < 15) Speed = sTable[++Idx];}}//主程序//void main(){uchar Key;P0 = P1 = P2 = P3 = 0xFF;ModeNo = 0; Idx = 4;Speed = sTable[Idx];P3 = DSY_CODE[ModeNo];IE = 0X82;TMOD = 0X00;TR0 = 1;while(1){Key = GetKey();if(Key != 0) KeyProcess(Key);}}void KeyProcess(uchar Key){switch (Key){case 1://重设模式Dirtect = 1;mb_Count = 0;ModeNo = (ModeNo + 1) % 8;P3 = DSY_CODE[ModeNo];break;case 2://加速if(Idx > 1) Speed = sTable[--Idx]; break;case 3://减速if(Idx < 15) Speed = sTable[++Idx];}}//主程序//void main(){uchar Key;P0 = P1 = P2 = P3 = 0xFF;ModeNo = 0; Idx = 4;Speed = sTable[Idx];P3 = DSY_CODE[ModeNo];IE = 0X82;TMOD = 0X00;TR0 = 1;while(1){Key = GetKey();if(Key != 0) KeyProcess(Key);}}盐城工学院课程设计说明书(2011)附录5:元件清单20。

相关主题