单片机课程设计--节日彩灯控制器的设计.doc
《单片机课程设计--节日彩灯控制器的设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计--节日彩灯控制器的设计.doc(16页珍藏版)》请在冰豆网上搜索。
荆楚理工学院
课程设计成果
学院:
电子信息工程学院班级:
11电气工程及其自动化1班
学生姓名:
刘诗权学号:
2011401020127
设计地点(单位):
D1302
设计题目:
节日彩灯控制器的设计
完成日期:
2014年1月3日
指导教师评语:
________________________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):
____________________
教师签名:
_____________________
目录
1摘要……………………………………………………………………1
2系统简介………………………………………………………………2
2.1总体设计方案说明……………………………………………2
2.2单片机系统组成方框图………………………………………2
2.3AT89S51单片机介绍………………………………………2
3系统设计………………………………………………………………4
3.1系统总体设计…………………………………………………4
3.2硬件电路设计…………………………………………………5
3.3软件设计………………………………………………………7
4实验结果与讨论……………………………………………………11
5结论…………………………………………………………………12
6参考文献……………………………………………………………12
7附录…………………………………………………………………13
1摘要
随着科技的发展,节日彩灯已经作为节日的一个重要部分越来越丰富多彩了,同时它作为节日的一部分给我们的生活带来了许多美好。
本文分析了彩灯四种不同亮法的原理,基于汇编语言设计了一种按键控制的可以有四种不同亮法的彩灯,当按下第一个键的时候彩灯从上到下亮,按下第二个键时候彩灯从下到上亮,第三个键彩灯从中间到两边亮,第四个彩灯从两边到中间亮。
通过设计能使彩灯亮的方式更多样、更漂亮。
本文介绍一种新型的彩灯控制系统的设计方法,以STC89C52单片机作为主控核心,与按键,显示器等较少的辅助硬件电路相结合,利用软件实现对彩灯进行控制。
本系统具有体积小,硬件少,电路结构简单及容易操作等优点。
首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。
本设计以数字集成电路技术为基础,单片机技术为核心。
本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。
同时对控制系统进行了仿真,实验结果表明该系统可以成功的控制彩灯。
2系统简介
2.1总体设计方案说明
以单片机为核心,设计一个节日彩灯控制器。
(1)P1.2—开始,按此键则灯开始流动(由上而下);
(2)P1.3—停止,按此键则停止流动,所有灯为暗;(3)P1.4—上,按此键则灯由上向下流动;(4)P1.5—下,按此键则灯由下向上流动。
2.2单片机系统组成方框图
AT89S51单片机的片内硬件组成结构
2.3AT89S51单片机介绍
VCC:
电源。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
AT89S51引脚图
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C52的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
3系统设计
3.1系统总体设计
3.1.1系统总体功能介绍
通过按按钮来控制彩灯的点亮方式
3.1.2电路控制方框图
3.2硬件电路设计
3.2.1硬件设计思想
节日彩灯控制器是利用将单片机的CPU、RAM、ROM、定时器/计数器及输入/输出(I/O)接口电路集成在一块集成电路芯片上的特点。
通过其与发光二极管及驱动电路的连接,从而构成一个完整的硬件电路。
然后通过对单片机的ROM进行编程,实现对彩灯闪烁的控制。
3.2.2电路原理
以STC-89C52单片机作为主控核心,与按键、电阻等较少的辅助硬件电路相结合,并辅以由电器元件组成的复位电路和时钟电路,利用软件实现对LED彩灯进行控制。
3.2.3电路原理图
3.2.3.1时钟晶振电路图
由两个22PF电容加11.0592的晶振组成,晶振两端一边分别与单片机的18、19号引脚相连,一边分别与两个电容一段相连,两个电容的另一端接在一起并且接地,从而构成了时钟晶振电路。
3.2.3.2复位电路
由2个电阻、1个电解电容、1个按钮组成
3.2.3.3按钮电路图
由四个按钮分别接单片机的P1.2、P1.3、P1.4、P1.5即单片机的3、4、5、6号引脚相连,按钮的另一端接电源负极,通过按按钮输入低电平信号来控制彩灯
3.2.3.4彩灯电路
由8个发光二极管、8个200欧的电阻组成,8个发光二极管的正极分别接单片机的P0.0-P0.7口,即32-39号引脚,另一端分别接电阻,电阻另一端分别接电源正极,通过按钮输入低电平来达到对彩灯的控制情况。
3.2.3.5系统总电路
3.3软件设计
3.3.1软件设计思想
通过编程改变P1口的状态,从而改变彩灯的闪烁。
本程序主要可分为主程序模块,比较模块TURN、DOWN和状态显示程序模块TURN1、DOWN1、UPP延时程序模块DELAY等模块。
3.3.2程序流程图
3.3.2.1主程序流程图
3.3.2.2正向流动程序流程图和反向流动程序流程图
3.3.2.3延时子程序流程图
3.3.2.4按键扫描子程序流程图
3.3.3程序清单
ORG0000H
LJMPSTART
START:
MOVA,P1;将P1口的值传送给累加器A
CJNEA,#0FFH,DEL;判断是否有键按下,有就转DEL
JNBP1.2,TURN;“开始”键按下转子程序TURN
SJMPSTART;无键按下转主程序继续扫描
DEL:
MOV40H,A;累加器A的值传给40H
LCALLDEK;调用10ms防抖动子程序
MOVA,P1;将P1的值传送A
CJNEA,40H,START;确认无键按下转START
RET
TURN:
MOVR0,#0FEH;给R0赋值0FEH
MOVA,R0;将R0的值送给累加器A
TURN1:
MOVP0,