按键控制数码管和流水灯设计报告实验报告要点

合集下载

流水灯实验报告总结

流水灯实验报告总结

流水灯实验报告总结一、实验目的本次流水灯实验的主要目的是通过实际操作,深入理解数字电路中时序逻辑电路的工作原理,掌握基本的硬件电路设计和编程方法,提高我们对电子电路的实践操作能力和问题解决能力。

二、实验原理流水灯是通过控制一系列发光二极管(LED)依次点亮和熄灭,从而产生一种流动的视觉效果。

其实现的核心原理是利用计数器和译码器来控制 LED 的亮灭状态。

在数字电路中,计数器可以对输入的时钟脉冲进行计数,从而产生不同的计数值。

译码器则将计数器输出的计数值转换为对应的控制信号,使得相应的 LED 点亮或熄灭。

例如,使用常见的 74LS161 四位二进制同步计数器和 74LS138 三线八线译码器,可以构建一个简单的八路流水灯电路。

计数器在时钟脉冲的驱动下不断计数,译码器根据计数器的输出值依次选通不同的输出端口,从而实现 LED 的顺序点亮。

三、实验设备及材料1、数字电路实验箱2、 74LS161 计数器芯片3、 74LS138 译码器芯片4、发光二极管(LED)若干5、电阻、电容等基本电子元件6、杜邦线若干7、数字万用表8、示波器四、实验步骤(一)电路设计1、根据实验原理,在实验箱上规划好芯片的布局和连线方式。

2、使用杜邦线将计数器、译码器和 LED 等元件按照设计好的电路连接起来。

3、注意连接的正确性,避免短路和断路现象。

(二)硬件搭建1、仔细对照电路设计图,将芯片插入实验箱的相应插槽中。

2、确保芯片引脚与插槽接触良好,无松动现象。

(三)编程与调试1、使用数字电路实验箱提供的编程工具,对计数器和译码器进行编程设置。

2、例如,设置计数器的计数模式、初始值等参数。

3、打开电源,观察 LED 的亮灭情况。

4、如果流水灯效果不符合预期,使用数字万用表和示波器等工具检测电路中的信号和电压,排查故障。

五、实验中遇到的问题及解决方法(一)LED 不亮1、问题描述:接通电源后,所有 LED 均不亮。

2、排查过程:首先检查电源是否正常,然后使用万用表测量芯片引脚的电压,发现计数器芯片没有正常工作。

数码管及按键实验报告模板(1)

数码管及按键实验报告模板(1)

数码管及流水灯实验报告成员:2012年11月一、实验要求:1.实验1:在开发板上调试利用按键控制数码管从1累加到F变化(S2加、S3减)(不同分组按键利用IO口不同);2.实验2:利用开发板进行秒表设计(显示分、秒,分辨率0.1s,如0.58.5)(参考P189程序);二、硬件原理图1. 硬件原理图A到F秒表2.原理图分析:实验一原理LED数码管是由4个发光二极管中的7个长条形发光二极管(俗称7笔段),按a、b、c、d、e、f、g顺序组成“8”字形,另一个点形的发光二极管dp放在右下方,用来显示小数点,。

只要控制7笔段按一定的要求亮与灭,就能显示出十六进制0~F。

实验二原理以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。

电平信号按照dp,g,e…a 的顺序组合形成的数据字称为该字符对应的段码三、软件设计系统1. 软件设计思想与流程图软件流程图如下(标准流程图画法)……:实验一、A到F实验二、秒表2.软件代码:实验一、秒表#include <avr/io.h> //IO定义#include <util/delay.h> //延时库文件const unsigned char led_7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//段码列表,共阳极,0~9的代码列表const unsigned char position[4]={0xEF,0xDF,0xBF,0x7F};//位输出代码,分别定义PD5~Pd0单一输出“0”的状态unsigned char time[3]; //时、分、秒计数unsigned char dis_buff[4]; //显示缓冲区,存放要显示的6字符的段码unsigned char time_counter; //1s计数器unsigned char point_on=0; //秒显示标志void display(void){unsigned char i;for(i=0;i<=3;i++) //显示循环开始{PORTB = led_7[dis_buff[i]]; //段码写入PORTAif(point_on && (i == 1||i == 3))PORTB &= 0x7F; //小数点显示PORTD = position[i]; //位信号写入PORTD_delay_ms(1); //点亮延时PORTD = 0xFF; //清除位信号}}void time_to_disbuffer(void){/* unsigned char i,j=0;for(i=0;i<=2;i++);{dis_buff[j++] = time[i] % 10;dis_buff[j++] = time[i] / 10;}*/dis_buff[0] = time[0] / 10;dis_buff[1] = time[1] % 10;dis_buff[2] = time[1] / 10;dis_buff[3] = time[2] % 10;}void main(void ){PORTB =0xFF; //IO初始化DDRB =0xFF;PORTD =0xFF;DDRD =0xFF;time[2] = 11;time[1] = 00; time[0] = 23; //时间初值time_to_disbuffer(); //将时间值装载至缓冲区while (1) //循环开始{display(); //调用显示函数if (++time[0]>=99) //次数计数{time[0] = 0; //重置计数point_on= ~point_on; //小数点位求反if (++time[1] >=60) //秒数目达到60后进位重置{time[1] = 0;if (++time[2] >= 60) //分计数达到60后进位重置{time[2] = 0;}}}time_to_disbuffer(); //时间装载至缓冲区_delay_ms(5); //延时}}实验二、0到F#include <avr/io.h> //IO定义#include <util/delay.h> //延时库文件const char led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//段码列表,共阳极,0~F的代码列表int main(void){char i=0; //定义iPORTB=0xc0; //定义输入端的初始值,0xFF表示高电平DDRB=0xff; //定义DB口为输入端PORTD=0xef; //定义输出端的初始值,0x70表示低电平DDRD=0xff; //定义DD口为输出端while(1){if((PINC&(1<<PC3))==0) //显示循环开始{_delay_ms(10);if((PINC&(1<<PC3))==0) //检测PC3是否按下{if(i<16){PORTB=led[i];i++;}if(i>=16)i=0;}}while(!(PINC&(1<<PC3))); //再次放手检测if((PINC&(1<<PC2))==0) //显示循环开始{_delay_ms(10); //点亮时间if((PINC&(1<<PC2))==0) //检测PC2是否按下{if(i<16){PORTB=led[i];i--;}if(i>=16)i=0;}}while(!(PINC&(1<<PC2))); //再次放手检测}}四. 成员分工及完成情况五. 意见及建议实验报告、编译工程文件、仿真文件打包提供电子版。

按键显示电路实验报告(3篇)

按键显示电路实验报告(3篇)

第1篇一、实验目的1. 熟悉按键电路的基本原理和设计方法。

2. 掌握按键电路的搭建和调试方法。

3. 了解按键电路在实际应用中的重要性。

4. 提高动手实践能力和电路分析能力。

二、实验原理按键显示电路是一种将按键输入转换为数字信号,并通过显示设备进行显示的电路。

本实验主要涉及以下原理:1. 按键原理:按键通过机械触点实现电路的通断,当按键被按下时,电路接通,产生一个低电平信号;当按键释放时,电路断开,产生一个高电平信号。

2. 译码电路:将按键输入的信号转换为相应的数字信号,以便后续处理。

3. 显示电路:将数字信号转换为可视化的信息,如LED灯、数码管等。

三、实验器材1. 电路板2. 按键3. 电阻4. LED灯5. 数码管6. 电源7. 基本工具四、实验步骤1. 按键电路搭建(1)根据电路原理图,在电路板上焊接按键、电阻、LED灯等元器件。

(2)连接电源,确保电路板供电正常。

2. 译码电路搭建(1)根据电路原理图,在电路板上焊接译码电路所需的元器件。

(2)连接译码电路与按键电路,确保信号传输正常。

3. 显示电路搭建(1)根据电路原理图,在电路板上焊接显示电路所需的元器件。

(2)连接显示电路与译码电路,确保信号传输正常。

4. 电路调试(1)检查电路连接是否正确,确保无短路、断路等问题。

(2)按下按键,观察LED灯或数码管显示是否正常。

(3)根据需要调整电路参数,如电阻阻值、电源电压等,以达到最佳显示效果。

五、实验结果与分析1. 实验结果通过实验,成功搭建了一个按键显示电路,按下按键后,LED灯或数码管能够正确显示数字信号。

2. 结果分析(1)按键电路能够正常工作,实现电路通断。

(2)译码电路能够将按键输入转换为相应的数字信号。

(3)显示电路能够将数字信号转换为可视化的信息。

六、实验总结1. 通过本次实验,掌握了按键电路的基本原理和设计方法。

2. 提高了动手实践能力和电路分析能力。

3. 了解了按键电路在实际应用中的重要性。

综合实验一——按键控制流水灯实验(查询方式)

综合实验一——按键控制流水灯实验(查询方式)

北京科技大学微型计算机原理实验报告学院:____自动化学院________________专业、年级:_自动化1101_ ______________ 姓名:__廖文骏_ ________________学号:_ 20111002124 ____________ 指导教师:___ _____王粉花____________2013年12 月综合实验一按键控制流水灯实验(查询方式)实验学时:2学时一、实验目的1.掌握ATmega16 I/O口操作相关寄存器2.掌握CodeVision AVR软件的使用3. 复习C语言,总结单片机C语言的特点二、实验内容1. 设计一个简单控制程序,功能是8个LED逐一循环发光0.5s,构成“流水灯”。

2. 用两个按键K1和K2控制流水灯(中断方式):(1)当按下K1时,流水灯从左向右流动;(2)当按下K2时,流水灯从右向左流动。

三、实验所用仪表及设备硬件:PC机一台、AVR_StudyV1.1实验板软件:CodeVision AVR集成开发软件、SLISP下载软件四、实验原理ATmega16芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。

所有这些I/O口都是双(有的为3)功能复用的。

其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。

这些I/O口同外围电路的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成和实现了千变万化的应用。

每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。

I/O口的工作方式和表现特征由这3个I/O口寄存器控制。

AVR通用I/O端口的引脚配置情况:I/O口引脚配置表表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。

按键控制数码管和流水灯设计报告实验报告要点

按键控制数码管和流水灯设计报告实验报告要点

摘要单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。

本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。

通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。

用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。

在硬件电路的基础上加上软件程序的控制来实现本设计。

其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。

关键字:单片机、流水灯、数码管、控制系统SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the Keywords: SCM, water lights, digital tubes, control system键盘控制流水灯和数码管实验报告目录一设计的目的 (2)二任务描述及方案设计 (3)1. 任务描述 (3)2. 方案设计 (3)三硬件设计方案 (3)1. Msp430f149单片机的功能说明 (3)2. 显示器功能 (4)3. 复位电路 (4)4. 按键的部分 (4)5. 74HC573的特点 (4)6. 流水灯和数码管电路原理图 (4)7. 元器件清单 (4)四程序设计方案 (5)1. 用IAR Embedded Workbench软件编程序 (5)2. 仿真电路图 (6)五实物实验 (7)1. 实物图 (7)2. 测试结果与分析 (7)六结论 (11)八参考文献 (16)一、设计目的1、进一步巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文献查阅、报告撰写等基本技能;2、培养学生实践动手能力及独立分析和解决工程实践问题能力;3、培养学生的团队协作精神、创新意思、严肃认真的治学态度和严谨求实的工作作风。

流水灯电路板实践报告(2篇)

流水灯电路板实践报告(2篇)

第1篇一、引言随着科技的不断发展,电子技术已经深入到我们生活的方方面面。

电路板作为电子产品的核心部件,其设计和制作越来越受到重视。

为了提高自己的动手能力和实际操作经验,我们选择了流水灯电路板作为实践项目。

本文将对流水灯电路板的设计、制作和调试过程进行详细阐述。

二、设计原理流水灯电路板采用74HC595芯片实现8位LED灯的动态扫描显示。

74HC595是一款串行输入、并行输出的移位寄存器,具有锁存功能。

通过串行输入端输入数据,然后逐个输出到并行端口,实现LED灯的动态扫描显示。

1. 电路组成(1)电源电路:为电路板提供5V稳定电压。

(2)74HC595芯片:实现8位LED灯的动态扫描显示。

(3)LED灯:用于显示流水灯效果。

(4)按键电路:用于控制流水灯的速度。

(5)电阻:限流保护LED灯。

2. 工作原理(1)当按键电路未按下时,电路板处于待机状态,LED灯不亮。

(2)按下按键电路,电路板开始工作,74HC595芯片的串行输入端开始接收数据。

(3)数据经过74HC595芯片处理后,逐个输出到并行端口,控制LED灯的亮灭。

(4)按键电路控制流水灯的速度,实现不同频率的流水灯效果。

三、制作过程1. 准备材料(1)电路板:100mm×100mm(2)74HC595芯片:1个(3)LED灯:8个(4)电阻:8个(5)按键:1个(6)电源:5V(7)焊锡、烙铁、电烙铁架等焊接工具2. 制作步骤(1)按照电路原理图,将74HC595芯片、LED灯、电阻、按键等元器件焊接在电路板上。

(2)连接电源,检查电路连接是否正确。

(3)调试电路,观察LED灯是否按照预期效果显示流水灯。

(4)根据实际情况调整电路参数,实现不同频率的流水灯效果。

四、调试过程1. 检查电路连接(1)检查电源电路连接是否正确,确保电路板能够正常供电。

(2)检查74HC595芯片、LED灯、电阻、按键等元器件焊接是否牢固。

2. 调试流水灯效果(1)按下按键电路,观察LED灯是否按照预期效果显示流水灯。

按键控制数码管实训报告

按键控制数码管实训报告

一、实训目的本次实训旨在通过实际操作,掌握按键控制数码管的基本原理和实现方法,熟悉数字电路设计流程,提高动手能力和工程实践能力。

通过本次实训,学生应能够:1. 理解按键控制数码管的工作原理;2. 熟悉FPGA开发环境及工具的使用;3. 掌握数码管驱动电路的设计方法;4. 能够编写简单的FPGA程序,实现按键控制数码管的功能;5. 提高团队合作能力和问题解决能力。

二、实训原理数码管是一种常用的显示器件,由多个发光二极管组成,通常用于显示数字和字符。

按键作为输入设备,通过电路连接到微控制器(如FPGA、单片机等)的输入引脚,实现用户与数码管的交互。

按键控制数码管的基本原理如下:1. 按键输入处理:微控制器不断扫描按键的状态,当检测到按键被按下时,根据按键的编号或功能执行相应的操作。

2. 指令转换:将按键的输入转换为数码管能够理解的显示指令。

这通常涉及将按键编号或功能映射到特定的数字或字符编码。

3. 数码管显示控制:微控制器根据转换后的显示指令,通过控制数码管的驱动电路来点亮或熄灭数码管中的不同段,从而显示出所需的数字或字符。

4. 循环扫描与更新:为了保持数码管显示内容的实时性,微控制器需要不断重复上述步骤,形成一个循环扫描和更新的过程。

三、实训内容本次实训主要内容包括:1. 硬件电路设计:设计数码管驱动电路,包括LED数码管、按键、电阻、电容等元件的选择和连接。

2. FPGA程序设计:编写FPGA程序,实现按键控制数码管的功能,包括按键输入处理、指令转换、数码管显示控制等。

3. 系统调试与测试:将硬件电路与FPGA程序连接,进行系统调试和测试,验证系统功能是否正常。

四、实训步骤1. 硬件电路设计:- 选择合适的LED数码管、按键、电阻、电容等元件;- 根据元件规格和电路要求,绘制电路原理图;- 使用面包板搭建电路,并进行测试。

2. FPGA程序设计:- 选择合适的FPGA开发环境(如Vivado、Quartus II等);- 创建FPGA工程,添加必要的IP核(如时钟源、按键输入、数码管驱动等);- 编写FPGA程序,实现按键控制数码管的功能;- 编译FPGA程序,生成比特流文件。

流水灯实验报告

流水灯实验报告

实验一流水灯实验一、实验目的1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机时点亮12发光二极管, 闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示由顺时针改为逆时针方式三、系统硬件设计单片机STC10F08XE 1片发光二极管led 红4个黄4个绿4个按键6个复位电路时钟电路如下图所示:四、系统软件设计#include<reg51.h>sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; void Delay(void){unsigned char i,j,k;for(i=10;i>0;i--)for(j=132;j>0;j--)for(k=150;k>0;k--); }Scan_Key(){ unsigned char FLAG=0;unsigned char n;n=(L1==0)||(L2==0)||(L3==0);if(n) { FLAG=1;}return FLAG; }main(){ unsigned char y,n,s=0,b=1,m=0;unsigned char c=1;unsigned char a[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char h[]={0xff,0x38,0x34,0x2f,0x1f};n=Scan_Key(); for(y=0;y<3;y++){ P2=0; P3=0; Delay(); Delay(); Delay();P2=0xff; P3=0xff; Delay(); Delay(); Delay(); }while(1) { while(1){ m=m+n; P3=0x3f; while(1){ for(;b<9;b++){ n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==0)){P2=a[b];Delay();}else { P2=0xff;break; }if(m%2==0) c=1; P2=0xff; }for(;c<5;c++){n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==0)){ P3=h[c];Delay();}else { P3=0x3f;break;} }if(m%2==0) b=1; break; }if(m%2==1) break; }while(1){ for(;b>0;b--){n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==1)){P2=a[b];Delay(); } else{P2=0xff;break;} P2=0xff; }if(m%2==1) c=4; for(;c>0;c--){ n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==1)){ P3=h[c]; Delay();}else { P3=0x3f;break;} P3=0x3f; }if(m%2==0) break;if(m%2==1) b=8; } } }五、实验过程中遇到的问题及解决方法问题1: 如何实现顺、逆时针依次点亮流水灯?解决: 利用循环右移_cror_(m,1)和循环左移_crol_(n,1)依次点亮。

流水灯控制实验报告及程序

流水灯控制实验报告及程序

实验三流水灯控制实验姓名专业通信工程学号成绩一、实验目的1.掌握Keil C51 软件与protues软件联合仿真调试的方法;2.掌握如何使用程序与查表等方法实现流水效果;3.掌握按键去抖原理及处理方法。

二、实验仪器与设备1. 微机1台2. Keil C51集成开发环境3. Proteus仿真软件三、实验内容1.用Proteus设计一流水灯控制电路。

利用P1口控制8个发光二级管L1—L8。

P3.3口接一按键K1。

参考电路如下图所示。

其中74LS240为八反响三态缓冲器/线驱动器。

2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。

若用KEY表示按键的次数,则其对应的流水效果如下:① KEY=0: L1-L8全亮;② KEY=1: L1-L8先全灭,然后自右向左单管点亮,如此循环;③ KEY=2: L1-L8先全灭,然后自右向左依次点亮,如此循环;④ KEY=3: L1-L8先全亮,然后自左向右依次熄灭,如此循环;⑤ KEY=4: L1-L8先全灭,然后整体闪烁,如此循环;⑥ KEY=5:自行设计效果。

以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头开始循环。

四、实验原理1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形如下图所示。

由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动。

抖动时间的长短由按键的机械特性决定,一般为5~10ms。

按键抖动会引起一次按键被误读多次。

为了确保CPU对键的一次闭合仅做一次处理,必须去除按键抖动。

在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。

按键的抖动,可用硬件或软件两种方法消除。

常用软件方法去抖动,即检测到按键闭合后执行一个5~10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。

单片机并口简单应用(流水灯、数码管)实验报告6-1

单片机并口简单应用(流水灯、数码管)实验报告6-1

实验一单片机并口简单应用(流水灯、数码管)实验目的1、了解简单单片机应用系统的设计方法。

2、了解单片机汇编语言程序的基本结构3、了解单片机汇编语言程序的设计和调试方法4、掌握应用PROTEUS仿真软件的操作方法。

5、掌握应用KEIL软件编辑、编译源汇编程序的操作方法。

6、培养良好的实验习惯。

实验内容1、AT89S51为主控芯片,用PROTEUS仿真设计简单单片机应用系统。

2、编程实现8个发光LED“流水”的现象,用一个按键控制灯的上、下、开花三种状态,先用查询。

3、用四个数码管开始现实185,做二个按键,加5,减4,最多加到210,最多减到150。

发辉部分:修改程序,用中断完成以上功能,用六位数码管显示学号后六位。

实验原理1、流水灯(1)实验原理图(可打印)(2)实验程序(必须手写)流水灯中断ORG 0000HAJMP MAINORG 0003HAJMP KEYMAIN:CALL INITLOOP:CALL MOVECALL DELAYAJMP LOOPINIT:MOV R3,#0FEHMOV R4,#0MOV P2,#0FFHMOV R0,#00HSETB IT0SETB EX0SETB EARETMOVE:CJNE R0,#00H,MOV2 MOV A,R3RL AMOV R3,AMOV P2,R3MOV2:CJNE R0,#01H,MOV3 MOV A,R3RR AMOV R3,AMOV P2,R3MOV3:CJNE R0,#02H,LEND MOV DPTR,#TABMOV R7,#0MOV R6,#4LOP: MOV A,R7MOVC A,@A+DPTRMOV P2,ALCALL DELAYINC R7DJNZ R6,LOP LEND: RETKEY: PUSH PSWPUSH ACCMOV A,R0INC ACJNE A,#03H,HU1MOV A,#00HHU1: MOV R0,APOP ACCPOP PSWRETIDELAY:MOV R2,#150DE1: MOV R5,#200DJNZ R5,$DJNZ R2,DE1RETTAB: DB 0e7H,0dbH,0bdH,07eH END;OK查询ORG 0000HAJMP STARTSTART:MOV R3,#0FEHMOV R4,#0MOV P2,#0FFHMOV R0,#00HMAIN:CALL DETCALL MOVEAJMP MAINDET:JB P3.2,DENDJNB P3.2,$MOV A,R0INC AMOV R0,ACJNE A,#03H,DENDMOV R0,#00HDEND:RETMOVE:CJNE R0,#00H,MOV2MOV A,R3RL AMOV R3,AMOV P2,R3MOV2:CJNE R0,#01H,MOV3MOV A,R3RR AMOV R3,AMOV P2,R3MOV3:CJNE R0,#02H,LENDMOV DPTR,#TABMOV R7,#0MOV R6,#4LOP: MOV A,R7MOVC A,@A+DPTRMOV P2,ALCALL DELAYINC R7DJNZ R6,LOPLEND: RETDELAY: MOV R4,#250DE1: MOV R5,#200DJNZ R5,$DJNZ R4,DE1RETTAB: DB 0e7H,0dbH,0bdH,07eH END;OK2、数码管显示(1)实验原理图(可打印)(2)实验程序(可打印)(3)数码管查询(4) ORG 0000H(5) AJMP MAIN(6)(7) MAIN:(8)MOV R2,#000(9)MOV R3,#185(10)(11)MANAGE:(12)LCALL COMPUTING(13)LCALL BCD(14)LCALL DISPLAY(15)AJMP MANAGE(16)(17)(18)COMPUTING:(19)JB P3.1,SU(20)JNB P3.1,$(21)INC R3(22)INC R3(23)INC R3(24)INC R3(25)INC R3(26)CJNE R3,#210,PD1(27)PD1: JC LEND(28)MOV R3,#210(29)SU: JB P3.2,LEND(30)JNB P3.2,$(31)DEC R3(32)DEC R3(33)DEC R3(34)DEC R3(35)CJNE R3,#150,PD2 (36)PD2: JNC LEND (37)MOV R3,#150 (38)LEND:RET(39)(40)(41)BCD:(42)MOV A,R2(43)MOV B,#100 (44)DIV AB(45)MOV 30H,A(46)MOV A,B(47)MOV B,#10(48)DIV AB(49)MOV 31H,A(50)MOV 32H,B(51)(52)MOV A,R3(53)MOV B,#100 (54)DIV AB(55)MOV 33H,A(56)MOV A,B(57)MOV B,#10(58)DIV AB(59)MOV 34H,A(60)MOV 35H,B(61)(62)DISPLAY:(63)MOV R7,#7(64)MOV R0,#30H (65)MOV DPTR,#TAB (66)MOV R6,#0FEH (67)LOOP:(68)MOV A,@R0(69)MOVC A,@A+DPTR (70)MOV P1,R6(71)MOV P2,A(72)LCALL DELAY (73)MOV A,R6(74)RR A(75)MOV R6,A(76)LCALL DELAY(77)INC R0(78)DJNZ R7,LOOP(79)RET(80)(81)DELAY:(82)MOV R5,#50(83)DE1:MOV R4,#10(84)DJNZ R4,$(85)DJNZ R5,DE1(86)RET(87)(88)(89)TAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H (90)(91)END(92)(93);OK(94)(95)中断(96) ORG 0000H(97) AJMP MAIN(98) ORG 0003H(99) AJMP KEY(100) ORG 0013H(101) AJMP KEY2(102)(103)MAIN:(104)LCALL INIT(105)MOV R2,#000(106)MOV R3,#185(107)(108)MANAGE:(109)LCALL BCD(110)LCALL DISPLAY(111)AJMP MANAGE(112)(113)INIT:(114) SETB IT0(115) SETB IT1(116) SETB EX0(117) SETB EX1(118) SETB EA(119) RET(120)(121)KEY: MOV A,R3 (122)ADD A,#5 (123)MOV R3,A (124)CJNE R3,#210,M1 (125)M1: JC KEND(126)MOV R3,#210 (127)AJMP KEND (128)KEY2: MOV A,R3 (129)SUBB A,#4 (130)MOV R3,A (131)CJNE R3,#150,M2 (132)M2: JNC KEND (133)MOV R3,#150 (134)KEND: RETI(135)(136)(137)BCD:(138)MOV A,R2(139)MOV B,#100(140)DIV AB(141)MOV 30H,A(142)MOV A,B(143)MOV B,#10(144)DIV AB(145)MOV 31H,A(146)MOV 32H,B(147)(148)MOV A,R3(149)MOV B,#100(150)DIV AB(151)MOV 33H,A(152)MOV A,B(153)MOV B,#10(154)DIV AB(155)MOV 34H,A(156)MOV 35H,B(157)(158)DISPLAY:(159)MOV R7,#7(160)MOV R0,#30H (161)MOV DPTR,#TAB (162)MOV R6,#0FEH (163)LOOP:(164)MOV A,@R0(165)MOVC A,@A+DPTR(166)MOV P1,R6(167)MOV P2,A(168)LCALL DELAY(169)MOV A,R6(170)RR A(171)MOV R6,A(172)LCALL DELAY(173)INC R0(174)DJNZ R7,LOOP(175)RET(176)(177)DELAY:(178)MOV R5,#50(179)DE1:MOV R4,#10(180)DJNZ R4,$(181)DJNZ R5,DE1(182)RET(183)(184)(185)TAB: DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H (186)(187)END(188)(189);OK3、显示学号后六位(1)实验原理图(可打印)(2)实验程序(可打印)学号ORG 0000HAJMP MAINMAIN:MOV R2,#071MOV R3,#082MANAGE:LCALL BCDLCALL DISPLAYAJMP MANAGEBCD:MOV A,R2MOV B,#100DIV ABMOV 30H,AMOV A,BMOV B,#10DIV ABMOV 31H,AMOV 32H,BMOV A,R3MOV B,#100DIV ABMOV 33H,AMOV A,BMOV B,#10DIV ABMOV 34H,AMOV 35H,BDISPLAY:MOV R7,#7MOV R0,#30HMOV DPTR,#TABMOV R6,#0FEHLOOP:MOV A,@R0MOVC A,@A+DPTRMOV P1,R6MOV P2,ALCALL DELAYMOV A,R6RR AMOV R6,ALCALL DELAYINC R0DJNZ R7,LOOPRETDELAY:MOV R5,#50DE1:MOV R4,#10DJNZ R4,$DJNZ R5,DE1RETTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H END实验总结1、实验中出现的问题,如何解决2、心得体会。

流水灯设计实验报告

流水灯设计实验报告

流水灯设计实验报告流水灯设计实验报告一、实验目的本实验旨在通过设计和搭建流水灯电路,加深对电路原理和逻辑门的理解,培养学生的动手实践能力和创新思维。

二、实验原理流水灯是一种常见的电子装置,通过多个灯泡依次亮起和熄灭,形成灯光在电路中流动的效果。

实现流水灯的关键在于使用逻辑门控制灯泡的亮灭,常用的逻辑门有与门、或门、非门等。

三、实验材料1. Arduino开发板2. 电路连接线3. LED灯泡4. 电阻5. 面包板四、实验步骤1. 将Arduino开发板连接到电脑上,并打开Arduino IDE软件。

2. 在IDE软件中编写程序,控制LED灯泡的亮灭。

根据流水灯的效果,我们需要依次点亮和熄灭不同的LED灯泡。

通过控制逻辑门的输入和输出,可以实现这一效果。

3. 将电路连接线插入Arduino开发板的数字引脚,并连接到面包板上的LED灯泡和电阻。

4. 将面包板上的电路与Arduino开发板连接起来,确保电路连接正确无误。

5. 将Arduino开发板连接到电脑上,上传程序到开发板上。

6. 观察LED灯泡的亮灭效果,检查是否符合流水灯的设计要求。

7. 如有需要,对电路进行调整和优化,以获得更好的灯光效果。

五、实验结果与分析经过实验,我们成功搭建了流水灯电路,并实现了灯光依次流动的效果。

通过调整程序和电路连接,我们可以控制流水灯的速度、方向和亮度,实现不同的灯光效果。

在实验过程中,我们发现逻辑门的选择和连接方式对流水灯的效果有重要影响。

与门可以将多个输入信号进行逻辑与运算,实现多个灯泡同时亮起的效果;或门可以将多个输入信号进行逻辑或运算,实现多个灯泡同时熄灭的效果。

通过合理选择逻辑门,我们可以实现更加复杂和丰富的流水灯效果。

此外,电阻的选择也对流水灯的亮度和稳定性有一定影响。

合适的电阻可以限制电流,保护LED灯泡不受损坏,并使灯光更加柔和和稳定。

六、实验总结通过本次实验,我们深入了解了流水灯的原理和设计方法,掌握了使用逻辑门控制灯光的技巧。

流水灯控制实验报告

流水灯控制实验报告

流水灯控制实验报告一、引言流水灯是一种常见的电子实验和电路设计项目,它通过控制一组LED灯的亮灭顺序和时间间隔来呈现出一种流动的效果。

本实验旨在通过搭建一个流水灯电路,学习并掌握流水灯的原理和控制方法。

二、实验原理1.流水灯电路的组成本实验采用的流水灯电路是由多个LED灯组成的,LED灯的正极与电源相连,负极通过电阻连接到单片机的输出端口。

通过控制单片机输出高低电平来控制LED灯的亮灭。

2.流水灯的工作原理流水灯电路通过单片机的输出端口控制LED灯的亮灭顺序和时间间隔,实现流动的效果。

在一个循环中,每个LED灯按顺序依次亮起,然后熄灭,接着下一个LED灯亮起,如此循环往复,形成了流水灯的效果。

三、实验器材和元件1.单片机:选用STC89C52RC型单片机;2. LED灯:选用红色5mm直径的共阳极LED灯4个;3.电阻:选用220Ω的电阻4个;4.面包板、导线等。

四、实验步骤1.连接电路将单片机、LED灯和电阻等元件按照电路图,通过面包板和导线连接起来。

2.编写程序使用C语言编写程序,在单片机上控制LED灯的亮灭顺序和时间间隔。

通过设置单片机输出端口的高低电平,控制LED灯的亮灭。

3.烧写程序将编好的程序通过编程器烧写到单片机中,使其能够执行程序。

4.测试实验将电路连接到电源,并接通电源。

观察LED灯的亮灭情况,检查流水灯效果是否符合预期。

五、实验结果分析经过反复测试,流水灯电路能够正常工作,LED灯按照预设的顺序亮灭,形成了流动的效果。

六、实验总结通过本次实验,我学习了流水灯电路的原理和控制方法,并成功搭建了一个流水灯电路。

通过编写程序,我掌握了如何通过单片机控制LED灯的亮灭。

在实验过程中,我深刻理解了流水灯电路的工作原理,培养了动手实践和问题解决的能力。

七、实验改进措施1.可以通过调整LED灯的亮灭顺序和时间间隔,改变流水灯的效果和速度;2.可以使用其他颜色的LED灯,增加流水灯的变化效果;3.可以将流水灯电路与其他电子元件结合,设计更复杂的电路和效果。

实习报告-流水灯

实习报告-流水灯

单片机流水彩灯设计目录1、方案设计说明 (2)(1)设计项目概述 (2)(2)设计项目功能及操作介绍 (2)(3)方案设计思路 (2)2、硬件设计说明 (3)(1)电路图 (3)(2)I/O的分配 (3)(3)电路工作原理 (4)(4)主要器件介绍 (4)3、软件设计说明 (5)(1)软件设计概述 (5)1)设计思路 (5)2)总体功能 (6)3)程序流程图 (7)(2)程序总体结构及程序的执行与工作过程 (8)(3)重要程序段说明 (8)(4)程序清单 (9)4、制作调试说明 (13)(1)制作调试过程及结果 (13)(2)所遇到的问题及解决方法 (13)5、总结 (14)1、方案设计说明(1)设计项目概述本次设计的题目是单片机流水彩灯设计通过综合掌握单片机编程的基本思想,以及中断,定时程序的基本编写方法。

利用单片机设计并制作流水彩灯。

该流水彩灯设置用一个AT89S51单片机来控制12LED灯产生不同的发光效果。

(2)设计项目功能及操作介绍其中两个按键 K1 和 K2,上电后,12 个 LED 灯全亮;两个按键一个用于控制“流水灯”的启动和停止,另一个用于选择“流水”的花样。

其中流水灯花样有三种:1)单个LED灯顺次点亮。

2)每两个LED灯顺次点亮然后再顺次返回。

3)从两端每三个LED灯顺向中间次点亮。

(3)方案设计思路按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。

流水灯实际上就是一个带有12个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

如果要让接在P0.0口的LED亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED熄灭,就要把P0.0口的电平变为高电平;同理,接在其他接口上LED灯的点亮和熄灭的方法也如此。

因此,要实现流水灯功能,我们只要将发光二极管LED1~LED12依次点亮、熄灭,12只LED灯便会一亮一暗的做流水灯了。

按键控制流水灯实训报告

按键控制流水灯实训报告

一、实训目的1. 熟悉51单片机的I/O口编程,掌握按键输入和LED输出控制的基本方法。

2. 学习单片机程序设计的基本思路,提高编程能力。

3. 培养动手实践能力,提高电路焊接和调试水平。

二、实训原理1. 单片机I/O口编程:51单片机的I/O口可以编程设置为输入或输出模式。

在本实训中,我们将I/O口配置为输出模式,用于控制LED灯的亮灭;同时,将I/O口配置为输入模式,用于检测按键状态。

2. 按键输入:当按键未被按下时,单片机通过检测I/O口输入电平,判断按键是否处于高电平状态;当按键被按下时,单片机检测到低电平状态。

3. LED输出:单片机通过编程控制I/O口输出电平,从而控制LED灯的亮灭。

在本实训中,我们通过依次点亮LED灯来实现流水灯效果。

4. 流水灯控制逻辑:根据按键状态,单片机在无限循环中不断检测按键状态,并改变流水灯的方向。

三、实训步骤1. 准备工作:准备51单片机开发板、按键、LED灯、电阻等元器件,以及相关编程软件。

2. 电路连接:按照电路图连接好51单片机、按键、LED灯和电阻等元器件。

3. 编程:使用Keil C51集成开发环境编写程序,实现按键控制流水灯功能。

4. 调试:将编写好的程序烧录到单片机中,进行电路调试。

5. 测试:验证按键控制流水灯功能是否正常。

四、程序设计1. 初始化I/O口:将P1口配置为输出模式,用于控制LED灯;将P3口配置为输入模式,用于检测按键状态。

2. 按键检测:在主循环中,不断检测P3口状态,判断按键是否被按下。

3. 流水灯控制:根据按键状态,控制LED灯依次点亮,实现流水灯效果。

4. 延时函数:为了使流水灯效果更加明显,使用延时函数控制LED灯点亮时间。

5. 按键状态处理:当检测到按键被按下时,改变流水灯方向。

五、实训结果与分析1. 实训结果:通过编程和调试,成功实现了按键控制流水灯功能。

2. 分析:(1)I/O口编程:通过编程将51单片机的I/O口配置为输入或输出模式,是实现流水灯功能的基础。

创意流水灯实验报告(3篇)

创意流水灯实验报告(3篇)

第1篇一、实验背景随着科技的不断发展,电子技术已经渗透到我们生活的方方面面。

其中,LED流水灯作为一种新型照明产品,因其节能、环保、色彩丰富等特点,在装饰照明、广告宣传等领域得到了广泛应用。

为了深入了解LED流水灯的工作原理,提高我们的动手实践能力,我们设计并完成了一项创意流水灯实验。

二、实验目的1. 了解LED流水灯的工作原理。

2. 掌握LED流水灯的电路连接方法。

3. 通过创意设计,提高LED流水灯的观赏性和实用性。

三、实验原理LED流水灯是通过将多个LED灯珠串联或并联,通过控制电路的通断来实现流水效果的。

实验中,我们采用PWM(脉冲宽度调制)技术来控制LED灯的亮度,从而实现流水灯的动态效果。

四、实验器材1. LED灯珠:红、绿、蓝各50颗2. 马达:1台3. 电阻:若干4. 线路板:1块5. 电源:9V直流电源6. 剪刀、胶带等辅助工具五、实验步骤1. 设计电路图:根据LED灯珠的参数,设计出合适的电路图,确保电路连接正确。

2. 制作电路板:按照电路图,将LED灯珠、电阻、马达等元器件焊接在电路板上。

3. 连接电源:将电路板与9V直流电源连接,确保电路板供电正常。

4. 制作流水灯外壳:根据设计要求,制作流水灯外壳,确保内部电路布局合理。

5. 测试流水灯效果:接通电源,观察LED灯珠的流水效果,检查电路是否正常工作。

6. 优化设计:根据实验效果,对流水灯的设计进行优化,提高观赏性和实用性。

六、实验结果与分析1. 实验结果:经过多次测试,我们成功制作出了一款具有流水效果的LED流水灯。

在实验过程中,LED灯珠的流水效果稳定,颜色鲜艳,马达运行正常。

2. 结果分析:通过本次实验,我们掌握了LED流水灯的工作原理和电路连接方法。

在实验过程中,我们了解到PWM技术在控制LED灯亮度方面的应用,以及马达在流水灯中的驱动作用。

3. 优化建议:为了提高流水灯的观赏性和实用性,我们可以在以下几个方面进行优化:(1)增加LED灯珠的种类和数量,丰富流水灯的色彩效果。

跑马灯实验报告

跑马灯实验报告

跑马灯实验报告单片机跑马灯(流水灯)控制实验报告单片机实验报告姓名:学号:一、实验实现功能:1:计数器功能2:流水灯二、具体操作:1、计数器功能数码管的动态显示。

每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。

2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms。

三、程序流程图四、程序#include &lt;reg50 ;//LED 开关void delay(uint16 i); //延时函数声明void refresh ();// 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main()//主函数{TMOD = 0x01;//定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18;//定时器初值使每次循环为1msTR0 = 0;//定时器0开始作ET0 = 0; // 定时器中断关EA = 0;// 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10];//十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000];//千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000];//千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j;// 定义局部变量for(i;i&gt;0;i--) //循环i*240 次for(j=240;j&gt;0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j&lt;4;j++)//四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20);//延时消抖}}/*************定时器的中断服务函数**************/ void Timer0_Overflow() interrupt 1//定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1;//中断开放ET0 = 1; //定时器0中断开while(1){}}Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{ P0=~(1&lt;&lt;j++);//控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{ j=0;}。

开关控制LED数码管实验报告

开关控制LED数码管实验报告

实验二开关控制LED数码管实验
一、实验目的:
1.通过AT89C51读入4位开关K1、K2、K3、K4的输入状态,并按照二进制编码关系0-F输出到数码管显示。

(如K4K3K2K1全部按下,则显示F;若只有K2按下,则显示2。


2.掌握LED数码管的静态显示。

3.掌握I/O口的控制方法。

二、PROTEUS电路设计:
三、实验仪器和设备
PC机、PROTEUS软件或W-A-51综合开发学习板
四、源程序设计:
1.程序
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV DPTR,#BIAO ;指针指向表的首地址
MOV A,P2 ;读入P2口4个开关的状态,开关按下着输入低电平CPL A ;把输入的开关状态取反,得到编码关系
MOVC A,@A+DPTR ;查表,找到7端数码管对应的显示代码
MOV P0,A ;输出显示
BIAO: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H,08H,49H,46H,40H,06H,0EH END。

按键功能实验报告总结(3篇)

按键功能实验报告总结(3篇)

第1篇一、实验背景按键作为电子设备中常见的输入装置,其功能丰富,应用广泛。

本实验旨在通过设计和实现一系列按键功能,加深对按键工作原理的理解,并提高电子设计实践能力。

二、实验目的1. 掌握按键的基本原理和电路设计方法。

2. 熟悉按键在不同应用场景下的功能实现。

3. 培养电子设计实践能力,提高问题解决能力。

三、实验内容1. 实验器材:51单片机最小核心电路、按键、LED灯、电阻、电容、面包板等。

2. 实验内容:(1)单按键控制LED灯闪烁(2)按键控制LED灯点亮与熄灭(3)按键控制LED灯亮度调节(4)按键实现数字时钟调整(5)按键实现多功能计数器(6)按键实现密码输入与验证四、实验步骤1. 根据实验要求,设计电路图,并选择合适的元器件。

2. 使用面包板搭建实验电路,包括单片机、按键、LED灯、电阻、电容等。

3. 编写程序,实现按键功能。

4. 对程序进行调试,确保按键功能正常。

5. 实验完成后,撰写实验报告。

五、实验结果与分析1. 单按键控制LED灯闪烁实验结果:按下按键,LED灯闪烁;松开按键,LED灯停止闪烁。

分析:本实验通过单片机定时器实现LED灯的闪烁。

当按键按下时,定时器开始计时;当定时器达到设定时间后,LED灯点亮;定时器继续计时,当达到设定时间后,LED灯熄灭。

如此循环,实现LED灯的闪烁。

2. 按键控制LED灯点亮与熄灭实验结果:按下按键,LED灯点亮;再次按下按键,LED灯熄灭。

分析:本实验通过单片机的I/O口控制LED灯的点亮与熄灭。

当按键按下时,单片机将I/O口置为高电平,LED灯点亮;当按键再次按下时,单片机将I/O口置为低电平,LED灯熄灭。

3. 按键控制LED灯亮度调节实验结果:按下按键,LED灯亮度逐渐增加;松开按键,LED灯亮度保持不变。

分析:本实验通过单片机的PWM(脉宽调制)功能实现LED灯亮度的调节。

当按键按下时,单片机调整PWM占空比,使LED灯亮度逐渐增加;松开按键后,PWM占空比保持不变,LED灯亮度保持不变。

按键控制数码管和流水灯设计报告实验报告

按键控制数码管和流水灯设计报告实验报告

按键控制数码管和流水灯设计报告实验报告实验名称:按键控制数码管和流水灯设计报告一、实验目的本实验旨在通过使用按键来控制数码管和流水灯的显示,加深对数码管和流水灯工作原理的理解,并掌握按键的基本输入输出原理。

二、实验器材1. Arduino开发板2.数码管模块3.面包板4.面包板连接线5.按键模块6.跳线三、实验原理数码管是一种将数字和一些常用符号通过数码电路显示在特定位置的显示器件,由多个LED组成,可显示0-9及一些小于9的字母和符号。

流水灯是一种LED灯的组合,通过不同的时序控制,实现灯光依次点亮或熄灭的效果。

本实验通过使用按键控制器将数码管和流水灯的状态控制与显示,按下不同的按键可以使数码管切换显示不同的数字,同时控制流水灯的点亮或熄灭。

四、实验步骤1. 将数码管模块连接到Arduino开发板的数字I/O口,连接方式可参考数码管模块的接口定义和Arduino开发板的编号。

2. 将按键模块连接到Arduino开发板的数字I/O口,连接方式可参考按键模块的接口定义和Arduino开发板的编号。

3. 按键模块和数码管模块都需要使用面包板连接线和跳线连接到Arduino开发板的相应引脚上。

4.根据按键的读取状态,通过编程控制数码管显示相应的数字,利用流水灯实现通过按键的控制点亮或熄灭。

五、实验结果经过编程和调试,实验中数码管能够正确显示按键输入的数字,同时根据按键输入状态控制流水灯的点亮或熄灭。

按不同的按键可以切换数码管的数字显示,实现了按键对数码管和流水灯的控制。

六、实验总结本实验通过按键来控制数码管和流水灯的显示,加深了对数码管和流水灯的工作原理的理解。

同时,掌握了按键的基本输入输出原理,并通过编程控制实现了按键对数码管和流水灯的控制。

本实验还有一些可以改进的地方,例如可以增加多个按键,实现更多的控制功能;还可以通过增加延时函数控制流水灯的点亮或熄灭速度。

通过不断改进和练习,可以提高对Arduino开发板的理解和掌握。

【按键控制流水灯设计报告】

【按键控制流水灯设计报告】

按键控制流水灯设计报告一、项目名称:按键控制流水灯二、目的:通过对按键控制发光二极管项目的改变,设计出自己的方案,来加深对硬件技术的理解,同时锻炼关于硬件的编程技术,掌握keil等软件的使用。

三、硬件原理:数码管与发光二极管硬件电路图:芯片引脚电路图:按键与导航按键:四、软件原理:变量Key1,Key2,Key3分别代表第一个、第二个、第三个按键,值为零时表示按下了该按键。

那么可以写出一个判断条件,当这三个变量的值分别为1 时,就分别调用三个不同的函数,三个函数分别表示LED灯的三种不同的闪亮方式。

五、软件流程:首先判断哪一个变量的值为1,即哪一个按键被按下,然后就调用相应的函数。

六、关键代码:void main(){Init();P0=0x00;while(1){//其他两个key通过中断实现// if(Key3==0)// {// G_count=0;// while(G_count!=200);//延时10ms// while(!Key3)//等待直到释放按键// {// P0=0x33;// }// }if(Key1==0)fun2();if(Key2==0)fun3();if(Key3==0)fun4();}}七、操作说明:当把软件下载到电路板以后,给它插上电源,然后按下不同的按键,可以观察到LED灯亮。

八、存在的问题:原先的main()函数中只有KEY3,并没有Key1和Key2,所以暂时不清楚如何感应到按键一和按键二什么时候按下。

九、后续设计计划:可以设计更炫酷的亮灯方式。

以下是附加文档,不需要的朋友下载后删除,谢谢顶岗实习总结专题13篇第一篇:顶岗实习总结为了进一步巩固理论知识,将理论与实践有机地结合起来,按照学校的计划要求,本人进行了为期个月的顶岗实习。

这个月里的时间里,经过我个人的实践和努力学习,在同事们的指导和帮助下,对村的概况和村委会有了一定的了解,对村村委会的日常工作及内部制度有了初步的认识,同时,在与其他工作人员交谈过程中学到了许多难能可贵经验和知识。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。

本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。

通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。

用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。

在硬件电路的基础上加上软件程序的控制来实现本设计。

其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。

关键字:单片机、流水灯、数码管、控制系统SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the Keywords: SCM, water lights, digital tubes, control system键盘控制流水灯和数码管实验报告目录一设计的目的 (2)二任务描述及方案设计 (3)1. 任务描述 (3)2. 方案设计 (3)三硬件设计方案 (3)1. Msp430f149单片机的功能说明 (3)2. 显示器功能 (4)3. 复位电路 (4)4. 按键的部分 (4)5. 74HC573的特点 (4)6. 流水灯和数码管电路原理图 (4)7. 元器件清单 (4)四程序设计方案 (5)1. 用IAR Embedded Workbench软件编程序 (5)2. 仿真电路图 (6)五实物实验 (7)1. 实物图 (7)2. 测试结果与分析 (7)六结论 (11)八参考文献 (16)一、设计目的1、进一步巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文献查阅、报告撰写等基本技能;2、培养学生实践动手能力及独立分析和解决工程实践问题能力;3、培养学生的团队协作精神、创新意思、严肃认真的治学态度和严谨求实的工作作风。

二、任务描述及设计方案1. 任务描述闭合按键1时,从P1.0—1.7逐个灯,并且P1.0亮一下,P1.1亮两下,P1.2亮三下,P1.3亮四下,P1.4亮五下,P1.5亮六下,P1.6亮七下,P1.7亮八下; 再是P1.0亮一下,P1.0—1.1亮两下,P1.0—1.2亮三下,P1.0—1.3亮三下,P1.0—1.4亮五下,P1.0—1.5亮六下,P1.0—1.6亮七下,P1.0—1.7亮八下。

闭合按键2时,先是从P1.0—1.7逐个灯亮,再是P1.0、P1.1—P1.6、P1.7两两灯亮,接着是P1.0、P1.1、P1.2—P1.6、P1.7每三个灯亮,最后是P1.0、P1.1、P1.2、P1.3—P1.4、P1.5、P1.6、P1.7每四个灯亮。

闭合按键3时,从P1.0—P1.7逐个的亮,而且在P1.X灯亮过后紧接着前面的灯两两灯亮。

7ESG-MPX4-CC数码管按a、b、c、d、e、f、g顺序组成“8”字形。

2、设计方案实验此功能有两种方案,一种是使用传统的模拟电路,另一种是用单片机控制电路。

我们选择单片机控制系统。

其中系统工作原理为:我们利用循环移位指令,采用循环程序结构进行编程。

我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现了“流水”效果了。

以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。

电平信号按照dp,g,e...a的顺序组合形成的数据字称为该字符对应的段码。

7SEG-MPX4-CC是四个共阴二极管显示器,它的1234是阴极公共端。

三、硬件设计方案1、单片机功能说明1 CPU :MSP430系列单片机的CPU和通用微处理器基本相同,只是在设计上采用了面向控的结构和指令系统。

MSP430的内核CPU结构是按照精简指令集和高透明的宗旨而设计的,使用的指令有硬件执行的内核指令和基于现有硬件结构的仿真指令。

这样可以提高指令速度和效率,增强了MSP的实时处理能力。

2 存储器:存储程序、数据以及外围模块的运行控制信息。

有程序存储器和数据存储器。

对程序存储器访问总是以字形式取得代码,而对数据可以用字或字节方式访问。

其中MSP430各系列单片机的程序存储器有ROM、OTP、EPROM和FLASH型。

3 外围模块:经过MAB、MDB、中断服务及请求线与CPU相连。

MSP430不同系列产品所包含外围模块的种类及数目可能不同。

它们分别是以下一些外围模块的组合:时钟模块、看门狗、定时器A、定时器B、比较器A、串口0、1、硬件乘法器、液晶驱动器、模数转换、数模转换、端口、基本定时器、DMA 控制器等。

2、显示器的功能显示器通常也称为监视器。

显示器是属于电脑的I/O的设备,即输入输出设备。

它可以分为CRT、LCD等多种。

它是一种将一定的电文件通过特定的传输设备显示到屏幕上再到反射到人眼的显示工具。

3、复位电路电阻给电容充电,电容的电压缓慢上升直到vcc,没到vcc时芯片复位脚近似低电平,于是芯片复位,接近vcc时芯片复位脚近高电平,于是芯片停止复位,复位完成。

复位原理图4、按键部分4.1 键盘的结构形式一般有独立式键盘和矩阵式键盘两种。

独立式键盘就是各个按键相互独立,每个按键各接一个I/O接口线,而不会影响其他I/O接口线,所以我们在控制流水灯的三种闪法时用的是独立式键盘。

矩阵式键盘又叫行列式键盘,在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。

这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。

行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

4·键盘,的检测,首先要解决的问题是键盘抖动现象。

消抖的方法有两种,软件消抖和硬件消抖。

由于硬件消抖结构比软件复杂,所以本设计采用的是软件消抖的方法,既在程序中加入5毫秒的延时,延时后再次返回P3的值二次判断是否有键盘按下。

5、74HC573的特性74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。

当使能为低时,输出将锁存在已建立的数据电平上。

输出控制不是影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。

这种电路可以驱动大电容或低阻抗负载,可与直接与系统总线接口并驱动总线,而不需要外接口。

74HC573引脚图Z=高阻抗数码管引脚图6、流水灯和数码管电路原理图如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了; 如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平; 同理,接在P1.1—P1.7口的其他7个LED的点亮和熄灭的方法同LED1。

要实现流水灯功能,我们只要将发光二极管LED1—LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

在此我们应该注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

7SEG-MPX4-CC数码管就是阴极为数码管的公共端,按照发光管二极管的原理,当阳极接电源正极,阴极接电源负极,发光二极管点亮。

换句话说,共阴极的数码管,当a,b,c,d,e,f,g脚分别接到电源的正极,而COM 脚接的电源负极,此时相当于7个发光二极管同时点亮,并且显示数字“8”~~~ 所以某些类型的数码管称为7端数码管~~别漏了“dp”,是小数点~~共阳极的取反就是了P4.4P4.5P4.6P4.7 6.1 流水灯和数码管电路原理图6.2 独立按键控制流水灯部分6.3 单片机复位部分7、元器件清单元器件型号数目单片机MSP430f2491电阻1005发光二极管LED-BIBY8开关BUTTON18数码管7SEG-MPX4-CC 1电容CAP 1芯片74HC573 1四、程序设计方案1、用IAR Embedded Workbench软件编程序#include<msp430F249.h>#define ROW P4OUT //矩阵键盘的行宏定义#define COL P4IN //矩阵键盘的列宏定义#define DPYOUT P1OUT //数码管输出口宏定义#define uchar unsigned char#define uint unsigned intuchar keyval;uchar m=0;uchar remain = 0xff;uchar table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};uchar table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};uchar table3[]={0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};uchar seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39, 0x5e,0x79,0x71}; void delay(uint n){uint i,j;for(i=0;i<n;i++)for(j=0;j<225;j++);}uchar keyscan(){int i=0;uchar key=0;ROW=0x0f;if((COL&0x0f)!=0x0f){do i++;while(i<3000);ROW=0x7f;if((COL & 0x0f)== 0x0f){ROW=0xbf;if((COL & 0x0f)== 0x0f){ROW=0xdf;if((COL & 0x0f)== 0x0f){ROW=0xef;if((COL & 0x0f)== 0x0f)key=17;else key=((ROW&0xf0)|(COL&0x0f));}else key=((ROW&0xf0)|(COL&0x0f));}else key=((ROW&0xf0)|(COL&0x0f));}else key=((ROW&0xf0)|(COL&0x0f));}return key;}void fun1(){uint i,j;for(i=0;i<8;i++)for(j=0;j<=i;j++){P3OUT=table1[i];delay(50);P3OUT=0X00;delay(50);}for(i=0;i<8;i++)for(j=0;j<=i;j++){P3OUT=table2[i];delay(50);P3OUT=0X00;delay(50);}}void fun2(){uint i;P3OUT=0X01;delay(100);for(i=1;i<8;i++){P3OUT<<=1;delay(100);}P3OUT=0X03;delay(100);for(i=1;i<=4;i++){P3OUT<<=2;delay(100);}P3OUT=0X07;delay(100);for(i=1;i<=3;i++){P3OUT<<=3;delay(100);}P3OUT=0X0f;delay(100);P3OUT=~0X0f;;delay(100);}void fun3(){uint i,j;for(i=0;i<8;i++){P3OUT=table1[i];delay(100);P3OUT=0X00;delay(100);for(j=0;j<i;j++){P3OUT=table3[j];delay(100);P3OUT=0X00;delay(100);}}}void main(void){WDTCTL = WDTPW + WDTHOLD;//keyval=17;P4DIR|=0Xf0;P1DIR|=0Xff;P1OUT|=0Xff;P3SEL=0X00;P3DIR|=0XFF;P3OUT&=~0xff;P2DIR|=0X00;P2IE=0X07;P2IES=0X07;_EINT();while(1){delay(100);switch(keyscan()){case 0xd7:DPYOUT=seg[0];remain=seg[0];break;case 0x77:DPYOUT=seg[13];remain=seg[13];break;case 0x7b:DPYOUT=seg[12];remain=seg[12];break;case 0x7d:DPYOUT=seg[11];remain=seg[11];break;case 0xb7:DPYOUT=seg[15];remain=seg[15];break;case 0xbb:DPYOUT=seg[9];remain=seg[9];break;case 0xbd:DPYOUT=seg[6];remain=seg[6];break;case 0xbe:DPYOUT=seg[3];remain=seg[3];break;case 0xdb:DPYOUT=seg[8];remain=seg[8];break;case 0xdd:DPYOUT=seg[5];remain=seg[5];break;case 0xde:DPYOUT=seg[2];remain=seg[2];break;case 0xe7:DPYOUT=seg[14];remain=seg[14];break;case 0xeb:DPYOUT=seg[7];remain=seg[7];break;case 0xed:DPYOUT=seg[4];remain=seg[4];break;case 0xee:DPYOUT=seg[1];remain=seg[1];break;case 0x7e:DPYOUT=seg[10];remain=seg[10];break;default:DPYOUT = remain;break;}switch(m){case 1: fun1();break;case 2: fun2(); break;case 3: fun3(); break;default:break;}}}#pragma vector=PORT2_VECTOR__interrupt void PORT2 (void){P2IFG=0x00;if(P2IN!=0X07){switch(P2IN&0X07){case 0X06: m=1;break;case 0X05: m=2;break;case 0X03: m=3;break;default:m=0;break;}}}2.仿真电路图闭合按键1时的仿真图闭合按键2时的仿真图闭合按键3时的仿真图数码管仿真图五、实物实验1、实物图2. 测试结果与分析经过用软件做硬件仿真后,将程序烧进MSP430单片机后,通过独立式键盘控制流水灯的三种“流”法,按下某一个键时,流水灯就会实现编程所设计的“流”法,而矩阵键盘则是通过特定的按键控制数码管显示程序控制的字符,从0~9,a,b,c,d,e,f字符的显示,复位按键则是是单片机复位。

相关文档
最新文档