单片机定时器控制4只LED滚动闪烁.docx
- 文档编号:9410818
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:19
- 大小:645.24KB
单片机定时器控制4只LED滚动闪烁.docx
《单片机定时器控制4只LED滚动闪烁.docx》由会员分享,可在线阅读,更多相关《单片机定时器控制4只LED滚动闪烁.docx(19页珍藏版)》请在冰点文库上搜索。
单片机定时器控制4只LED滚动闪烁
目录
1设计目的1
1.1设计目的1
1.2设计内容和要求1
1.3设计思路1
2软硬件开发平台2
2.1AltiumDesinger硬件电路开发平台2
2.2KeiluVision2程序开发平台3
2.3Proteus仿真软件3
3设计原理分析5
3.1定时器控制4只LED滚动闪烁系统设计5
3.2定时器控制4只LED滚动闪烁系统的功能要求5
3.2.1计时显示5
3.2.2中断设置5
3.3定时器控制4只LED滚动闪烁制系统的基本构成及原理5
4系统硬件电路的设计7
4.1系统硬件总电路构成及原理7
4.2主控制部分――AT89C51单片机简介7
4.2.1AT89C51的内部结构功能8
4.2.251单片机的串行接口工作方式9
4.3其它器件10
4.4定时器控制4只LED滚动闪烁控制系统原理图10
4.5设计的连线图:
11
4.5.1单片机实物图:
11
4.6硬件资源及其分配11
4.7运行步骤12
4.8检测与调试12
4.8.1硬件调试:
12
4.8.2软件调试:
13
5系统软件程序的简单设计14
5.1程序框图14
5.2程序流程图及程序15
5.2.1程序流程图:
15
5.2.2程序清单:
15
5.2.3仿真结果图:
17
结论18
参考文献19
1.1设计目的
1、通过单片机课程设计,熟练掌握C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过定时器控制4只LED滚动闪烁系统的设计,掌握定时/计数器的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。
1.2设计内容和要求
内容:
设计一个能够控制4盏LED灯的模拟系统。
要求:
利用单片机的定时器定时,令4盏LED灯交替点亮和熄灭。
1.3设计思路
1.先熟悉实验原理,了解4只LED滚动闪烁系统灯的工作过程,组成滚动闪烁系统需要的组件。
2.了解各个硬件的工作原理,
3.绘制电路原理图,编写程序,并进行仿真,基本实现LED滚动闪烁系统灯的功能。
2软硬件开发平台
2.1AltiumDesinger硬件电路开发平台
AltiumDesinger硬件电路设计软件介绍。
AltiumDesigner是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在WindowsXP操作系统。
这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高[6]。
硬件开发平台简介:
电路设计自动化EDA(ElectronicDesignAutomation)指的就是将电路设计中各种工作交由计算机来协助完成。
如电路原理图(Schematic)的绘制、印刷电路板(PCB)文件的制作、执行电路仿真(Simulation)等设计工作。
随着电子科技的蓬勃发展,新型元器件层出不穷,电子线路变得越来越复杂,电路的设计工作已经无法单纯依靠手工来完成,电子线路计算机辅助设计已经成为必然趋势,越来越多的设计人员使用快捷、高效的CAD设计软件来进行辅助电路原理图、印制电路板图的设计,打印各种报表。
AltiumDesigner是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在WindowsXP操作系统。
这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。
AltiumDesigner除了全面继承包括Protel99SE、ProtelDXP在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。
该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。
由于AltiumDesigner在继承先前Protel软件功能的基础上,综合了FPGA设计和嵌入式系统软件设计功能,AltiumDesigner对计算机的系统需求比先前的版本要高一些。
开发平台系统功能:
硬件开发平台主要有下面几个主要功能:
1原理图设计;2印刷电路板设计;3FPGA的开发;4嵌入式开发等等。
2.2KeiluVision2程序开发平台
KeiluVision2软件开发平台简介[1]。
软件开发平台介绍:
KeiluVision2是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。
C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。
C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:
编译器,汇编器,实时操作系统,项目管理器,调试器。
uVision2IDE可为它们提供单一而灵活的开发环境。
软件系统功能:
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keilc51来开发单片机应用程序。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优越性。
2.3Proteus仿真软件
Proteus软件简介[1]。
软件开发平台介绍:
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
仿真软件系统功能:
Proteus软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能主要是:
1.原理布图2.PCB自动或人工布线3.SPICE电路仿真。
丰富的器件库:
超过27000种元器件,可方便地创建新元件;智能的器件搜索:
通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:
自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:
使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:
通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
3设计原理分析
3.1定时器控制4只LED滚动闪烁系统设计
通过编写程序,实现对发光二极管的控制,来4只LED滚动闪烁灯的管理。
每延时一段时间,灯的显示情况都会按LED灯的显示规律进行状态转换。
采用单片机内部的I/O口上的P0口中的4个引脚即可来控制4个LED灯[1]。
3.2定时器控制4只LED滚动闪烁系统的功能要求
本设计能模拟基本的LED滚动闪烁系统,是用中断的方式定时控制LED定的闪烁及滚动。
3.2.1计时显示
定时/计数器工作方式寄存器,定时器采用T0定时器0工作于模式2位数:
8位计数范围:
0-255具有自动加载功能。
3.2.2中断设置
每累计若干次定时器中断才执行一次闪烁。
3.3定时器控制4只LED滚动闪烁制系统的基本构成及原理
单片机设LED灯闪烁系统,可用单片机直接控制信号灯的状态变化可以广泛的应用到商业和工业的流程控制测电路当中[1]。
复位电路
图3.1系统的总体框图
据此,本设计系统以单片机为控制核心,连接成最小系统。
系统的总体框图如上所示。
因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。
特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。
当定时器1被用作波特率发生器时,波特率工作于方式1和方式3是由定时器1的溢出率和SMOD的值(PCON.7------双倍速波特率)决定:
方式1、3波特率=(定时器1的溢出率)特殊时,定时器被设在自动重袋模式(模式2,TMOD的高四位为0100B),其为:
方式1、3波特率=11.0592MHZ晶振的一些典型波特率如下:
波特率SMODTH11920010FDH960000FDH480000FAH
240000F4H120000E8H30000A0H
更换一种计算方式,它将以修改公式达到我们需求的波特率来计算出晶振。
最小晶振频率=波特率x384x2^SMOD这就是我们所需波特率的最小晶振频率,此频率能成倍增加达到我们需求的时钟频率[2]。
4系统硬件电路的设计
4.1系统硬件总电路构成及原理
实现本设计要求的具体功能,可以选用AT89S51单片机及外围器件构成最小控制系统,4个发光二极管分成1组红绿蓝黄4灯构成信号灯指示模块等。
主要器件的选择:
表4-1元器件表
器件
个数
LED
4
晶振(11.0592)
1
电阻
若干
电容
3
4.2主控制部分――AT89C51单片机简介
89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51单片机为40引脚双列直插芯片,有4个I/O口,P0,P1,P2,P3,单片机的最小系统如图所示,18引脚和19引脚接时钟脉冲电路,XTAL1接外部晶振和微调电容的一端,在片内它是震荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内她是振荡器倒相放大器的输出端,第9引脚为复位输入端,接上电容,电阻及开关后构成上电复位电路,20引脚为接地端,40引脚为电源端[4]。
如图所示:
图4.1晶振与单片机的连接
4.2.1AT89C51的内部结构功能
·中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作[4]。
·数据存储器(内部RAM):
数据存储器用于存放变化的数据。
AT89S51中数据存储器的地址空间为256个RAM单元,但其中能作为数据存储器供用户使用的仅有前面128个,后128个被专用寄存器占用[4]。
·程序存储器(内部ROM):
程序存储器用于存放程序和固定不变的常数等。
通常采用只读存储器,且其又多种类型,在89系列单片机中全部采用闪存。
AT89C51内部配置了4KB闪存。
·定时/计数器(T0):
定时/计数器用于实现定时和计数功能。
AT89C51共有2个16位定时/计数器。
·并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
每个口都由1个锁存器和一个驱动器组成。
它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其他功能[6]。
·全双工串行口:
A89C51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
·时钟电路:
时钟电路的作用是产生单片机工作所需要的时钟脉冲序列[1]。
·中断系统:
中断系统的作用主要是对外部或内部的终端请求进行管AT89C51共有5个中断源,其中有2个外部中断源和3个内部中断源。
4.2.251单片机的串行接口工作方式
51单片机的串行接口有四种工作方式[6]。
方式0是将SBUF作为8位同步移位寄存器使用(固定波特率);方式1是10位异步通信方式(可变波特率);方式2是11位异步通信方式(固定波特率);方式3是11位异步通信方式(可变波特率)。
图4.2 串行接口与单片机的连接
4.3其它器件
•发光二极管
根据本设计的特点,LED的显示不可少,LED的显示采用普通的发光二极管。
在硬件上连接图上也是对称分布的,如下图3.3所示。
图4.3LED灯的连接
在本设计中,实际控制的灯只有4个,其中均是低电平有效,所以在运行前LED灯的状态是灭。
4.4定时器控制4只LED滚动闪烁控制系统原理图
本系统以单片机为核心,系统硬件电路由单片机,电阻,LED显示组成。
其具体的硬件电路总图如图3.4所示。
图4.4系统原理
4.5设计的连线图:
4.5.1单片机实物图:
图4.5实物图
4.6硬件资源及其分配
主要用到的硬件:
P0口、LED发光二极管、定时器T0。
●硬件分配:
(1)P1口:
做为输出口,与发光二极管相连接。
(2)定时/计数器T0用来产生1秒的定时。
4.7运行步骤
1、接硬件图接线,为了确保LED灯能够对应显示,实验时,对P0口的接线做了调整。
即,P0.0接L1,P0.1接L2,P0.2接L3,P0.3接L4。
2、开始连续运行,观察4个LED灯是与程序设计思路对应,如果有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。
3、整体运行,观察LED显示是否都符合要求,如果不符合,则再调试。
直至满足要求。
4.8检测与调试
4.8.1硬件调试:
硬件调试是利用开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
硬件调试可分为静态调试与动态调试两步进行[7]。
◆静态调试
静态调试是在用户系统未工作时的一种硬件检测。
第一步:
目测。
检查外部的各种元件或者是电路是否有断点。
第二步:
用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:
加电检测。
给板加电,检测所有的插座或是器件的电源端是否符合要求的值
第四步:
是联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
◆动态调试
动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的一般方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。
当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。
由分到合的调试既告完成。
由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。
调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。
4.8.2软件调试:
软件调试是通过对拥护程序的编译、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
编完程序后,编辑,查看程序是否有逻辑的错误[9]。
5系统软件程序的简单设计
5.1程序框图
延时
图5.1程序框图
5.2程序流程图及程序
5.2.1程序流程图:
否
图5.2程序流程图
5.2.2程序清单:
主程序:
#include
#defineucharunsignedchar//定义无符号字符型(0——255)
#defineuintunsignedint//定义无符号整型(0——65535)
//字符与整型分为有符号(signed)与无符号(unsigned)两类
//通常sbit数据类型是用于存取内部可位寻址的数据存储器
sbitB1=P0^0;//声明B1为P1.0端口
sbitG1=P0^1;
sbitR1=P0^2;
sbitY1=P0^3;
//若要使用权sbit数据类型,则其声明方式有下列几种:
//1.先声明一个bdata存储器形式的变量,再声明属于该变量的sbit变量,例如:
//charbdatascan;声明scan为bdata存储器类型的字符
//sbitinput_0=scan^0;声明input_0为scan变量的bit0
//2.先声明一个sfr变量,再声明属于该变量的sbit变量,例如:
//sfrP0=0x80;声明P0为0X80存储器位置,即P0
//sbitP0_0=P0^0;声明P0_0为P0变量的bit0
//3.直接指定存储器位置,例如要声明P0的bit0,则
//sbitP0_0=0X80^0;声明P0_0为0x80地址的bit0
uinti,j,k;
//-------------------------------------------------------------------
//主程序
//-------------------------------------------------------------------
voidmain()//主程序开始
{
i=j=k=0;
P0=0xff;//开始时全部关闭
TMOD=0X02;//定时/计数器工作方式寄存器低4位
//T0定时器0工作于模式2位数:
8位计数范围:
0-255具有自动加载功能
TH0=256-200;//200us定时
TL0=256-200;
IE=0X82;//中断使能寄存器IE,相当于EA=1;ET0=1;
TR0=1;//定时器/计数器控制寄存器TCODTimer0的启动开关
while
(1);//无穷循环
}
//-------------------------------------------------------------
//T0中断函数
//--------------------------------------------------------------
voidLED_Flash_and_Scroll()interrupt1
{//每累计若干次定时器中断才执行一次闪烁
if(++k<35)return;//if条件语句
k=0;
switch(i)//多分支选择语句,switch语句开始
{
case0:
B1=!
B1;//蓝灯闪烁
break;//终止执行switch或循环语句
case1:
G1=!
G1;//绿灯闪烁
break;
case2:
R1=!
R1;//红灯闪烁
break;
case3:
Y1=!
Y1;//黄灯闪烁
break;//退出switch语句
default:
i=0;
}
if(++j<300)//每次LED持续闪烁一段时间
return;//从函数返回语句
j=0;
P0=0xff;//关闭显示
i++;//切换到下一LED
//符号:
++,功能:
加1,范例:
i++,说明:
执行运算后再将X变量的值加1
//符号:
--,功能:
减1,范例:
i--,说明:
执行运算后再将X变量的值减1
}
5.2.3仿真结果图:
图5.3实验仿真结果图
结论
定时器控制4只LED滚动闪烁对于单片机初学者有着非常重要的作用。
本文完成了基于单片机的定时器控制4只LED滚动闪烁系统的设计与模拟。
包括闪烁方案的设计,系统的硬件开发、软件编程与仿真调试等。
在论文完成过程中,主要做的工作有:
(1)确定LED滚动闪烁系统具体的通行方案以及要求其他多功能的实现。
(2)以ATMEL公司的AT89S51单片机为核心进行系统硬件设计,输入量包括:
输出LED灯亮灭状态及时间显示。
通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。
使之不断地战胜别人,超越前人。
同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
参考文献
【1】谢维成.单片微型计算机原理及应用.清华大学出版社,2009.
【2】余锡存曹国华.单片机原理及接口技术.西安电子科技大学出版社,2011.
【3】雷丽文等.微机原理与接口技术.电子工业出版社,1997.
【4】吴黎明,王桂棠,洪添胜,等.单片机原理及应用技术.科学出版社,2005.
【5】韩克,柳秀山,电子技能与EDA技术.暨南大学出版社,2004.
【6】张毅坤,单片微型计算机原理及应用.西安电子科技大学出版社,1998.
【7】张伟,单片机原理及应用.机械工业出版社,2005
【8】张鑫,单片机原理及应用.电子工业出版社,2005
【9】曹国清,数学电路与逻辑设计.中国矿业大学出版社,2004
【10】任致程,经典集成电路400例.机械工业出版社,2002
【11】薛栋梁,单片机原理及应用.中国水利水电出版社,2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 定时器 控制 LED 滚动 闪烁