当前位置:文档之家› led走马灯

led走马灯

led走马灯
led走马灯

一、设计目的

根据单片机系统开发与应用课程所学的概念、理论和方法,按照一般的单片机系统的开发过程,以Proteus7.5sp3为平台,Keil C51 V9.00 uVision4为软件开发工具,设计出一个适当难度的单片机系统;进一步掌握51单片机体系结构和单片机系统。使学生能理论联系实际,加深和巩固所学的理论知识,提高学生的实践能力和单片机系统的综合运用能力。

二、设计内容

1、以Proteus7.5sp3为平台,设计出硬件系统;

2、以Keil C51 V9.00 uVision4为软件开发工具,编制程序实现如下功能:实现单片机控制P1口的8个LED灯花样走马灯,要求连续实现以下四种效果:(1)单灯左移;(2)单灯右移;(3)单灯逐个点亮接着逐个熄灭(4)两边向中间逐个点亮接着中间向两边逐个熄灭。(灯亮和灯灭的时间均为1S。指示灯亮和灭的时间可以通过按键设定,使用两个按键,其中一个按键每按一下,灯亮和灯灭的时、间增加1S,另一个按键每按一下,灯亮和灯灭的时间减少一秒。);

3、所有的源代码均在加上详细的注释;

4、画出程序流程图;

5、要有软硬件联调的操作及截图。

三、操作步骤

1、绘制电路原理图

(1)点击“开始”-〉“程序”按钮,运行ISIS 7 Professional,进入Proteus ISIS集成环境,Proteus ISIS 7的界面如图1所示。

图1 Proteus ISIS 7的编辑界面

(2)将所需元器件加入到对象选择器窗口

单击对象选择器按钮P,在弹出的“Pick Devices”页面中,使用搜索引擎在”Keywords”栏中分别输入”AT89C51“、”LED-BIBY“,在搜索结果”Results”栏中找到该对象,并将其添加至对象选择器窗口。

(3)放置元器件至原理图编辑窗口

将“AT89C51”、“LED-BIBY”放置到原理图编辑窗口,如图2所示。

图2 放置元器件至图形编辑窗口

(4)添加电源

单击绘图工具栏中的Inter-sheet Terminal按钮,在对象选择器窗口选中对象“POWER”将其放置到原理图编辑窗口。

(6)元器件之间的连线

在原理图编辑窗口中,完成各对象的连线,如图3所示。

图3 完成各对象的连线后的界面

(7)调试运行

单击仿真运行开始按钮,能清楚的观察到:引脚的电频变化。红色代表高电平,蓝色代表低电平,灰色代表未接入信号,或者为三态。

(8)保存该原理图

从“文件”下拉菜单选择“保存”项,将文件名命名为LED走马灯,就此完成了电路原理图的绘制。

2、软件设计

(1)根据总体设计思路,画出流程图如图4所示。

图4 流程图

(1)选择【工程】/【新建工程】选项。

(2)在弹出的“Create New Project”对话框中选择要保存项目文件的路径保存到McuPort目录里,在“文件名”文本框中输入项目名MyProjest,然后单击“保存”按钮。

(3)这时会弹出一个对话框,要求选择单片机的型号。可以根据使用的单片机型号来选择,Keil C51几乎支持所有的80C51内核的单片机,这里选择AT89C51,先选择ATMEL 公司,再选择AT89C51,右边Description栏中即显示该单片机的基本说明,然后单击“确定”按钮,弹出将8051初始化代码复制到项目中的询问对话框,单击“是”按钮。

(4)选择【文件】/【新建文件】选项,在弹出的程序文本框中输入程序。

#include //片内寄存器定义

#include //内部数据库

#define uint unsigned int //宏定义

#define uchar unsigned char //uchar表示无符号字节

uint表示无符号整形数

uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar code aa[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

uchar code bb[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};

uchar code cc[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};

uchar code dd[]={0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff};

//定义数组

void delay_ms(int s) //延时函数

int x;

while(s--) //延迟

{ for(x=0;x<200;x++)

{ _nop_();

_nop_();

}

}

}

void display(void) //显示函数

{

int i;

for(i=0;i<=7;i++) //单灯左移,p1.0先亮

{

P1=table[i];

delay_ms(100);

}

for (i=0;i<=7;i++) //单灯右移,p1.7先亮

{

P1=aa[i];

delay_ms(100);

}

for(i=0;i<=7;i++) //灯逐个点亮,p1.0先亮

{

P1=bb[i];

delay_ms(100);

}

for(i=0;i<=7;i++) //灯逐个熄灭,p1.7先熄灭

{

P1=cc[i];

delay_ms(100);

}

for(i=0;i<=7;i++) //两边向中间逐个点亮再向两边逐个熄灭 {

P1=dd[i];

delay_ms(100);

}

}

void main(void)

{

while(1)

{

display();

}

(5)选择【文件】/【保存】选项,保存文件。在弹出的对话框中,选择要保存的路径,在“文件名”文本框中输入文件名。上面程序用的是C程序文件,所以需要存储为C源程序文件,所以输入.c扩展名,单击“保存”按钮。此处输入文件名为MyProjest.c (6)将MyProjest.c文件加入到项目中。用鼠标右键点击左边项目窗口中的“Source Group1”,在弹出的菜单中选择“Add File to Group‘Source Group1’”,选择刚才建立的文件MyProjest.c,文件类型选择C Source file(*.c)。单击“Add按钮,然后单击“Close”按钮,关闭该窗口。这时在Source Group1里就有MyProjest.c文件和事先建立项目时已经加入的文件ST-ARTUP.A51。

(7)对目标进行一些设置。用鼠标右键单击MyProjest,在弹出的菜单选项中选择“Options for Target‘Target1’”选项,弹出“Options for Target‘Target1’”对话框。

①设置【目标】选项卡。修改单片机工作的频率为11.0592,其他默认即可。

②设置【输出】选项卡。选中创建 HEX 文件选项,最后单击确定按钮关闭窗口。

(8)编译连接程序,选择【工程】/【重建全部目标文件】,如没有错误则编译成功,如图5所示,如程序出现错误,则在步骤(4)中进行修改根据提示修改程序,在步骤(4)中进行修改。

图5 编译连接成功信息

(9)编译结束之后,选择【调试】/【Start/Stop Debug Session Ctrl+F5】选项,即进入到调试环境。

(10)装载代码之后,开发环境Output Window(在左下角)显示如图6所示的装载成功信息

图6 调试界面

3.系统联调

(1)uvision3 IDE的设置

①打开刚才建立的工程Myproject。

②打开projec【菜单】/【options for target’target 1’】选项,在弹出的窗口中,单击【调试】选项卡按钮,在出现的对话框的右栏上部的下拉菜单里选中“proteus VSM Simulator”,再单击一下“使用”前面表明选中的小圆点,点击“确定”按钮。如图7所示。

图7 uvision3 IDE开发环境options for target/调试选项设置

(2)Proteus VSM的设置

①进入Proteus的ISIS,打开原理图LED走马灯;

②修改AT89C51属性并加载程序文件;

双击U1-AT89C51,打开“edit component“对话框,如图8所示

图8 AT89C51编辑原件界面

在”program file:”选择在项目my project生成的HEX文件:myproject.hex.在“Clock frequency“文本框中填入11.0592MHZ,单击确定。

③单击菜单栏“调试”,选中“使用远程调试监控”,此后便可以实现uVision3 IDE 与Proteus VSM联调。

(3)然后重新运行程序便可以实现keil uvision 3与proteus VSM的联调,如图9

所示。

图9 uvision3 IDE与Proteus VSM实现联调

四、设计总结

通过本次课程设计我学到了很多,熟悉Proteus7.5sp3为平台,Keil C51 V9.00 uVision4为软件开发工具;进一步掌握51单片机体系结构和单片机系统。使学生能理论联系实际,加深和巩固所学的理论知识,提高学生的实践能力和单片机系统的综合运用能力在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。虽然在操作中遇到了问题但在同学和老师的帮助下还是完成了本次课程设计此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

此程序是用单片机的p1口接八个led灯作跑马灯试验

拆字程序 Org 0000h Mov A , 2000H Add A ,#F0H MOV 2001H ,A MOV A ,2000H ADD A , #0FH MOV 2002H , A MOV A , 2001H ADD A , 2002H END 拆分BCD 码 ? *************************************************************************** ;此程序是用单片机的p1口接八个led灯作跑马灯试验,八个led依次亮了又熄灭,形成漂亮;的跑马灯。本人已经试验成功。 ;单片机教程网https://www.doczj.com/doc/d41800176.html, 原创

;该8路单片机跑马灯程序代码简单,电路也容易搭建,只需把led接在p1口上就可以了,希望大家能试验成功顺利的完成跑马灯报告 ;*************************************************************************** org 0000h loop0:cjne r0 ,#01h,rel,loop0 ;判断开关打开情况 ajmp start;跳转到程序开始 org 0030h;定义起始汇编地址 start: mov a,#0ffh ; clr c ; mov r2,#08h ;循环八次。 loop: rlc a ;带进位左移。 mov p1,a ;此时led灯开始有反映了。 call delay ;延时 djnz r2,loop ;循环(djnz条件判断) mov r2,#07h ; loop1: rrc a ;带进位右移 mov p1,a ;此时led灯开始有反映了。 call delay ; djnz r2,loop1 ;反复循环 jmp start ;回到程序的开头 delay: mov r3,#20 ;延时子程序 d1: mov r4,#20 d2: mov r5,#248 djnz r5,$ djnz r4,d2 ```````````````````````````````````````````````---------3路单片机跑马灯程序---------------------------------------

单片机跑马灯汇编程序与仿真

51单片机P1口跑马灯的汇编语言编程和protues仿真 ;跑马灯程序1 ;用软件技术器实现1秒间隔LED循环点亮 ;三层循环计数实现1秒延时,250*250*8=0.5秒 ;由于软件延时需要计算代码执行的时间,所以近似1秒 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV P1,#0FFH MOV A,#0FEH LOOP: MOV P1,A LCALL TIMEER RL A SJMP LOOP TIMEER: MOV R5,#08H LOOP1: MOV R6,#0FAH LOOP2: MOV R7,#0FAH LOOP3: DJNZ R7,LOOP3 DJNZ R6,LOOP2 DJNZ R5,LOOP1 RET END ;跑马灯程序2 ;定时/计数器1控制1秒间隔LED循环点亮 ORG 0000H LJMP MAIN ORG 001BH LJMP T1_INT ORG 0100H MAIN: MOV R0,#20 ;软计数器 MOV TMOD,#10H ;定时器1方式1 MOV P1,#0FFH ;熄灭所有LED MOV A,#0FEH ;点亮第一个LED MOV TH1,#3CH MOV TL1,#0B0H ;赋初值 SETB ET1 SETB EA ;开中断 SETB TR1 ;启动定时器 SJMP $ ;等待中断 T1_INT: MOV TH1,#3CH

MOV TL1,#0B0H ;赋初值 DEC R0 ;软计数 CJNE R0,#00H,LP RL A ;灯移位 MOV P1,A ;灯改变 MOV R0,#20 ;软计数器初值 LP: RETI ;跑马灯程序3 ;定时/计数器1控制1秒间隔LED循环点亮 ;外部中断1控制按键按下跑马灯启动或者停止 ORG 0000H LJMP MAIN ORG 0013H LJMP INT1_INT ;外部中断服务程序,按键触发 ORG 001BH LJMP T1_INT ;定时器中断,1秒中断一次 ORG 0100H MAIN: MOV R0,#20 ;软计数器计数次数 MOV TMOD,#10H ;定时器1方式1 MOV P1,#0FFH ;熄灭所有LED MOV A,#0FEH ;点亮第一个LED MOV TH1,#3CH MOV TL1,#0B0H ;定时器赋初值 SETB I T1 ;外中断1采用下降沿触发 SETB E X1 ;允许外部中断1 SETB ET1 ;允许定时器中断 SETB EA ;开中断 SETB TR1 ;启动定时器1 SJMP $ ;等待中断 T1_INT: MOV TH1,#3CH MOV TL1,#0B0H ;定时器赋初值 DEC R0 ;软计数 CJNE R0,#00H,LP ;判断计数次数是否达到,是则跳转 RL A ;灯移位 MOV P1,A ;灯改变 MOV R0,#20 ;软计数器初值 LP: RETI INT1_INT: MOV A,#0FFH ;按键按下,LED熄灭 MOV P1,A ;灯改变 CPL TR1 ;定时器改变开关状态 MOV A,#0FEH ;点亮第一个LED RETI ;中断返回

51单片机的音乐跑马灯设计

摘要 单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。 本设计使用AT89C52芯片,利用P0的8个端口连接8个发光二极管,P1的8个端口连接8个发光二极管,通过P0.0到P0.7的值和P1.0到P1.7的值控制“跑马灯”的亮灭,以达到显示效果。设计的中断程序要对多个按键动作进行响应,灯光变换的花样有15种,用模式按钮切换。按下模式按钮键,程序将按十五种模式切换,每按一次模式按钮键,切换一次跑马灯模式,而加速按钮和减速按钮可以改变闪烁速度;最后一种模式为音乐模式,加速按钮可切换音乐。 在单片机运行时,可以在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息。 关键词:音乐跑马灯;AT89C52单片机;74LS245驱动芯片;LED发光二极管

1 设计概述 (1) 1.1设计目的 (1) 1.2设计作用 (1) 1.3设计要求 (1) 1.4系统设计框图 (1) 2元器件介绍 (3) 2.1AT89C52单片机 (3) 2.2驱动芯片74LS245 (3) 2.3其他元件及功能 (4) 3 硬件电路设计 (6) 3.1单片机最小系统 (6) 3.2LED显示部分 (7) 3.3按钮控制部分 (7) 3.4数码管显示电路 (8) 3.5蜂鸣器部分 (8) 3.6系统总电路图 (9) 4 软件设计 (10) 4.1 程序流程图 (10) 4.2 程序设计 (10) 5 结束语 (32) 参考文献 (33)

单片机跑马灯(流水灯)控制实验报告

单片机实验报告 姓名: 学号: 一、 实验实现功能: 1:计数器功能 2:流水灯 二、 具体操作: 1、计数器功能 数码管的动态显示。每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。 2、流水灯 当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。 三、 程序流程图 开始 定时器T0 设置初值,启动定时器, 打开中断 复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开

四、程序 #include typedef unsigned char uint8; typedef unsigned int uint16; //类型定义 sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; sbit P2_4 = P2^4; //位声明四个数码管开关 sbit Key2 = P3^2; sbit Key3 = P3^3; //位声明2个按键K2和K3 sbit Ledk = P2^0 ; //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; //定时器初值使每次循环为1ms TR0 = 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]; //千位

基于单片机的跑马灯系统的设计与实现

《单片机及控制系统设计》 课程设计报告 题目:基于单片机的跑马灯系统的设计与实现院(系):机电与自动化学院 专业班级:电气自动化技术0901 学生姓名:詹志鹏 学号:20092822006 指导教师:汪媛 2011年12月26日至2012年1月10日 华中科技大学武昌分校

目录 1设计题目及要求 (1) 1.1设计题目 (1) 1.2设计目的 (1) 1.3控制要求 (1) 2硬件设计 (2) 2.1单片机简介 (2) 2.1.1 单片机的引脚 (2) 2.1.2单片机的内部结构 (3) 2.2电源电路 (4) 2.3时钟电路 (4) 2.4复位电路 (5) 2.5 EA/VPP(31脚)的功能和接法 (6) 2.6 P0 口外接上拉电阻 (6) 2.7 发光二级管 (7) 2.8 显示电路部分 (8) 2.9 AT89C51单片机最小系统 (9) 3 软件设计 (10) 3.1源程序与注释 (10) 3.2软件编译、调试与烧入 (11) 总结 (16) 附录实物图 (17) 参考文献 (18)

1.设计题目及要求 1.1设计题目 单片机小系统版控制LED灯 1.2设计目的 1.单片机最小应用系统的硬件设计技能训练; 2.ASM语言或C51语言软件编程与调试技能训练; 3.“下载及烧录(固化)程序”开发技能训练; 4.Protell软件应用技能训练; 1.3控制要求 按键及外部中断控制二级管灯(自右向左) 1.按键控制8个LED灯循环自右向左依次点亮 2.间隔时间可以自行设计 3.单号灯亮双号灯灭 7→ 5→ 3→ 1→ 7→ 5→ 3→ 1…… 1.外部中断控制8个LED灯循环自右向左依次点亮 2.间隔时间可以自行设计 3.双号灯亮单号灯灭 8→ 6→ 4→ 2→ 8→ 6→ 4→ 2…… 2.硬件设计 2.1单片机简介 2.1.1单片机的引脚 (1)电源:40号引脚VCC是芯片电源,接+5V。20号引脚VSS为电源接地端。

基于单片机的跑马灯课程设计

课程设计(论文) 题目基于单片机的跑马灯 学院名称电气工程学院 指导教师 职称 班级 学号 学生姓名 2013年 1 月5日

摘要: 单片机最小系统是在以STC89C52RC单片机为基础上扩展,使其能更方便地运用于测试系统中。本设计主要在单片机上扩展I/O口,复位电路,晶振电路,LED显示电路并写好底层程序,做出能应用于跑马灯的最小系统。矚慫润厲钐瘗睞枥庑赖。 关键词:最小系统,STC89C52RC, 跑马灯 The smallest system one chip computer is in expands at the base of MCS-52 one chip computer,make it used more convient in the test system. This design mainly expands I/O in the take 52 on chip computer, reset circuit, crystals circuit, the LED display circuitand writes the first floor procedure.Make for scrolling minimum system.聞創沟燴鐺險爱氇谴净。Keyword:minimum system, AT89C52, scrolling

南华大学电气工程学院 《单片机原理及应用课程设计》任务书 设计题目:基于单片机的跑马灯 专业:电气工程及其自动化 学生姓名: 学号: 起迄日期: 2013 年12月23日—2014年1月 5日 指导教师:

51单片机常见程序,附带注释

51 单片机常见程序 附带注释 三位数分离成3个一位数,截取 bai=num/100;//输出百位数 shi=num%100/10;//输出十位数 ge=num/10;//输出个位数 #include //跑马灯程序。当时间约为20ms,形成动态扫描,看上去全亮。 #include #define uint unsigned int //无符号整型,占16位数,表示围0~65536 #define uchar unsigned char //无符号字符型占八位数,表示围0~255 void delayms(uint); uchar aa; //定义变量 void main() { aa=0xfe; while(1) { P2=aa; //控制单片机接口p2,循环亮 delayms(500); //当500换成5,看起来全亮,实际上灯一直亮灭,原因是视觉延迟 aa=_crol_(aa, 1); } } void delayms(uint xms) //子程序,延时,通过数数

{ uint i, j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } #include //跑马灯程序。现在时间较长,多以是亮灭的流动,当时间约为20ms,形成动态扫描,看上去全亮。 #include #define uint unsigned int //无符号整型,占16位数,表示围0~65536 #define uchar unsigned char //无符号字符型占八位数,表示围0~255 void delayms(uint); uchar aa; //定义变量 void main() { aa=0xfe; while(1) { P2=aa; //控制单片机接口p2,循环亮 delayms(500); //当500换成5,看起来全亮,实际上灯一直亮灭,原因是视觉延迟 aa=_crol_(aa, 1); } }

基于AT89C51的跑马灯

综合电子课程设计报告设计题目:基于AT89C51的跑马灯 专业:电子信息工程 班级: 学号: 姓名: 指导教师: 日期: 2010年6月30日

目录 一、设计任务与要求 1.设计任务 2.设计要求 3.设计目的 二、设计方案 三、程序设计 四、电路原理图 1.电路原理图 2电路PCB板 五、单片机机箱测试 六、心得体会 七、参考文献

一设计任务与要求 1.设计任务 选择采样AT89C51、发光二极管、晶振等器件,使用C语言实现各种跑灯动态显示效果设计。 2.设计要求 实现8个LED的全亮、全灭、交错显示等。可结合灯的排布以及程序设计实现各种跑马灯动态显示效果。 3.设计目的 通过本课程设计掌握单片机系统设计思路和基本步骤,熟练用protel99软件画原理图和PCB板 二设计方案 在日常生活中,我们总能看到花样百出的流水灯光,但随着电子技术的飞速发展,人们对灯的花样要求也越来越高,如交错、全亮、全灭显示等,因此跑马灯得到广泛的应用。 设计流程 三、程序设计 程序如下: #include #defineuint unsigned int #define uchar unsigned char uchar code table[]={0xFE,0xFD,0xFB,0xF7, 0xEF,0xDF,0xBF,0x7F }; uchar code aa[]={0xE7,0xDB,0xBD,0x7E

}; uchar code bb[]={0xE7,0xC3,0x81,0x00 }; uchar code CC[]={0x0F,0xF0,0xAA,0x55 }; uchar code dd[]={0xFF,0x00,0xff,0x00,0xff,0x00 }; uchar code ee[]={0x7E,0x3C,0x18,0x00,0xff,0xE7, 0xC3,0X81,0x00 }; uint t=200,s=200; /************************************************** 函数名称:delay(uint t)延时函数 入口参数 t 返回参数: ***************************************************/ void delay(uint t) { uint i; while(t--) { for(i=0;i<125;i++); } } /*************************************************** 函数名称:keyboard()键盘函数 入口参数: 返回参数:t ***************************************************/ keyboard(uint a) { int temp; if(P2^0==0) { P2=0xaf; delay(20); if(P2^0==0) { temp=a; temp-=40;

基于AT89C51单片机的跑马灯电路课程设计

目录 1 实验目的 (1) 2 元器件清单及简介 (1) 3 设计原理及分析 (1) 3.1 主要设计要求 (1) 3.2 实验总流程图 (2) 3.3 实验总图及说明 (3) 4 实验中的问题与改进 (3) 5 总结 (4) 5.1 四级调速 (4) 5.2 跑马灯闪烁方向的改变 (5) 5.3 跑马灯循环闪烁灯的个数的改变 (6) 6 实验分析与心得 (7) 参考文献: (9) 附录............................................... 错误!未定义书签。

基于AT89C51单片机的跑马灯电路课程设计 1实验目的 了解AT89C51管脚的基本功能,学会运用Proteus 7.7设计电路,学会运用汇编语言编写程序,来实现跑马灯的左右转换、0.1ms,0.25ms,0.5ms,1ms的四级变速、灯的闪烁个数为1,2,3,4等功能。使用KEIL C51设计单片机程序,生成HEX文件,将程序烧录到AT89C51芯片中。然后在实验电路中运行,调试。 2元器件清单及简介 3设计原理及分析 3.1主要设计要求 1.灯的循环左右移动。 2.灯循环闪烁的个数可由1变到4。 3.灯循环闪烁的速度可变,分别是现0.1ms,0.25ms,0.5ms,和1ms的循环转 变。 4.能在仿真图和面包板上进行实物运行并实现以上功能。并能尽量节省器材。

3.2实验总流程图 图1实验流程图

3.3实验总图及说明 图2 实验总图 1.右边与P0口相连的8个灯采用上拉电阻方式,采用此方式是因为P0口驱动能力较大,且内部无上拉电阻,因此采用低电平驱动时,需加上拉电阻;且防止因电流过大而烧毁二极管。 2.左边依次与P1.0-P1.5的开关K0、K1、K2、K3、K4、K5,右边与P2.0-P2.3依次相连开关为K6、K7、K8、K9。 3.K0、K1控制灯的闪烁方向;K2、K3、K4、K5控制跑马灯闪烁的速度;K6、K7、K8、K9控制跑马灯灯闪烁的个数。 4.当有开关按下时相应的P口被置0,定时器中扫描P口程序扫描到相应P口为低电平,从而转到相应子程序执行,从而达到1所说功能。 4实验中的问题与改进 首先是跑马灯的个数转换出现混乱,即不能按照顺序进行转换。后来发现是因为我们使用的是开关是按键开关,当按下开关时进行扫描P口的程序可能被扫描多次,从而因为多次执行导致灯的个数多次变化。因没脉冲开关,我们采用多个开关来避免灯亮的个数的循环转移。 还有就是因为对面包板的不了解,把电源与地接到一起,导致不能得出应有的实验结果,结果同学的介绍从而解决此问题。

51单片机跑马灯编程思路

51单片机跑马灯编程思路 #include //预处理文件里面定义了特殊寄存器的名称如P1 口定义为P1 void main(void) { //定义花样数据 const unsigned char design[32]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF, 0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0, 0xE7,0xDB,0xBD,0x7E,0xFF}; unsigned int a; //定义循环用的变量 unsigned char b; //在C51 编程中因内存有限尽可能注意变量类型的使用 //尽可能使用少字节的类型,在大型的程序中很 受用 do{ for (b=0; b<32; b++) { for(a=0; a<30000; a++); //延时一段时间 P1 = design[b]; //读已定义的花样数据并写花样数据到P1 口 } }while(1); } 程序中的花样数据可以自以去定义,因这里我们的LED 要AT89C51 的P1 引脚为低电平才会点亮,所以我们要向P1 口的各引脚写数据O 对应连接的LED 才会被点亮,P1 口的八个引 脚刚好对应P1 口特殊寄存器的八个二进位,如向P1 口定数据0xFE,转成二进制就是11111110,最低位D0 为0 这里P1.0 引脚输出低电平,LED1 被点亮。如此类推,大家不难算 出自己想要做的效果了。

基于单片机AT89C51的花样跑马灯设计报告

基于AT89C51的花样跑马灯 一.课设简介 1-1.课设目的 为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。 1、通过本设计,使学生综合运用《单片机技术原理与应用》、《DSP原理与应 用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。 2、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完 整的实用程序,并仿真运行,保证设计的正确性。 3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器 件、布线、编程、调试、撰写报告等。 1-2.课设内容 利用单片机的自动控制功能,设计出相应不同的电路,可以实现IED灯不同模式的显示效果。本课程是利用AT80C51单片机的自动控制功能,并结合其它电子元器件以及软件实现的跑马灯,实现不同种类的LED灯显示效果。 二.硬件电路设计 2.1AT89C51简介及接口说明 AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单

单片机跑马灯实验报告

单片机跑马灯实验报告 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

学号序号 19 单片机原理与接口技术 实验报告 实验项目序号一 实验项目名称跑马灯实验 姓名卢志雄专业电子信息工程班级电信14-2BF 完成时间 2016年4月2日

一、实验内容 实验内容为3项,其中第1、2项必做。 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 跑马灯实验电路原理图三、程序流程图 图2 简单键控的流水灯程序流程图

四、源程序 1、基本的流水灯 #include<> #define uint unsigned int #define uchar unsigned char void delay( j ) //延时函数 data uint j; { data uint i; while(j--) for(i=0;i<250;i++); } void main( ) //主函数 { data uchar a; a=1; //保证只有一个点亮 while(1) //不断循环 { P2=~a; //低电平点亮 a=a<<1; //左移一位,右补0 if(a==0)a=1; //全0 delay(2250);} //流动点亮延时 } 2、简单键控的流水灯

单片机跑马灯实验报告

学号14142200277序号19 单片机原理与接口技术 实验报告 实验项目序号一 实验项目名称跑马灯实验 姓名卢志雄专业电子信息工程班级电信14-2BF 完成时间2016年4月2日

一、实验内容 实验内容为3项,其中第1、2项必做。 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 跑马灯实验电路原理图

三、程序流程图 图2 简单键控的流水灯程序流程图 四、源程序 1、基本的流水灯 #include #define uint unsigned int #define uchar unsigned char void delay( j ) //延时函数 data uint j; { data uint i; while(j--) for(i=0;i<250;i++); } void main( ) //主函数 { data uchar a; a=1; //保证只有一个点亮

while(1) //不断循环 { P2=~a; //低电平点亮 a=a<<1; //左移一位,右补0 if(a==0)a=1; //全0 delay(2250);} //流动点亮延时 } 2、简单键控的流水灯 #include #define uchar unsigned char #define uint unsigned int void delay(uint i) { uchar t; while(i--) { for(t=0;t<120;t++); } } void main() { data uchar a; a=1; while(P2==0xff) { P0=~a; a=a<<1; if(a==0) a=1; delay(250); } while(P2==0xfe) { P0=~a;

基于单片机的跑马灯设计剖析

《EDA项目开发》课程设计 任务书 题目名称:基于单片机的跑马灯设计 专业电子工程技术 班级:电子143 姓名刘恒亮学号1430905031 学校:河南职业技术学院 指导教师:秦连铭 2016年6月5日

课程设计任务书 课程名称:微型计算机系统 设计题目:基于单片机的跑马灯设计 系统硬件要求: 根据实际要求,以MCS-51单片机为核心,设计3个按键,每个按键对应一个花样,可手动显示,即按一个按键,显示一种花样,也可以再设计一个按键用于连续显示每个花样,每个花样显示的时间和花样设计者自己规定,并在论文中给定。设计控制系统硬件电路,编写C语言或汇编语言程序,并用PROTEUS软件进行实时仿真。 要求: (1)扩展接口(8255或8155),设计至少4个按键 (2)设计至少32个LED (3)LED显示至少有3种花样,可单独显示也可自动循环显示 软件设计: 1)主程序设计 2)各功能子程序设计 其他要求: 1、每位同学独立完成本设计。 2、依据题目要求,提出系统设计方案。 3、设计系统电路原理图。 1、调试系统硬件电路、功能程序。 2、编制课程设计报告书并装订成册,报告书内容(按顺序) (1)报告书封面 (2)课程设计任务书 (3)系统设计方案的提出、分析 (4)系统中典型电路的分析 (5)系统软件结构框图 (6)系统电路原理图 (7)源程序 (8)课设字数不少于3000字

目录 第一节AT89C51芯片分析...............................................................I 第二节设计概述 (3) 第三节算法 (5) 第四节编程技巧 (7) 第五节电路设计及功能说明,硬件原理框图及电路图(包括接口芯片简介).8 第六节调试过程中的主要难点(自己遇到的)及解决思路和办法; (8) 课设结果及分析、收获、体会和建议; (9) 参考文献 (10) 附录1 (11) 附录2 (12)

单片机 跑马灯课程设计

摘要 AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,即单片机。AT89C2051是一种带2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 该设计使用AT89C51芯片作为控制芯片,利用P1口连接8个发光二极管,通过I/O的值控制“跑马灯”的亮灭,以达到显示效果。开始时所有灯全亮,按下按键S时开始跑马灯,再按下按键S时停止,再按下S时继续,并要求有多种亮暗组合。 关键词:AT89C51单片机跑马灯按键

目录 摘要 ................................................................................................................ I 第一章芯片分析和设计概述.. (2) 第一节AT89C51芯片分析 (2) 第二节设计概述 (5) 第二章硬件电路设计 (6) 第三章程序部分设计 (7) 参考文献 (12)

第一章芯片分析和设计概述 第一节AT89C51芯片分析 ATMEL的AT89S51是一种高效微控制器,将多功能8位CPU和闪烁存储器组合在单个芯片中,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51的芯片引脚图如下: 图1.1 AT89C51引脚图 各引脚的说明和功能分析如下: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编

51单片机心形灯汇编程序

ORG 0000H MAIN: MOV R1,#08H MOV A,#7FH DAN2: MOV P2,A CALL DELAY RR A DJNZ R1,DAN2 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R1,#08H MOV A,#7FH DAN3: MOV P3,A CALL DELAY RR A DJNZ R1,DAN3 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R1,#08H MOV A,#7FH DAN4: MOV P1,A CALL DELAY RR A DJNZ R1,DAN4 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R1,#08H MOV A,#0FEH DAN1: MOV P0,A ACALL DELAY RL A DJNZ R1,DAN1 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH ;单个跑马灯 MOV R1,#08H MOV A,#7FH

DAN22: MOV P2,A CALL DELAY1 RR A DJNZ R1,DAN22 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R1,#08H MOV A,#7FH DAN33: MOV P3,A CALL DELAY1 RR A DJNZ R1,DAN33 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R1,#08H MOV A,#7FH DAN44: MOV P1,A CALL DELAY1 RR A DJNZ R1,DAN44 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R1,#08H MOV A,#0FEH DAN11: MOV P0,A ACALL DELAY1 RL A DJNZ R1,DAN11 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH ;单个跑马灯 MOV R1,#08H MOV A,#7FH DAN222: MOV P2,A CALL DELAY2 RR A

单片机课程设计--跑马灯设计

单片机课程设计(跑马灯设计) 专业:电气自动化

摘要 AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,即单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 该设计使用AT89C51芯片作为控制芯片,利用P1口连接8个发光二极管,通过I/O的值控制“跑马灯”的亮灭,以达到显示效果。开始时所有灯全亮,按下按键S时开始跑马灯,再按下按键S时停止,再按下S时继续,并要求有多种亮暗组合。 关键词:AT89C51单片机跑马灯按键

目录 摘要 ........................................................................................ I 第一章芯片分析和设计概述.. (3) 第一节AT89C51芯片分析 (3) 第二节设计概述 (8) 第二章硬件电路设计 (9) 第三章程序部分设计 (10) 参考文献 (18)

第一章芯片分析和设计概述 第一节AT89C51芯片分析 ATMEL的AT89S51是一种高效微控制器,将多功能8位CPU和闪烁 存储器组合在单个芯片中,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51的芯片引脚图如下: 图1.1 AT89C51引脚图 各引脚的说明和功能分析如下: VCC:供电电压。

单片机跑马灯实验报告

单片机跑马灯实验报告

学号 14142200277序号 19 单片机原理与接口技术 实验报告 实验项目序号一 实验项目名称跑马灯实验

姓名卢志雄专业电子信息工程班级电信14-2BF 完成时间2016年4月2日 一、实验内容 实验内容为3项,其中第1、2项必做。 1、基本的流水灯。 根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3 (8) D1……,循环点亮。每点亮一个LED,采用软件延时一段时间。 2、简单键控的流水灯。 不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。松手后,又按正序点亮流水灯。 3、键控的流水灯。 上电,不点亮LED,按一下K1键,按正序点亮流水灯。按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。 二、电路原理图

图1 跑马灯实验电路原理图 三、程序流程图 开 检测 完成对应 判断P2 图2 简单键控的流水灯程序流

程图 四、源程序 1、基本的流水灯 #include #define uint unsigned int #define uchar unsigned char void delay( j ) //延时函数 data uint j; { data uint i; while(j--) for(i=0;i<250;i++); } void main( ) //主函数 { data uchar a; a=1; //保证只有一个点亮 while(1) //不断循环 { P2=~a; //低电平点亮 a=a<<1; //左移一位,右补0 if(a==0)a=1; //全0 delay(2250);} //流动点亮延时 } 2、简单键控的流水灯 #include #define uchar unsigned char #define uint unsigned int void delay(uint i) { uchar t;

单片机跑马灯

多功能跑马灯设计 目录 1、摘要----------------------------------------------------------------3 2、正文--------------------------------------------------------------4(1)、设计题目描述与总体要求-------------------------------------------4(2)、设计研究主要工作-------------------------------------------------4(3)、系统概述:主要说明总体规划,解决的主要问题,设计目标等-----------4 1)、跑马灯各元件功能说明--------------------------------------------4 2)、解决的主要问题--------------------------------------------------5 3)、设计目标--------------------------------------------------------5(4)、设计原理与方法---------------------------------------------------5 1)、电路流程图------------------------------------------------------5 2)、电路原理图-----------------------------------------------------7 3)、实物截图--------------------------------------------------------7(5)、实现程序--------------------------------------------------------9 3、参考文献------------------------------------------------------------10

相关主题
文本预览
相关文档 最新文档