广告灯(LED灯左移右移)电路设计
- 格式:docx
- 大小:439.20 KB
- 文档页数:15
用移位寄存器设计彩灯控制电路寄存器及移位寄存器是数字系统常见的重要部件,除在计算机中广泛用于存放中间数据外,它在其他方面的应用,目前在有关教材中只介绍可构成环形或扭环形计数器。
但这种计数器容量小,且一般不能自行启动。
所以,学生对于它的应用没有直观的印象,在学习中也会因为抽象和空洞而难以掌握。
我将移位寄存器设计成彩灯控制电路。
由于电路本身实用,如果再通过计算机仿真,学生就可以直观地看到循环彩灯控制效果,从而产生浓厚兴趣。
如果稍微改动控制电路,就可以改变电路的不同工作状态,控制彩灯变幻出不同的闪烁效果。
这对于培养学生发散思维能力可以起到一定作用。
控制电路是由学生学习过的单元电路组合而成的。
电路原理容易理解,通过讲解可以培养学生综合应用知识的能力。
下面是我设计的控制电路。
图1是用集成移位寄存器74194接成环形结构。
由于该电路置初态后,在移位脉冲输出端为1的彩灯将发光。
如果彩灯按图1方式排列,彩灯就会产生沿顺时针跑动的效果。
如果从分频器输出端,引出一对互补信号,直接控制S0 、S1端,如图2,那么图中彩灯,将按一定周期沿着顺转或反转自动切换。
如果将移位寄存器74194接成扭环形结构(如图3),那么电路就有下列八种循环状态:因此,输出端彩灯就有八种变幻状态。
图3中的彩灯结构将按一定周期从内圈到外圈或从外圈到内圈自动切换,变幻出八种发光状态。
如果想要使彩灯变幻出更多状态,只要用多片芯片连接使用,工作状态就可随意增加。
图4是采用2片74194接成扭环形结构的移位寄存器。
这种寄存器有十六种循环状态,所以图4电路中彩灯可以变幻出十六种发光状态,闪烁效果更好,可以用做广告牌边框灯光设计。
如果用条形光柱代替彩灯,就可以作为广告牌的背景闪烁灯光使用,如图5,从而增强广告的感染力。
上述几个控制电路,各工作状态的变化速度都可以通过改变图中可变电阻R的方法来实现,调节十分方便。
(电路已全部通过计算机仿真)图1图2图3图4图5。
一.【设计题目】:采纳外部中断方式操纵广告灯1.设计要求:采纳外部中断方式操纵广告灯,第一用8个彩灯显示作先左移8次,再往右移8次,然后按以上规律来回执行,可是每来一个外部触发,上述规律就要暂停运行,将目前彩灯的状态闪烁5次,以后再继续按上述规律运行。
二.【设计步骤】1.引言单片机在咱们日常生活中有着重要的做用,这次课程设计我就选了一个在生活中到处可见的广告灯来进行程序的编写及设计。
在这次设计中我要紧用到1片80C51的芯片,8个发光二极管,8个电阻,2个电容,1个按键sw等80C51的四个端口都能够作为通用的输入/输出(I/O)口,P0口作为输出口能驱动8个LSTTL输入,P一、P二、P3口输出缓冲器能驱动4个LSTTL。
2.设计内容(1)中断系统原理:①与中断有关的几个特殊功能寄放器●中断许诺寄放器IE。
中断许诺寄放器IE是一个SFR寄放器,用户通过对其中一个或某些位进行设置来操纵中断的开放或禁止,操纵CPU中断的开放或禁止,操纵某个或某些中断的开放和禁止。
●中断优先级操纵寄放器IP。
中断优先级操纵寄放器IP是用于操纵中断响应优先级别的SFR,用户能够依照需要对它的某些位进行操纵,从而设置某个或某些中断源响应优先级别的高低。
●按时操纵寄放器TCON。
对TCON中的位IT0和IT1进行设置,能够设置外部中断的触发方式,将IT0(或IT1)设置为1表示外部中断0(或外部中断1)为负跳变触发,设置为0表示外部中断0(或外部中断1)为低电平触发。
②初始化编程。
初始化编程的目的是为了设置中断系统的工作情形,通过以下指令实现:MOV IE,#data ;设置中断许诺MOV IP,#data ;设置中断优先级别③.外部中断方式操纵广告灯的实验线路连接图如以下图(1)所示:(2)硬件电路硬件电路如以下图(2)所示,P1口接8个发光二极管,按键sw为触发开关,按键sw每按下就从80C51的INT0引脚输入一个低电平。
按键控制LED 灯左右移动#include <reg51.h> //此文件中定义了51的一些特殊功能寄存器#include <intrins.h>sbit K1 = P1^0; //对应按钮K1sbit K2 = P1^1; //对应按钮K2#define GPIO_LED P0 //led使用P0口void Delay10ms(unsigned int c); //延时10msunsigned char Key_Scan();void main(void){unsigned char ledValue, keyNum;ledValue = 0x01;while (1){keyNum = Key_Scan(); //扫描键盘if (keyNum == 1) //如果键值返回1{ledValue = _crol_(ledValue, 1); //左循环}else if (keyNum == 2){ledValue = _cror_(ledValue, 1); //右循环}GPIO_LED = ledV alue;//点亮LED灯}}unsigned char Key_Scan(){unsigned char keyValue = 0 , i; //保存键值//--检测按键1--//if (K1==0) //检测按键K1是否按下{Delay10ms(1);//消除抖动if (K1==0) //再次检测按键是否按下{keyValue = 1;i = 0;while ((i<25) && (K1==0)) //检测按键是否松开{Delay10ms(1);i++;}}}//--检测按键2--//if (K2==0) //检测按键K1是否按下{Delay10ms(1);//消除抖动if (K2==0) //再次检测按键是否按下{keyValue = 2;i = 0;while ((i<50) && (K2==0)) //检测按键是否松开{Delay10ms(1);i++;}}}return keyValue; //将读取到键值的值返回}void Delay10ms(unsigned int c) //误差0us{unsigned char a, b;for (;c>0;c--){for (b=38;b>0;b--){for (a=130;a>0;a--);}}}。
任务三:采用两个外中断的LED彩灯控制一、任务要求P0端口作为输出口,外接8只LED,P3.2外接按键K1,P3.3外接按键K2。
编写程序,没有按下任何按键时,LED隔灯闪烁,当按键K1为奇数次时,LED进行左移流水->右移流水显示。
当按下按键K1为偶数次时,LED进行拉幕式显示;当按下按键K2时,LED 暂停显示,蜂鸣器发出“叮咚”的开门声音,然后LED继续花样显示(K2按键优先)。
二、源代码#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit key1=P3^2;sbit key2=P3^3;sbit beep=P1^0;uchar code tab[]={0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7};//开幕式编码uchar temp=0xfe,key_count,flag,right,beep_FG;void delay(uint ms){uint i,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);}void init(){EA=1;//打开总中断EX0=1;//打开外部中断INT0EX1=1;//打开外部中断INT1IT0=1;//下降沿触发方式PX1=1;//设置INT1为高中断优先级}void interval_LED() //隔灯闪烁{P0=0xff;delay(500);P0=0xaa;delay(500);}void left_right_move() //左右流水{if(!right)temp=_crol_(temp,1);elsetemp=_cror_(temp,1);if(temp==0xfe){right=0;}if(temp==0x7f)right=1;}void open_LED() //拉闭幕式函数{uchar count;temp=tab[count++];if(count>=8)count=0;}void Beep() //门铃函数{uchar i,j,k;for(i=100;i;i--)for(j=20;j;j--){for(k=2;k;k--)beep=~beep;}beep_FG=0;}void main(){init();beep=0;while(1){if(!flag) //没有按键,隔灯闪烁interval_LED();else{if(beep_FG)//按键后,判断是那个键被按下,如果是k2,蜂鸣器就响{Beep();}else{switch(key_count%2){case 1:left_right_move();break;//奇数次按键左移右移显示case 0:open_LED();break;//偶数次按键拉幕式显示default:break;}P0=~temp;delay(400);}}}}void key1_interrupt() interrupt 0 //中断k1{flag=1;key_count++;}void key2_interrupt() interrupt 2 //中断k2{flag=1;beep_FG=1;}三、电路图。
广告灯的左移右移1.实验任务做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。
2.电路原理图图4.4.13.系统板上硬件连线把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。
4.程序设计内容我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。
每次送出的数据是不同,具体的数据如下表1所示表15.程序框图图 4.4.26.汇编源程序ORG 0START: MOV R2,#8MOV A,#0FEHSETB CLOOP: MOV P1,ALCALL DELAYRLC ADJNZ R2,LOOPMOV R2,#8LOOP1: MOV P1,ALCALL DELAYRRC ADJNZ R2,LOOP1LJMP STARTDELAY: MOV R5,#20 ; D1: MOV R6,#20D2: MOV R7,#248 DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7. C语言源程序#include <AT89X51.H> unsigned char i; unsigned char temp; unsigned char a,b;void delay(void) {unsigned char m,n,s; for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--); }void main(void){while(1){temp=0xfe;P1=temp;delay();for(i=1;i<8;i++) {a=temp<<i;b=temp>>(8-i);P1=a|b;delay();}for(i=1;i<8;i++) {a=temp>>i;b=temp<<(8-i);P1=a|b;delay();}}}广告灯(利用取表方式)1.实验任务利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。
简易广告灯(广告灯左移右移)设计简易广告灯设计是有Controller、actuator、light、电源锁以及连接等部分组成的系统。
第一步是完成controller的设计,控制器设计主要包括一个触摸按键,当用户按下按钮后,可以实现广告灯的左移或者右移。
控制器也可以实现两个广告灯同时左移右移的功能,并可以设定广告灯的移动速度等。
接着是actuator的设计,actuator的设计主要包括电动马达和一个连接杆,电动马达可以使连接杆向左右双方旋转,推动广告灯左移右移。
actuator可以通过控制器发出的电控信号控制,实现广告灯的左移右移。
灯具的设计需满足安全要求,并且能够经受连续高速的移动。
常用的材料有金属和陶瓷。
一般采用金属外壳材料和陶瓷灯管,将灯具固定在结构体上,使灯具具有足够的抗拉和承重性能,以确保安全性。
灯具还需要有适当的发光特性,为左右移动的广告灯提供充足的发光,让灯光亮得刚刚好。
此外,还需要安装一个电源锁,以确保广告灯正常运行。
电源锁是在执行器结构体和安装着灯具的架子之间固定一个滑轨,在滑轨上安装一个滚针能自由滑动,在架子的两端安装有两个锁槽,留有一定的位置空间可以满足不同的灯具安装要求,它也不会影响灯具的运行。
最后是连接的设计。
执行器的连接方式使用的是常见的连接料,例如螺丝等,它可以固定执行器等部分,也能固定成正方向,以保证整体机器的正确操作。
连接件要考虑机械强度、耐热、耐腐蚀等要求,以确保设备的整体安全性。
综上所述,简易广告灯设计需要controller、actuator、light、电源锁以及连接等部分配合构成,controller实现左移右移功能;actuator设计由电动马达和一个连接杆组成,电动马达使连接杆向左右双方旋转,从而推动广告灯左移右移;light设计采用金属外壳材料和陶瓷灯管,同时还需要安装电源锁;连接要考虑机械强度、耐热、耐腐蚀等要求,以保证设备的故障率低。
经历以上步骤,就可以实现简易的广告灯设计,使其能左移右移,为人们提供更加亮眼的广告效果。
一、设计依据16x16点阵需要32个驱动,分别为16个列驱动及16个行驱动。
每个行与每个列可以选中一个发光管,共有256个发光管,采用动态驱动方式。
每次显示一行后再显示下一行。
本设计是利用实验仪上的16×16 LED点阵显示器,编写显示英文、汉字字符程序并进行显示,最好能移动显示。
要求在本设计过程中,通过设计合适的硬件电路及对应的软件,实现上述的控制过程,同时写出合格的课程设计说明书。
二、要求及主要内容1.硬件电路设计(1)完成89C51应用系统设计(晶振电路,上电复位电路等)(2)利用单片机I/O口或以扩展锁存器的方式控制点阵显示。
掌握单片机与16×16点阵块之间接口电路的设计方法。
2.程序设计掌握单片机与16×16点阵块之间接口电路的设计方法及编程要求完成主程序的设计及对应的子程序设计。
3.选芯片, 元件按设计连线4.完成子程序调试5.完成总调试三、途径和方法综合运用单片机和电子电路相关知识,实现本次设计。
进行程序设计时先画流程图再进行程序设计。
子程序调试按以下步骤进行:(1)实验板与PC机联机。
(2)利用实验系统16×16点阵实验单元,以两种方式控制点阵显示。
要求编制程序实现汉字点阵循环显示。
点阵时钟摘要LED点阵显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。
它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。
并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。
LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。
LED点阵显示屏可以显示数字或符号,通常用来显示时间、速度、系统状态等。
文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。
广告灯设计(利用取表方式)桂林电子工业学院孙安青1.实验任务利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。
2.电路原理图3.系统板上硬件连线把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。
4.程序设计内容在用表格进行程序设计的时候,要用以下的指令来完成(1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。
(2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。
因此,只要把控制码建成一个表,而利用MOVC 工,@A+DPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如下图所示:5.6.汇编源程序ORG 0START: MOV DPTR,#TABLELOOP: CLR AMOVC A,@A+DPTRCJNE A,#01H,LOOP1JMP STARTLOOP1: MOV P1,AMOV R3,#20LCALL DELAYINC DPTRJMP LOOPDELAY: MOV R4,#20D1: MOV R5,#248DJNZ R5,$DJNZ R4,D1DJNZ R3,DELAYRETTABLE: DB 0FEH,0FDH,0FBH,0F7HDB 0EFH,0DFH,0BFH,07FHDB 0FEH,0FDH,0FBH,0F7HDB 0EFH,0DFH,0BFH,07FHDB 07FH,0BFH,0DFH,0EFHDB 0F7H,0FBH,0FDH,0FEHDB 07FH,0BFH,0DFH,0EFHDB 0F7H,0FBH,0FDH,0FEHDB 00H, 0FFH,00H, 0FFHDB 01HEND7. C语言源程序#include <AT89X51.H>unsigned char code table[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x00,0xff,0x00,0xff, 0x01};unsigned char i;void delay(void){unsigned char m,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}void main(void){while(1){if(table[i]!=0x01){P1=table[i];i++;delay();}else{i=0;}}}。
彩灯控制电路设计报告一、工作原理1、电路功能彩灯控制电路具有以下功能:可控制8路彩灯或彩灯串,既可以向左(逆时针)移动,也可以向右(顺时针)移动,还可以左右交替移动;彩灯控制起始状态可以预置,移动速度和左右交替周期可调节,并且可以设置彩灯串的彩灯个数。
2、电路组成本电路由2块四位双向移位寄存器CD40194级连组成1个八位双向移位寄存器,由VT3和VT4组成的多谐振荡电路产生时针脉冲,由VT1和VT2及或门CD4071,开关K、开关SB等组成八位双向移位寄存器的功能控制电路,S1和S2是彩灯初始状态、彩灯串的彩灯个数预置开关。
图1所示为总体方框图。
其工作原理是:接通电源后,多谐振荡电路产生时针脉冲,操作人员通过开关S1和S2设置彩灯初始状态、彩灯串的彩灯个数,然后操作人员控制双向移位寄存器的功能控制开关SB、 K控制八位双向移位寄存器的工作方式,使彩灯向左(逆时针)移动或向右(顺时针)移动或左右交替移动,产生美丽的循环彩灯效果。
调节电位器即可循环彩灯移动速度、左右交替周期。
图1 设计框图3、各单元电路工作原理3.1 八位双向移位寄存器电路采用2块CD40194级连组成1个八位双向移位寄存器。
IC2的输出端O3接到IC1的DSR (右移输入)端,IC1的输出端O3接到IC2的DSR(右移输入)端,扩展成首尾相接的八位右移寄存器。
同理,IC1的输出端O0接到IC2的DSL(左移输入)端,IC2的输出端O0接到IC1的DSL(左移输入)端,扩展成1个八位左移寄存器。
两个CP端连在一起,受时针脉冲的控制,两个S0端连在一起,两个S1端连在一起,由S0S1的电平控制移位寄存器的工作方式。
八个输入端分别接到拨码开关上,由拨码开关预置输入端状态,作为彩灯起始状态和彩灯串的彩灯个数的预置,八个输出端分别接八路彩灯。
3.2、时针脉冲发生电路该电路是一个由三极管VT3和VT4等组成的多谐振荡电路。
功能是为CD40194提供必须的时针脉冲。
采用调用51自带的左移右移函数实现彩灯闪烁控制论彩灯闪烁控制,也称为跑马灯,是一种常见的照明应用。
在这个项目中,我们将使用51单片机的左移和右移函数来实现彩灯的跑马灯效果。
首先,我们需要知道51单片机的左移和右移操作。
在51单片机中,左移操作符<<表示将一些数的二进制表示向左移动n位,右边用0填充。
右移操作符>>表示将一些数的二进制表示向右移动n位,左边用符号位填充。
这两个操作都是逻辑操作,不会改变数的符号。
接下来,我们可以使用51单片机的GPIO口来控制彩灯的亮和暗。
假设我们使用8个LED灯,那么我们就需要8个GPIO口来控制每个LED的亮灭。
以下是利用左移和右移函数实现彩灯闪烁控制的基本步骤:1.设置51单片机的GPIO口为输出模式,用于控制LED灯。
2.初始化闪烁控制变量和计数器变量。
3.使用一个循环来不断更新LED灯的状态。
4.在循环中,通过调用左移和右移函数,根据计数器变量的值来更新LED灯的状态。
5.控制LED灯的亮和暗,可以使用51单片机的GPIO口的高电平和低电平来实现。
6.根据需要,可以调整闪烁速度和亮灭的模式。
下面是一个简单的示例程序:```c#include <reg51.h>sbit led1 = P1^0; // 假设P1口连接第一个LED灯sbit led2 = P1^1; // 假设P1口连接第二个LED灯//...//假设P1口连接第八个LED灯void delay(unsigned int count)unsigned int i, j;for(i = 0; i < count; i++)for(j = 0; j < 120; j++);void maiunsigned int count = 0;//初始化GPIO口led1 = 0;led2 = 0;//...//初始化其它LED灯while(1)//更新LED灯的状态led1 = count & 0x01;led2 = count & 0x02;//...//更新其它LED灯的状态//控制LED灯的亮和暗delay(1000); // 控制闪烁速度led1 = 0;led2 = 0;//...//控制其它LED灯的亮和暗//更新计数器变量count = (count << 1) , (count >> 7); // 控制左移和右移的位数和方向}```以上示例程序只是一个简单的跑马灯实现,具体的实现方式和效果可以根据实际需求进行调整。
新疆农业大学机械交通学院《单片机技术与应用》课程设计说明书题目:广告灯(LED灯左移右移)电路设计专业班级:学号:学生姓名:指导教师:时间:目录1 设计目的 (3)2 设计内容 (3)2.1 设计任务及要求 (3)2.2 设计方案及原理 (3)3设计步骤 (3)3.1硬件电路设计 (3)3.2 硬件电路组成框图 (4)3.3 各个硬件电路及工作原理 (4)3.3.1 晶振电路 (4)3.3.2 LED灯电路 (5)3.3.3 复位电路 (5)3.4 绘制原理图 (6)3.5 元件参数计算 (6)3.6 元件清单列表 (6)3.7程序设计 (7)3.7.1 绘制程序原理图 (8)3.7.2汇编程序 (9)4 调试与仿真 (9)5 硬件调试结果 (10)5.1面包板电路的搭建测试 (11)5.2电路调试结果 (12)6 心得体会 (14)广告灯(LED灯的左移右移)电路设计作者:秦春旺指导老师:艾海提・赛买提李春兰1 设计目的(1)会利用软件绘制流水广告灯电路原理图。
(2)通过单片机课程设计,熟练汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
(3)会用Keil C51软件对源程序进行编译调试及与proteus软件联调,实现电路的仿真。
2 设计内容广告灯是一种常见的装饰,常用与街上的广告及舞台装饰灯场合。
最简单的流水广告灯就是各个灯依次发光。
本任务利用STC89C51单片机来实现这一功能。
2.1 设计任务及要求输出“0”时,发光二极管亮,开始时按照P1.0、 P1.1 、…P1.7的顺序依次点亮发光将8个发光二极管D1-D8接在单片机的P1.0-P1.7端口上,当对应的P1口二极管,然后再按照P1.7、P1.6… P1.0的顺序依次点亮发光二极管,重复循环。
2.2 设计方案及原理单片机CPU芯片STC89C51,工作环境为常温。
发光二极管,工作环境为常温通过对单片机STC89C51系统的学习,如果要让接在STC89C51芯片P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的灯熄灭,把P1.0口的电平变为低电平就可以;同理。
接在P1.0-P1.7口的其他7个LED灯的点亮和熄灭方法同LED1.因此,要实现LED灯的左右循环功能只要将LED1-LED8依次点亮、熄灭,8只LED灯便会一会亮一会暗的做流水灯。
再在此我们还应注意一点,由于人眼的视觉暂留效果效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果。
单片机的应用系统由软件和硬件组成,上述硬件原理图搭建完成上电之后,我们还不能看到LED循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的左右循环。
3设计步骤3.1硬件电路设计电路组成。
这里选择具有内部程序存储器的AT89S51单片机作为控制电路,其P1口接8个发光二极管(LED )和8个限流电阻。
电路分析,要使LED 点亮,则P1口的对应端子输出低电平,即P1.1=0时,D1亮。
一般情况下,驱动LED 的电流约10mA 左右,而LED 本身的压降为2V 。
当P1.1输出为低电平时,输出为0V ,则流经D1的电流为6.3mA ,为了在仿真实验中让LED 更亮一些,在这里取限流电阻为270Ω。
相反,当P1.1输出为高电平时,输出电压为5V ,则流经D1的电流为0mA ,D1熄灭,即P1.1=1时,D1熄灭。
P1口输出电平分析。
在图3.1中,P1口的每一位都接有一个LED ,要实现流水灯功能,就是要让各个LED 依次点亮一段时间,再熄灭一段时间,然后再点亮下一个LED 一段时间,然后再熄灭一段时间,如此循环。
换句话来说,就是让P1口周而复始地输出高电平和低电平,要实现这一功能,最简单和最直接的方法是依次将数据送往P1口,每送一个数据延时一段时间。
3.2 硬件电路组成框图如图3-1图3-1硬件电路框图3.3 各个硬件电路及工作原理3.3.1 晶振电路如图3-2图3-2晶振电路工作原理:单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。
一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容。
为减少寄生电容,更好地保证振荡器工作稳定、可靠,石英晶体振荡器和电容应尽可能地接近单片机引脚XTAL1和XTAL2。
在本实验中我们选择的是12MHz 的晶振负载电容是30pf。
3.3.2 LED灯电路如图3-3图3-3 LED灯电路工作原理:用8个发光二极管代替LED灯。
将8个发光二极管分别连在单片机的P1.0口、P1.1口至P1.8口,在每个发光二极管的支路上面串联一个300Ω的限流电阻。
为了保证发光二极管的正常工作条件。
3.3.3 复位电路如图3-43-4 复位电路工作原理:复位电路是为了确保微机系统中电路稳定可靠工作必不可少的一部分,复位电路的第一功能是上电复位。
一般微机电路正常工作需要供电电源为5V±5%,即4.75-5.25V。
由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。
3.4 绘制原理图如图3-5图3-5 LED灯左移右移的硬件原理图3.5 元件参数计算LED电路的电阻阻值为300Ω。
复位电路的电容值为20uF,电阻阻值为10kΩ3.6 元件清单列表STC89C51单片机一个300欧姆电阻8个10K电阻1个LED灯8个12MHZ晶振1个20uf电解电容1个25pf振荡器电容1个3.7程序设计P1口输出电平分析。
在图3.1中,P1口的每一位都接有一个LED,要实现流水灯功能,就是要让各个LED依次点亮一段时间,再熄灭一段时间,然后再点亮下一个LED一段时间,然后再熄灭一段时间,如此循环。
换句话来说,就是让P1口周而复始地输出高电平和低电平,要实现这一功能,最简单和最直接的方法是依次将数据送往P1口,每送一个数据延时一段时间。
,D1至D8依次点亮时,就是数据中的二进制0的位置依次往左移动了1位,D8至D1依次点亮时,就是往右依次移动1位,实现任务的思路是:程序开始时,给某一变量赋初始值0FE H,延时一段时间后,让显示变量左移1位,再次输出,直到所有左移数据为止,接下来就实现右移数据输出完毕,再次重复整个过程。
延时程序编写。
单片机程序的延时有两种,一种是软件延时,一种是硬件延时,在这里我们重点讨论软件延时。
当系统加电后,单片机就开始工作,按照设计的程序开始运行(也称执行指令)。
单片机执行一条指令要花一定的时间,那么单片机执行一条指令的执行时间成为指令周期。
指令周期是以机器周期为单位的。
MCS-51单片机规定,一个机器周期为单片机振荡器的12个振荡周期。
如果单片机时钟电路中的晶振频率为12MHz,则一个机器周期为1us。
单片机的指令运行速度是很快的,要想在端口获得一定的延时时间,就要编写程序,使单片机运行设计程序产生时间延迟。
此次设计要求获得0.2s的时间长度,当单片机的指令周期是1us时,0.2s 就是1us的2000 000倍。
在程序编写中常用循环语句来完成计数和时间延迟,从而获得需要的延时时间。
3.7.1 绘制程序原理图如图3-6图3-6软件流程框图3.7.2汇编程序ORG 0000HSJMP STARTORG 0050HSTART: MOV R2,#8MOV A,#0FEH ;共阳极接法中循环初始值;给A辅值成11111110LOOP: MOV P1,A ;点亮LED10LCALL DELAY ;长调用DELAY程序RL A ;累加器不连进位标志位左循环移位DJNZ R2,LOOP ;R2循环LOOPMOV R2,#8 ;R2赋值8LOOP1: MOV P1,ALCALL DELAYRR A ;累加器不连进位标志位右循环移位DJNZ R2,LOOP1LJMP START 长跳转到startDELAY: MOV R5,#20 ;R5=20D1: MOV R6,#20 ;R6=20D2: MOV R7,#248 ;R7=248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1 延时0.2秒程序RETEND因为0.2秒=200ms,10ms乘R5=200ms 则R5=204 调试与仿真用keil仿真调试程序如图4-1图4-1 keil仿真调试用proteus和Keil联调仿真如图4-2图4-2 proteus和keil联调仿真5 硬件调试结果5.1面包板电路的搭建测试如图5-1图5-1面包板搭建的实物图5.2电路调试结果如图5-2,5-3,5-4图5-2 LED 灯左右移动实物图图5-3 LED 灯左右移动实物图图5-4 LED 灯左右移动实物图6 心得体会作为为一名电气自动化专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是专业课。
我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。
这次单片机课程设计我们历时三个星期这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。
没想到这项看起来不需要多少技术的工作却是非常需要耐心和精力在三个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结。
作为组长我负责软件的编程和调试,在艾老师和李春兰老师的耐心指导下,帮助我们解决了许多问题。
我觉得这次的单片机设计非常有意义,是我的人生中第一次自己能够设计出程序并让程序通过硬件在面包板上显现出我想要的结果,感到很兴奋。
也给了我很大的动力希望以后在课余的时间里能够自己设计小程序,来完成想要的目的,也让我对大四的毕业设计有了美好的憧憬。