基于单片机AT89C51的花样跑马灯设计报告.docx

上传人:b****0 文档编号:9345015 上传时间:2023-05-18 格式:DOCX 页数:13 大小:161.87KB
下载 相关 举报
基于单片机AT89C51的花样跑马灯设计报告.docx_第1页
第1页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第2页
第2页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第3页
第3页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第4页
第4页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第5页
第5页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第6页
第6页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第7页
第7页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第8页
第8页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第9页
第9页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第10页
第10页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第11页
第11页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第12页
第12页 / 共13页
基于单片机AT89C51的花样跑马灯设计报告.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机AT89C51的花样跑马灯设计报告.docx

《基于单片机AT89C51的花样跑马灯设计报告.docx》由会员分享,可在线阅读,更多相关《基于单片机AT89C51的花样跑马灯设计报告.docx(13页珍藏版)》请在冰点文库上搜索。

基于单片机AT89C51的花样跑马灯设计报告.docx

基于单片机AT89C51的花样跑马灯设计报告

基于AT89C51的花样跑马灯

一.课设简介

1-1.课设目的

为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。

通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。

1、通过本设计,使学生综合运用《单片机技术原理与应用》、《DSP原理与应用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。

2、学会使用KEILC和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。

3、了解单片机接口应用开发的全过程:

分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。

1-2.课设内容

利用单片机的自动控制功能,设计出相应不同的电路,可以实现IED灯不同模式的显示效果。

本课程是利用AT80C51单片机的自动控制功能,并结合其它电子元器件以及软件实现的跑马灯,实现不同种类的LED灯显示效果。

二.硬件电路设计

2.1AT89C51简介及接口说明

AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

AT89C51引脚排列图

由于工艺及标准化等原因,芯片的引脚数量是有限的,但单片机为实现控制所需要的信号数目却远远超过其引脚数目。

为解决这一矛盾,单片机的某些信号引脚被赋以双重功能。

1)电源及电源复位引脚:

(1)VCC(40脚):

正常操作时接+5V直流电源。

(2)VSS(20脚):

接地端。

(3)RST/VPD(9脚):

复位信号输入端。

在该引脚上输入一定时间(约两个机器周期)的高电平将使单片机复位。

该引脚的第二功能是VPD,即备用电源输入端。

当主电源发生故障,降低到低电平规定值时,可将+5V备用电源自动接入VPD端,以保护片内RAM中的信息不丢失,使复电后能继续正常运行。

(4)

/VPP(31脚):

访问程序存储器控制信号/编程电源输入。

保持高电平时,访问内部程序存储器,访问地址范围在0~4KB内;当PC(程序计数器)值超过0FFFH,即访问地址超出4KB时,将自动转向执行外部程序存储器内的程序;当

保持低电平时,不管单片机内部是否有程序存储器,则只访问外部程序存储器(从0000H地址开始)。

由此可见,对片内有可用程序存储器的单片机而言,

端应接高电平,而对片内无程序存储器的单片机,可将

接地。

对于EPROM型单片机,在EPROM编程期间,此引脚用于施加21V的编程电源(VPP)。

2)时钟振荡电路引脚XTAL1和XTAL2:

(1)XTAL1(19脚):

外接石英晶体和微调电容引脚1。

它是片内振荡电路反向放大器的输入端。

采用外部振荡器时此引脚接地。

(2)XTAL2(18脚):

外接石英晶体和微调电容引脚2。

它是片内振荡电路反向放大器的输出端。

采用外部振荡器时此引脚为外部振荡信号输入端。

3)

(30脚):

低8位地址锁存控制信号/编程脉冲输入。

在系统扩展时,ALE用于把P0口输出的低8位地址锁存起来,以实现低8位地址和数据的隔离。

在访问外部程序存储器期间,ALE信号两次有效;而在访问外部数据存储器期间,ALE信号一次有效。

对于EPROM型单片机,在EPROM编程期间,此引脚用于输入编程脉冲

4)

(29脚):

外部程序存储器的读选通信号输出端,低电平有效。

在从外部程序存储器取指令(或常数)期间,此引脚定时输出负脉冲作为读取外部程序存储器的信号,每个机器周期

两次有效,此时地址总线上送出的地址为外部程序存储器地址;在此期间,如果访问外部数据存储器和内部程序存储器,不会产生

信号。

5)并行双向输入/输出(I/O)口引脚:

(1)P0口的P0.0~P0.7引脚(39~32脚):

8位通用输入/输出端口和片外8位数据/低8位地址复用总线端口。

(2)P1口的P1.0~P1.7引脚(1~8脚):

8位通用输入/输出端口。

(3)P2口的P2.0~P2.7引脚(28~21脚):

8位通用输入/输出端口和片外高8位地址总线端口。

(4)P3口的P3.0~P3.7引脚(10~17脚):

8位通用输入/输出端口,具有第二功能。

2.2硬件原理框图

2.3电路模块

1)振荡电路

晶振为单片机提供时钟信号。

设置为12MHz。

2)跑马灯显示电路

P0口连接1-8号红色LED灯,根据输出的高低电平控制灯的亮灭;P2口接9-16号绿色LED灯。

三.软件电路设计

本课程设计是采用89C51单片机设计的花样跑马灯,通过keil进行c语言编程,通过protues进行软件硬件仿真。

仿真时可以观察到不同方式的跑马灯闪烁。

四.C语言源程序

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodePattern_P0[]=

{

0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,

0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,

0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,

0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

ucharcodePattern_P2[]=

{

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,

0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,

0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,

0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,

0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,

0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

//延时

voidDelayMS(uintx)

{

uchari;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主程序

voidmain()

{

uchari;

while

(1)

{//从数组中读取数据送至P0和P2口显示

for(i=0;i<136;i++)

{

P0=Pattern_P0[i];

P2=Pattern_P2[i];

DelayMS(100);

}

}

}

五.仿真过程综述

使用proteusisis进行硬件连接:

AT89C51的X1,X2连接振荡电路作为时钟信号,P0口分别连接LED通过220欧的电阻到高电平,P2口分别连接绿色LED通过220欧电阻到高电平。

在RST上输入一定时间(约两个机器周期)的高电平将使单片机复位。

EA引脚连接低电平,实现编程。

硬件连接图

跑马灯动作设计依次为:

两盏灯从上向下,跑两次;

中间向两边移动再收拢;

中间向两边扩散再收拢;

单数编号灯跳转双数编号灯;

上下各亮三盏灯;

上边亮四盏灯跳转下边四盏灯;

三盏亮灯上下移动;

全灯闪烁一次;

下边亮四盏灯跳转上边四盏灯;

一盏灯上下移动;一盏灯向下扩展全灯亮;

全灯闪烁几次;

过程重复。

绿灯和红灯闪烁情况相同,还可以根据创意改变LED灯的排序和闪烁花样,只要改变定义数组里的值,就能实现更多的花样跑马效果。

六.设计中的难点

定时器中断延时程序设计:

采用DelayMS()函数进行的延时是不精确的,主要有以下两个原因。

(1)该类型的DelayMS()函数采用的延时是通过对变量进行递减或递增实现的,很难计算精确的延时时间。

(2)由于跑马灯的状态函数和延时函数是和主任务耦合到一起的,因此主任务的执行时间要对延时的时间产生影响。

假设一个跑马灯的延时函数的延时时间是1s,但是由于主函数可能存在不同的分支,因此当主函数执行不同分支程序时,实际的跑马灯延时时间是不一样的。

七.总结

本次课程设计耗时一周,通过硬件设计和软件编程、仿真的方式加深了对《单片机技术原理与应用》、《DSP原理与应用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容的理解,以及综合运用能力,增强了自己的动手能力和分析能力。

课程设计刚刚开始对软件不太熟悉,通过网上搜索资料学习,以及同学之间相互讨论辅助,很快学会软件的运用,并开始着手下一步选择课题以及课题分析,由于同学们选择的课题不尽相同,就开始分头查找资料,途径包括网络,书本等多种方式,结合自己的理解程度最终确定自己的设计方案,进行下一步硬件连接,在连接过程中,由于连接到总线的支路没有标号导致仿真失败,可见细节决定成败;硬件连接完成后,使用KeiluVision3进行软件编程,检查无错后生成hex文件进行仿真,在若干改进后,成功实现与期望相近的的仿真结果。

本次课程设计完成后,我有以下几点体会:

1.要注意细节。

细节决定成败,这句话在这次课题中不仅一次得到了印证,小到一个引脚的连接,一点点的错误都会使整个电路无法运行,因此我们不仅仅要有整体意识,也要注意细节,不要因为一个小小的细节而导致满盘皆输。

2.要与同学们互相沟通、交流。

设计过程中难免会遇到各种各样的问题,但每个同学遇到的问题不尽相同,可以通过相互讨论相互帮助来解决彼此的问题。

软件设计是耗时最长的一项,涉及到整个系统工作的稳定性。

首先要编写总体框架,然后做简单的测试,保证能正常运行,接下来编写单个的子状态程序,写完一个测试一个,这样保证了最后调试的成功率。

在编写程序过程中需要很好的编写习惯,结构要明显,标明注释,随时存档,程序尽量简约。

总之通过本次课设,使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后学习更加高深的课题设计打下基础。

同时,在翻阅辅导资料的过程中我惊叹于作者思维的严密性和知识的广泛性,令我在感慨过程中也让我坚定了学好这门专业的决心。

在以后的工作学习中定要向老师和同学多学习、多交流,我相信经过长期的努力和学习以及更多的知识积累,我的能力也会更上一层楼。

 

参考文献

【1】《单片机原理及其接口技术》,清华大学出版社,主编:

胡汉才;

【2】《C语言程序设计教程》,电子工业出版社,主编:

张敏霞;

【3】《模拟电子技术基础》,高等教育出版社,主编:

童诗白;

【4】《数字电子技术基础》,高等教育出版社,主编:

阎石

【5】《电路》,高等教育出版社,主编:

邱关源

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

当前位置:首页 > 农林牧渔 > 林学

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

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