单片机课程设计—8个按键控制系统8个LED自动设定控制系统流水灯

合集下载

实验、中断控制的8个LED灯轮流点亮电路

实验、中断控制的8个LED灯轮流点亮电路

实验八、中断控制的8个LED灯轮流点亮电路专业: 班级:姓名: 学号:成绩:一、实验目的1.掌握中断程序的分析方法和设计方法。

2.学习电平触发方式及负脉冲触发方式的电路设计方法。

3.学习读程序,并能写出中断初始化程序段。

二、实验器材单片机开发设备一套。

三、实验内容和步骤试设计一个用单片机中断控制的8个LED灯轮流点亮的仿真控制系统,当按下一个按键之后,LED1灯亮,再按下一个按键后,彩灯顺次点亮一个。

要求按照电平触发和负脉冲触发两种方式来设计电路并进行程序设计。

电平触发方式下的仿真图:附加题:请设计一个电路,能实现开关控制的数码管显示0-9数字。

电平触发方式下的程序:ORG 0000HAJMP MAINORG 0013HAJMP SERVERORG 0030HMAIN:MOV A,#01HCLR IT1SETB EX1SETB EA SJMP $ORG 0200H SERVER:CLR P3.0 NOPNOPSETB P3.0MOV P1,ARL ARETIEND负脉冲触发方式下接于P3.3端口的仿真图:负脉冲触发方式下的程序:ORG 0000HAJMP MAINORG 0013HAJMP SERVERORG 0030HMAIN:MOV A,#11111110B MOV P1,A SETB IT1SETB EX1SETB EASJMP $ORG 0200HSERVER:CLR P3.3NOPNOPSETB P3.3MOV P1,ARL ARETIEND。

单片机8个led灯循环点亮程序

单片机8个led灯循环点亮程序

单片机8个led灯循环点亮程序一、前言单片机是一种非常重要的电子元件,它可以通过编程来实现各种功能。

其中,点亮LED灯是最基础的操作之一。

本文将介绍如何使用单片机8个LED灯循环点亮。

二、硬件准备1. 单片机:STC89C52RC或其他8051系列单片机;2. LED灯:8个;3. 电阻:8个(220欧姆);4. 面包板:1个;5. 杜邦线:若干。

三、程序设计首先,我们需要了解一些基本的概念和知识:1. 端口:单片机的I/O口被称为端口,其中P0、P1、P2、P3四个端口分别对应着不同的引脚。

2. 输出:通过控制端口输出高电平或低电平来控制外部设备。

3. 延时函数:为了让程序在执行时停留一段时间,需要使用延时函数。

接下来,我们开始编写程序。

具体步骤如下:1. 定义引脚首先,我们需要定义每个LED所对应的引脚。

这里我们将8个LED分别连接到P0口的0~7引脚上。

sbit led0=P0^0;sbit led1=P0^1;sbit led2=P0^2;sbit led3=P0^3;sbit led4=P0^4;sbit led5=P0^5;sbit led6=P0^6;sbit led7=P0^7;2. 定义延时函数为了让程序在执行时停留一段时间,我们需要定义一个延时函数。

这里我们使用循环来实现延时。

void delay(unsigned int i){while(i--);}3. 循环点亮LED灯接下来,我们就可以开始循环点亮LED灯了。

这里我们使用for循环来实现。

void main(){while(1){for(int i=0;i<8;i++){switch(i){case 0:led0=1;break;case 1:led1=1;break;case 2:led2=1;break;case 3:led3=1;break;case 4:led4=1;break;case 5:led5=1;break;case 6:led6=1;break;case 7:led7=1;break;}delay(50000);switch(i){case 0:led0=0;break;case 1:led1=0;break;case 2:led2=0;break;case 3:led3=0;break;case 4:led4=0;break;case 5:led5=0;break;case 6:led6=0;break;case 7:led7=0;break;}}}}四、总结通过以上步骤,我们就可以实现单片机8个LED灯循环点亮的程序了。

单片机实训报告(8个LED指示灯循环移动)

单片机实训报告(8个LED指示灯循环移动)

单⽚机实训报告(8个LED指⽰灯循环移动)⼀、实验⽬的:通过所学汇编语⾔和C语⾔知识,熟悉并掌握单⽚机综合仿真实验仪的使⽤⽅法,学会使⽤Keil uVision2编写程序。

⼆、实验器材:单⽚机综合仿真实验仪、AT89C51、计算机、导线。

三、实验功能:利⽤定时计数器T0⼯作⽅式1,实现定时50ms,中断20次,实现精确定时1秒以控制8个LED指⽰灯从左到右间隔1秒时间循环移动,当LED指⽰灯移动次数到32次时,8个LED指⽰灯停⽌循环移动,蜂鸣器响1秒后停⽌声⾳提⽰;⼜接着控制8个LED指⽰灯从右到左间隔1秒时间循环移动,依此类推。

四、实验要求:只能利⽤单⽚机的4个P1⼝控制74HC138译码器以及蜂鸣器来实现上述功能,并对程序进⾏注解;注明:刚开始时,最左边的LED指⽰灯点亮,画出电路图。

五、计算定时/计数器的初值X(2^16-X)*1=50000,X=15536D=03CB0H.低8位送给TL0,⾼8位送给TH0,即(TL0)=0B0H,(TH0)=03CH六、实验原理图:七、实验参考程序:#includebit direct=1,speak=0,counter=0;int i=0,j=0,k=0,p=0,m,n;sbit P13=P1^3; //定义P1.3引脚main() //主函数{TMOD=0x01; //T0计数⽅式1TL0=0xb0; //定时50msTH0=0x3c;EA=1; //开T0中断ET0=1;TR0=1; //启动T0 while(1) //等待中断{while(speak){P13=~P13; //输出取反for(m=0;m<2;m++)for(n=0;n<2;n++);}if(counter){counter=0;TR0=1;if(direct&&!speak){P1=i;i++;if(i==8){j++;if(j==4){j=0;direct=0;speak=1;}elsei=0;}}else if(!direct&&!speak){i--; //循环右移P1=i;if(i==0){j++; //循环左移if(j==4) //移动周期{j=0;direct=1;speak=1;}elsei=8;}}}}}void time0(void) interrupt 1 //T0中断服务函数{ TR0=0; //重启动TL0=0xb0; //重装初值TH0=0x3c;if(speak){++p;if(p==20) //蜂鸣器响应时间{p=0;speak=0;}}else++k;if(k==20) //LED灯间隔1秒移动{k=0;counter=1;}elseTR0=1;}⼋、实验总结:通过这次实训,我拓宽了知识⾯,锻炼了能⼒,综合素质得到较⼤提⾼。

8个按键控制步进电机与八段LED显示器课程设计

8个按键控制步进电机与八段LED显示器课程设计

第一题:通过8个按键控制八段LED显示器的显示程序程序段:ORG 0000HLJMP MAINORG 1000HMAIN: MOV 50H,#00HMOV 51H,#00HMOV 52H,#00HMOV 53H,#00H KEYSUB: ACALL A,#03HMOV DPTR,#7F00HMOVX @DPTR,A BEGIN: ACALL DISACALL CLEARACALL CCSCANJNZ INK1AJMP BEGININK1: ACALL DISACALL DL1MSACALL DLMSACALL CLEARACALL CCSCANJNZ INK2AJMP BEGININK2: MOV R2,#0FEHMOV R4,#00H COLUM: MOV DPTR,#07F01HMOV A,R2MOVX @DPTR,AINC DPTRMOVX A,@DPTRJB ACC.2,LONEMOV A,#00HAJMP KCODE LONE: JB ACC.3,NEXTMOV A,#04H KCODE: ADD A,R4 ACALL PUTBUFPUSH ACCKON: ACALL DISACALL CLEARACALL CCSCANJNZ KONPOP ACCNEXT: INC R4MOV A,R2JNB ACC.3KERRRL AMOV R2,AAJMP COLUM KERR: AJMP BEGIN CCSCAN: MOV DPTR,#7F02HMOV A,#00HMOVX @DPTR,AINC DPTRMOVX A,@DPTRCPL AANL A,#0CHRETCLEAR: MOV DPTR,#7F01HMOV A,#00HMOVX @DPTR,ARETDIS: PUSH ACCPUSH 00HPUSH 03HMOV A,#03HMOV DPTR,#7F00HMOVX @DPTR,AMOV R0,#50HMOV R3,#0F7HMOV A,R3AGAIN: MOV DPTR,#7F02HMOVX @DPTR,AMOV A,@R0MOV DPTR,#DDEGMOVC A,@A+DPTRMOV DPTR,#7F01HMOVX @DPTR,AACALL DL1MSINC R0MOV A,R3JNB ACC.0,OUTRR AMOV R3,AAJMP AGAINOUT: POP 03HPOP 00HDDEG: DB 07H,7FH,5EH,39H,77HDB 7CH,6DH,7DHDL1MS: MOV R7,#01HDL0: MOV R6,#0FFHDL1: DJNZ R6,DL1DJNZ R7,DL0RETPUTBUF: PUSH 00HMOV 53H,52HMOV 52H,51HMOV 51H,50HMOV 50H,APOP 00HRETEND第二题:通过编程实现对八段LED显示器与步进电机的控制程序段:ORG 0000HLJMP MAINORG 101BHLJMP L3ORG 1000HMAIN:MOV R0,#08H MOV R1,#48HMOV R6,#00HMOV DPTR,#L2MOV P1,#00MOV TMOD,#10HMOV TL1,#0B0HMOV TH1,#0F0HMOV IE,#88HMOV 53H,#5BHMOV 54H,#07HSETB TR1L1:SHMP L1DL1MS: MOV R7,#01H DL0: MOV R5,#0FFH DL1: DJNZ R5,DL1DJNZ R7,DL0RETL2:DB DB 01H,03H,02H,06H DB 04H,0CH,08H,09H DISPLAY:MOV 50H,DPH MOV 51H,DPLPUSH ACCMOV A,#03HMOV DPTR,#7F00HMOVX @DPTR,AMOV DPTR,#7F01HMOV A,53HMOVX @DPTR,AMOV DPTR,#7F02HMOV A,#0FEHMOV @DPTR,AACALL DL1MSMOV DPTR,#7F01HMOV A,54HMOVX @DPTR,AMOV DPTR,#7F02HMOV A,#0FDHMOVX @DPTR,A ACALL DL1MS MOV DPTR,#7F01H MOV A,#3FH MOVX @DPTR,A MOV DPTR,#7F02H MOV A,#0FBH MOVX @DPTR,A ACALL DL1MS MOV DPH,50H MOV DPL,51H POP ACCRETL3:MOV TL1:#0B0H MOV TH1,#0F0H MOV A,#00MOVC A,@A+DPTR MOV P1,AINC DPTRDJNZ R0,L4MOV R0,#08MOV DPTR,#L2L4:INC R6DJNZ R1,L5MOV R2,#01HL7:MOV R4,#0FFH L6:ACALL DISPLAY MOV R3,#0FFH DJNZ R3,$DJNZ R4,L6DJNZ R2,L7CJNE R6,#48H,S1 MOV R6,#00HMOV R1,#30HMOV 53H,#06H MOV 54H,#7FH SJMP L5S1:MOV R1,#48H MOV R6,#00HMOV 53H,#5BH MOV 54H,#07HL5:RETIEND第三题:通过8个按键控制步进电机与八段LED显示器程序段:ORG 0000HLJMP MAINORG 1000H MAIN: MOV 50H,#00H MOV 51H,#00HMOV 52H,#00HMOV 53H,#00HMOV R5,#53HMOV 60H,#00HMOV 63H,#00HMOV 64H,#00HMOV 66H,#00HMOV 68H,#01HMOV 69H,#00HKEYSUB: ACALL A,#03H MOV DPTR,#7F00H MOVX @DPTR,A BEGIN: ACALL DIS ACALL CLEARACALL CCSCAN POO:MOV R0,66HCJNE R0,#00H,XXXMOV 64H,#00HSJMO SSKXXX:MOV R0,64HCJNE R0,#00H,SSBMOV R0,66HCJNE R0,#01H,ADDING MOV 68H,#00HMOV R0,#67HSJMP SSKSSB:DJNZ 64H,RUN SSK:JNZ INK1AJMP BEGININK1: ACALL DISACALL DL1MSACALL DLMSACALL CLEARACALL CCSCANJNZ INK2AJMP BEGINADDING:MOV 64H,65HDEC 66HSJMO POORUN:PUSH ACCMOV A,60HMOV 61H,DPHMOV 62H,DPLMOV R0,68HCJNE R0,#01H,RUN1MOV DPTR,#L21SJMP RUN2RUN1:MOV DPTR,#L2RUN2:MOVC A,@A+DPTRMOV P1,AINC 60HPOP ACCDJNZ 63H,#08HMOV 60H,#00HMOV DPH,61HMOV DPL,62HL4:SJMP SSKL2:DB DB 01H,03H,02H,06HDB 04H,0CH,08H,09HL21:DB 09H,08H,0CH,04HDB 06H,02H,03H,01HINK2: MOV R2,#0FEHMOV R4,#00H COLUM: MOV DPTR,#07F01HMOV A,R2MOVX @DPTR,AINC DPTRMOVX A,@DPTRJB ACC.2,LONEMOV A,#00HAJMP KCODES1:CJNE R4,#01H,S2MOV A,#04HSJMP KCODES2:CJNE R4,#02H,S3ACALL STARTLJMP KK1S3:ACALL CLEARUPLJMP POOLONE: JB ACC.3,NEXT CJNE R4,#00H,K1MOV A,#00HSJMO KCODEK1:CJNE R4,#01H,K2MOV A,#06HSJMP KCODECLEARUP:MOV 64H,65H MOV 68H,#01HMOV 66H,67HMOV R5,#53HMOV 69H,#00HMOV 50H,#00HMOV 51H,#00HMOV 52H,#00HMOV 53H,#00HRETSTART:MOV R0,69HCJNE R0,69HCJNE R0,#02H,ST2MOV 64H,65HMOV 66H,53HMOV 67H,53HST2:RETKCODE: ACALL PUTBUF KK1: PUSH ACCKON: ACALL DISACALL CLEARACALL CCSCANJNZ KONPOP ACC NEXT: INC R4MOV A,R2JNB ACC.3KERRRL AMOV R2,AAJMP COLUM DB 04FH,066H,06DHDB 07DH,07H,7FH KERR: AJMP BEGIN CCSCAN: MOV DPTR,#7F02HMOV A,#00HMOVX @DPTR,AINC DPTRMOVX A,@DPTRCPL AANL A,#0CHRETCLEAR: MOV DPTR,#7F01HMOV A,#00HMOVX @DPTR,ARETDIS: PUSH ACCPUSH 00HPUSH 03HMOV A,#03HMOV DPTR,#7F00HMOVX @DPTR,AMOV R0,#50HMOV R3,#0F7HMOV A,R3AGAIN: MOV DPTR,#7F02HMOVX @DPTR,AMOV A,@R0MOV DPTR,#DDEGMOVC A,@A+DPTRMOV DPTR,#7F01HMOVX @DPTR,AACALL DL1MSINC R0MOV A,R3JNB ACC.0,OUTRR AMOV R3,AAJMP AGAINOUT: POP 03HPOP 00HPOP ACCRETDDEG:DB 03FH,06H,05BHDB 6FH,77H,7CHDB 39H,5EH,79HDB 71H,00HDL1MS: MOV R7,#01HDL0: MOV R6,#0FFHDL1: DJNZ R6,DL1DJNZ R7,DL0RETDDEG: DB 07H,7FH,5EH,39H,77HDB 7CH,6DH,7DHDL1MS: MOV R7,#01HDL0: MOV R6,#0FFHDL1: DJNZ R6,DL1DJNZ R7,DL0RETPUTBUF: PUSH 00HMOV R0,ACJNE R0,#07H,PPSMOV R0,69HCJNE R0,#01H,PPLMOV 69H,#02HSJMP GOBACKPPL:MOV 69H,#01HSJMP GOBACKPPS:MOV R0,69HCJNE R0,#01H,GOBACKPUSH ACCMOV A,R5MOV R0,APOP ACCMOV @R0,ADEC R5MOV A,52HMOV B,#0AHMUL ABMOV B,#03HDIV ABMOV B,#08HMUL ABMOV 65H,AMOV A,51HMOV B,#03H DIX ABMOV B,#08HMUL ABADD A,65HMOV 65H,ACJNE R5,#04FH,GOBACK MOV R5,#53H GOBACK:POP 00H RETEND课程设计心得体会通过这次课程设计我收获很大,不仅增加和巩固了我的知识,还提高了我们的动手能力。

利用51单片机,8个按键,8路发光二级管构成一个独立式键盘系统,按下8个按键,点亮对应的灯。

利用51单片机,8个按键,8路发光二级管构成一个独立式键盘系统,按下8个按键,点亮对应的灯。

电子信息工程学院电子设计应用软件训练任务【训练任务】:1、熟练掌握PROTEUS软件的使用;2、按照设计要求绘制电路原理图;3、能够按要求对所设计的电路进行仿真;【基本要求及说明】:1、按照设计要求自行定义电路图纸尺寸;2、设计任务如下:利用51单片机,8个按键,8路发光二级管构成一个独立式键盘系统,按下8个按键,点亮对应的灯。

3、按照设计任务在Proteus 6 Professional中绘制电路原理图;4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。

【按照要求撰写总结报告】指导教师年月日负责教师年月日学生签字年月日成绩评定表电子设计应用软件训练总结报告一.任务说明本次任务是利用51单片机、按键以及发光二极管设计一个独立式键盘系统,要求独立简单可控。

首先要明确51单片机的工作原理,在此基础上编写单片机程序,再载入到所连电路原理图中实现按键控制二极管亮灭。

此次任务需要完成电路原理图的绘制、单片机汇编语言的编程。

目的是通过本次设计熟悉Proteus软件的工作环境,掌握基本的操作及流程以及对单片机汇编语言的进一步学习,使之前的学习得到巩固。

二.原理图绘制说明总体而言,一个完善的系统最重要的是稳定,精确,设计简单,修护容易,成本低,体积小。

满足以上条件的系统我们都可以说是完善的系统。

因此,我在设计中选用了一些比较成熟的器件,这些器件都经过时间的考验,能稳定的工作,同时,价格也相对便宜。

下面对原理图中主要的硬件进行简单介绍。

2.1 AT89C51的基本概述AT89C5l单片机,是一种低功耗、高性能的、片内含有4KB Flash ROM的8位CMOS 单片机,工作电压范围为2.7~6V(实际使用+5V供电),8位数据总线。

它有—个可编程的全双工串行通信接口,能同时进行串行发送和接收。

AT89C51具有4K并行可编程的非易失性FLASH程序存储器,可实现对器件串行在系统编程ISP和在应用中编程(IAP)。

项目2---8位流水灯的单片机

项目2---8位流水灯的单片机

二、编程及问答:
1、要使得本项目中发光二极管的闪烁速度加快,程序如何修 改?若变慢呢?
2、试编写两段延时时间不同的子程序,并分别调用。 3、汇编程序的书写格式和注意事项是什么?
项目2个发光二极管的顺序点亮, 学会使用MCS-51单片机芯片的P1口进行输出控 制,进一步学习汇编程序的分析方法,并能熟练 运用RR、RL等基本指令。
项目任务
要求应用AT89C51芯片,控制8个发光 二极管的有序亮灭,呈现流水灯的效果。 设计单片机控制电路并编程实现此功能。
(二)程序编写
ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV P1,#0FEH LCALL YS MOV P1,#0FDH LCALL YS MOV P1,#0FBH LCALL YS MOV P1,#0F7H LCALL YS MOV P1,#0EFH LCALL YS MOV P1,#0DFH LCALL YS
项目分析
利用单片机P1口连接8个发光二极管, 利用各引脚输出电位的变化,控制发光二 极管的亮灭。P1口各引脚的电位变化可以 通过指令来控制,为了清楚地分辨发光二 极管的点亮和熄灭,在P1口输出信号由一 种状态向另一种状态变化时,编写延时程 序实现一定的时间间隔。
项目实施
一、硬件电路设计 二、控制程序的编写
MOV P1,#0BFH LCALL YS MOV P1,#7FH LCALL YS LJMP MAIN ORG 0100H YS:MOV R7,#2 L1:MOV R6,#0FFH L2:MOV R5,#0FFH L3:DJNZ R5,L3 DJNZ R6,L2 DJNZ R7,L1 RET END
DJNZ R7,D0
LJMP XH

51单片机8位流水灯程序设计的3种方法

51单片机8位流水灯程序设计的3种方法一、采用定义数组的方式进行LED灯流水灯调试:#include<reg52.h>unsigned char table[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};void delayms(unsigned int a){unsigned int i,j;for(j=a;j>0;j--)for(i=125;i>0;i--);}void main(){while(1){unsigned char b;for(b=0;b<8;b++){P1=table[b];delayms(1000);}}}程序编译通过,PRoteus仿真实现功能。

二、采用移位函数的方式进行LED灯流水灯调试:#include <reg52.h>#include <intrins.h>char temp;void delay(unsigned int m){unsigned int i,j;for(j=m;j>0;j--)for(i=125;i>0;i--);}void main(){unsigned char i;temp=0xfe;P1=temp;while(1){delay(300);P1=temp;}}程序编译通过,实现跑马灯循环效果,所使用的crol函数为移位专用函数,还可使用cror实现右移。

此外,还可使用>> <<移位符进行流水等程序设计。

3、实现8位流水灯来回跑动效果程序如下:#include <reg52.h>#include <intrins.h>char temp;void delay(unsigned int m){unsigned int i,j;for(j=m;j>0;j--)for(i=125;i>0;i--);}void main(){unsigned char i;temp=0xfe;P1=temp;while(1){for(i=7;i>0;i--){delay(300);P1=temp;}for(i=7;i>0;i--){temp=_cror_(temp,1);delay(300);P1=temp;}}}程序编译通过,仿真实现预期效果。

四、实现8个LED流水灯

/***************项目名称:实现8个LED流水灯***************/ #include<reg52.h> //引用S52单片机头文件/***************定义8个LED引脚***************************/ sbit LED1=P1^0; //定义一个LED的引脚sbit LED2=P1^1; //定义另一个LED的引脚sbit LED3=P1^2;sbit LED4=P1^3;sbit LED5=P1^4;sbit LED6=P1^5;sbit LED7=P1^6;sbit LED8=P1^7;void Delay(void); //子函数的声明,后面要加分号。

void main() //主程序main函数{while(1) //在主程序中设置死循环"while(1)"{LED1=0; //P1.0口输出低电平,使LED1灯亮Delay(); //延时字函数的调用LED1=1; //P1.0口输出高电平,使LED1灯灭LED2=0; //P1.1口输出低电平,使LED2灯亮Delay(); //延时字函数的调用LED2=1; //P1.1口输出高电平,使LED2灯灭LED3=0; //P1.2口输出低电平,使LED3灯亮Delay(); //延时字函数的调用LED3=1; //P1.2口输出高电平,使LED3灯灭LED4=0; //P1.3口输出低电平,使LED4灯亮Delay(); //延时字函数的调用LED4=1; //P1.3口输出高电平,使LED4灯灭LED5=0; //P1.4口输出低电平,使LED5灯亮Delay(); //延时字函数的调用LED5=1; //P1.4口输出高电平,使LED5灯灭LED6=0; //P1.5口输出低电平,使LED6灯亮Delay(); //延时字函数的调用LED6=1; //P1.5口输出高电平,使LED6灯灭LED7=0; //P1.6口输出低电平,使LED7灯亮Delay(); //延时字函数的调用LED7=1; //P1.6口输出高电平,使LED7灯灭LED8=0; //P1.7口输出低电平,使LED8灯亮Delay(); //延时字函数的调用LED8=1; //P1.7口输出高电平,使LED8灯灭}}void Delay(void) //子函数的建立,延时一段时间的子函数{unsigned int i=50000; //声明一个int型的变量,即"int"的范围为0~65536 while(--i); //延时一段时间}。

八位双向流水灯”设计

八位双向流水灯”设计以下是对八位双向流水灯设计的详细介绍。

1.硬件设计:该设计需要使用以下硬件元件:-8个LED灯:用于点亮和显示流水灯效果。

-8个当前限流电阻:用于限制LED灯的电流,保护LED灯不受损坏。

-8个开关:用于手动切换流水灯的方向。

-一个控制器:用于控制LED灯的点亮和熄灭。

-一个脉冲发生器:用于为控制器提供驱动信号。

首先,将8个LED灯连接到控制器的8个输出引脚上,并通过对应的当前限流电阻进行连接。

然后,将8个开关连接到控制器上,用于手动控制流水灯的方向。

最后,将脉冲发生器连接到控制器上,用于为控制器提供驱动信号。

2.软件设计:该设计需要使用软件来控制LED灯的点亮和熄灭。

软件设计可以使用C语言等编程语言实现。

首先,需要定义一个数组,用于存储LED灯的状态。

数组中的每个元素对应一个LED灯,其中0表示灯灭,1表示灯亮。

然后,通过控制器的输入和输出引脚,可以确定当前LED灯的状态和流水灯的方向。

接着,需要实现一个循环,用于不断更新LED灯的状态。

循环的过程中,根据当前LED灯的状态和流水灯的方向,通过控制器的输出引脚控制LED灯的点亮和熄灭。

在循环的过程中,需要监测开关的状态,以便手动切换流水灯的方向。

当检测到开关状态改变时,需要更新流水灯的方向。

3.工作原理:首先,当控制器接收到脉冲发生器的驱动信号时,它将根据当前流水灯的方向和控制器的输入引脚的状态来更新LED灯的状态。

如果流水灯的方向是从左到右,则控制器会根据当前LED灯的状态和开关的状态,点亮或熄灭相应的LED灯。

具体的控制规则可以根据设计需求进行定义,例如按照顺序点亮灯1、2、3、4、5、6、7、8如果流水灯的方向是从右到左,则控制器会根据当前LED灯的状态和开关的状态,点亮或熄灭相应的LED灯。

具体的控制规则可以根据设计需求进行定义,例如按照顺序点亮灯8、7、6、5、4、3、2、1当开关的状态改变时,控制器会更新流水灯的方向,并根据新的方向重新设置LED灯的状态。

八位流水灯设计

八位流水灯设计
以下是一个八位流水灯的设计思路:
1. 硬件部分:使用8个LED灯,一个555定时器芯片,一个4017分频器芯片和若干电阻、电容和连接导线。

2. 将8个LED灯连接在一个电路板上,设置合适的引脚位置,使用连接线连接到芯片上。

3. 将555定时器芯片的引脚接到LED的正极上,将4017分频
器芯片的引脚连接到LED的负极上,使用连接线将芯片之间
进行连接。

4. 使用电容和电阻调整芯片的频率和亮度,使得LED灯能够
流畅的闪烁。

5. 使用开关来控制LED灯的开关状态,使得用户可以随时开
关流水灯的工作状态。

流程:
1. 按照上述硬件部分的设计,制作出八位流水灯的电路。

2. 打开电源,调整电容和电阻,调整出合适的流水灯亮度和闪烁频率。

3. 使用开关打开流水灯的工作状态,观察八个LED灯的流畅
闪烁状态,当需要关闭时,关闭开关即可。

4. 调整流水灯工作状态,组合出不同的闪烁效果,可以通过调整频率和亮度来实现。

5. 扩展其他功能,比如添加音控模块等,使得流水灯更加智能化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
case(2):A3=~A3;break;
case(3):A4=~A4;break;
case(4):A5=~A5;break;
case(5):A6=~A6;break;
case(6):A7=~A7;break;
case(7):A8=~A8;break;
default:break;
}
}
}
if (A1==0xff) //保存数据
KEY=0x0f;
if(KEY!=0x0f)
{
Delay10ms(1); //延时消抖
if(KEY!=0x0f)
{
KEY=0X0F;
switch(KEY) //扫描行
{
case(0X07):KeyValue=0;break;
case(0X0b):KeyValue=4;break;
case(0X0d): KeyValue=8;break;
矩阵按键工作原理
在某一个系统设计中,如果需要使用很多按键时,做成独立按键会占用大量I/O口,因此引用了矩阵键盘的设计。如图2-4所示为51开发板上的矩阵按键电路原理图,使用8个I/O口来实现16个按键。
图2-4 矩阵按键原理图
在程序设计中分别用四个I/O口扫描4行,另外4个扫描4列,确定了按键在哪行哪列也就确定了按键的具体位置。
图2-2 单片机控制LED电路图
图中PR2为排阻,在电路中起到限流作用,防止LED被烧毁。因为单片机是可以编程控制的,即P00~P07的高低电平也是能够控制的,所以对应的8个LED的亮灭状态也是能够控制的,这就达到了单片机控制LED的目的。
按键工作原理
独立按键工作原理
独立式按键比较简单,它们各自与独立的输入线相连接,如图2-3所示。
通过这次实习使我进一步弄懂所学到的课本知识,巩固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、定时/控制、程序设计、应用开发、等基本理论知识的理解,提高单片机应用于技术的实践操作技能,掌握单片机应用系统设计、研制的方法,培养利用单片机进行科技革新、开发和创新的基本能力,为毕业后从事与单片机相关的工作打下一定的基础。
整体电路图
如图2-5所示为键盘控制LED流水灯整体电路图。
图2-5 总电路原理图
本章小结
本章主要介绍了单片机最小系统、LED工作原理、按键工作原理。并从硬件电路的设计出发,简单分析单片机控制LED的工作过程。理论分析基本完成,接下来就是具体的程序设计与调试,通过具体的程序来实现相应的功能,这也是单片机开发中最具技术含量的环节之一。
实验结果
如图3-2所示,当按下K1后进入选择定状态。
图3-2 选择LED
如图3-2,控制矩阵键盘分别选择了第1,6,8盏灯。
再按下K2键,让选择的第1,6,8盏灯实现流水灯效果。如图3-3所示。
图3-3 流水灯
如图3-3,按下K2之后,LED由之前第1,6,8盏灯亮变为第1,2,7盏灯亮,实现了流水灯右移的效果。
(LED1=LED1|0x80);
else if(A1==0x00)
(LED1=LED1&0x7f);
if (A2==0xff)
(LED1=LED1|0x40);
else if(A2==0x00)
(LED1=LED1&0xbf);
参考文献
[1]童诗白,华成英.模拟电子技术基础(第四版)[M].:高等教育,2006.
[2]阎石.数字电子技术基础(第五版)[M].:高等教育,2006.
[3]建,全星慧,周围.电子技术课程设计指导[M].:工程大学,2014.
[4]黎小桃.数字电子电路分析与应用[M].: 理工大学,2014.
[5]高吉祥. 电子技术基础实验与课程设计[M].:电子工业,2002.
例如STC89C52单片机是通过32个输入输出口的高低电平变化来实现对外部电路的控制,痛过相应的程序实现对32个输入输出口的控制,这就是单片机工作的最基本原理。如图2-1所示为STC89C52单片机工作的最小系统电路图。
图2-1 STC89C52最小工作系统
整个电路使用5V直流电源供电,其中复位电路能够使单片机复位;晶振电路相当于单片机的心脏,为单片机提供12MHz的高频脉冲使单片机正常工作;MAX232是将单片机输出的TTL电平转换成PC机能接收的232电平或将PC机输出的232电平转换成单片机能接收的TTL电平,实现单片机与PC机之间的通信,以便于下载程序。
图2-3 独立式按键原理图
4条输人线接到单片机的I/O口上,当按健K1按下时,+5V通过电阻然后再通过按键K1最终进人GND形成一条通路,这条线路的全部电压都加到这个电阻上,P20这个引脚就是个低电平。当松开按健后,线路断开,就不会有电值通过,P20和+5V就应该是等电位,是个高电平。我们就可以通过P20这个10口的高低电平来判断是否有按键按下。
东北石油大学
实习总结报告
实习类型生产实习
实习单位东北石油大学实习基地
实习起止时间2018年7月7日至2018年7月16日
指导教师东明、鉴
所在院(系)电子科学学院
班 级电子科学与技术15-2
学生
学 号1509012402
2018年 7月 16日
第1章 按键控制流水灯设计1
1.1 实习目的1
1.2 实习要求2
#define KEY P1
sbit k1=P2^0;
sbit k2=P2^1;
sbit k3=P2^2;
sbit k4=P2^3;
unsigned char LED=0x00,LED1=0x00;
unsigned char x=0;
unsigned char KeyValue;
unsigned char A1=0x00,A2=0x00,A3=0x00,A4=0x00,A5=0x00,A6=0x00,A7=0x00,A8=0x00;
EA=1; //开总中断
ET0=1; //开定时器中断
TR0=1; //开启定时器
while(1)
{ int n=0;
if(k1==0)
{
Delay10ms(1);
if(k1==0)
n=1;
}
if(k3==0)
{
Delay10ms(1);
if(k3==0)
n=3;
}
if(k4==0)
{
Delay10ms(1);
if(k4==0)
n=4;
}
switch(n)
{
case 1:KeyDown();break;
case 3:kongzhil();break;
case 4:kongzhi2();break;
default:break;
}
}
}
void KeyDown(void)
{ int k=1;
while(k)
{
char a=0;
case(0Xe0):KeyValue=KeyValue;break;
}
while((a<50) && (KEY!=0xf0))//松手检测
{
Delay10ms(1);
a++;
}
switch(KeyValue)//选择需要亮的灯
{
case(0):A1=~A1;break;
case(1):A2=~A2;br件Keil的使用,熟悉单片机电路设计,根据实际应用电路对程序进行调试。
2.熟悉单片机硬件开发平台的应用,掌握单片机编程器、仿真器的使用,能检查和分析软硬件故障。
3.体会单片机部资源的功能使用,以单片机开发板现有资源进行应用性设计。掌握单片机常用外围器件的使用。
4.对去年生产实习焊接的51开发板的程序有更深入的了解。
第2章 电路工作原理2
2.1STC89C52单片机工作原理2
2.2LED工作原理3
2.3按键工作原理3
2.4整体电路图5
2.5 本章小结6
第3章 C程序设计7
3.1 程序设计流程图7
3.2实验结果8
3.3 本章小结9
总结及体会10
参考文献11
附录12
第1章
实习目的
本次实习以STC89C52单片机为控制核心。通过它实现对八盏LED灯的亮灭进行设定,并在设定完成之后能够按照之前的设定实现流水灯效果。外部电路为按键控制流水灯。P0口控制八盏灯,P1口控制矩阵键盘,P2口控制独立按键,程序利用单片机部计时器中断实现流水效果。要求流水灯能够自行设定、暂停、复位,工作稳定,可靠性高。
生产实习的主要目的是培养理论联系实际的能力,提高实际动手操作能力。本专业的生产实习旨在广泛了解实际单片机电子产品工作的全过程,熟悉电子产品的主要技术管理模式,并在实习的操作过程中学习掌握电子产品的焊接安装调试的实际操作技能。巩固和加深理解所学的理论,开阔眼界,提高潜力,为培养高素质大学本科人才打下必要的基础。透过学习,是理论与实际相结合,能够使学生加深对所学知识的理解,并为后续专业课的学习带给必要的感性知识,同时直接了解本业的生产过程和生产资料,为将来走上工作岗位带给必要的实际生产知识。
void Delay10ms(unsigned int c);
void KeyDown();//矩阵键盘检测
void kongzhil();
void kongzhi2();
void main(void)
{ TMOD=0x01; //定时器工作状态为1
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
LED工作原理
LED(light-emitting diode),即发光二极管,俗称LED小灯,51开发板使用的是普通贴片发光二极管。这种二极管通常的正向导通电压是1.8~2.2V之间,工作电流一般在1~20mA之间。其中当电流在1~5mA之间变化时,随着通过LED的电流越来越大,肉眼会感觉到这个灯越来越亮,而当电流从5~20mA变化时,看到的发光二极管的亮度变化不明显了。当电流超过20mA时,LED就有烧坏的危险。所以在51开发板的使用中需要根据相应的电流参数设计一个与LED串联的限流电阻。如图2-2所示为单片机I/O口控制LED的电路原理图。
相关文档
最新文档