彩灯循环控制系统设计 精品
彩灯控制器

七进制计数器®--Q0逻辑电路数字电路课程设计彩灯控制器的设计1设计要求设计一个彩灯控制器。
1•要求能控制红、黄、蓝、绿各色LED灯循环闪烁,并可变换闪烁图案。
2.彩灯白天不亮,夜晚自动亮。
2设计方案原理框图如图1所示1、控制红、黄、蓝、绿各色LED灯循环闪亮,则按照红一红黄一黄一黄蓝一蓝一蓝绿一绿一红的方式循环闪亮。
彩灯的灯灭有七种状态,可设计一个七进制的计数器,用计数器的状态来控制彩灯的亮灭;计数器应能够自启动。
2、用555定时器构成多谐振荡器,作为脉冲信号源;3、用光敏器件(光敏电阻、光敏二极管等)来检测周围环境的光强,以区分白天和夜晚,实现彩灯白天不亮、晚上自动亮的控制要求。
光敏器件检测电路整体结构为脉冲信号源输出一定频率的脉冲给七进制计数器,七进制计数器受脉冲控制输出Q3、Q2、QI、Q0的不同状态,从而控制逻辑电路,逻辑电路输出控制彩灯的亮灭,达到要求。
根据所学内容,可分别确定所需元件,脉冲信号源有很多种,但要频率可控,可采用CB555定时器组成的多谐振荡器完成,多谐振荡器是常用的一种矩形波发生器,原理框图脉冲信号源通过改变R1和R2的电阻值即可改变其输出矩形波的频率。
七进制计数器可通解原理。
①脉冲信号源DT5q=(R1+R2)/(R1+2R2)=2/3T=1ms 令C1=0.1UF求得TD-Ijnim.555TIIVIER RATEDC1O.luFd.oi|jr74LS16QDr 1—*|U2AI 17WN过74LS160型同步十进制计数器改接而得。
逻辑电路可使用74LS138型译码器控制彩灯,最后通过与非门获得彩灯的逻辑控制关系。
74LS160型同步十进制计数器改接成七进制计数器的同时,在七进制计数器的输出端接一个数码管,仿真时可检测十进制改接成七进制的正确性,以及灯亮灯灭和计数器的输出如何对应,更好地理脉冲信号源②七进制计数器采用置数法改接74LS160同步十进制计数器上图是由74LS160型同步十进制计数器改接而成的七进制计数器。
循环彩灯控制系统实验报告

循环彩灯控制系统实验报告一、设计要求1、程序中由3个按钮控制每按下一个按钮都会出现不同的彩灯循环现象二、硬件电路设计1、单片机最小系统(2)发光二极管的电路三、软件设计(一)1、在Keil uVision4.LNK上写好程序后通过STC_ISP_V480.exe.lnk和USB口输入到reg52.h单片机中按下开关蓝色指示灯亮,然后按下P3^7按钮发光二极管从左往右依次点亮;2、①在不复位的情况下按下P3^6时发光二极管可以做往返运动依次点亮②在复位时按下P3^6发光二极管是从右往左依次点亮的;3、①在不复位的情况下按下P3^5时发光二极管可以在从左往右或者从右往左点亮后1,3,5,7与2,4,6,8交替闪烁(在看先点亮P3^6还是P3^5 来实现从左还是从右开始循环)②在复位时按下P3^5发光二极管是作1,3,5,7与2,4,6,8交替闪烁。
(二)说明(“0”“1”“2”“3”“4”“5”“6”“7”按键P3^7 0X7F 0XBF 0XDF 0XEF 0XF7 0XFB 0XFD 0XFE 复位P3^6 0XFE 0XFD 0XFB 0XF7 0XEF 0XDF 0XBF 0X7F 复位P3^5 0X7F/0XFF 0XFF/0XBF0XDF/0XFF0XFF/0XEF0XF7/0XFF0XFF/0XFB0XFD/0XFF0XFF/0XFE复位8421码10=A 11=B 12=C 13=D 14=E 15=F四、系统测试步骤1:新建工程→New Project→选择单片机型号→Atmel→AT89C52取名→保存2:新建文档→New file→取名→保存(—3个按键控制两种LED现象.C)3:点右键→Add file to group→选择(—3个按键控制两种LED现象.C)4:点工程右键→options “output”(√)create hex file5产出hex档→编译按钮(↓)(↓↓)(↓↓↓)STC下载软件1:选择单片机型号“STC89C52RC”2:打开文件→(流水灯.hex)3:选择COM口(裝置管理員)4:点下载按鈕→开启电源按钮→“OK 已加密”附录源程序清单#include <reg52.h>#define uint unsigned int#define uchar unsigned charsbit key1 =P3^7; //第一个按键sbit key2 =P3^6; //第二歌按键sbit key3 =P3^5; //第三个按键uchar A1=0,A2=0,A3=0;void delay(uint z){uint i,j;for(i=0;i<z;i++)for(j=0;j<110;j++);}void O_to_E() //1,3,5,7与2,4,6,8交替闪烁{P0=0Xaa;delay(200);P0=~0Xaa;delay(200);}{if(!key1){delay(10); //延时if(!key1)A1=1;}if(!key2){delay(10); //延时if(!key2)A2=1;}if(!key3){delay(10); //延时if(!key3)A3=1;}}void main(){uchar i;while(1){if(A1){for(i=0;i<8;i++) //从左往右亮,每盏灯亮一次{P0=~(0x7f>>i);delay(100);}}if(A2){for(i=0;i<8;i++) //从右往左亮,每盏灯亮一次{P0=~(0xfe<<i);delay(100);}}if(A3){O_to_E(); //1,3,5,7与2,4,6,8交替闪烁}}}附加图片(因为手机问题从左往右跟从右往左还有左右往返的看不出来所以就拍了2张图片)1、从左往右、从右往左、往返2、//1,3,5,7与2,4,6,8交替闪烁超。
彩灯循环控制电路的课程设计

彩灯循环控制电路的设计1.技术指标:设计一种利用发光二极管作为彩灯指示,实现发光二极管依次点亮形成移动的光点,并不断循环的彩灯循环控制电路,要求可以实现彩灯循环的时间可以调节。
2设计方案及其比较:2.1方案一:原理设计:设计分为两个部分,一是始终脉冲发生部分,另外是彩灯的显示部分。
2.1.1图一原理图一555真值表:对于脉冲信号产生的设计是:此设计用T=1.1RC来控制脉冲触发的脉冲时间。
4.1.2Cd4017下图为CD4017引脚图及真值表CD4017引脚功能描述CP1’:进位脉冲输渊CP0:时钟输入端CR:清除端INH:禁止端Q0-Q9 计数脉冲输出端VDD:正电源VSS:地CD4017工作条件电源电压范围:3V-15V输入电压范围:0V-VDD工作温度范围M 类:55℃-125℃E 类:40℃-85℃极限值电源电压:-0.5V-18V输入电压:-0.5V-VDD 十0.5V 输入电流:±10mA贮存温度:-65℃-4.1.3因此此设计方案可以为:这个方案已经把很大部分的脉冲发生器和方案二左边开始:排电阻,发光二极管,传输门,89c51芯片,89c51的编程代码:#include<reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar temp,num,num1;void delay(uint);void main(){temp=0xfe;while(1) // 外部循环{for(num=0;num<100;num++){P0=temp; //初始状态使P0口的灯最后一个亮,其余灭temp=_cror_(temp,1); //使亮的灯左移。
P0=temp; //再次回到初始状态delay(15); // 延时15个周期,即使灯持续亮15个周期时间。
循环彩灯控制电路设计

循环彩灯控制电路设计1. 任务背景在日常生活和娱乐活动中,我们经常会看到各种颜色鲜艳、循环变化的彩灯。
通过控制电路的设计,可以实现彩灯的自动循环变换,提供更加丰富多样的视觉效果。
本文将介绍循环彩灯控制电路的设计原理、硬件实现和软件编程等方面的内容。
2. 设计原理循环彩灯控制电路的设计原理基于以下关键要素:2.1. 电源供电循环彩灯的运行离不开稳定的电源供应。
一般情况下,采用直流电源供电,电压稳定在5V或12V。
2.2. LED彩灯选择适合的LED彩灯作为光源,一般选择RGB LED灯。
RGB LED灯具有红、绿、蓝三种基本颜色的发光二极管,可以通过调节电压来调整不同颜色的亮度,同时通过控制三个通道的电压来生成各种颜色。
2.3. 控制电路控制电路负责通过控制信号来实现彩灯的循环变换。
一般常用的控制电路有微控制器、Arduino等。
2.4. 软件编程使用软件编程来控制彩灯的循环变换。
通过编写程序来控制控制电路的输出信号,实现彩灯颜色和模式的切换。
3. 硬件实现循环彩灯控制电路的硬件实现需要以下元件:•电源模块:用于提供稳定的直流电源,确保彩灯正常运行。
•RGB LED灯:作为光源,提供不同颜色的发光。
•控制电路模块:负责接收控制信号,并控制LED灯的亮度和颜色。
•控制设备:如Arduino等,用于编程和控制控制电路模块。
3.1. 连接电源将电源模块连接到电网,确保提供稳定的电源供应。
根据实际需求选择适当的电压和电流。
3.2. 连接RGB LED灯将RGB LED灯的各个引脚依次连接到控制电路模块的输出端口。
一般情况下,红色针脚连接到红色通道,绿色针脚连接到绿色通道,蓝色针脚连接到蓝色通道。
3.3. 连接控制电路模块将控制电路模块的输入端口连接到控制设备上,如Arduino的数字输出引脚。
4. 软件编程软件编程是实现彩灯循环变换的关键步骤。
以下是一个示例程序,使用Arduino编写。
void setup() {// 设置控制引脚为输出模式pinMode(redPin, OUTPUT);pinMode(greenPin, OUTPUT);pinMode(bluePin, OUTPUT);}void loop() {// 红色亮digitalWrite(redPin, HIGH);digitalWrite(greenPin, LOW);digitalWrite(bluePin, LOW);delay(1000); // 延迟1秒// 绿色亮digitalWrite(redPin, LOW);digitalWrite(greenPin, HIGH);digitalWrite(bluePin, LOW);delay(1000); // 延迟1秒// 蓝色亮digitalWrite(redPin, LOW);digitalWrite(greenPin, LOW);digitalWrite(bluePin, HIGH);delay(1000); // 延迟1秒}通过上述程序,可以实现彩灯的红、绿、蓝三种颜色之间的循环变换。
数电课程设计彩灯循环控制电路设计

数电课程设计--彩灯循环控制电路设计《数字电子技术课程设计》报告——彩灯循环控制电路设计1.课程设计目的1.1巩固和加强“数字电子技术”课程的理论知识的理解和应用。
1.2独立设计出比较复杂的实用数字电子线路。
1.3提高电子电路实验技能及Multisim10仿真软件的使用能力。
1.4通过数字电子线路的设计、安装和调试,初步掌握数字电子线路单元电路的分析与设计方法。
1.5巩固所学理论,提高动手能力、创新能力和综合设计能力2.课程设计要求2.1所设计彩灯要能够自动循环点亮。
2.2彩灯循环显示且频率快慢可调。
3.3控制电路具有8路以上输出。
3.电路组成框图电源接入↓555定时电路↓计数器电路↓译码器电路↓彩灯演示电路4.元器件清单器材数量555 time rated 174HC163D_6V 174HC154DW_6V 1彩色发光二极管 8100Ω电阻 1800k电阻 25V电压源 1100nF可变电容 110nF电容 15.各功能块电路图5.1时钟信号产生电路通过调节C1来调节555定时器输出频率。
VCCOUTU3555_TIMER_RATEDGNDDIS RSTTHR CONTRI R41mΩR51mΩC210nF 14C1100nF Key=A45%1620VCC5.2计数电路使74HC163D 计数器实现000至111的计数循环。
U174HC163D_6VQA 14QB 13QC 12QD 11RCO15A 3B 4C 5D 6ENP 7ENT 10~LOAD 9~CLR 1CLK2U274HC154DW_6VO23O34O56O45O67O12O78O01O89O910O1011O1113O1214O1315O1416O1517A 23B 22C 21D20~G118~G219VCCOUTU3555_TIMER_RATEDGNDDIS RST THR CONTRI 13910115.3译码显示电路用100Ω连接在5V 电源与LED 灯之间,来保证LED 灯上通过的电流处于最大电流内,用74HC154来实现计数器输出数字的译码,从而使对应灯亮起。
数电课程设计-循环彩灯控制器

资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载数电课程设计-循环彩灯控制器地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容循环彩灯设计要求及思路设计1.1 设计要求(1)共有红、绿、黄3色彩灯各9个,要求安一定顺序和时间关系运行。
(2)动作要求:先红灯,后绿灯,再黄灯,分别按0.5S的速度跑动一次,然后,全部红灯亮5S,再黄灯,后绿灯,各一次。
以此循环。
(3)对各组灯的控制,要求有驱动电路。
(4)对跑动电路,可以每3个一组,交叉安装,分别点亮每一组,利用视觉暂停,达到跑动的效果。
1.2 设计思路提供的元件有4017——十进制计数器,555定时器。
3个一组红、黄,绿灯依次0.5s跑动循环电路9个一组红、黄,绿灯各持续亮5s跑动图1.1根据此框架图设的实现方案该任务要求:先红灯,后绿灯,再黄灯,分别按0.5S的速度跑动一次,然后,全部红灯亮5S,再黄灯,后绿灯,各一次。
以此循环。
根据此要求电路总体上可以分为三部分:一部分电路为控制0.5s的跑动。
一部分电路为控制5s 的跑动。
一部分电路为实现这两种跑动的循环。
因些可以选用一个555多谐振荡器(周期为0.5秒,然后使用4017实现十分频,使周期为5秒)用来控制跑动的速度,再选两个4017芯片,因为4017芯片在正常工作下,连续送入时钟脉冲时,其十个输出端会依次输出高电平。
这样可以用一个4017芯片点亮0.5s的跑动,用一个4017芯片来点亮5s的跑动。
因为在两个周期恰好为10倍关心,故5s周期的4017的Q0端口可以实现控制0.5s周期的4017的开通与关闭,选用一个9014NPN改装成非门从而来实现循环功能,即用9014来控制4017芯片的开通和关闭,最后加上复位电路即可实现实验目的。
项目八广告牌循环彩灯PLC控制系统
二、相关知识
(一)功能指令概述
PLC的应用指令也称为功能指令,是指在完成基本逻辑控制、定时控制、顺序控制的基础上,PLC制造商为满足用户不断提出的一些特殊控制要求而开发的指令。PLC的应用指令越多,其功能就越强。一条功能指令相当于一段程序。
二、相关知识功能指Βιβλιοθήκη 的形式图8-2 功能指令的形式
(三)S7-200 CPU控制程序的构成
2.中断程序
(2)中断事件与中断指令。 ② 中断指令
梯 形 图
语 句 表
描 述
RETI
CRETI
从中断程序有条件返回
ENI
ENI
允许中断
DISI
DISI
禁止中断
ATCH
ATCH INT,EVNT
连接中断事件和中断程序
DTCH
DTCH EVNT
1.条件结束指令END与暂停指令STOP
(四)S7-200的程序控制指令
2.监控定时器复位指令
二、相关知识
S7-200的程序控制指令 监控定时器又称为看门狗(Watchdog),定时时间为500 ms,每次扫描时都被自动复位一次,正常工作时扫描周期小于500 ms,它不起作用。 WDR指令的使用
二、相关知识
(三)S7-200 CPU控制程序的构成
2.中断程序
(2)中断事件与中断指令。 ① 中断事件。
中 断 号
中 断 描 述
优先级分组
按组排列的优先级
8
端口 0:接收字符
通信(最高)
0
9
端口0:传输完成
0
23
端口0:接收信息完成
0
24
端口1:接收信息完成
设计2 彩灯循环控制
设计2 彩灯循环控制一、设计目的1. 设计PLC控制的彩灯循环系统;2.熟悉Step7—Micro/Win32编程软件的使用方法;3.熟悉移位指令、传送指令、定时器指令的使用方法;4.锻炼学生的程序设计能力、分析问题与解决问题的能力。
二、硬件系统设计1.硬件系统组成硬件系统由编程计算机(上位机)、S7-200PLC控制器(下位机、数字量输入/输出点为24入/16出)和彩灯循环(2)被控对象等组成,编程计算机(RS232通讯口)和S7-200PLC控制器(RS485通讯口)之间通讯采用PPI通讯模块。
彩灯循环(2)被控对象结构示意图如下所示。
2.定义I/O口地址分配表3.设计出硬件系统接线图三、控制内容及程序设计(一) 放射型彩灯控制1. 按下按钮K1,先内圈四盏灯同时点亮,后外圈所有灯同时点亮,定时时间自定,计数循环运行。
2. 按下按钮K2,先外圈所有灯同时点亮,后内圈四盏灯同时点亮,定时时间自定,循环运行。
3. 按下按钮K3,系统停止工作。
(二) 十字型彩灯控制1. 按下按钮K1,两排内十字彩灯同时点亮,过5S后熄灭的同时彩灯 L1、L4、L13、L16同时点亮,按此工作方式循环下去。
2.按下按钮K3,系统停止工作。
(三) 加深内容上述内容可采用功能指令及模块化程序设计,包括主程序、子程序和中断程序。
四、预习报告设计要求1.实验前,根据控制内容设计出系统的接线图、程序流程图、时序图;2.设计出控制程序,并创新出一个以上的彩灯循环(2)控制功能。
五、系统调试及问题分析1.实验中,先把事先设计好的控制程序输入编程计算机,编译无错误后(只说明编程语法无错误)下载到PLC的CPU中。
2.PLC控制器控制彩灯循环(2)运行,如果控制功能不满足要求,再进行控制程序调试(可在监控状态下),反复修改控制程序直到满足控制功能为止。
3. 在调试中所遇到的问题,要运用所学的理论知识或实践经验独立解决,逐步提高分析问题及解决问题的能力。
彩灯循环控制电路设计 精品
一、课程设计目的与要求设计一个循环可预置序列发生器,并用一控制彩灯的循环显示。
不同的预置产生不同的效果。
实现循环序列发生器和彩灯控制电路,使得彩灯按一定的规律循环显示。
假定循环规律为:L1—L8的状态是00001111(0表示灭,1表示亮),每隔一秒灯L1—L8的状态依次循环一位,即:设计控制电路,可自动预置4种不同的初状态,每隔64秒改变一种,并在这四种初状态循环,使得彩灯定时改变显示的效果,假定四种不同的初状态为:00001111,00010001,00110011,01110111二、电路组成框图时钟信号发生电路部分:振荡器有多种振荡器电路,其中(a )图为CMOS 非门构成的振荡器,(b )图为石英晶体构成的振荡器,(c )图为555构成的多谐振荡器。
CMOS 非门构成的振荡器的振荡周期T=1.4RC ,555构成的振荡器的振荡周期T=0.7(R 1+2R 2)C 。
我最终还是选择了555构成的振荡器,因为555使用起来方便、简单。
通过调节R1,R2和C1的大小调节振荡频率以达到1HZ 的秒钟连续脉冲图2CMOS非门构成的振荡器(a)图2石英晶体振荡器(b)图3 由555定时器构成的多谐振荡器循环序列发生器部分:3个74LS163构成循环序列发生器部分,由于是64秒改变一种状态,所以用二片74LS163组成一个64位加法计数器(按16ⅹ4进行把2个74LS163组装计数器),每循环一次64位产生一个进位输入到第三个74LS163,第三个74LS163是一个4位加法计数器,并通过它来控制预置控制电路中的4个73LS373的使能端,从而决定输入的每种初态。
详细的控制办法是:让第三个74LS16的输出00分别通过一个非门变成11再和头2个74LS163的进位一起通过一个三输入与非门变成低电平0加到初态为00001111的74LS373的使能端,这样就可以使器导通。
当前面的64位计数器在来一个进位时,00变成01,这样让1的那个输出端通过一个非门,然后和0的端口以及刚才的进位一起通过个与非门,是输出为0 节到初态为00010001的第二个74LS373的使能端,让其导通。
彩灯循环电路设计报告范文
彩灯循环电路设计报告范文1. 引言本文是关于彩灯循环电路的设计报告。
彩灯循环电路是一种将多个彩灯按照一定的循环方式点亮的电路。
该电路可以应用于各种场景,如节日庆典、建筑装饰等。
本报告将介绍彩灯循环电路的设计原理、实施步骤、材料和测试结果。
2. 设计原理彩灯循环电路由以下几个主要部分组成:- 电源:提供工作电压和电流。
- 控制器:控制每个彩灯单元的亮灭状态。
- 彩灯单元:独立的彩灯模块。
设计原理如下:1. 电源从交流电源中变换为所需的直流电压和电流。
2. 控制器接收外部信号或者根据设定的规则来控制每个彩灯单元的亮灭状态。
控制器可以是集成芯片或者微控制器。
3. 彩灯单元由发光二极管(LED)组成,通过控制器控制其亮灭状态。
3. 设计步骤彩灯循环电路的设计步骤如下:1. 确定需求:明确彩灯的规模和所需的循环模式。
2. 选择电源:根据彩灯的功率需求选择合适的电源。
3. 设计控制器电路:根据规定的循环模式设计控制器电路。
4. 选择彩灯单元:选择适合的发光二极管作为彩灯单元。
5. 连接电路:将电源、控制器和彩灯单元连接起来,并进行必要的电气隔离和保护。
6. 调试和测试:通过供电和控制器测试整个电路的功能和性能。
4. 材料完成彩灯循环电路需要以下材料:- 电源:交流电源变压器、整流电路、稳压电路。
- 控制器:集成芯片或者微控制器。
- 彩灯单元:发光二极管(LED)、电阻、连接线等。
- 连接线、电路板、电子元器件等。
5. 测试结果根据设计原理、设计步骤和材料列表,我们成功地完成了彩灯循环电路的设计和实施。
经过测试,我们得到了如下结果:1. 电路正常工作,电流和电压稳定。
2. 控制器可以根据设置的循环模式正确地控制彩灯单元的亮灭状态。
3. 彩灯单元的亮度和颜色符合预期。
6. 结论彩灯循环电路是一种将多个彩灯按照一定的循环方式点亮的电路。
通过合理地选择电源、设计控制器电路和选择彩灯单元,我们成功地实现了彩灯循环电路的设计和实施。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
彩灯循环控制系统第1章绪论1.1 单片机的简介单片机是单片微型计算机的简称,也就是把微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。
这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。
由此来看,单片机是可单独地完成现代工业控制所要求的智能化控制系统,这是单片机最大的特征。
1.2 单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:1.在智能仪器仪表上的应用2.在工业控制中的应用3.在家用电器中的应用4.在计算机网络和通信领域中的应用5.单片机在医用设备领域中的应用1.3 单片机的发展趋势现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:1.低功耗CMOS化2.微型单片化3.主流与多品种共存第2章彩灯硬件电路框架设计2.1 彩灯功能描述本次主要完成功能有:(1)当按下开关KEY1时,彩灯依次一个一个点亮。
(2)当按下开关KEY2时,彩灯每两个间隔点亮。
(3)当按下开关KEY3时,彩灯灯全部闪烁。
(4)当按下开关(顺序)时,以上3种点亮方式依次执行一次。
(5)当按下暂停开关时,保持彩灯当前状态,松开开关时,继续运行。
(6)当按下中断开关时,说明彩灯系统出错了,所有红灯亮,喇叭报警。
(通过中断假设出故障)(7)当按下复位开关时,彩灯系统恢复到最初状态。
2.2 硬件电路设计框架根据设计要求,彩灯硬件电路框图设计如图2-1所示:图2-1 彩灯设计框图从框图中可以看出本次单元电路包括了由32只不同颜色组成的发光电路、12MHz晶振组成的晶振电路、复位电路、错误报警电路、开关电路。
2.3 系统硬件单元电路设计及论证2.3.1 晶振电路单片机工作所需要的时钟信号有两种产生方式,即内部时钟方式和外部时钟方式。
图1是内部时钟方式,改图中电容C1和C2取33PF ,晶体的振荡频率取12MHz ,晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。
其实际连接如图2-2所示:图2-2 晶振电路2.3.2 复位电路复位电路如图2-3所示。
当单片机一上电,立即复位。
电容C 和电阻实现上电自动复位。
复位也是使单片机推出低功耗工作方式而进入正常状态的一种操作。
图2-3 复位电路2.3.3 错误报警电路错误报警电路(如图2-4)的设计仅仅由一个发声装置构成,其主要的作用是当系统发出错误中断信号时,向p0.0口提供一个高电平,报警电路进行错误报警。
图2-4 错误报警电路2.3.4 开关电路开关电路(如图2-5)的设计由6个独立的开关按钮组成,它们分别提供6个不同的中断信号,使彩灯完成不同的闪烁效果。
图2-5 开关电路2.3.5 发光电路红、黄、绿、蓝等色彩的发光二极管32只,各接一个限流电阻便设计出如图2-6所示的彩灯发光电路。
图2-6 部分彩灯连接原理图第3章彩灯系统软件设计3.1 程序设计框图本次程序设计采用的是C 语言程序设计,其设计框图如图3-1所示:图3-1 程序设计框图3.2 子程序设计和功能介绍3.2.1 延时程序void delay(uint z) {uint x,y;for(x=z;x>0;x--)for(y=120;y>0;y--); }程序中定义了一个返回值为空的delay 函数,里含一个形参——无符号整型变量z ,还定义了无符号整型变量x 、y ,通过一个二重for 循环,完成多次空操作,从而实现延时功能。
N3.2.2 初始化函数void init()//定义一个返回值为空的init函数{EA=1;//开放所有中断EX0=1;//允许外部中断0中断IT0=1;//外部中断0的中断触发方式控制位置1,设置外部中0为边沿触发方式ET0=1;//允许T0中断(定时器/计数器T0的输出中断允许位)TR0=0;//停止定时器/计数器0TH0=(65536-30000)/256;TL0=(65536-30000)%256;EX1=1;//允许外部中断1中断IT1=0;//将外部中断1的中断触发方式控制位置0,即设置外部中断1为电平触发方式PX1=1;//将外部中断1中断优先级控制位置1ET1=1;//允许T1中断TR1=0;//停止定时器/计数器1TH1=(65536-50000)/256;TL1=(65536-50000)%256;P1=0xFF;P2=0XFF;//将P1口和P2口置1,在P1口和P2口引脚时,应先向锁存器写"1"temp1=0x7F;temp2=0x7F;t=8;aa=0;bb=0;key_int1=1;key1=1;key2=1;key3=1;key4=1;temp_int1=key_int1;temp_key1=key1;temp_key2=key2;temp_key3=key3;temp_key4=key4;beep=1;flag=0;//分别对temp1、temp2、t、aa、bb、key_int1、key1、key2、key3、key4、temp_int1、temp_key1、temp_key2、temp_key3、temp_key4、beep、flag 赋值}该函数名为init,该段程序主要是对中断优先级、一些中断控制位、某些变量等进行初始化赋值。
3.2.3 彩灯循环方式控制程序1.循环方式1void FUN1(){t=8;temp1=0X7F;temp2=0X7F; //对t、temp1、temp2进行赋值while(t!=0)//while循环,若t不等于0循环继续,否则,跳出循环{t--;//变量t自减1temp1=_crol_(temp1,1);delay(500);//调用延时子函数P2=0xFF; //对p2口置1P1=temp1; //将temp1的值赋给p1口temp2=_crol_(temp2,1); //将temp2右移1位delay(500);//调用延时子函数P1=0xFF; //对p1口置1P2=temp2; //将temp2的值赋给temp2}P1=0x0ff;P2=0x0ff; //分别对P1、p2口置1}设计的此段程序的功能是实现依次一个一个的被点亮。
2.循环方式2void FUN2(){temp1=0xAA;temp2=0xAA; //将二进制数10101010赋给temp1、temp2 TR0=1; //启动定时器/计数器0while(TR0==1);//while循环,当TR0等于1时,进行循环P1=0x0ff;P2=0x0ff; //对p1口和p2口置1}设计此段程序实现的功能是每隔两个间隔点亮一个灯。
3.循环方式3void FUN3(){temp1=0x0;temp2=0x0; //将0赋给temp1、temp2,驱动彩灯发光TR1=1; //启动定时器/计数器1while(TR1==1); //while循环,若TR1等于1,进行循环P1=0x0ff;P2=0x0ff; //对p1口和p2口置1}设计此段程序是为了实现彩灯的全部闪烁。
3.2.4 中断服务程序1.外部中断0服务程序void _EX0_() interrupt 0{while(1) //while循环,条件真即为1,便循环{P1=0x77;P2=0xee; //对p1口和p2口赋值beep=!beep;//对beep的值进行取反delay(100);//调用延时函数}}此段程序定义了一个返回值为空的_EX0_函数,关键字interrupt后面的0表示终端号,即表示的外部中断0,中断向量地址为0003H。
2.定时器0中断服务程序void _ET0_() interrupt 1{TH0=(65536-50000)/256;//将计算出的值赋给定时器0的高8位TL0=(65536-50000)%256;// 将计算出的值赋给定时器0的低8位aa++; //aa的值自加1if(aa!=20)//判断aa的值是否等于20,若不得,则执行循环{P1=temp1;P2=temp2;//将temp1、temp2的状态值赋给temp1、temp2temp1=_cror_(temp1,1);temp2=_cror_(temp2,1);//temp1、temp2右移1位delay(500); //调用延时函数}else //当aa的值等于20时{aa=0;//将0赋给aaTR0=0;//停止定时器/计数器0TH0=(65536-50000)/256;TL0=(65536-50000)%256;}}此段程序定义了一个返回值为空的_ET0_函数,关键字interrupt后面的1表示终端号,即表示定时器0,中断向量地址是000B H。
3.外部中断1服务程序void _EX1_() interrupt 2{PX1=0;PX0=1;//设置外部中断1、外部中断0的优先级temp_int1=key_int1;//将key_int1的值赋给temp_int1while(temp_int1==0)//while循环,若temp_int1的值等于0,循环{temp_int1=key_int1;//将key_int1的值赋给temp_int1 }PX0=0;PX1=1;//设置外部中断0、外部中断1的优先级}此段程序定义了一个返回值为空的_EX1_函数,关键字interrupt后面的2表示终端号,即表示外部中断1,其中断向量地址为0013H。
4.定时器1中断服务程序void _ET1_() interrupt 3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;bb++;if(bb!=20){P1=temp1;P2=temp2;temp1=~temp1;temp2=~temp2;delay(500);}else{bb=0;TR1=0;TH1=(65536-50000)/256;TL1=(65536-50000)%256;}}此段程序定义了一个返回值为空的_ET1_函数,关键字interrupt后面的3表示终端号,即表示定时器1,其中断向量地址为001BH。