跑马灯控制设计与实现
- 格式:pdf
- 大小:988.96 KB
- 文档页数:35
单片机闪烁灯跑马灯控制课程设计单片机闪烁灯跑马灯控制课程设计报告一、引言本课程设计旨在通过学习和实践单片机(MCU)编程,实现闪烁灯和跑马灯的控制。
我们将使用嵌入式C语言编程,通过了解单片机的内部结构、电路设计和编程流程,深入理解单片机的工作原理和应用。
二、系统硬件设计本课程设计选用51单片机作为主控芯片,外接8个LED灯和1个按键。
硬件电路设计如下:1.单片机:采用AT89C51,该芯片具有32K字节的Flash存储器,256字节的RAM,以及两个16位定时器/计数器。
2.LED灯:采用普通LED灯珠,与单片机引脚相连,通过编程控制LED灯的亮灭状态。
3.按键:采用机械按键,与单片机的外部中断0(EX0)相连,用于触发闪烁灯和跑马灯的切换。
三、系统软件设计1.闪烁灯模式:在此模式下,8个LED灯将按照一定的频率交替闪烁。
我们可以通过计时器和GPIO口控制LED灯的亮灭状态。
void blink_LED(void) {int i;while(1) {for(i = 0; i < 8; i++) {P1_0 = ~P1_0; // 翻转LED状态delay(500); // 延时,控制闪烁频率}}}2.跑马灯模式:在此模式下,8个LED灯将按照一定的顺序依次点亮。
我们可以通过计时器和GPIO口控制LED灯的亮灭状态。
void marquee_LED(void) {int i;int led_state[8] = {0, 1, 0, 1, 0, 1, 0, 1}; // LED状态数组,初始为交替亮灭while(1) {for(i = 0; i < 8; i++) {P1_0 = led_state[i]; // 设置LED状态delay(50); // 延时,控制跑马灯速度}}}四、按键处理程序我们通过外部中断0(EX0)接收按键信号,当按键按下时,将切换闪烁灯和跑马灯模式。
按键处理程序如下:void EX0_ISR(void) interrupt 0 { // EX0中断服务程序if (key_flag) { // 如果按键已经被按下过if (key_value == 0) { // 如果按键状态为低电平marquee_LED(); // 切换到跑马灯模式key_flag = 0; // 标记按键状态已经改变} else { // 如果按键状态为高电平blink_LED(); // 切换到闪烁灯模式key_flag = 0; // 标记按键状态已经改变}key_value = ~key_value; // 翻转按键状态值} else { // 如果按键还没有被按下过key_value = ~key_value; // 翻转按键状态值if (key_value == 0) { // 如果按键状态为低电平blink_LED(); // 切换到闪烁灯模式key_flag = 1; // 标记按键状态已经改变} else { // 如果按键状态为高电平marquee_LED(); // 切换到跑马灯模式key_flag = 1; // 标记按键状态已经改变}}}。
跑马彩灯控制方案简介跑马彩灯是一种常见的装饰灯具,通过控制跑马灯的亮灭、颜色和亮度变化,可以创造出各种炫目的灯光效果。
在节日庆典、宴会场所、夜市、景区等场合,跑马彩灯常常被用于增添气氛。
本文档将介绍一种基于Arduino控制器的跑马彩灯控制方案。
材料准备要实现跑马彩灯控制方案,需要以下材料: 1. Arduino UNO控制器:用于控制跑马彩灯的亮灭和灯光效果。
2. 杜邦线:用于连接Arduino控制器和彩灯。
3. 跑马彩灯电源:用于给彩灯供电。
4. 跑马彩灯:可以根据需求选择适合的跑马彩灯。
硬件连接首先,将Arduino控制器和彩灯电源通过杜邦线连接起来。
将Arduino的GND引脚连接到彩灯电源的负极,并将Arduino的5V引脚连接到彩灯电源的正极。
接下来,将彩灯的控制引脚(通常为数据引脚)连接到Arduino的数字引脚。
具体连接方式取决于所使用的跑马彩灯。
通常,彩灯的控制引脚通过杜邦线连接到Arduino的数字引脚2。
连接完成后,确保所有线路连接牢固可靠,并避免出现短路情况。
软件编程跑马彩灯控制方案使用Arduino编程语言进行编程。
以下是控制彩灯的示例代码:// 跑马彩灯控制示例代码// 定义彩灯控制引脚int ledPin = 2;void setup() {// 设置彩灯引脚为输出模式pinMode(ledPin, OUTPUT);}void loop() {// 点亮彩灯digitalWrite(ledPin, HIGH);// 延时一段时间delay(500); // 延时时间可根据需要进行调整// 熄灭彩灯digitalWrite(ledPin, LOW);// 延时一段时间delay(500); // 延时时间可根据需要进行调整}在上述代码中,我们首先定义了控制彩灯的引脚为数字引脚2。
在setup()函数中,我们将该引脚设置为输出模式。
然后,在loop()函数中,我们通过digitalWrite()函数控制彩灯的亮灭。
跑马灯效果的实现一能力拓展训练的内容和要求控制8个指示灯的循环点亮,包括指示灯控制、速度控制和点亮效果控制1.利用CPLD/FPGA器件实现简单的计算机逻辑接口电路(如地址译码电路、硬件加密电路等);2.基于可编程逻辑器件(CPLD或FPGA)实现DSP功能。
通过训练掌握相关的理论知识及实际处理方法,熟练使用常用EDA工具(如Quartus Ⅱ、Matlab/DSP Builder等)和硬件描述语言(如Verilog HDL等)设计所需应用程序、上机调试、模拟仿真、下载到目标芯片上运行验证,并对实验结果进行理论分析。
二设计思路:将8个彩灯共阴接地,阳极分别为EPIC3的8个I/O相连,I/O输出变化的电平来控制彩灯的点亮,流水灯分不同的时段,指示灯有不同的显示模式,开始时刻流水灯从右到左依次点亮,第二时间段LED流水灯从左向右依次熄灭,第三时间段LED流水灯从中间向两端依次点亮,第四时间段LED流水灯从中间到两边依次熄灭,第五时间段LED由1,4亮,然后2,5……以此类推,最后完成一次循环又回到开始时刻,进入第二轮循环,来实现LED流水灯的控制实验。
从LED流水灯的工作原理来看,无论是第一时间还是其他的时间段,LED流水灯点亮还是熄灭,都是一个频率来控制LED流水灯点亮和熄灭的快慢。
只不过这个频率可以在程序中控制,也可以在定义输入引脚时把频率选择不同的频率段。
三原理框图:(1)总体方框图如下:图1 总体方框图(2)细化框图:此次实验主要分两个大模块:控制模块以及功能模块,其中功能模块还有3个子模块,如下所示:图2 细化框图控制模块:主要是通过控制给定系统的时钟频率,可以改变灯亮暗的快慢。
功能模块:即为灯亮暗方式的选择。
四编写程序并仿真第一种方式波形图如下:图3第一个灯开始亮由上述仿真波形可知,仿真后所得的结果与希望的相同,进行下一步:对引脚的锁定。
图4 从左到右依次亮图5 从右向左依次熄灭第二种方式波形图:图6中间两个灯亮图7向两边扩散开来直至全亮图8从两边向中间熄灭第三种方式波形图:图91、4灯亮图101、4;2、5;3、6亮图11全亮后进入下一轮循环五引脚锁定以及功能预测各引脚锁定如下所示:图4 各引脚锁定图功能预测:当引脚锁定完成之后,再编译一次,然后进行下载,当下载完毕后可以发现试验箱上的灯会从左到右依次被点亮,然后又从右向左依次熄灭,之后灯从中间两个开始亮,向两边开始扩散,直至全亮后再从两边向中间逐次熄灭,然后就是灯会以1,4亮,2,5亮,3,6亮,4,7亮此种方式进行,当此次全亮之后,灯开始进入下一轮循环,从左到右依次点亮……如此反复。
跑马灯控制系统
一、要求:将8(16)只发光管编队,按要求(点亮与熄灭的时间间隔、亮的灯与灭的
数量、循环的方向)。
二、分析(方案):要实现上述要求,8只发光管的“亮”与“灭”必须可控,因此,
可用单片机通过程序来实现。
三、硬件电路设计:
图1-1 跑马灯电路图
74LS245的真值表为:
根据电路图画出PCB图并制板,焊接。
四、控制软件设计
从硬件电路图和 74LS245真值表可知:P3口上为低电平的管脚对应的发光管亮,现设三只“亮”一只“灭”,且从上向下移动,则控制程序如下:
ORG 0
CLR C ;C是单片机中的进位标志位(在PSW中,PSW.7)
MOV A,#11H ;11H对应00010001B
LOOP: MOV P3,A ;控制发光管“亮三灭一”
LCALL DELAY ;延时
RL A ;移动,准备下一个状态
LJMP LOOP ;循环
DELAY: MOV R0,#0 ;延时子程序
D1: MOV R1,#0
DJNZ R1,$
DJNZ R0,D1
RET
END
五、建议修改:
1、实现准确定时
2、用16只LED实现
3、实现方向的改变
4、实现时间(速度)的改变
5、……。
iar编写stm8跑马灯一、介绍STM8跑马灯的背景和意义STM8是一款高性能、低成本的微控制器,广泛应用于各种嵌入式系统中。
跑马灯是一种常见的显示效果,通过STM8实现跑马灯不仅可以展示微控制器的性能,还能为各种应用场景增添趣味性。
本文将详细介绍如何使用STM8编写跑马灯程序,并分享一些实用技巧。
二、硬件电路设计要点1.选择合适的LED灯珠:根据需求选择合适的LED灯珠,如颜色、亮度、间距等。
2.驱动电路:选用合适的驱动电路,如MOSFET、驱动IC等,以满足LED灯珠的电流需求。
3.连接方式:将LED灯珠正确连接到STM8的GPIO端口。
4.电阻配置:根据LED灯珠的电压和电流要求,合理配置限流电阻。
三、软件编程思路与实现1.初始化GPIO:配置GPIO端口为输出模式,设置初始状态。
2.编写主循环:在主循环中,通过移位或循环移位的方式,切换GPIO端口的输出状态。
3.定时器配置:根据需求设置定时器,实现跑马灯的的速度控制。
4.循环次数与速度调整:根据实际效果调整循环次数和速度,以达到最佳效果。
5.优化:根据实际情况,优化程序,提高运行效率和稳定性。
四、调试与优化1.硬件调试:通过观察LED灯珠的显示效果,检查硬件连接和驱动电路是否正确。
2.软件调试:使用串口或其他调试工具,观察程序运行状态,查找问题。
3.优化:根据实际需求和性能指标,对程序进行优化,提高运行效率和稳定性。
五、总结与展望本文详细介绍了如何使用STM8编写跑马灯程序,通过硬件电路设计和软件编程实现了一款趣味性十足的跑马灯。
在实际应用中,可以根据需求调整LED灯珠、驱动电路和程序,实现更多种跑马灯效果。
实验报告跑马灯实验报告:跑马灯引言:跑马灯作为一种常见的室内装饰和广告展示工具,广泛应用于商场、剧院、车站等公共场所。
本实验旨在探究跑马灯的工作原理和设计过程,并通过实际搭建跑马灯模型进行验证。
一、跑马灯的工作原理跑马灯是通过一组灯泡或LED灯组成的,它们按照一定的顺序依次亮灭,从而形成连续的动态效果。
跑马灯的工作原理主要包括电路控制和程序设计两个方面。
1. 电路控制:跑马灯的电路控制是通过继电器或集成电路实现的。
继电器是一种电磁开关,通过控制电磁铁的通断来控制灯泡的亮灭。
而集成电路则是通过逻辑门和计时器等元件实现灯泡的顺序控制。
2. 程序设计:跑马灯的程序设计是通过编写一段简单的代码来实现的。
在代码中,通过控制灯泡或LED灯的亮灭时间和顺序来实现跑马灯效果。
常见的程序设计语言如C、Python等都可以用来编写跑马灯的代码。
二、跑马灯的设计过程跑马灯的设计过程包括灯泡或LED灯的选型、电路设计、程序编写和外壳制作等步骤。
1. 灯泡或LED灯的选型:在跑马灯的设计中,选择合适的灯泡或LED灯是非常重要的。
灯泡的亮度、寿命和能耗等指标需要进行综合考虑。
而LED灯则具有节能、寿命长和颜色丰富等优点,因此在现代跑马灯设计中更加常见。
2. 电路设计:电路设计是跑马灯设计中的关键环节。
在电路设计中,需要考虑灯泡或LED灯的亮灭顺序、时间间隔和电源供应等因素。
通过合理的电路设计,可以实现跑马灯的稳定运行和灯泡的长寿命。
3. 程序编写:程序编写是跑马灯设计中的另一个重要环节。
通过编写一段简单的代码,可以控制灯泡或LED灯的亮灭顺序和时间间隔。
程序编写需要考虑灯泡或LED灯的数量和控制方式等因素,以实现预期的跑马灯效果。
4. 外壳制作:外壳制作是跑马灯设计中的最后一步。
通过设计和制作合适的外壳,可以保护电路和灯泡或LED灯,同时也可以增加跑马灯的美观性。
外壳的材料可以选择塑料、金属或木材等,根据实际需要进行选择。
一、实验目的1. 熟悉嵌入式系统硬件电路的搭建与调试;2. 掌握C语言编程,实现跑马灯功能;3. 理解并掌握GPIO口操作,学习定时器中断的使用。
二、实验环境1. 开发板:STM32F103C8T6开发板2. 编译器:Keil uVision53. 软件库:STM32标准外设库三、实验原理跑马灯实验是通过控制LED灯的亮灭,实现LED灯依次点亮的效果。
实验原理如下:1. GPIO口控制:将LED灯连接到开发板的GPIO口,通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;2. 定时器中断:定时器产生中断,实现LED灯点亮与熄灭的时间间隔;3. 循环控制:通过循环控制LED灯的点亮顺序,实现跑马灯效果。
四、实验步骤1. 硬件电路搭建(1)将LED灯的正极连接到开发板的GPIO口,负极接地;(2)将开发板的电源和地线连接到电源模块。
2. 软件编程(1)在Keil uVision5中创建项目,并导入STM32标准外设库;(2)编写程序,实现以下功能:a. 初始化GPIO口,将LED灯连接的GPIO口配置为输出模式;b. 初始化定时器,设置定时器中断周期,使LED灯点亮与熄灭的时间间隔为1ms;c. 编写定时器中断服务程序,控制LED灯的点亮与熄灭;d. 编写主函数,实现LED灯依次点亮的效果。
3. 编译与下载(1)编译程序,生成可执行文件;(2)将开发板连接到计算机,通过串口下载程序到开发板。
4. 实验调试(1)打开串口调试助手,观察LED灯的点亮与熄灭效果;(2)调整程序参数,优化跑马灯效果。
五、实验结果与分析1. 实验结果(1)LED灯依次点亮,实现跑马灯效果;(2)LED灯点亮与熄灭的时间间隔可调。
2. 实验分析(1)通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;(2)定时器中断实现LED灯点亮与熄灭的时间间隔控制;(3)循环控制实现LED灯依次点亮的效果。
六、实验总结本次实验成功实现了跑马灯功能,加深了对嵌入式系统硬件电路、C语言编程和GPIO口操作的理解。
可编辑修改精选全文完整版实验一跑马灯实验一、实验内容1、基本的流水灯根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。
每点亮一个LED,采用软件延时一段时间。
2、简单键控的流水灯不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。
松手后,又按正序点亮流水灯。
3、键控的流水灯上电,不点亮LED,按一下K1键,按正序点亮流水灯。
按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。
二、实验方案1、总体方案设计考虑到K4键未被使用,所以将实验内容中的三项合并到一个主函数中:K4键代替实验内容第二项中的K1键;单片机一开机即执行实验内容第一项;K1、K2、K3键实现实验内容第三项。
所用硬件:AT89C52、BUTTON、LED-BLUE、电源输入:P2.0-K1;P2.1-K2;P2.2-K3;P2.3-K4。
低电平有效输出:P0.0~P0.7-D0~D7。
LED组连线采用共阳极,低电平有效软件设计:软件延时采用延时函数delay(t),可调整延迟时间:void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}由于涉及到按键变化所以要设置一个变量oldK保留按键键值,要在延时程序中检测是否按键,当按键后立即设置oldK的值。
按键判断采用在while循环中利用条件语句判断P2的值然后执行该键对应的代码段,达到相应的响应。
为了让K4键的效果优化,即状态变化从当前已亮灯开始顺序点亮或逆序点亮,利用全局变量n来记录灯号,利用算法即可实现。
主要算法:1、全局变量的定义:uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;2、顺序、逆序点亮流水灯:void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}3、实验内容第二项流水灯灯亮顺序变换:void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){out=D[n];n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}4、对应实验内容第一项,开机顺序点亮流水灯:while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}2、实验原理图图2-1 实验原理图3、程序流程图图2-2 程序流程图三、源程序#include"reg51.h"#define uchar unsigned char#define uint unsigned int#define out P0uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;//记录当前亮的灯号void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}void delay10ms(){uint i;for(i=0;i<10000;i++);}void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}int delay4(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK){ //按键变化退出循环return 1;}}return 0;}void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}void main(){oldK=K[0];while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}while(1){out=AllOff;if((P2&0x0f)!=0x0f){//检测有键按下delay10ms();//延时10ms再去检测//P2.0_K1键按下正序点亮流水灯if(P2==K[1]){oldK=K[1];while(1){forward();if(P2!=K[1]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.1_K2键按下逆序点亮流水灯if(P2==K[2]){while(1){backward();if(P2!=K[2]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.2_K3键按下关闭全部LEDif(P2==K[3]){oldK=K[3];out=AllOff;}//P2.3_K4键按下长按逆序点亮流水灯,不按正序点亮流水灯,直到其他键按下停止if(P2==K[4]){hold();}}}}四、实验结果1、基本的流水灯:开机后即重复顺序点亮流水灯,等待其他按键。
PLC控制——跑马灯实验题目:跑马灯1、实验目的及要求实验目的:用PLC构成跑马灯系统控制要求:要求通过启动按钮SB1使得8盏灯按照L0、L1~L7的顺序亮,每隔1S亮一盏灯;再按L7、L6~L1、L0的顺序灭,每隔1S灭一盏灯;如此循环,直至按下停止按钮SB2,全部灯熄灭,停止工作。
I/O分配表:输入输出启动按钮I0.0L0Q0.0停止按钮I0.1L1Q0.1L2Q0.2L3Q0.3L4Q0.4L5Q0.5L6Q0.6L7Q0.72、实验环境(使用的软硬件)PC机,博图软件3、实验原理(1)移位指令移位指令包括无符号数移位和有符号数移位。
其中无符号数移位包含字左移指令、字右移指令、双字左移指令和双字右移指令;有符号数移位包含整数右移指令和双整数右移指令。
*无符号数移位指令。
1字左移指令当允许输入EN位为高电平“1”时,将执行字左移指令,将IN端指定的内容送入累加器1低字中,并左移N端指定的位数,然后写入OUT端指定的地址中。
②字右移指令当允许输入EN的状态为“1”时,将执行字右移指令。
(2)顺序控制设计法所谓顺序控制,就是按照生产工艺预先规定的顺序,在各个输入信号作用下根据内部状态和时间的顺序,在生产过程中各个执行机构自动地有秩序的进行操作。
一般使用顺序控制设计法,都要画出顺序功能图,顺序功能图的结构有单序列、选择序列和并行序列。
单序列没有分支与合并,选择序列的分支不能同时激活,而并行序列的分支可以同时激活。
顺序功能图的组成元素:4、方案设计(程序流程图)5、程序代码6、实验结果(PLCSIM仿真结果)1、按下起动按钮,跑马灯按照顺序点亮;……………………………………………………经过一段时间全部点亮然后跑马灯按照顺序熄灭……………………………………………………经过一段时间全部熄灭然后又重新按照顺序循环点亮:2、按下停止按钮,系统停止运行:7、实验总结1.通过使用顺序功能图可以找出程序的主体流程,实现主体功能,并利用一些程序来帮助完成所有功能;2.通过本次实验,我熟练使用移位功能。
实验题目:跑马灯1、实验目的及要求实验目的:用PLC构成跑马灯系统控制要求:要求通过启动按钮SB1使得8盏灯按照L0、L1~L7的顺序亮,每隔1S亮一盏灯;再按L7、L6~L1、L0的顺序灭,每隔1S灭一盏灯;如此循环,直至按下停止按钮SB2,全部灯熄灭,停止工作。
I/O分配表:输入输出启动按钮I0.0L0Q0.0停止按钮I0.1L1Q0.1L2Q0.2L3Q0.3L4Q0.4L5Q0.5L6Q0.6L7Q0.72、实验环境(使用的软硬件)PC机,博图软件3、实验原理(1)移位指令移位指令包括无符号数移位和有符号数移位。
其中无符号数移位包含字左移指令、字右移指令、双字左移指令和双字右移指令;有符号数移位包含整数右移指令和双整数右移指令。
*无符号数移位指令。
1字左移指令当允许输入EN位为高电平“1”时,将执行字左移指令,将IN端指定的内容送入累加器1低字中,并左移N端指定的位数,然后写入OUT端指定的地址中。
②字右移指令当允许输入EN的状态为“1”时,将执行字右移指令。
(2)顺序控制设计法所谓顺序控制,就是按照生产工艺预先规定的顺序,在各个输入信号作用下根据内部状态和时间的顺序,在生产过程中各个执行机构自动地有秩序的进行操作。
一般使用顺序控制设计法,都要画出顺序功能图,顺序功能图的结构有单序列、选择序列和并行序列。
单序列没有分支与合并,选择序列的分支不能同时激活,而并行序列的分支可以同时激活。
顺序功能图的组成元素:4、方案设计(程序流程图)5、程序代码6、实验结果(PLCSIM仿真结果)1、按下起动按钮,跑马灯按照顺序点亮;……………………………………………………经过一段时间全部点亮然后跑马灯按照顺序熄灭……………………………………………………经过一段时间全部熄灭然后又重新按照顺序循环点亮:2、按下停止按钮,系统停止运行:7、实验总结1.通过使用顺序功能图可以找出程序的主体流程,实现主体功能,并利用一些程序来帮助完成所有功能;2.通过本次实验,我熟练使用移位功能。
摘要本设计使用AT89C51单片机作为微控制器,利用P0口连接8个发光二极管,通过两个按键KEY1和KEY2输入外部中断INT0和INT1来控制“跑马灯”的运停和选项,从而实现多种跑马的形式,以达到停止、继续,并要求有多种亮暗组合的实现。
关键词:MCS51 跑马灯独立按键目录摘要 (I)1设计概述 (1)2 AT89C51概述 (2)2.1 AT89C51的硬件结构 (2)2.2 AT89C51的工作模式 (6)2.3 AT89C51程序存储器的加密 (8)3硬件电路设计 (9)4 可控跑马灯的软件设计 (11)4.1程序流程图 (11)4.2 程序代码 (12)5 心得体会 (17)参考文献 (18)1设计概述整个设计过程是先通过了解任务要求和功能指标,查阅书籍、资料,确定硬件和软件方案,到实现硬件电路和软件程序,最后到系统板的运行实验以及修改调试,最终成功完成。
在众多的微控制器中,我选择了较为熟悉的AT89C51单片机,由于按键软件去抖效果逊色于硬件去抖,所以我选用硬件去抖。
根据任务书中描述的功能,设计的外围资源较少,所以采用了两个外部中断来作为按键的输入,这样可以减少软件设计的负担。
而LED电路采用常用的上拉电阻,接到IO口的方法。
总体下来软、硬件都较为简易,这样设计时,成功率可大大提高。
2 AT89C51概述AT89C51是一个低电压,高性能CMOS 8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)。
和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。
片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。
AT89C51提供以下的功能标准:4K字节闪烁存储器,128字节随机存取数据存储器,32个I/O口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内震荡器和时钟电路。
单片机课程设计跑马灯的控制摘要:本设计选择对跑马灯的控制,先构思跑马灯实现预想效果,然后进行分析,根据要求编写程序,选择硬件端口,并进行调试致预想效果,最后浅谈课程设计的经历,以及总结。
目录一)课程设计的目的二)课程设计的要求三)流程图四)原理图五)程序语言六)总结七)参考资料设计题目:试设计一个闪烁跑马灯控制器,该控制器可以控制8个灯顺序亮灭。
当单片机上电后,8个灯依次从左向右亮,并且每个灯亮的时间为1秒钟。
这时,如果按钮K1按下,则灯亮的顺序是从右向左,同样,每个灯亮的时间是1秒钟。
这时,如果按下按钮K2,则此时,4个灯亮4个灯灭,延迟4秒钟以后,又开始从左向右点亮。
最后,若按下按钮K3,则全部灯亮。
此时若想再次点亮灯,必须重新上电。
题目分析:该题目要求控制8盏灯的亮灭,可使用单片机的P1.0到P1.8口来控制。
按钮K1用P3.4口,K2用P3.2口,及外部中断0,K3用P3.3口,及外部中断1,分别来实现。
单片机使用AT89C52,电源使用5V标准电源。
顺序亮灭使用外部中断源构成循环控制语句。
一、课程设计的目的课程设计是本专业集中实践环节的主要内容之一。
训练正确地应用单片机,培养解决工业控制、工业检测等领域具体问题的能力。
学生通过所做课题,熟悉单片机应用系统开发研制的过程,软硬件设计的工作方法、内容及步骤,对学生进行基本技能训练。
例如组成系统、编程、调试、绘图等。
使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。
通过本课程设计,主要达到以下目的:1.使学生增进对单片机的感性认识,加深对单片机理论方面的理解。
2.使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。
3.使学生了解和掌握单片机应用系统的软/硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。
二、课程设计的要求1.学生需认真阅读课程设计任务书,熟悉有关设计资料及参考资料,熟悉各种设计规范的有关内容,认真完成任务书规定的设计内容。
单片机跑马灯输入引脚对8盏灯的控制1. 简介单片机跑马灯是一种常见的电子设计,通过程序控制多个灯的亮灭顺序,实现灯光闪烁的效果。
在这个设计中,我们将着重讨论单片机跑马灯中输入引脚对8盏灯的控制方法。
2. 单片机跑马灯的原理单片机跑马灯的设计原理是通过单片机的输出引脚控制LED灯的亮灭。
通过程序控制输出引脚的电平变化,可以控制LED灯的亮度,从而实现不同的灯光效果。
3. 输入引脚对8盏灯的控制方法在单片机跑马灯中,一般使用输入引脚来控制灯光的亮灭顺序。
对于8盏灯的控制,我们可以通过以下方法实现:3.1 使用二进制控制可以通过单片机的IO口输出8位二进制数,然后通过这个二进制数的变化来控制8盏灯的亮灭顺序。
可以通过循环移位的方法来实现灯光的顺序变化,从而实现跑马灯的效果。
3.2 使用计数器可以通过单片机上的定时器或者计数器来控制灯光的亮灭顺序。
通过定时器的中断生成,可以实现灯光的循环控制,从而实现跑马灯的效果。
3.3 使用外部输入还可以通过外部的输入引脚来控制灯光的亮灭顺序。
可以通过按键或者其他传感器来控制灯光的变化,从而实现跑马灯的效果。
4. 实际案例以下是一个使用输入引脚对8盏灯进行控制的实际案例:4.1 案例描述我们使用STM32单片机来设计一个跑马灯程序,通过外部引脚控制8盏LED灯的亮灭顺序。
我们设计了一个简单的电路,将8盏LED灯连接到单片机的8个引脚上,然后通过外部的输入引脚来控制LED灯的亮灭。
4.2 实现方法我们首先编写了一个简单的程序,通过外部输入引脚来控制LED灯的亮灭顺序。
我们使用定时器的中断功能,以固定的时间间隔来控制LED灯的亮灭,从而实现跑马灯的效果。
4.3 测试结果经过测试,我们成功实现了通过外部输入引脚控制8盏LED灯的跑马灯效果。
我们可以通过外部的按键来控制LED灯的亮灭顺序,从而实现不同的灯光效果。
5. 结论通过上述案例,我们可以看到,通过输入引脚控制8盏LED灯的跑马灯效果是可行的。
一、实训目的1. 熟悉单片机的硬件结构和基本工作原理;2. 掌握单片机编程方法,实现跑马灯功能;3. 提高实际操作能力和问题解决能力。
二、实训内容1. 跑马灯电路设计;2. 单片机编程实现跑马灯功能;3. 跑马灯功能测试与调试。
三、实训原理跑马灯是一种常见的电子玩具,主要由单片机、LED灯、按键等组成。
通过单片机控制LED灯的亮灭,实现跑马灯效果。
本实训采用AT89C51单片机作为核心控制单元,通过编程实现跑马灯功能。
四、实训步骤1. 跑马灯电路设计(1)硬件选型:选用AT89C51单片机作为核心控制单元,8个LED灯作为显示单元,2个按键作为控制单元。
(2)电路连接:将AT89C51单片机的P1口与LED灯的正极相连,LED灯的负极通过限流电阻连接到地。
将两个按键分别连接到单片机的P3.0和P3.1口。
2. 单片机编程实现跑马灯功能(1)初始化:设置P1口为输出端口,P3.0和P3.1口为输入端口。
(2)跑马灯程序编写:```c#include <reg51.h>#define LED P1void delay(unsigned int t) {unsigned int i, j;for (i = 0; i < t; i++)for (j = 0; j < 1275; j++); }void main() {unsigned char i = 0;while (1) {LED = 0x01; // 点亮LED1delay(500);LED = 0x02; // 点亮LED2delay(500);LED = 0x04; // 点亮LED3delay(500);LED = 0x08; // 点亮LED4delay(500);LED = 0x10; // 点亮LED5delay(500);LED = 0x20; // 点亮LED6delay(500);LED = 0x40; // 点亮LED7delay(500);LED = 0x80; // 点亮LED8delay(500);for (i = 0; i < 8; i++) {LED = ~(0x01 << i); // 倒序点亮LEDdelay(500);}}}```3. 跑马灯功能测试与调试(1)测试:将编写好的程序烧录到AT89C51单片机中,观察LED灯的跑马灯效果。