单片机c语言节日彩灯控制器设计.docx
- 文档编号:28780471
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:20
- 大小:641.64KB
单片机c语言节日彩灯控制器设计.docx
《单片机c语言节日彩灯控制器设计.docx》由会员分享,可在线阅读,更多相关《单片机c语言节日彩灯控制器设计.docx(20页珍藏版)》请在冰豆网上搜索。
单片机c语言节日彩灯控制器设计
湖南涉外经济学院
课程设计报告
课程名称:
单片机原理及应用
报告题目:
节日彩灯控制器的设计
学生姓名:
所在学院:
信息科学与工程学院
专业班级:
电子信息工程1102班
学生学号:
指导教师:
***
2013年12月29日
课程设计任务书
报告题目
节日彩灯控制器的设计
完成时间
2周
学生姓名
专业班级
指导教师
职称
讲师
总体设计要求和技术要点
1.任务
以单片机为核心,设计一个节日彩灯控制器。
2.要求
(1)K1—开始,按此键则灯开始流动(由上而下)。
(2)K2—停止,按此键则停止流动,所有灯为暗。
(3)K3—上,按此键则灯由上向下流动。
(4)K4—下,按此键则灯由下向上流动。
(5)K5—从亮到暗到亮循环。
本题目本质上是由按键控制功能的流水灯,LED工作的方式通过键盘的扫描实现。
其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。
工作内容及时间进度安排
第17周:
周1---周3:
立题、论证方案设计
周4---周5:
预答辩
第18周:
周1---周3:
仿真实验
周4---周5:
验收答辩
课程设计成果
1.与设计内容对应的软件程序
2.课程设计总结报告
摘要
节日彩灯是生活中常常的装饰物品,是我国普遍流行的传统的民间的综合工艺品。
彩灯艺术也是灯的综合性的装饰艺术。
在当今社会里,彩灯已经成为我们生活当中的一部分,能给我们带来视觉上的享受,还能美化我们的生活。
彩灯控制器主要是通过产生有规律变化的脉冲信号来实现彩灯的各种变化,他集中的应用了单片机、LED、自动控制等技术,是典型的基于单片机的电子产品。
本文以AT89C51单片机为控制核心,采用模块化的设计方案,运用LED彩灯、按键等组成电路,实现才在开启时满足不一样的闪亮方法及方式。
按K1—开始,按此键则灯开始流动(由上而下)。
K2—停止,按此键则停止流动,所有灯为暗。
K3—上,按此键则灯由上向下流动。
K4—下,按此键则灯由下向上流动。
按K5—从亮到暗到亮循环。
通过按键能方便使用者选择不一样的亮法。
并用仿真软件进行仿真按不同的方式点亮LED。
还有就是这节日彩灯的制作成本低、精确度高、装调容易,为节日增添气氛,具一定的市场价值,因此制作了此节日彩灯。
关键词:
节日彩灯;单片机;LED;设计;仿真
一、概述…………………………………………………………………………1
二、芯片及元件原理…………………………………………………………………1
1.AT89S51单片机……………………………………………………………1
1.1AT89S51结构……………………………………………………………1
1.2AT89S51引脚描述………………………………………………………2
2.方案论证……………………………………………………………………3
2.1方案一……………………………………………………………………32.2方案二……………………………………………………………………4
2.2方案选择…………………………………………………………………4
三、硬件电路设计与分析……………………………………………………………4
1.定时与复位模块……………………………………………………………4
1.1时钟电路…………………………………………………………………41.2复位电路…………………………………………………………………5
2.按键模块与输出模块………………………………………………………5
四、软件电路设计与分析…………………………………………………………6
1.原理图………………………………………………………………………6
2.程序设计……………………………………………………………………6
2.1程序设计…………………………………………………………………6
2.2程序………………………………………………………………………8
五、结论分析与心得…………………………………………………………………11
1.结论分析……………………………………………………………………11
1.1结论………………………………………………………………………11
1.2设计与调试问题及解决方法……………………………………………11
2.心得体会……………………………………………………………………11
六、参考文献………………………………………………………………………12
一、概述
19世纪兴起的单片机以其先天的便捷、稳定的优点在现代电子技术电路中占有越来越重要的地位。
又有数字电路与模拟电路相比有显而易见的稳定性。
近年来,数字电路又有了巨大的发展。
可编程逻辑器件(PAL、GAL等)的发展和普及最终使IC的设计面向了用户(这是模拟电路无法做到的),而这毫无疑问会给用户带来巨大的便捷,从而奠定它在电子电路中的对位。
随着集成技术的进一步提高,各种新技术的出现和应用,人类历史横跨数码时代向更进一步发展已出现在各大型相关企业的宏伟蓝图中。
新世纪里谁掌握了新技术谁就得到了获胜的资本,也仅仅是资本而矣。
新世纪里电子行业的发展速度令人窒息,闻名的摩尔定律更把许多人威吓在门外。
可以展望,一个由数字构成的新世界即将出现。
那将是人类文明的又一飞跃,不仅可以获得良好的观赏效果,而且可以省电(与全部彩灯始终全亮相比)。
近年来,随着人们生活水平的较大提高,人们对于物质生活的要求也在逐渐提高,不光是对各种各样的生活电器的需要,也开始在环境的幽雅方面有了更高的要求。
比如日光灯已经不能满足于我们的需要,彩灯的运用已经遍布于人们的生活中,从歌舞厅到卡拉OK包房,从节日的祝贺到日常生活中的点缀。
这些不紧说明了我们对生活的要求有了质的飞跃,也说明科技在现实运用中有了较大的发展。
彩灯是我国普遍流行的传统的民间的综合性的工艺品。
彩灯艺术也就是灯的综合性的装饰艺术。
新中国成立后,彩灯艺术得到了更大的发展,特别是随着我国科学技术的发展,彩灯艺术更是花样翻新,奇招频出,传统的制灯工艺。
二、芯片及元件原理
1.AT89S51单片机
1.1AT89S51结构
AT89C51是一种低功耗/低电压、高性能的八位CMOS单片机,片内有一个4KB的FLASH可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory),它采用了CMOS工艺和ATMEL公司的高密度非易失性存储器技术,而且其输出引脚和指令系统都与MSC—51兼容。
片内置通用8位中央处理器(CPU)和FLASH存储单元,片内的存储器允许在系统内改编程序或用常规的非易失性存储器编程。
因此,AT89C51是一种功能强、灵活性高且价格合理的单片机,可方便的应用于各种控制领域。
AT89C51系列单片机对于一般用户来说,存在3个明显的特点:
(1)内含Flash存储器。
因此在应用[2]系统的开发过程中可以十分容易的进行程序的修改,这就大大缩短了系统的开发周期;同时,在系统工作过程中,能有效的保存一些数据信息,即使外接电源损坏也不影响信息的保存。
(2)与80C51插座兼容。
AT89C51系列单片机的引脚与80C51是一样的,当用AT89C51单片机取代80C51时,可以直接进行取代。
这时,不管采用40引脚还是44引脚的产品,只要用相同引脚的AT89C51单片机取代80C51的单片机即可。
(3)静态时钟方式。
AT89C51单片机采用静态时钟方式,所以可以节省电能。
这对于降低便携式产品的功耗十分有用。
图1AT89S51单片机结构图
1.2AT89S51引脚描述
VCC(40):
供电电压,其工作电压为5V。
GND(20):
接地。
P0端口(P0.0-P0.7):
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1端口(P1.0-P1.7):
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2端口(P2.0-P2.7):
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3端口(P3.0-P3.7):
P3口管脚是一个带有内部上拉电阻的8位的双向I/O端口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)。
P3口也可作为AT89C51的一些特殊功能口。
P3口同时为闪烁编程和编程校验接收一些控制信号。
复位RST(9):
复位输入。
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。
复位后P3.0-P3.7口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。
当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。
复位操作不会对内部RAM有所影响。
ALE/PROG(30):
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
PSEN(29):
外部程序存储器的选通信号。
在由外部程序存储器取指令期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EA/VPP(31):
当__EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,__EA将内部锁定为RESET;当__EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1(19):
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2(18):
来自反向振荡器的输出。
2.方案论证
2.1方案一
以80C51单片机为控制核心,采用模块化的设计方案,运用LED彩灯、按键等组成电路,实现彩灯在开启时满足不一样的闪亮方法。
按键可以在彩灯使用的时候选择不同的亮法,使彩灯流动的方向改变,键一可以使彩灯由上而下开始流动,键二可以使彩灯停止,三号键可以使彩灯由上而下流动,四键则可以使彩灯由下而上流动。
通过按键能方便使用者选择节日彩灯的开启、流动方向和停止。
2.2方案二
利用模电原理设计,电路用数字电路完成。
结构复杂,以RY169电路为核心,加上发光二极管的特性以及继电器的原理构成,故障系数大,不易调试,成本可能较高。
2.3方案选择
利用单片机设计电路,由于使用软硬件结合的方式代替了数字电路的复杂性,所以电路结构简单、调试也相对方便,经济实惠。
与第二种方案比较优点是非常明显的。
此彩灯精度较高、造价低廉、装调容易。
经过比较考证后我们选第一种方案来完成本次设计。
三、硬件电路设计与分析
1.定时与复位模块
1.1时钟电路
单片机的时钟信号用来提供单片机片内各种微操作的时间基准,复位操作则使单片机的片内电路初始化,使单片机从一种确定的初态开始运行。
(1)时钟电路89C51单片机的时钟信号通常用两种电路形式得到:
内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲,如图2所示。
图2时钟与复位电路仿真图
图2中,电容器C2,C3起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。
晶振频率的典型值为12MHz,采用6MHz的情况也比较多。
内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。
1.2复位电路
当AT89C51单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
根据应用的要求,复位操作通常有两种基本形式:
上电复位和上电或开关复位。
上电复位要求接通电源后,自动实现复位操作。
常用的上电复位电路电容C1和电阻R19对电源+5V来说[20]构成微分电路。
上电后,保持RST一段高电平时间,由于单片机内的等效电阻的作用,不用图中电阻R1,也能达到上电复位的操作功能,如图2所示。
开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位常用的上电或开关复位电路如图2所示。
上电后,由于电容C3的充电和反相门的作用,使RESET持续一段时间的高电平。
当单片机已在运行当中时,按下复位键K后松开,也能使RESET为一段时间的高电平,从而实现上电或开关复位的操作。
2.按键模块与输出模块
本设计使用发光二极管作为彩灯使用。
发光二极管具有单向导电性。
当反向电压增加到某一定数值时,反向电流急增,产生反向击穿。
二极管的工作原理:
晶体二极管为一个由p型半导体和n型半导体形成的p-n结,在其界面处两侧形成空间电荷层,并建有自建电场。
当不存在外加电压时,由于p-n结两边载流子浓度差引起的扩散电流和自建电场引起的漂移电流相等而处于电平衡状态。
图3按键及输出模块仿真图
二极管最重要的特性就是单方向导电性。
在电路中,电流只能从二极管的正极流入,负极流出。
下面通过简单的实验说明二极管的正向特性和反向特。
(1)正向特性。
在电子电路中,将二极管的正极接在高电位端,负极接在低电位端,二极管就会导通,这种连接方式,称为正向偏置。
必须说明,当加在二极管两端的正向电压很小时,二极管仍然不能导通,流过二极管的正向电流十分微弱。
只有当正向电压达到某一数值(这一数值称为“门槛电压”,锗管约为0.2V,硅管约为0.6V)以后,二极管才能直正导通。
导通后二极管两端的电压基本上保持不变(锗管约为0.3V,硅管约为0.7V),称为二极管的“正向压降”。
(2)反向特性。
在电子电路中,二极管的正极接在低电位端,负极接在高电位端,此时二极管中几乎没有电流流过,此时二极管处于截止状态,这种连接方式,称为反向偏置。
二极管处于反向偏置时,仍然会有微弱的反向电流流过二极管,称为漏电流。
当二极管两端的反向电压增大到某一数值,反向电流会急剧增大,二极管将失去单方向导电特性,这种状态称为二极管的击穿。
二极管的主要参数用来表示二极管的性能好坏和适用范围的技术指标,称为二极管的参数。
不同类型的二极管有不同的特性参数。
四、软件电路设计与分析
1.原理图
图3节日彩灯控制器的设计原理仿真图
2程序设计
2.2程序设计
程序设计(Programming)是指设计、编制、调试程序的方法和过程。
它是目标明确的智力活动。
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。
因此,软件设计在微机控制系统设计中占重要地位。
对于本系统,软件也占有重要的地位。
在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。
数据处理包括:
数据的采集、数字滤波、标度变换等。
过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。
把一个程序分成
图4总程序框图
具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。
所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。
模块程序设计法的主要优点是:
(1)单个模块比起一个完整的程序易编写、调试及修改。
(2)程序的易读性好。
(3)程序的修改可局部化。
(4)模块可以共存,一个模块可以被多个任务在不同条件下调用。
(5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
本系统软件采用模块化结构,由主程序,正向流动、反向流动和延时等子程序构成。
2.2程序
#include
#include
#defineGPIO_KEYP3
unsignedcharKeyValue;//储存按键值
/*函数功能:
流水灯延时*/
voidled_delay(void)
{
unsignedchari,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++)
;
}
/*函数功能:
软件消抖延时*/
voiddelay30ms(void)
{
unsignedchari,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
;
}
voidstart(void)
{
while
(1)
{
GPIO_KEY=0xfe;//第一个灯亮
led_delay();
GPIO_KEY=0xfd;//第二个灯亮
led_delay();
GPIO_KEY=0xfb;//第三个灯亮
led_delay();
GPIO_KEY=0xf7;//第四个灯亮
led_delay();
GPIO_KEY=0xef;//第五个灯亮
led_delay();
GPIO_KEY=0xdf;//第六个灯亮
led_delay();
GPIO_KEY=0xbf;//第七个灯亮
led_delay();
GPIO_KEY=0x7f;//第八个灯亮
led_delay();
}
}
/*函数功能:
正向流水点亮LED*/
voidforward(void)
{
while
(1)
{
GPIO_KEY=_crol_(GPIO_KEY,1);//将GPIO_LED左移一位
led_delay();
}
}
/*函数功能:
反向流水点亮LED*/
voidbackward(void)
{
while
(1)
{
GPIO_KEY=_cror_(GPIO_KEY,1);//将GPIO_LED右移一位
led_delay();
}
}
/*函数功能:
关闭所有LED*/
voidstop(void)
{
P1=0xff;
}
/*函数功能:
闪烁点亮LED*/
voidflash(void)
{
while
(1)
{
P1=0xff;
led_delay();
P1=0x00;
led_delay();
}
}
/*函数功能:
键盘扫描子程序*/
voidKeyDown(void)
{
chara=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!
=0x0f)//读取按键是否按下
{
Delay10ms();//延时10ms进行消抖
if(GPIO_KEY!
=0x0f)//再次检测键盘是否按下
{
GPIO_KEY=0X0F;//测试列
switch(GPIO_KEY)
{
case(0X07):
KeyValue=0;break;
case(0X0b):
KeyValue=1;break;
case(0X0d):
KeyValue=2;break;
case(0X0e):
KeyValue=3;break;
}
GPIO_KEY=0XF0;//测试行
switch(GPIO_KEY)
{
case(0X70):
KeyValue=KeyValue;break;
case(0Xb0):
KeyValue=KeyValue+4;break;
case(0Xd0):
KeyValue=KeyValue+8;break;
case(0Xe0):
KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!
=0xf0))//按键松手检测
{
Delay10ms();
a++;
}
}
}
}
/*函数功能:
主函数*/
voidmain(void)//主函数
{
while
(1)
{
KeyDown();
switch(KeyValue)
{
case0:
forward();
break;
case1:
backward();
break;
case2:
stop();
break;
case3:
flash();
break;
case4:
start();
break;
}
}
}
五、结论与心得
1.结论分析
1.1结论
与市面上大多数的彩灯相比,该种彩灯具有更好的灯光装饰效果,性价比更高,与普通的全硬件彩灯相比具有更好的经济效益。
应用主控模块输出的控制信号去控制灯管内的板模块工作,使得产品性能稳定,便以安装容易操作。
由于控制程序存储在89C51单片机的电可擦除Flash闪存EPROM中,如果用户需要更改系统的亮灯模式,无须改变系统硬件电路,只需修改其中程序即可,是一种很有发展前途的彩灯控制器。
1.2设计与调试问题及解决方法
一开始我们利用网络查找资料,但是网上的资料不全面并非常的凌乱,手续非常复杂。
后来我们着手去图书馆找资料,我们发现图书馆找资料有很多优势,其中资料分类分的很清晰,找的资料书上的内容都比较全面,还有就是在运算化简的时候花费了好久,通过这次找的资料的经历,我熟悉了一些与电子相关的网站,而在图书馆里也知道电子方面书籍的大概位臵,以及查找使用图书馆资料方法,并且在极大提高了我的专业知识水平,拓宽了我的知识面。
还有我在调试时应注意的一些常识:
1、作品要轻拿轻放。
2、调试之前要熟悉各种仪器的使用方法,并仔细加以检查,避免由于仪器使用不当或出现故障而作出错误判断。
3、测试仪器和被测电路应用有良好的共地,只有使仪器和电路之间建立一个公共的参考点,测试的结果才是准确的。
4、调试过程中,发现器件或接线有问题需要更换或修改时,应关断电源,持更换完
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 语言 节日 彩灯 控制器 设计