文档库 最新最全的文档下载
当前位置:文档库 › MSP430F6638_按键LED跑马灯程序

MSP430F6638_按键LED跑马灯程序

此程序是用单片机的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.wendangku.net/doc/f32240683.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路单片机跑马灯程序---------------------------------------

跑马灯程序

//产生四种亮灯方式的跑马灯 module zmk(mclk,reset,type,ledout); input mclk,reset; input[1:0] type; output [5:0] ledout; reg [5:0] ledout; reg [24:0] count; reg [4:0] state; wire clk; //分频器 always@(posedge mclk) count=count+1; assign clk=count[23]; //当type变化的时候对state进行清零 reg[1:0] type_delay; wire type_change; always @ (posedge clk) type_delay <= type; assign type_change=(type!=type_delay)?1:0; always @ (posedge clk ) begin if(reset==0) //初始化语句begin ledout=6'b000000;state<=0;end else if(type_change)//对state进行清零 state<=4'b1; else if(type==2'b00) begin case(state) 4'b0001:ledout=6'b011111;//第一个灯亮 4'b0010:ledout=6'b101111;//第二个灯亮 4'b0011:ledout=6'b110111;//第三个灯亮 4'b0100:ledout=6'b111011;//第四个灯亮

4'b0101:ledout=6'b111101;//第五个灯亮 4'b0110:ledout=6'b111110;//第六个灯亮 4'b0111:ledout=6'b111101;//第五个灯亮 4'b1000:ledout=6'b111011;//第四个灯亮 4'b1001:ledout=6'b110111;//第三个灯亮 4'b1010:ledout=6'b101111;//第二个灯亮 default :ledout=6'b000000; endcase state=state+1; //计数器产生state的各种状态if(state==4'b1011)state=5'b00001; end else if(type==2'b01) begin case(state) 4'b0001:ledout=6'b101010; 4'b0010:ledout=6'b010101; default :ledout=6'b000000; endcase state=state+1; if(state==4'b0011)state=5'b00001; end else if(type==2'b10) begin case(state) 4'b0001:ledout=6'b110011; 4'b0010:ledout=6'b101101; 4'b0011:ledout=6'b011110; 4'b0100:ledout=6'b101101; default :ledout=6'b000000; endcase state=state+1; if(state==4'b0101)state=5'b00001; end else if(type==2'b11) begin case(state) 5'b00001:ledout=6'b111110;

基于labview跑马灯设计

选题分析: 随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。 彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰已经成为一种时尚。 跑马灯是一种生活中比较常见的装饰,本文主要通过labview来设计了一个相对简单的对跑马灯的控制,实现了其有规律的亮灭,带来一定的观赏效果。 本文主要是实现了跑马灯的单个流水闪烁、 双路同步流水闪烁 、四路同步流水闪烁、全体同步闪烁,以此循环。本程序并控制闪烁的间隔时间,使其运行更具可观性。 方案设计: 本文主要设计了12个显示灯,并让其方形围成一圈。 运行效果: 单个流水闪烁:单个灯依次轮流闪烁 双路流水同步闪烁: 相对两灯同时依次轮流闪烁 四路同步流水闪烁:等间距四灯依次轮流闪烁 全体同步闪烁:全体灯同时闪烁 运行步骤: 单个流水闪烁→ 全体同步闪烁 → 双路流水同步闪烁

↑ ↓ 全体同步闪烁←四路同步流水闪烁←全体同步闪烁 以此循环。 运行控制: 直接点击labview运行按钮进行跑马灯演示。 开关:用于结束当前操作,控制其关断。当开始运行程序时也可通过关 断开关了结束程序的运行。 水平指针滑动杆:用于调节彩灯间的延时时间。通过其可调整灯闪烁的 快慢。 前面板的设计: 前面板主要由12个指示灯、一个开关及水平指针滑动杆构成。 水平指针滑动杆——用于调节彩灯间的延时时间。 指示灯——用以显示程序运行结果。 开关——用于结束当前操作。 对于前面板的设计相对简单,通过开关来控制其关断,水平指针滑动杆 来控制其延时时间,指示灯显示程序运行的结果,观看到跑马灯的演示 情况。

图1. 前面板 程序框图的设计: 设计思路: 本程序主要用到平铺式顺序结构和层叠式顺序结构顺序执行。 本程序用真假常量来控制灯亮与不亮。 本程序还用到了while循环和for循环,循环是用于达到闪烁和同步递进循环。 整个程序几乎每一帧都用到了延时,单位是毫秒,延时的目地是使本程序更具有可观性。

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

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 ;中断返回

单片机跑马灯c语言程序

#include //头文件 #define uchar unsigned char //宏定义 sbit Beep = P3^4; // 蜂鸣器 uchar code led[]={ 0xff,0xfe,0xfd,0xf7,0xef,0xbf,0x7f,0x00 }; /**********延时子函数************/ void delay(unsigned int time) { unsigned int i,j; for(i=0;i0;j-=2) { P0 = led[j]; delay(500); } for(j=5;j>0;j-=2) { P0 = led[j]; delay(500); } } } /*****************计数器中断1***************/ void inttre() interrupt 3

{ unsigned int i,j; i=10; for(j=0;j<10;j++) { Beep=1; delay(i); Beep=0; delay(i); i+=60; } } /*******************外部中断1***************/ void inttrer() interrupt 2 { unsigned int i; for(i=1;i<7;i++) { P0 = led[i]; delay(500); } }

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)

跑马灯控制电路设计

HDL数字系统课程设计报告书 目录 一、设计目的 (2) 二、设计思路 (2) 三、设计过程 (2) 3.1、系统方案论证 (2) 3.2、程序代码设计 (3) 四、系统调试与结果 (5) 五、主要元器件与设备 (9) 六、课程设计体会与建议 (9) 6.1、设计体会 (9) 6.2、设计建议 (10) 七、参考文献 (10)

论文摘要: 共16个LED灯,连成一排,实现几种灯的组合显示。通过这次对跑马灯控制电路的设计与制作,了解了设计电路的程序,也了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。此外,本实验也可通过EDA软件Quartus6.0和modelSim SE 6.0实现。 关键词: HDL 数字系统跑马灯设计

一、设计目的 1、熟悉Verilog HDL程序编程。 2、掌握Altera公司ACEXTM系列EPEK30QC208-2芯片的使用方法。 3、熟悉Quartus II 6.0和Modesim SE 6.0软件的使用。 4、了解16个数码管的显示原理和方法。 二、设计思路 1、编写跑马灯设计程序。 2、定义LED灯引脚分配。 3、设计状态控制。 4、下载到EPEK30QC208-2芯片上显示。 三、设计过程 3.1、系统方案论证 16位LED跑马灯设计框图如图1所示:

图1 LED跑马灯设计框图 3.2、程序代码设计 module paomadeng(rst,clk,sel,led); //端口定义,参数列表 input rst,clk; //rst复位,clk为4Hz的时钟信号input[1:0] sel; //sel 状态选择端口 output[15:0] led; //led 跑马灯显示 reg[15:0] led; reg[15:0] led_r,led_r1; reg cnt1,dir; //cnt1控制状态2 led灯的亮次数 reg[3:0] cnt2; //cnt2控制状态2 led灯的亮次数 reg[2:0] cnt3; //cnt3控制状态2 led灯的亮次数 always@(posedge clk) begin if(rst) begin cnt1<=0;cnt2<=0;cnt3<=0;dir<=0;end else case(sel) // LED按奇数,偶数依次显示 2'b00: begin led_r=16'b0101010101010101; if(cnt1==0)led<=led_r; else led<=led_r<<1; cnt1<=cnt1+1; end // LED顺序依次显示,顺序依次熄灭 2'b01: begin if(!dir) begin if(cnt2==0) begin led_r=16'b0000000000000001;led<=led_r;end else begin led<=(led<<1)+led_r;end if(cnt2==15) begin dir<=~dir;end

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

单片机实验报告 姓名: 学号: 一、 实验实现功能: 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日 指导教师:

左右跑马灯程序51C语言

/****************************************************************************** * * * 普中科技 -------------------------------------------------------------------------------- * 实验名: 跑马灯实验 * 实验说明: LED灯做跑马灯左右移动 * 连接方式: 见接线图 * 注意: ******************************************************************************* / //--包含你要使用的头文件 #include //--声明全局函数--// void Delay10ms(unsigned int c); //延时10ms //--声明一个全局变量--// unsigned char LED; /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main() { unsigned char i; //--首先赋值LED--// LED = 0xFE; while (1) { //--LED往左闪烁--// for (i = 0 ;i < 7 ; i++) { //--将LED 的值赋给P2口--// P0 = LED;

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); } }

跑马灯控制电路设计

跑马灯控制电路设计 The Standardization Office was revised on the afternoon of December 13, 2020

HDL数字系统课程设计报告书 目录 一、设计目的.......................... 错误!未定义书签。 二、设计思路.......................... 错误!未定义书签。 三、设计过程.......................... 错误!未定义书签。 、系统方案论证.................... 错误!未定义书签。 、程序代码设计.................... 错误!未定义书签。 四、系统调试与结果.................... 错误!未定义书签。 五、主要元器件与设备.................. 错误!未定义书签。 六、课程设计体会与建议................ 错误!未定义书签。 、设计体会........................ 错误!未定义书签。 、设计建议........................ 错误!未定义书签。 七、参考文献............................. 错误!未定义书签。

论文摘要: 共16个LED灯,连成一排,实现几种灯的组合显示。通过这次对跑马灯控制电路的设计与制作,了解了设计电路的程序,也了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。此外,本实验也可通过EDA软件和modelSim SE 实现。 关键词: HDL 数字系统跑马灯设计

基于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;

八路跑马灯程序

八路跑马灯 一、实验目的与要求 (1)熟悉单片机实验开发装置实验台上的资源,学会选用其功能电路,连接组成实验需要的系统; (2)学习并了解MCS-51单片机P1口的应用及使用方法; (3)学习编写接口应用程序及延时子程序; (4)编写实验程序,实现从P0口输出信号驱动发光二极管L1~L8动态点亮的功能;二、二、实验程序功能 延时实现LED流水灯效果,p1端口的八个灯作跑马灯。在本实验中,P1作为输出口,接8只发光二极管,编写程序,使发光二极管循环点亮。本例实验主要用到了延时子程序,CLR、AJMP、RRC、RLC、CALL等指令,通过轮流点亮P0.0…..P0.7实现效果。 程序功能: (1)使8个跑马灯从右至左依次点亮点亮; (2)再使跑马灯从左至右依次点亮; (3)一个循环结束后接着按上面的一二步骤循环; 三、实验电路原理图及硬件接线 图1.1 电路原理图 硬件接线:把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极

管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。 四、实验程序 ○1程序内容 ORG 0000H AJMP START ORG 0030h START: MOV A,#0FFH CLR C MOV R1,#08H ;循环八次。 LOOP: RLC A ;带进位左移。 MOV P1,A ;输出到P1口。 CALL DELAY ;延时一段时间 DJNZ R2,LOOP ;反复循环 MOV R2,#07H ;再往回循环。 LOOP1: RRC A ;带进位右移 MOV P1,A ;输出到P1口。 CALL DELAY ;延时一段时间 DJNZ R2,LOOP1 ;反复循环 JMP START ;重新开始 DELAY: MOV R3,#20 ;延时子程序 D1: MOV R4, #20 D2: MOV R5, #248 DJNZ R5, $ DJNZ R4, D2 DJNZ R3, D1 RET ○2基本工作原理: 我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。 每次送出的数据是不同,具体的数据如下表1所示

基于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口的程序可能被扫描多次,从而因为多次执行导致灯的个数多次变化。因没脉冲开关,我们采用多个开关来避免灯亮的个数的循环转移。 还有就是因为对面包板的不了解,把电源与地接到一起,导致不能得出应有的实验结果,结果同学的介绍从而解决此问题。

按键亮灯和跑马灯程序

/*要求:*/ /*利用DSP2812实现*/ /*1、确定CPU时钟100M(外部使用20MHZ晶振)*/ /*2、GPIOA0-7接8个LED灯*/ /*3、GPIOA8-15接8个按键*/ /*每一秒读取按键的值,并点亮相应的灯*/ viod Initsystem() { EALLOW; SysCtrlReg.WDCR=0x0068; SysCtrlRegs.PLLCR =0x0a; for(i= 0; i< 5000; i++); GpioMuxRegs.GPAMUX.all = 0x0000; GpioMuxRegs.GPFDIR.all= 0x00ff; EDIS; } void ConfigCpuTimer(uint16 a) { CpuTimer0Regs.PRD.all = a; CpuTimer0Regs.TPR.all = 0; CpuTimer0Regs.TPRH.all = 0; CpuTimer0Regs.TCR.bit.TSS = 1; CpuTimer0Regs.TCR.bit.TRB = 1; CpuTimer0Regs.TCR.bit.SOFT = 1; CpuTimer0Regs.TCR.bit.FREE = 1; CpuTimer0Regs.TCR.bit.TIE = 1; CpuTimer0.InterruptCount = 0; } void main() { Initsystem(); InitCPUtimer0(); DINT; IER = 0x0000; IFR = 0x0000; /*初始化PIE*/ InitPieCtrl(); /*初始化PIE中断矢量表*/ InitPieVectTable(); EALLOW; PieVectTable.TINT0 = &ISRTimer0; EDIS; ConfigCpuTimer(100000000);

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 被点亮。如此类推,大家不难算 出自己想要做的效果了。

相关文档
相关文档 最新文档