《单片机应用课程设计》跑马灯Word格式.docx

上传人:b****4 文档编号:6193054 上传时间:2023-05-06 格式:DOCX 页数:18 大小:1.29MB
下载 相关 举报
《单片机应用课程设计》跑马灯Word格式.docx_第1页
第1页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第2页
第2页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第3页
第3页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第4页
第4页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第5页
第5页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第6页
第6页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第7页
第7页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第8页
第8页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第9页
第9页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第10页
第10页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第11页
第11页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第12页
第12页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第13页
第13页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第14页
第14页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第15页
第15页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第16页
第16页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第17页
第17页 / 共18页
《单片机应用课程设计》跑马灯Word格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《单片机应用课程设计》跑马灯Word格式.docx

《《单片机应用课程设计》跑马灯Word格式.docx》由会员分享,可在线阅读,更多相关《《单片机应用课程设计》跑马灯Word格式.docx(18页珍藏版)》请在冰点文库上搜索。

《单片机应用课程设计》跑马灯Word格式.docx

当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。

此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息。

本设计使用AT89C2051芯片,利用P1的8个端口连接8个发光二极管,通过P1.0到P1.7的值控制“跑马灯”的亮灭,以达到显示效果。

设计的中断程序要对多个按键动作进行响应,改变开关按键,使得跑马灯,二极管循环点亮模式,当停止循环时并短时间有音乐发出。

单片机演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。

这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。

演奏时,要根据音符频率的不同,把对应的、半个周期的定时时间初始值,送入定时器,再由定时器按时输出高低电平。

这次跑马灯游戏机设计要求:

外部功能按键连接于(INT0/1)作用时,分别实现开始、停止的功能。

下次再按下开始键,游戏又开始。

第3章系统硬件电路设计

3.1跑马灯游戏机设计电路原理图如下:

元器件清单:

一个AT89C2051芯片,一个74LS240芯片,一个排阻4K7,两个开关,一个蜂鸣器,一个12M晶振,两个30p电容,一个10uF极性电容,一个9012三极管,8个LED灯,三个10K电阻,一个5K1电阻,一个1K电阻,一个150欧姆电阻。

3.2芯片性能简介:

3.2.1AT89C2051芯片引脚图

1、VCC:

电源电压。

2、GND:

地。

3、P1口:

P1口是一个8位双向I/O口。

口引脚P1.2~P1.7提供内部上拉电阻,P1.0和P1.1要求外部上拉电阻。

P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(ANI0)和反相输入(AIN1)。

P1口输出缓冲器可吸收20mA电流并能直接驱动LED显示。

当P1口引脚写入“1”时,其可用作输入端,当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的写入“1”时,其可用作输入端。

当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流。

4、P3口:

P3口的P3.0~P3.5、P3.7是带有内部上拉电阻的七个双向I/O口引脚。

P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。

P3口缓冲器可吸收20mA电流。

当P3口写入“1”时,它们被内部上拉电阻拉高并可用作输入端。

用作输入时,被外部拉低的P3口脚将用上拉电阻而流出电流。

P3口还用于实现AT89C2051的各种第二功能,如下表所列:

引脚口

功能

P3.0

RXD串行输入端口

P3.1

TXD串行输出端口

P3.2

INT0 外中断0

P3.3

INT1 外中断1

P3.4

T0定时器0外部输入

P3.5

T1定时器1外部输入

5、RST:

复位输入。

RST一旦变成高电平所有的I/O引脚就复位到“1”。

当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。

每一个机器周期需12个振荡器或时钟周期。

6、XTAL1:

作为振荡器反相器的输入和内部时钟发生器的输入。

7、XTAL2:

作为振荡器反相放大器的输出。

主要性能:

1、和MCS-51产品兼容;

 2、2KB可重编程FLASH存储器(10000次);

3、2.7-6V电压范围;

4、全静态工作:

0Hz-24MHz;

5、2级程序存储器保密锁定;

6、128*8位内部RAM;

7、15条可编程I/O线;

8、两个16位定时器/计数器;

9、6个中断源;

10、可编程串行通道;

11、高精度电压比较器(P1.0,P1.1,P3.6);

12、直接驱动LED的输出端口。

3.2.2八缓冲器/总线驱动器(三态、反相)74LS240 

74LS240这种八缓冲器和线驱动器是为提高三态输出存储地址驱动器、时钟驱动器和总线定向接收器和发射器的性能和集成度而特意设计的。

此电路的特点是,扇出高,扇入好,噪声容限高(400mV)。

可用来驱动小到133Ω的终端负载线。

3.2.3PNP三极管9012 

9012是非常常见的晶体三极管,在各种放大电路中经常看到它,应用范围很广,它是PNP型小功率三极管。

 

9012三极管(TO-92封装)管脚图:

 1、发射极 2、基极 

3、集电极

9012三极管管脚

3.3硬件电路分析:

图3.3.1晶振时钟电路

3.3.1晶振时钟电路:

一般由晶体震荡器、晶震控制芯片和电容组成,产生象时钟一样准确的振荡电路。

在电路中主要是提供时钟信号的作用。

图3.3.2排阻电路

3.3.2排阻电路:

就是若干个参数完全相同的电阻,它们的一个引脚都连到一起,作为公共引脚,其余引脚正常引出。

所以如果一个排阻是由n个电阻构成的,那么它就有n+1只引脚,一般来说,最左边的那个是公共引脚。

它在排阻上一般用一个色点标出。

在电路中主要是起到限流的作用。

图3.3.3复位电路

3.3.3复位电路:

为确保单片机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。

一般微机电路正常工作需要供电电源为5V±

5%,即4.75~5.25V。

由于单片机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,单片机电路开始正常工作。

在电路中起到复位(RST)操作功能。

图3.3.4中断和定时电路

3.3.4中断和定时电路:

中断电路于INT0,INT1组成,用按键K1,K2来控制芯片程序的操作,定时电路在定时器T0的程序控制,并在PNP9012三极管的控制下,使得蜂鸣器是否发出声音。

图3.3.5蜂鸣器驱动电路

3.3.5蜂鸣器驱动电路:

一般都包含以下几个部分:

一个三极管、一个蜂鸣器、一个续流二极管和一个电源滤波电容。

 P3.3/T0作为I/O口通过三极管来驱动蜂鸣器LS1,而P3.2/PWM0则作为PWM输出口通过三极管来驱动蜂鸣器。

另外在P3.3和P3.2分别接了两个按键,一个是PWM按键,是用来控制PWM输出口驱动蜂鸣器使用的;

另一个是PORT按键,是用来控制I/O口驱动蜂鸣器使用的。

连接按键的I/O口开内部上拉电阻。

3.3.6八个LED灯在循环点亮状态:

以上八个图形为代表LED灯在循环的点亮,在按键开关的操作下进行跑马模式。

当停到任意一个灯是,则发出短时间的音乐,但当停到第八个灯时,则发出时间比较长的不同音乐。

第4章系统软件设计

4.1电路函数程序设置流程图如下图:

主程序

初始化

开中断

延时程序设置

判断哪个外部中断

K1K2

K2键按下

K1键按下

置跑马灯模式循环点亮

跑马灯停止并发出音乐

图4.1.1电路函数程序设置流程图

4.2电路的安装与调试

用keil将程序编写好之后,检查程序有无错误。

有错误就改正,直到没有错误,最后生成.HEX文件,再用proteus画好硬件电路图,将单片机指向刚生成的.HEX文件并进行仿真调试,在调试过程当中通过调试的结果完善程序。

一切完善之后,即在焊接好的硬件电路板上,用烧录器将.HEX文件烧录到AT89C2051单片机中。

最后接上电源,检验烧录的程序在硬件电路中是否实现效果。

4.3硬件模板布置电路板实物图一

4.4焊接硬件工艺实物图二

第5章 课程设计心得

在这为期两周的单片机跑马灯游戏机课程设计中,通过陈老师的指导及同学的帮助,总算完成了这次课设。

在设计过程中,和同学们相互探讨,相互学习。

加强了动手能力,更深入的了解了所学知识的用途。

在这次设计过程中,进一步体现出自己单独根据电路图如何在万能板中布置的能力以及综合运用知识的能力,以及对proteus和keil软件的学习和熟悉。

也再一次的温习了C语言和汇编程序。

体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

通过此次课程设计,不仅初步掌握了51单片机的一些基本功能应用,还学会了使用keil和proteus两个软件。

知道了怎么用keil新建工程文件、编写调试程序、生成.HEX文件;

怎么用proteus软件画图,怎么仿真等。

总之,得感谢老师的教导及同学的帮忙。

在这次课程设计中,我受益匪浅,学到了很多书本上所没有的东西,懂得了理论和实际联系的重要性。

在以后的学习中,我不仅要把理论知识掌握牢固,更要提高自己的动手能力和分析能力。

第6章 参考文献

[1]高洪波.MCS-51单片机原理及应用技术教程.北京:

人民邮电出版社,2009

[2]李丽娟.C语言程序设计教程(第2版).北京:

人民邮电出版社,2010

[3]谭浩强《C程序设计教程》[M].北京:

清华大学出版社

[4]刘斌文.精通VisualBasic.NET中文版[M].北京:

机械工业出版社,2004

致谢

在这两周的单片机课设中,不仅初步掌握了51系列单片机的一些基本功能应用,还学会了使用keil和proteus两个软件。

再一次的温习了汇编和C语言程序的编写,虽然在中途中遇到一些麻烦,但老师的教导下和同学的帮助下,总算顺利得完成了此次课设。

总之得感谢陈芳老师的教导和同学的帮忙。

第7章附录(实物图,程序清单)

7.1实物图:

图7.1.1硬件模板布置电路板

图7.1.2焊接硬件工艺

7.2程序清单:

#include<

reg51.h>

sbitKey0=P3^2;

sbitKey1=P3^3;

sbitBEEP=P3^4;

unsignedcharflag1=0,flag2=0;

unsignedchart0h,t0l,time;

codeunsignedchars[]={3,1,1,6,1,1,6,1,1,6,1,1,7,1,1,1,2,1,6,1,1,6,1,1,6,1,1,1,2,1,7,1,1,5,1,1,5,1,2,7,1,1,1,2,1,6,1,1,0,0,0};

codeunsignedcharFreqH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,

0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,

0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,

0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,};

codeunsignedcharFreqL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,

0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,

0xEE,0x44,0x6B,0xB4,0xF4,0x2D,

0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};

voiddelay(w)

{

unsignedinti;

for(i=0;

i<

w;

i++);

}

voidDEEG()

unsignedchari,k;

for(;

;

k=0x01;

8;

i++)

if(flag2)

return;

P1=k;

delay(10000000);

k=k<

<

1;

voidint0()interrupt0

flag2=1;

voidint1()interrupt2

flag1=1;

voiddelay2(unsignedchart)

{unsignedchart1;

unsignedlongt2;

for(t1=0;

t1<

t;

t1++)

for(t2=0;

t2<

8000;

t2++);

TR0=0;

voidT0_int()interrupt1

TR0=0;

BEEP=!

BEEP;

TH0=t0h;

TL0=t0l;

TR0=1;

voidsong()

delay2(time);

voidmain()

unsignedchari;

TMOD=0x01;

BEEP=0;

IE=0xff;

EX0=1;

IT0=1;

IT1=1;

P1=0x00;

while

(1)

{

if(flag2)

{

if(P1==0x80)

while(Key0==0)

i=0;

time=1;

while(time)

t0h=FreqH[i];

t0l=FreqL[i];

time=s[i+1];

i=i+1;

song();

}

}

else

break;

delay(500000);

BEEP=1;

delay(100000);

flag2=0;

if(flag1==1)

DEEG();

flag1=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2