61-单片机课程设计-可以调控的跑马灯

61-单片机课程设计-可以调控的跑马灯

2023年7月14日发(作者:)

摘 要

单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。本课程设计是基于MCS51系列单片机所设计的,用AT89S52芯片控制跑马灯(流水灯),整个系统有8种跑马灯模式可以选择,K1是选择模式键,并将相应的模式在LED七段数码管中显示出来,K2可以对跑马灯的速度进行加速,K3可以对跑马灯的速度进行减速。整个系统可以实现对跑马灯模式的多层控制,还可以进行加减速。

关键词:MCS51、跑马灯、加减速、七段数码管

1

目录

1、引言

1.1、单片机基础知识..............................................................................................................3

1.2、单片机的发展趋势..........................................................................................................3

1.3、本课程设计的目的..........................................................................................................4

1.4、仪器设备..........................................................................................................................4

1.5、课程设计的内容..............................................................................................................4

1.6、本设计的题目与要求......................................................................................................4

2、总体设计....................................................................................................................................4

2.1、框图设计...........................................................................................................................4

2.2、电路原理图.......................................................................................................................5

2.3、系统材料清单...................................................................................................................5

2.3.1、AT89C51芯片.......................................................................................................5

2.3.2、共阳极七段数码显示管........................................................................................6

2.3.3、发光二极管............................................................................................................8

2.3.4、轻触开关................................................................................................................9

2.4、软件设计.........................................................................................................................10

2.4.1、c语言编程 ......................................................................................................10

2.3.2、软件硬件仿真.....................................................................................................12

3、实物焊接....................................................................................................................................13

4、结束语........................................................................................................................................14

5、参考文献....................................................................................................................................16

6、附录............................................................................................................................................17

2

一、引言

1.1 单片机基础知识

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲,一块芯片就成了一台计算机。

单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。

现在,这种单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。

单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。

MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS- 48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。MCS-51系列单片机主要包括8031、8051和8751等通用产品。

1.2 单片机的发展趋势

单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD

3 (液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。

此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。现在虽然单片机的品种繁多,各具特色,但仍以89C51为核心的单片机占主流。

1.3课程设计的目的

(1)、训练学生正确地应用单片微机,培养解决工业控制、工业检测等领域具体问题的初步能力。

(2)、让学生通过所做课题,熟悉单片微机应用系统开发、研制的过程,软硬件设计的工作方法、工作内容、工作步骤。

(3)、对学生进行基本技能训练,例如组成系统、编程、调试、查阅资料、绘图、编写说明书等;使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。

1.4仪器设备

PC机、万用表、电烙铁等。

1.5课程设计的内容

(1)、设计并绘制硬件电路图;

(2)、购买电子元器件并按电路图焊接到电路板上;

(3)、编写程序并将调试好的程序固化到单片机中。

1.6本设计的题目与要求

(1)题目:可以调控的跑马灯

(2)要求:用AT89S52芯片控制跑马灯(流水灯),整个系统有8种跑马灯模式可以选择,K1是选择模式键,同时将相应的模式在LED七段数码管中显示出来,K2可以对跑马灯的速度进行加速,K3可以对跑马灯的速度进行减速。整个系统可以实现对跑马灯模式的多层控制,还有加减速。

二、总体设计

2.1 框图设计

框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。同时罗列出需要主要使用到的各个器件,以方面系统开发中器件的选取。通过框图设计,让设计者从整体上把握系统的开发。本系统设计的框图如下图2-1所示。

4

按键模块

发光二极管

89S52

LED

图2-1系统结构框图

2.2电路原理图

本系统由89S52芯片、LED七段数码管、发光二极管、轻触开关等组成,电路原理图如图2-2所示;

图2-2系统电路原理图

2.3系统材料清单

2.3.1、AT89C51芯片

(1)89C51是一种带4K字节闪烁可编程可擦除只读存储器( FPEROM—Falsh

5 Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

(2)主要特性:与MCS-51 兼容;4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-24MHz;三级程序存储器锁定;128×8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。

(3)结构特点:8位CPU;片内振荡器和时钟电路;32根I/O线;外部存贮器寻址范围ROM、RAM64K;2个16位的定时器/计数器;5个中断源,两个中断优先级;全双工串行口;布尔处理器;

AT89C51芯片图如下图2-3所示;

图2-3 AT89C51芯片图

2.3.2、共阳极数码显示管

发光二极管显示管简称LED,具有结构简单、价格低廉、使用方便、耗电少、与单片机

6 接口容易等特点,在单片机应用系统使用非常普遍。一位共阳数码管结构如图2-4所示;

图2-4一位共阳数码管

LED数码显示器由七段条形的发光二极管组成“ ”字形显示字段,用一只圆形的发光二极管做小数点。LED数码显示器中,通常将各段发光二极管的阴极或阳极连在一起做公共端,这样可以使驱动电路简单。共阳极数码管是指发光二极管的阳极都与正极接在一起,引脚接输出端,故低电平有效,其原理图如图2-5所示;

图2-5共阳极数码管原理图

共阳极的管脚示意图如图2-6所示;

7 图2-6共阳极管脚示意图

要使LED数码管显示数字,只要点亮相应字段的发光二极管即可。如要显示“1”,点亮b、c段;要显示“0”,点亮a、b、c、d、e、f段。从图2-5中不难看出,对于共阳极数码管,点亮字段则用低电平“0”来表示,所以低电平有效。这样我们就可以把要显示的数字与一串二进制代码对应起来,即对LED数码显示器实现编码。由于这种编码是与显示器结构相对应的,因此分为共阴显示码和共阳显示码两种。

不考虑小数点的编码只有七位,常称为七段显示码;如果对小数点也进行编码,则称为八段显示码。常用字符的八段显示码如图2-7所示;

图2-7常用字符的八段显示码

2.3.3、发光二极管

它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,所以具有单向导电性。常用的发光二极管是发红光、绿光或黄光的二极管。它广泛应用于各种电子电路、家电、仪表等设备中、作电源指示或电平指示。发光二极管如图2-8所示;

8

图2-8发光二极管

2.34、轻触开关

轻触开关如图2-9所示;

图2-9清触开关

轻触开关的功能说明图如图2-10所示;

9

图2-11轻触按钮说明图

2.4软件设计

本课程设计是采用80C51单片机设计的可以调控的跑马灯,通过keil进行c语言编程,通过protues进行软件硬件仿真。本设计成果,主要通过按键开关对跑马灯进行控制,包括跑马灯模式的选择、跑马灯模式的显示、跑马灯速度变化控制。

2.4.1、C语言编程

(1)定义

#include

#define uchar unsigned char

#define uint unsigned int

uchar ModeNo;

uint Speed;

10

uchar TCount=0;

uchar Idx;

uchar mb_Count=0;

bit Dirtect=1;

(2)段码表:

uchar code DSY_CODE[]={0xC0,0xF9, 0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

(3)调速表

uint code sTable[]={0,1,3,5,7,9,15,100,200,230,300,350};

(4)延时

void Delay(uint x)

{

uchar i;

while(x--) for(i=0;i<120;i++);

}

(5)检测按键

uchar GetKey()

{

.............

return K;

}

(6)16支LED显示

void Led_Demo(uint Led16)

{

.................

P0=(uchar)(Led16>>8);

}

(7)定时器2

void T0_INT() interrupt 1

{

...................

11 mb_Count=(mb_Count+1)%16;

}

(8)键盘处理

void KeyProcess(uchar Key)

{

switch(Key)

{

....................

if(Idx<15) Speed=sTable[++Idx];

}

}

(9)主程序

void main()

{

uchar Key;

P0=P1=P2=P3=0xFF;

ModeNo=0;Idx=4;

P3=DSY_CODE[ModeNo];

IE=0x82;

TMOD=0x00;

TR0=1;

while(1)

{

Key=GetKey();

if(Key!=0) KeyProcess(Key);

}

}

2.4.2软件硬件仿真

软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并

12 加以排除纠正的过程。

软硬件联调是指把调试无误的软件程序烧制进单片机芯片内部,通上电源后,检查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。若有错误,通过改写软件来调试,直至达到预期效果,则设计圆满成功。本设计通过protues进行软件硬件仿真,设计的原理图如图2-12所示;

图2-12设计的原理图

系统运行后的示意图如图2-13所示

13

图2-13系统运行示意图

三、实物焊接

在软件硬件调试成功后,就可以进行实物的焊接了。焊接前,先对照原理图,在草稿纸上画出焊接器件与连线。接着在焊接板中用铅笔画出连线,沿着铅笔线用焊丝将各个连接点连接起来。焊接好后的实物图如图3-1和3-2所示;

图3-1实物正面图

14 图3-2实物背面图

实物电路板上有16个LED灯,用来实现8种模式的跑马灯,一个数码显示管,用来显示跑马灯模式“0——7”,还有三个按键,一个实现跑马灯模式的装换,一个对跑马灯进行加速,还有一个可以减缓跑马的的速度。

四、结束语

(1)体会:为期两个星期的课程设计终于落下了帷幕。万事开头难。在刚开始课程设计的时候,大家都有点茫然而且无从下手的感觉。首先是题目的选择,在没有决定题目之前,查找资料毫无目的,基本是查查这个资料,待会又搜索另一个。这大大的浪费来我我的时间。最后,但经过老师的指导及自己查阅相关的资料,逐渐有了自己的设计想法,制定出了系统的结构框图。终于定下了题目。定下了题目之后,做起来就比较有目的。在指导老师的提示下,我们在网上查到了一些相关的资料,再综合书本上学到的一些知识,参考网上的程序,经过调试修改后,最终实现了题目设计的要求。调试成功后,就可以进行实物的焊接,看开始时,对焊锡的融化比较难以把握,不过熟练后,就比较简单了。

通过学习单片机这门课程设计,不仅了解了AT89c51的功能、还加强了单片机的理论知识得了解,而且进一步接触并了解到了软硬件的结合这个实践问题。不仅如此,此次设计也加强了我们动手培养了我的动手能力及分析思考和解决问题的能力,更令我的创造性思维得

15 到拓展。

(2)遇到的问题

1、刚着手此设计时,不知道如何下手,但经过老师的指导及自己查阅相关的资料,逐渐有了自己的设计想法,定下了题目,制定出了系统的结构框图。

2、软件设计是耗时最长的一项,涉及到整个系统工作的稳定性。我们首先编写总体框架,然后做简单的测试,保证能正常运行,接下来编写单个的子状态程序,写完一个测试一个,这样保证了最后调试的成功率。在编写程序过程中需要很好的编写习惯,结构要明显,标明注释,随时存档,程序尽量简约。另外要兼顾到硬件结构,尽量使得硬件结构简单,所用资源更少。

3、焊接时,由于对焊接的不熟练,经常会使两条电锡焊线不经意间连接在一起,所以要多用万用电表测试,一个模块一个模块的焊接,在进行测试,这样出错的概率会小很多,刚开始时就是从头焊到尾,结果错了却不知道从何检查起。所以焊接时应该一个子模块一个子模块的焊接,并且布线要简单明了,尽量不要用飞线,这样才能够保证实物的成功率。否则到了后期,很难检测出实物的问题。

4、第一次做出实物时,发现流水灯全亮,却没有闪烁,这与软件仿真的结果大不同。于是,我找来了一块C51试验开发板,用来调试器件。希望以此发现问题。在C51试验开发板上我发现必须加晶振才能够正常工作,于是,在电路板上加上了晶振,最后,实现了电路板的正常工作。

5、实物做出来,验证成功后。过了几天,我在装上芯片发现现实上出现了一个小问题,刚开始时,我以为是布线太密了,有焊锡不经意间连在一起了,可是用万用电表测试后,却没有发现焊锡连在一起的问题。我百思不得其解,最后我想到实物成功时,底座摇杆对芯片的影响,认为是底座出现来了问题。经调试,确实是底座的问题,底座不是很紧,有时芯片的引脚不能很好的了解。

16

五、参考文献

1、《单片机原理与接口技术》 李朝青,北京航空航天大学出版社

2、《单片机课程设计指导》 楼然苗 李光飞,北京航空航天大学出版社

3、《单片机控制实习与专题制作》 蔡朝洋 北京航空航天大学出版社

4、《单片机原理与应用及C51程序设计》 谢维等,清华大学出版社,2007.2

5、《51系列单片机设计实例》(第2版) 楼然苗 李光飞 ,北京航空航天大学出版社 2006.2

6、《单片微型计算机原理及接口技术实验指导与实训》 林军 中国水利水电出版社 2004.10

7、网上资料

17

六、附录

本课程设计的源程序;

#include

#define uchar unsigned char

#define uint unsigned int

uchar 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,100,200,230,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);

18

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;

}

void Led_Demo(uint Led16)

{

P1=(uchar)(Led16&0x00FF);

P0=(uchar)(Led16>>8);

}

void T0_INT() interrupt 1

{

if(++TCount

TCount=0;

switch(ModeNo)

{

case 0:Led_Demo(0x0001<

case 1:Led_Demo(0x8000>>mb_Count);break;

case 2:if(Dirtect)Led_Demo(0x000F<

Else

Led_Demo(0xF000>>mb_Count);

if(mb_Count==15) Dirtect=!Dirtect;break;

case 3:if(Dirtect)Led_Demo(~(0x000F<

19

else

Led_Demo(~(0xF000>>mb_Count));

if(mb_Count==15) Dirtect=!Dirtect;

break;

case 4:if(Dirtect)Led_Demo(0x003F<

else

Led_Demo(0xFC00>>mb_Count);

if(mb_Count==15) Dirtect=!Dirtect;break;

case 5:if(Dirtect)Led_Demo(0x0001<

else

Led_Demo(0x8000>>mb_Count);

if(mb_Count==15) Dirtect=!Dirtect;

break;

case 6:if(Dirtect)Led_Demo(~(0x0001<

else

Led_Demo(~(0x8000>>mb_Count));

if(mb_Count==15) Dirtect=!Dirtect;break;

case 7:if(Dirtect)Led_Demo(0xFFFE<

else

Led_Demo(0x7FFF>>mb_Count);

if(mb_Count==15) Dirtect=!Dirtect;break;

default:break;

}

mb_Count=(mb_Count+1)%16;

}

void KeyProcess(uchar Key)

{

switch(Key)

20

{

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;

P3=DSY_CODE[ModeNo];

IE=0x82;

TMOD=0x00;

TR0=1;

while(1)

{

Key=GetKey();

if(Key!=0) KeyProcess(Key);

}

}

21

单片机课程设计报告

武汉纺织大学

班级:电子11201班

组员:徐同法 1203251019

唐进 1203251020

姚恒 1203251022

22

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689329843a230846.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信