(完整word版)微机原理课程设计跑马灯

微机原理课程设计走马灯
运用8086最小模式和8255等芯片设计出一个跑马灯电路,要求至少有5中花式,在ISIS 7 Professional软件中运行。

设计电路图如图所示:
源代码
DATA SEGMENT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA START :MOV AX,DATA
MOV DS,AX
MOV AL,10010000B
OUT 96H,AL
A0: IN AL,90H
NOT AL
MOV BL,AL
OUT 92H,AL
CMP AL,1
JNZ A3
A2: MOV DL,AL ;第一个开关实现从上至下的流水OUT 92H,AL
IN AL,90H
NOT AL
CMP AL,BL
JNZ A0
MOV CX,50000
A1: LOOP A1
MOV AL,DL
ROL AL,1
JMP A2
A3: CMP AL,2 ; 实现第二个开关从下至上的流水JNZ A6
MOV AL,80H
A5: MOV DL,AL
OUT 92H,AL
MOV CX,50000
A4: LOOP A4
IN AL,90H
NOT AL
CMP AL,BL
JNZ A0
ROR AL,1
JMP A5
A6: CMP AL,4 ;第三个开关实现相隔的两个灯自上而下流水
JNZ A9
MOV AL, 05H
A8: MOV DL,AL
OUT 92H,AL
MOV CX,20000
A7: LOOP A7
IN AL,90H
NOT AL
CMP AL,BL
JNZ A0
MOV AL,DL
ROL AL,1
JMP A8
A9: CMP AL,8 ;第四个开关实现相隔的两个灯从下而上流水
JNZ A12
MOV AL,0A0H
OUT 92H,AL
MOV CX,20000
A10: LOOP A10
IN AL,90H
NOT AL
CMP AL,BL
JNZ A0
MOV AL,DL
ROR AL,1
JMP A11
A12: CMP AL,10H
JNZ A17
A16: MOV AL,18H ;第五个开关实现从中间向两边流水A14: MOV DL,AL
OUT 92H,AL
MOV CX,20000
A13: LOOP A13
IN AL,90H
NOT AL
CMP AL,BL
JNZ A0
CMP AL,81H
JZ A16
AND AL,0F0H
MOV CX,0
MOV CH,AL
ROL CH,1
MOV AL,DL
AND AL,0FH
MOV CL,AL
ROR CL,1
ADD CH,CL
MOV AL,CH
JMP A14
A17: CMP AL,20H ;第六个开关实现从两边向中间流水JNZ A0
A19: MOV AL,81H
A20: MOV DL,AL
OUT 92H,AL
MOV CX,20000
A18: LOOP A18
IN AL,90H
NOT AL
CMP AL,BL
JNZ A0
MOV AL,DL
CMP AL,18H
JZ A19
AND AL,0F0H
MOV CX,0
MOV CH,AL
ROR CH,1
MOV AL,DL
AND AL,0FH
MOV CL,AL
ROL CL,1
ADD CH,CL
MOV AL,CH
JMP A20
RET
CODE ENDS
END START
运行后程序如图所示:。

合集下载

微机原理————走马灯实验设计

微机原理————走马灯实验设计

微型计算机技术课程设计指导教师:赵立辉李鹏学生班级:计科10802学生姓名:陈东学号:200803939班内序号:11目录1.……………………………………………………….课设目的2.………………………………………………………课设内容3.…………………………………………问题分析及设计思路4.…………………………………………电路设计及功能说明5.………………………………硬件原理图及接口芯片的介绍6.……………………………………程序流程图及相关源程序7. …………………………………………………实验结果及分析8.…………………………………………………………课设总结一.课设目的1.通过本设计,使学生综合运用《微型计算机技术》、《汇编语言程序设计》以及电子技术等课程的内容,为以后从事计算机检测与控制工作奠定一定的基础。

2.主要掌握接口芯片8253、8255A等可编程器件的使用,掌握译码器74LS138的使用。

3.学会用汇编语言编写一个较完整的实用程序。

4.掌握微型计算机技术应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。

二.课设内容1.功能要求:采用8253设计一个1s定时电路,将定时信号接到8255的PC 口的某一位,编程查询该位的状态,若为低电平,则从8255A的PA口输出不同的值使和PA口相接的发光二极管依次变化,实现走马灯的效果。

按下Esc键结束程序。

2.设计所需器材及介绍①一块实验面包板(内含时钟信号1MHz或2MHz)。

②可编程芯片8253、8255A、74LS138、74LS245各一片。

74LS06两片,发光二极管8个,排电阻一个。

③导线若干。

④示波器、万用表、常用工具等共用(从实验室现借现还)三.问题分析及设计思路1.利用74LS138设计地址译码电路,8255A端口地址:300H~303H,8253的端口地址:304H~307H。

2.74LS245用于总线和8253、8255A之间的双向传输和隔离。

微机原理(基于PROTEUS的跑马灯系统设计及仿真)

微机原理(基于PROTEUS的跑马灯系统设计及仿真)

学号:课程设计题目基于PROTEUS的跑马灯系统设计及仿真学院自动化学院专业自动化班级姓名指导教师2012 年 1 月12 日任务书目录引言 (1)1总体方案论证 (2)1.1功能分析 (2)1.2系统连接图设计 (2)1.2.1锁存控制电路 (5)1.2.2可编程并行通信接口芯片8255A (6)2程序流程图设计及其说明 (9)3关键程序段落说明 (11)3.1数据段定义 (11)3.2程序初始化 (11)3.3芯片初始化 (12)3.4初始LED亮灭状态 (12)3.5检测按键开关子程序 (12)3.6延时程序片段 (14)3.7灯光变换控制 (15)4程序调试说明 (16)5结果记录及分析 (17)心得体会 (19)参考文献 (20)引言微型计算机简称微机,由于具备人脑某些功能,所有又叫做微机。

是由大规模集成电路组成的、体积较小的电子计算机。

它是以微处理器为基础,配以存储器及输入输出接口电路和相应的辅助电路构成的裸机。

把微型计算机集成在一个芯片上即构成单片微型计算机。

学习微机原理与接口技术,主要容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言、设计以及微型计算机各个组成部分,而其中很大一块就是汇编语言的学习。

汇编语言是面向机器的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。

用汇编语言编写的程序由于目标程序占用存少,运行速度快,它有着高级语言不可替代的用途。

因此,学习汇编语言是很必要的,通过学习汇编语言可以体会它的作用。

通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识联系实际,进一步学习微机原理与接口技术的相关知识,为以后深入学习打下良好的基础。

1总体方案论证1.1功能分析此次课程设计的要求为,设计微型计算机最小系统,实现跑马灯的模拟显示功能。

具体要求为:(1)、输入设备三个启动按钮、一个停止按钮,输出设备为八个跑马灯;(2)、三个启动按钮对应三种跑马灯显示效果,按下任意一个启动按钮,跑马灯显示对应的效果,按下停止按钮则跑马灯全部熄灭。

微机原理(基于PROTEUS的跑马灯系统设计及仿真)资料

微机原理(基于PROTEUS的跑马灯系统设计及仿真)资料

课程设计题目基于PROTEUS的跑马灯系统设计及仿真学院自动化学院专业自动化班级姓名指导教师2012 年 1 月12 日任务书目录引言 (1)1总体方案论证 (2)1.1功能分析 (2)1.2系统连接图设计 (2)1.2.1锁存控制电路 (5)1.2.2可编程并行通信接口芯片8255A (6)2程序流程图设计及其说明 (9)3关键程序段落说明 (11)3.1数据段定义 (11)3.2程序初始化 (11)3.3芯片初始化 (12)3.4初始LED亮灭状态 (12)3.5检测按键开关子程序 (12)3.6延时程序片段 (14)3.7灯光变换控制 (15)4程序调试说明 (16)5结果记录及分析 (17)心得体会 (19)参考文献.................................................................. 错误!未定义书签。

引言微型计算机简称微机,由于具备人脑某些功能,所有又叫做微机。

是由大规模集成电路组成的、体积较小的电子计算机。

它是以微处理器为基础,配以内存储器及输入输出接口电路和相应的辅助电路构成的裸机。

把微型计算机集成在一个芯片上即构成单片微型计算机。

学习微机原理与接口技术,主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言、设计以及微型计算机各个组成部分,而其中很大一块就是汇编语言的学习。

汇编语言是面向机器的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。

用汇编语言编写的程序由于目标程序占用内存少,运行速度快,它有着高级语言不可替代的用途。

因此,学习汇编语言是很必要的,通过学习汇编语言可以体会它的作用。

通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识联系实际,进一步学习微机原理与接口技术的相关知识,为以后深入学习打下良好的基础。

1总体方案论证1.1功能分析此次课程设计的要求为,设计微型计算机最小系统,实现跑马灯的模拟显示功能。

4017跑马灯课程设计

4017跑马灯课程设计

4017跑马灯课程设计一、课程目标知识目标:1. 学生能理解跑马灯的基本原理,掌握跑马灯电路的设计与搭建;2. 学生能运用所学知识,分析跑马灯电路中各个组件的作用及相互关系;3. 学生了解跑马灯在生活中的应用,提高对电子技术的认识和兴趣。

技能目标:1. 学生能独立完成跑马灯电路的搭建,提高动手操作能力;2. 学生能通过跑马灯电路的设计与制作,培养创新思维和问题解决能力;3. 学生能运用跑马灯项目,提高团队协作和沟通能力。

情感态度价值观目标:1. 学生通过跑马灯课程,培养对电子技术的热爱和好奇心,增强学习动力;2. 学生在跑马灯设计与制作过程中,树立自信心,勇于面对挑战,培养克服困难的意志;3. 学生在团队协作中,学会尊重他人,培养良好的合作精神和沟通能力。

课程性质:本课程为电子技术实践课程,结合理论知识与动手操作,培养学生的实际应用能力。

学生特点:四年级学生具有一定的电子技术基础,好奇心强,喜欢动手操作,但注意力容易分散,需要激发兴趣和引导。

教学要求:注重理论与实践相结合,强调学生动手操作和团队协作,注重培养学生的学习兴趣和创新能力。

通过跑马灯课程,使学生在实践中掌握知识,提高技能,培养情感态度价值观。

教学过程中,关注学生个体差异,因材施教,确保每个学生都能达到课程目标。

二、教学内容本课程教学内容围绕跑马灯电路的设计与制作展开,包括以下部分:1. 跑马灯原理及电路设计- 介绍跑马灯基本原理,引导学生理解电路工作过程;- 结合课本相关章节,讲解跑马灯电路的设计方法,分析电路中各组件的作用及选型。

2. 跑马灯电路搭建与调试- 指导学生进行跑马灯电路的搭建,培养学生的动手操作能力;- 引导学生根据电路原理图,连接电路,并调试电路,确保跑马灯正常工作。

3. 跑马灯程序编写与优化- 介绍跑马灯程序的编写方法,结合课本内容,使学生掌握编程技巧;- 引导学生优化程序,实现跑马灯的不同效果,培养学生的创新思维。

跑马灯-微机课设报告

跑马灯-微机课设报告

微机原理课程设计——跑马灯专业计算机科学与技术班级学生同组指导教师目录跑马灯实验 (2)一、实验目的 (2)二、实验要求 (2)1、基本要求 (2)2、提高要求 (2)三、设计思路 (2)四、实验原理 (3)1、8254定时器 (3)(1)计数通道 (3)(3)工作方式(6种) (3)(4)内部结构 (4)(5)引脚 (4)(6)方式控制字 (4)2、并行接口电路8255 (5)(1)3个数据端口 (5)(2)工作方式 (5)(3)方式控制字 (5)(4)内部结构 (6)五、实验原理图 (6)六、实验流程图 (7)七、实验代码 (9)八、实验结果 (14)1、开关都未闭合 (14)2、开关K0闭合 (14)3、开关K1闭合 (14)4、开关K2闭合 (14)九、实验总结 (14)跑马灯实验一、实验目的(1)通过本次实验更加清楚的掌握芯片8255和8254的使用方法和工作原理;(2)编写一个简单的程序来实现最简单的跑马灯;(3)在此基础上来实现本次实验的要求和任务。

二、实验要求1、基本要求采用8254精确定时,LED的点亮规律为LED7—>LED0,每个LED的点亮时间间隔由逻辑电平开关K0、K1和K2选择。

K0的时间间隔为0.5s,K1的时间间隔为1.0s,K2的时间间隔为1.5s,当主机键盘按下任意键时停止演示。

2、提高要求LED灯的点亮规律变成LED7 —>LED0—> LED7。

三、设计思路使用8255的A端口连接开关,以此判断选择哪个定时。

用B口和LED 灯连接,来实现跑马灯开始亮。

使用C口来判断此时CLK是否为下降沿,以此判断此时是不是达到一个周期。

四、实验原理1、8254定时器8254有3个相互独立的计数器通道,计数器0、计数器1和计数器2. (1)计数通道8254每个计数器通道都有3个信号与外界接口:CLK时钟输入信号、GATE 门控输入信号和OUT计数器输出信号;(2)内部数据总线8254内部通过数据总线缓冲期引出8位数据引脚D7~D0,地址引脚A0和A1,控制引脚 RD、WR、CS;(3)工作方式(6种)●方式0:计数结束中断●方式1:可变成单稳脉冲●方式2:频率发生器●方式3:发波发生器●方式4:软件触发选通信号●方式5:硬件触发选通信号(4)内部结构(5)引脚(6)方式控制字D7 D6 D5 D4 D3 D2 D1 D02、并行接口电路8255(1)3个数据端口8255的3个数据端口分成两组进行控制:A组控制端口A和端口C的上半部;B组控制端口B和端口C的下半部。

单片机 跑马灯实验精选全文

单片机 跑马灯实验精选全文

可编辑修改精选全文完整版实验一跑马灯实验一、实验内容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、基本的流水灯:开机后即重复顺序点亮流水灯,等待其他按键。

微机课程设计跑马灯-c语言第四章

第4章总体电路设计及仿真分析4.1 系统连接图图3 跑马灯连接图4.2 程序源代码/*****************************************Title:可控跑马灯Author:J MDate:2014-1-3*****************************************/#include <reg52.h>#include <intrins.h>#define uchar unsigned charvoid delay(unsigned int timer); //延时子函数uchar key_scan(void); //按键值判断选择uchar temp;uchar key;sbit key1 = P2^0; //定义按键1sbit key2 = P2^2; //定义按键2sbit key3 = P2^4; //定义按键3sbit key4 = P2^7; //定义按键4//按键值判断选择uchar key_scan(void){if((P2&0X95)!=0X95) //检测是否有按键按下{if(key1==0){delay(5); //延时去抖动return 1;}else if(key2==0){delay(5);return 2;}else if(key3==0){delay(5);return 3;}else if(key4==0){delay(5);return 0;}}}//延时子函数,短暂延时void delay(unsigned int timer){unsigned int j;while(timer--){j=250;while(j--);}}void main(void){while(1){switch (key_scan()){case 1:temp=0XFE; //点亮左一LED灯P0=temp;while(1){temp=_crol_(temp,1); //左循环移位delay(50); //延时P0=temp;if((P2&0X95)!=0X95) break;}break;case 2:temp=0X7F; //点亮右一LED灯P0=temp;while(1){temp=_cror_(temp,1);//右循环移位delay(50); //延时P0=temp;if((P2&0X95)!=0X95) break;}break;case 3:P0=0XFF; //循环全亮全灭while(1){P0=~P0;delay(100);if((P2&0X95)!=0X95) break;}break;case 0:P0=0XFF; //全灭break;}}}结论通过这两周的单片机课程设计,我们组从中学习到了很多课堂上很难学到的东西,亲身学习实践了一次单片机的实际应用制作。

跑马灯课程设计

对于EPROM型单片机,在EPROM编程期间,此引脚用于施加21V的编程电源(VPP)。
2)时钟振荡电路引脚XTAL1和XTAL2:
(1)XTAL1(19脚):外接石英晶体和微调电容引脚1。它是片内振荡电路反向放大器的输入端。采用外部振荡器时此引脚接地。
(2)XTAL2(18脚):外接石英晶体和微调电容引脚2。它是片内振荡电路反向放大器的输出端。采用外部振荡器时此引脚为外部振荡信号输入端。
学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料。本课题将以发光二极管作为发光器件,用单片机自动控制,实现一个简易的跑马灯设计。
2
2.1 AT89C51芯片功能特性及应用
单片机在我们的日常生活和工作中无处不在、无处不有:家用电器中的电子表、洗衣机、电饭褒、豆浆机、电子秤;住宅小区的监控系统、电梯智能化控制系统;汽车电子设备中的ABS、GPS、ESP、TPMS;医用设备中的呼吸机,各种分析仪,监护仪,病床呼叫系统;公交汽车、地铁站的IC卡读卡机、滚动显示车次和时间的LED点阵显示屏;电脑的外设,如键盘、鼠标、光驱、打印机、复印件、传真机、调制解调器;计算机网络的通讯设备;智能化仪表中的万用表,示波器,逻辑分析仪;工厂流水线的智能化管理系统,成套设备中关键工作点的分布式监控系统;导弹的导航装置,飞机上的各种仪表等等。有资料表明:2007年全球单片机的产值达到151亿美元,我国单片机的销售额达到400亿元人民币,我国每年单片机的需求量达50至60亿片,是全球单片机的最大市场。可以说单片机已经渗透到了我们生活的各个领域。
4) (29脚):外部程序存储器的读选通信号输出端,低电平有效。在从外部程序存储器取指令(或常数)期间,此引脚定时输出负脉冲作为读取外部程序存储器的信号,每个机器周期 两次有效,此时地址总线上送出的地址为外部程序存储器地址;在此期间,如果访问外部数据存储器和内部程序存储器,不会产生 信号。

跑马灯课程设计

摘要:本设计使用89C51芯片,利用P0的8个端口连接8个发光二极管,通过P0.0到P0.7的值控制“跑马灯”的亮灭,以达到显示效果。

设计的中断程序要对多个按键动作进行响应,灯光变换的花样有4种,用4个按键k0,k1,k2,k3切换。

按下k1键,程序作左向流水灯; 按下k2按键程序作右向流水灯; 按下k3键为亮点向中间移动; 按下k4键为执行亮点向两边移动。

浏览了网上的各种作品及代码,通过各种实现代码的比较,和各种优化,总结出本程序,以较优秀的代码实现各种可控的“跑马”功能。

引言:本设计用4个开关按键控制8个发光二极管,组成为一排跑马灯进行各种样式的亮灯形式,在中断程序中处理多个按键动作的响应,以控制一排跑马灯的工作。

1设计概述本程序设计意在展示跑马灯的色彩样式及“跑马”变换效果,如果将跑马灯做大,会有很高的观赏价值。

我查阅书籍资料,浏览网上的各种作品及代码,通过各种实现代码的比较,和各种优化,总结出本程序,以较优秀的代码实现各种可控的“跑马”功能。

本设计的中断程序要对多个按键动作进行响应,灯光变换的花样有4种,用4个按键k1,k2,k3,k4切换。

进入程序后,程序作双向流水灯;按下k1键,程序作左向流水灯; 按下k2按键程序作右向流水灯; 按下k3键为亮点向中间移动; 按下k4键为执行亮点向两边移动。

2硬件电路设计及描述本设计使用89C51芯片,利用P0的8个端口连接8个发光二极管,通过P0.0到P0.7的值控制“跑马灯”的亮灭,以达到显示效果,连接图如图1所示。

图1:硬件电路连接图1利用P1.0到P1.3这4个端口作为4个控制开关的输入,控制开关连接INT0中断,按键触发中断响应以停止“跑马灯”当前的执行样式,进而改变跑马灯的显示样式。

图2:硬件电路连接图2综上所述,总体的电路连接如图3:图3:总体硬件电路连接图3软件设计流程及描述主程序的设计思路为,开始时执行左右流水灯,在中断服务程序中,首先读取按键状态,然后延时10ms,再次读取按键状态。

课题二 任务三 跑马灯

单片机应用技术教案五、讲授新课一、硬件设计本任务是用单片机实现8只LED不断地点亮和熄灭,每只LED 的亮灭状态不同,只能通过不同的单片机引脚驱动。

和前面的任务类似,可选择单片机的32个可编程驱动的IO引脚中的任意8个来驱动。

在本任务中,选择P2口的8个引脚分别对应驱动8只LED,因端口的下拉能力较强,故采用下拉的方式驱动LED,具体电路如图所示。

流水灯的控制电路原理图在图中,VD1~VD8是8只LED,每只LED的阳极接5 V电源,阴极通过限流电阻接到单片机端口。

当单片机引脚输出低电平时,LED将流过电流并点亮;当单片机引脚输出高电平时,LED两端均为高电平,没有电流流过,LED不会被点亮。

单片机的P2端口的8个引脚可以通过程序独立驱动,所以8只LED可以任意为点亮或熄灭的组合。

二、软件设计由任务分析可知,本任务的目标就是要完成重复执行8只LED单独点亮1 s的过程。

如图所示。

移位点亮LED流程图五、讲授新课由于单片机可以整个端口同时驱动,也可按引脚单独驱动,因此能够实现任务目标的程序较多,这里以三种程序控制实现任务目标。

可以看到,不同的程序可以实现同样的目标,在阅读时应注意三个程序中主函数的异同。

1.引脚顺序控制按照任务要求,需要对单片机一个端口的8个引脚轮流输出低电平。

按前面任务的方式,应首先对8个引脚定义名称,这里以led0~led7分别对控制8只LED的引脚进行命名,程序中对每只引脚进行位控制,可以实现这8个引脚的电平控制。

端口顺序点亮LED流程图2.端口顺序控制单片机的P0、P1、P2、P3是4个并行输入输出端口,每个端口的8个引脚可以同时输入或输出。

3.端口循环控制1示例源程序2采用顺序结构实现端口的8个数据的输出,程序比较冗长且不易修改。

因程序中每次端口输出的语句格式是相同的,仅端口输出的数据不同,如果这个数据可以用一个变量自动生成,则每次的执行语句完全相同,即可以将这些语句置于一个循环体内,重复执行8次就能实现端口顺序输出的效果。

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