文档库 最新最全的文档下载
当前位置:文档库 › 四种亮灯方式自由切换的跑马灯(用verilog hdl语言编写的跑马灯程序)

四种亮灯方式自由切换的跑马灯(用verilog hdl语言编写的跑马灯程序)

四种亮灯方式自由切换的跑马灯(用verilog hdl语言编写的跑马灯程序)
四种亮灯方式自由切换的跑马灯(用verilog hdl语言编写的跑马灯程序)

//产生四种亮灯方式的跑马灯

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;

5'b00010:ledout=6'b111101;

5'b00011:ledout=6'b111011;

5'b00100:ledout=6'b110111;

5'b00101:ledout=6'b101111;

5'b00110:ledout=6'b011111;

5'b00111:ledout=6'b001111;

5'b01000:ledout=6'b010111;

5'b01001:ledout=6'b011011;

5'b01010:ledout=6'b011101;

5'b01011:ledout=6'b011110;

5'b01100:ledout=6'b011100;

5'b01101:ledout=6'b011010;

5'b01110:ledout=6'b010110;

5'b01111:ledout=6'b001110;

5'b10000:ledout=6'b000110;

5'b10001:ledout=6'b001010;

5'b10010:ledout=6'b001100;

5'b10011:ledout=6'b001000;

5'b10100:ledout=6'b000100;

5'b10101:ledout=6'b001000;

5'b10110:ledout=6'b000000;

5'b10111:ledout=6'b111111;

5'b11000:ledout=6'b000000;

5'b11001:ledout=6'b111111;

5'b11010:ledout=6'b000000;

default :ledout=6'b000000;

endcase

state=state+1;

if(state==5'b11011)state=5'b00001; end

end

endmodule

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

用单片机编写几种跑马灯

用单片机编写几种跑马灯 任务: 1、在电路板上实现跑马灯,一次1匹 2、在电路板上实现跑马灯,一次2匹 3、在电路板上实现4个二极管的同时闪烁 源程序1: /***********************************信息**************************************** **作者:刘海涛 **版本:初始版V1.0 **描叙:用电路板实现跑马灯。 **日期:2010年7月25日 *******************************************************************************/ /**********************************头文件*************************************** **头文件"reg52.h" *******************************************************************************/ /**********************************函数名*************************************** **函数名:延时函数delay() **输入:无 **输入:无 **宏定义:无 *******************************************************************************/ /**********************************宏定义*************************************** 宏定义:#define XBYTE ((unsigned char *)0x20000L) *******************************************************************************/ #include"reg52.h" delay(unsigned int dat) // 延时函数定义 { unsigned int i,j; for(i=0;i

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

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

stm32跑马灯实验

详细了解,请点击https://www.wendangku.net/doc/3512290443.html,/ 跑马灯实验 跑马灯实验是最简单,也是一般最先开始的一个实验,他可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上,从而节省了在搭建过程中所消耗的时间和精力。所有的GPIO操作都是以跑马灯为基础进行的。 建议:当该实验顺利完成后,作为一个模板,供以后实验使用,最好把相关的某些代码封装起来,方便其他程序重用和其他功能调试时使用,这样可以确保您可以将精力花费在其他需要实现的功能上,而不是多次写下重复的代码。 实验目的: 1.分析和学习固件库 2.理解固件库的结构 3.通过stm32f10x_gpio.c/.h文件,熟悉GPIO的控制和工作原理 4.对开发板LED灯的再次软件封装 实验要求: 1.利用原理图和固件库的实例,移植开发板LED灯的驱动程序,即自己创建一个LED.c/.h 2.用两种方法实现跑马灯程序: 1.LED驱动 2.直接GPIO寄存器控制 硬件分析:

如上所示,4个LED链接在4个不同管脚上,即GPIOF6,GPIOF7,GPIOF8,GPIOC7. 当这4个管脚被置为低电平时,二极管导通。 通用输入输出接口(GPIO)介绍: 多达112多功能的双向IO口:80%的IO口利用率 所有的IO被分成7个端口,即7组GPIO口(GPIOA..GPIOG); 多达21路模拟输入; 可改变功能引脚(如:USARTx、TIMx、I2Cx、SPIx、CAN、USB等); 多达112个IO口可以设置为外部中断(同时可最多可有16个); 一个IO口可用于将MCU从待机模式唤醒(PA.0); 一个IO口可用作防入侵引脚(PC.13); 标准的I/O口可承受5V; IO口可以吸收25mA(总共可吸收150mA); 18MHz翻转速度; 可设置输出速度达到50MHz; 使用BSRR和BRR寄存器可对IO口的位进行位设置或清除; 锁定机制可以避免对IO口的寄存器的误写操作: 每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口。多数GPIO引脚都与数字或模拟的复用外设共用。 除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。 在需要的情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。 7组GPIO的端口映射地址为:

div实现向左右无缝滚动图片效果(跑马灯)

div实现向左右无缝滚动图片效果(跑马灯) div+css学习笔记22(用div实现向左无缝滚动图片效果)JavaScript实现走马灯效果[无缝连接、循环滚动] 无缝跑马灯效果以下代码在IE6、Firefox+Win2k环境下测试通过网页走马灯连续循环滚动废话少说,代码贴出来:<div id="imgmarquee" style="OVERFLOW: hidden; WIDTH: 580px; align: left; background-color:#0099CC;"> <div style="width:1200px"><!--id="marquePic1"里面的宽度一定要大于id="imgmarquee"的宽度才能看到效果 width:600px;>WIDTH: 580px;大的div宽度要为span的两倍才可以,不然会换行width:1200px zdz的作品,流风的作品--> <span id="marquePic1" style="width:600px; background-color:#990033;"> <img src="../images/dialog/4.gif" /> <img src="../images/dialog/4.gif" /> <img src="../images/dialog/4.gif" /> <img src="../images/dialog/4.gif" /> <img src="../images/dialog/4.gif" /> <img src="../images/dialog/4.gif" /> <img src="../images/dialog/4.gif" /> <img src="../images/dialog/4.gif" /> </span>

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)

单片机汇编语言跑马灯

实验一跑马灯-亮灯左移右移循环 黄天佑 155 一、实验目的 1、进一步熟悉keil C仿真软件及单片机实验板的使用。 2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。 3、掌握应用KEIL软件编辑、编译源汇编程序的操作方法。 4、了解单片机汇编语言程序的设计和调试方法。 二、实验原理 1、实验板硬件电路图 2、单片机流水灯程序设计

(1)流水灯程序设计思路及程序流程。实现流水灯的方法有很多,这里介绍一种。 (2)产生流水灯效果程序(逐条程序加注释) start:mov R0,#8 ; 设置左移8次 mov A,#0FEH; 存入开始亮灯的位置 LOOP: mov P0,A; 传送P0并输出 ACALL DELAY; 调用延时程序 RL A; 左移1位 DJNZ R0,LOOP; 判断移送次数 mov R1,#8; 设置右移8次 LOOP1:RR A; 右移1位 mov P0,A; 传送到P0口并输出 ACALL DELAY; 调用延时程序 DJNZ R1,LOOP1; 判断右移次数 JMP start; 重新设定显示 DELAY: mov R5,#10; 延时子程序 D1: mov R6,#100; D2: mov R7,#100; DJNZ R7,$; DJNZ R6,D2; DJNZ R5,D1; RET ; 子程序返回 END ; 程序结束

三、实验步骤及调试过程 1、汇编语言程序的编写与调试 (1)新建一个工程 (2)保存文件,设一个文件名 (3)找到对应单片机的芯片,这里我们选AT89C51即可

接着我们新建一个文本写程序 (1) (2)保存文件名,注意文件名的后缀应该为.asm(汇编语言程序的格式)

单片机跑马灯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单片机控制交通灯汇编语言编写

基于51单片机的交通灯控制系统设计 摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通灯控制系统由80C51单片机、键盘、LED 显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。 关键词:交通灯,单片机,自动控制 一引言 当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在19世纪就已经出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消! 电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口! 二概要设计 2.1 设计思路 利用单片机实现交通灯的控制,该任务分以下几个方面: a 实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。 b 用数码管显示倒计时。可以利用动态显示或静态显示,串行并出或者并行并出实现。 C 实现急通车。这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下,那么四个方向全部显示红灯,禁止以诶车辆通行。当情况解除,让时间回到只能隔断处继续进行。 2.2总体设计框图 见图一:

制作幻灯片图片走马灯似移动的移出移入法

制作幻灯片图片实现走马灯似 移动——移出移入法 教材编写:韦彦复幻灯制作:Chen E-mail文化传播网https://www.wendangku.net/doc/3512290443.html, 按键翻页

现以制作《无邪孩子最可爱》为例,介绍韦彦复老师用移出移入法制作幻灯图片走马灯似移动的过程和方法。

一、背景文字 按照常规,给幻灯片设置全黑的背景,对幻灯片上边添加文字【无邪 的孩子最可爱】,对下边添加文字【2011-4-7日幻灯制作:Chen 】。

二、添加图片 将孩子图片分成二张图片一组合,共九个组合。将第一组合置于幻灯片窗口上,其余8个组合依次并排排列置于幻灯片窗口的右边。为使图片排列整齐,可采用 绘画参考线。 【组合方法】 将两张孩子图片分别置于幻灯片中轴线的两边适当位置,选中该两张图片→右击鼠标→下拉菜单→【组合】→【组合】。 【参考线设置方法】 点击【视图】菜单→【网格和参考线…】→【网格和参考线】对话框→【对齐】→勾选【对象与网络对齐】→【参考线设置】→勾选【屏幕上显示绘图参考线】→【确定】。 【添加参考线】 按【ctrl】键,然后按鼠标 左键移动绘图参考线至适 合位置,先释放鼠标左键, 后释放【ctrl】键,新增一 条参考线,原参考线位置 不变。

三、动画设置 (1)移出设置 先选中第一组合图片→右击鼠标→下拉菜单→【自定义动画…】→【自定义动画】对话框,然后→【添加效果】→【退出】→【缓慢移出】,接着从第一组合开始,分别对九个组合图片一一按序设置: 【一组合】→【开始:之前】→【方向:到左侧】→【速度:10秒】; 【二组合】→【开始:之前】→【方向:到左侧】→【速度:20秒】; 【三组合】→【开始:之前】→【方向:到左侧】→【速度:30秒】; 【四组合】→【开始:之前】→【方向:到左侧】→【速度:40秒】;……………………………………………………………………………… 【八组合】→【开始:之前】→【方向:到左侧】→【速度:80秒】。 【九组合】→【开始:之前】→【方向:到左侧】→【速度:90秒】。 (2)移入设置 再回过头对第一组合进行移入设置: 先选中第一组合图片→右击鼠标→下拉菜单→【自定义动画…】→【自定义动画】对话框,然后→【添加效果】→【进入】→【缓慢进入】→【开始:之前】→【方向:自右侧】→【速度:10秒】→【计时】→【延迟:80秒】→【确定】。【注】延迟时间的确定:应选取与前面移出设置九个组合中倒数第二个组合的速度时间相同。

单片机跑马灯实验

实验一、输入输出实验 实验目的: 1、体验单片机的程序编写和运行过程 2、掌握汇编语言的设计编译和运行 实验内容: 用P0端口作输入,P1端口做输出。程序循环从P0端口读入数据,从P1端口输出。输出用LED灯显示。 实验步骤和方法: 1、搭电路。输入端口的6个口接开关接口,输出6个接口接LED灯。 2、编写程序 3、调试程序 实验要求: 1、先用proteus软件搭建电路,编写程序作仿真。 2、在软件里验证好程序再上实验平台验证

I/O实验程序: ORG 0000H MAIN: MOV P0,#0FFH LOOP: MOV A,P0 MOV P1,A LJMP LOOP END

实验二、跑马灯实验目的: 1、掌握单片机的输出 2、掌握子程序的调用方法 3、掌握定时的设置方法 实验内容: 8个LED灯轮流点亮,点亮间隔为1秒。 定时方法采用子程序调用,延时子程序已经编写好。实验步骤和方法: 1、搭电路。P1作输出端口,接LED灯。 2、编写程序 3、调试程序 实验要求: 1、先用proteus软件搭建电路,编写程序作仿真。 2、在软件里验证好程序再上实验平台验证。 附:延时子程序 DELAY: M OV R3,#20 ;延时0.2s D1: MOV R4,#20 D2: MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 DJNZ R3,D1 RET

跑马灯延时子程序 ORG 00H JMP MAIN ORG 30H MAIN: MOV A,#0FFH CLR C MOV R2,#08H ;循环八次LOOP: RLC A ;带进位左移 MOV P2,A MOV R7,#05H LOOP1: CALL DELAY DJNZ R7,LOOP1

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

电气及自动化课程设计报告题目:基于单片机的跑马灯课程设计 课程:单片机原理及其应用 学生姓名:刘昊杰 学生学号: 1414050319 年级: 2014级 专业:电气工程及其自动化 班级: 3班 指导教师:缪玉桂 机械与电气工程学院制 2016年11月

目录 1 设计的任务与要求 (1) 1.1 课程设计的任务 (1) 1.2课程设计的要求 (1) 2 芯片分析和设计概述 (2) 2.1 AT89C51芯片分析 (2) 3 设计概述 (5) 4 硬件电路设计 (6) 5 程序部分设计 (7) 6 实验总结 (12) 7 参考文献 (12)

基于单片机的跑马灯课程设计 学生:刘昊杰 指导教师:缪玉桂 机械与电气工程学院电气工程及其自动化专业 1 设计的任务与要求 1.1 课程设计的任务 (1)掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 (2)通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。 (3)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 (4)与模拟电子技术,数字电子技术等课程相结合,进一步熟悉和掌握单片机的结构及工作原理,为以后所学的后续课程打下良好的基础。 (5)通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。 1.2课程设计的要求 该设计使用AT89C51芯片作为控制芯片,利用P1口连接8个发光二极管,通过I/O 的值控制“跑马灯”的亮灭,以达到显示效果。开始时所有灯全亮,按下按键S时开始跑马灯,再按下按键S时停止,再按下S时继续,并要求有多种亮暗组合。

嵌入式系统原理实验三跑马灯

实验三跑马灯实验 实验目的: 通过一个经典的跑马灯程序,了解STM32F1 的IO 口作为输出使用的方法。通过代码控制ALIENTEK 战舰STM32 开发板上的两个LED:DS0 和DS1 交替闪烁,实现类似跑马灯的效果 内容要点: 1.硬件设计 本章用到的硬件只有LED(DS0 和DS1)。其电路在ALIENTEK 战舰STM32F103 开发板上默认是已经连接好了的。DS0 接PB5,DS1 接PE5。所以在硬件上不需 要动任何东西。其连接原理图如图: 2.软件设计 跑马灯实验我们主要用到的固件库文件是: stm32f10x_gpio.c /stm32f10x_gpio.h stm32f10x_rcc.c/stm32f10x_rcc.h misc.c/ misc.h stm32f10x_usart /stm32f10x_usart.h 其中stm32f10x_rcc.h 头文件在每个实验中都要引入,因为系统时钟配置函数以及 相关的外设时钟使能函数都在这个其源文件stm32f10x_rcc.c 中。 stm32f10x_usart.h 和misc.h 头文件在我们SYSTEM 文件夹中都需要使用到,所 以每个实验都会引用。 首先,找到之前新建的Template 工程,在该文件夹下面新建一个HARDWARE 的文件夹,用来存储以后与硬件相关的代码,然后在HARDWARE 文件夹下新 建一个LED 文件夹,用来存放与LED 相关的代码。新建led.h和led.c文件, 一个外设对应一个.h和.c文件。 在Manage Components 管理里面新建一个 HARDWARE 的组,并把led.c 加入到这个组里面, 将led.h 头文件的路径加入到工程里面 一般的头文件有固定的格式,多个地方调用头文件会重复引用,为了避免头文件内 容重复引用,一般通过预编译的方式来写头文件。一般的格式如下:

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

单片机实验报告 姓名: 学号: 一、 实验实现功能: 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]; //千位

单片机跑马灯

中国地质大学江城学院 《单片机原理及应用》 课程设计 学部 班级 学号 姓名 指导教师 年月日

目录 第1章系统开发的基本原理 (3) 1.1 复位电路及时钟电路 (3) 1.2 跑马灯的基本原理 (4) 1.3 数码管的基本原理 (5) 1.4 键盘的基本原理 (5) 第2章系统硬件设计 (6) 2.1 MCS-51单片机介绍 (6) 2.2 74HC573锁存器介绍 (7) 2.3 74HC02或非门介绍 (7) 2.4 4511译码器介绍 (8) 2.5 数码管介绍 (9) 2.6 系统硬件电路设计 (10) 第3章系统软件设计 (12) 3.1 软件设计架构 (12) 3.2 主程序模块 (13) 3.3 跑马灯程序模块 (18) 3.4 键盘程序模块 (18) 3.5 数码管程序模块 (19) 第4章系统测试 (19) 4.1 测试方法 (19) 4.2 测试考虑的因素 (20) 4.3 测试结论 (20) 第5章课程设计小结 (20)

摘要:单片机最小系统,无论对单片机初学人员还是开发人员都具有十分重要的意义,可以利用最小系统进行编程实现工业控制。单片机最小系统电路板在单片机开发市场和大学生电子设计方面十分流行。本次课程设计包括AT89S52单片机最小系统(包括复位和时钟电路)及供电系统、4×4矩阵键盘、独立4个8段LED数码管显示电路。利用Protel电路设计软件进行原理图设计,PCB布线,借此巩固单片机应用、模拟电路、数字电路课程及学会工程软件protel的使用。 第1章系统开发的基本原理 对51 系列单片机来说,最小系统一般应该包括:单片机、时钟电路、复位电路、输入/ 输出设备等。本次课程设计的系统还包括流水灯、4*4矩阵键盘和二位数码管显示。 1.1 复位电路及时钟电路 复位电路和时钟电路是维持单片机最小系统运行的基本模块。复位电路通常分为两种:上电复位和手动复位。[2] 上电复位手动复位 有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。所以本次设计选用手动复位。 高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能。但是告诉对系统要求较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000M无源晶振接入XTAL1和XTAL2引脚。并联2个30pF陶瓷电容帮助起振。

STM32跑马灯实验

3.1 跑马灯实验 通过本节的学习,你将了解到STM32的IO口作为输出使用的方法。本节分为如下几个小节: STM32 IO口简介 3.1.1 硬件设计 3.1.2 软件设计 3.1.3 仿真与下载 3.1.4

3.1.1 STM32 IO简介 作为所有开发板的经典入门实验,莫过于跑马灯了。ALIENTEK MiniSTM32开发板板载了2个LED,DS0和DS1,本实验将通过教你如何控制这两个灯实现交替闪烁的类跑马灯效果。 该实验的关键在于如何控制STM32的IO口输出。了解了STM32的IO口如何输出的,就可以实现跑马灯了。通过这一节的学习,你将初步掌握STM32基本IO口的使用,而这是迈向STM32的第一步。 STM32的IO口可以由软件配置成8种模式: 1、输入浮空 2、输入上拉 3、输入下拉 4、模拟输入 5、开漏输出 6、推挽输出 7、推挽式复用功能 8、开漏复用功能 每个IO口可以自由编程,单IO口寄存器必须要按32位字被访问。STM32的很多IO口都是5V兼容的,这些IO口在与5V电平的外设连接的时候很有优势,具体哪些IO口是5V兼容的,可以从该芯片的数据手册管脚描述章节查到(I/O Level标FT的就是5V电平兼容的)。 STM32的每个IO端口都有7个寄存器来控制。他们分别是:配置模式的2个32位的端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR;1个32位的置位/复位寄存器BSRR;一个16位的复位寄存器BRR;1个32位的所存寄存器LCKR;这里我们仅介绍常用的几个寄存器,我们常用的IO端口寄存器只有4个:CRL、CRH、IDR、ODR。 CRL和CRH控制着每个IO口的模式及输出速率。 STM32的IO口位配置表如表3.1.1.1所示: 表3.1.1.1 STM32的IO口位配置表 STM32输出模式配置如表3.1.1.2所示:

网页制作中跑马灯的实现

实现跑马灯的方法很多,其中最简单的是采用一句Html代码来实现,我们在需要出现跑马灯效果的地方插入“滚动的文字”语句我们看一下下面的几个例子:1、左右弹来弹去的跑马灯代码: 弹来弹去跑马灯 设置behavior=alternate表示双向移动,direction=left表示运动方向向左。marquee的宽度可以使用绝对象素值,例如width=200等这个值限定了跑马灯滚动的范围。需要说明的是该效果在Netscape下是看不到的。 2、跑的很快的跑马灯只要在标签内加上“scrollamount=30”参数即可。 3、带有超级链接的跑马灯代码: 带有超链接的跑马灯!点我试试? 还有一条呢!点我试试? 参数用法介绍behavior=scroll, slide, alternate跑马方式:循环绕行,只跑一次就停住,来回往复运动direction=left,right跑马方向:从左向右,从右向左loop=100跑马次数:循环100次,如不写默认为一直循环width=100%,height=200跑马范围:宽为100%,高为200像素scrollamount=20跑马速度:数越大越快scrolldelay=500跑马延时:毫秒数,利用它可实现跃进式滚动hspace=20,vspace=20跑马区域与其它区域间的空白大小bgcolor=#00FFCC跑马区域的背景颜色 尽管参数不少,但毕竟不能实现复杂的和自定义的特殊跑马灯效果,而且还有浏览器限制,所以我们更多情况下会采用JavaScript来实现跑马灯。

基于单片机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单

制作幻灯片图片实现走马灯似移动

制作幻灯片图片实现走马灯似移动——移出移入法 我以习作【走马灯似移动——越南少女】为例,向大家介绍幻灯片图片如何实现走马灯似移动(移出移入法)的制作过程及方法: 一、背景文字 按照常规,给幻灯片设置全黑的背景,对幻灯片上边添加文字【走马灯似移动(移出移入法)—越南少女图片】,对下边添加文字【制作:韦彦复2011年4月6日于上海】。 二、添加图片 将越南少女图片分成二张图片一组合,共五个组合。将第一组合置于幻灯片窗口上,其余四个组合并排排列置于幻灯片窗口的一边。为使图片排列整齐,可采用绘画参考线。 【组合方法】 将两张越南少女图片分别置于幻灯片中轴线的两边适当位置,选中该两张图片→右击鼠标→下拉菜单→【组合】→【组合】。 【参考线设置方法】 点击【视图】菜单→【网格和参考线…】→【网格和参考线】对话框→【对齐】→勾选【对象与网络对齐】→【参考线设置】→勾选【屏幕上显示绘图参考线】→【确定】。 三、动画设置

(1)移出设置 先选中第一组合图片→右击鼠标→下拉菜单→【自定义动画…】→【自定义动画】对话框,然后→【添加效果】→【退出】→【缓慢移出】,接着从第一组合开始,分别对五个组合图片一一按序设置: 【一组合】→【开始:之前】→【方向:到左侧】→【速度:10秒】; 【二组合】→【开始:之前】→【方向:到左侧】→【速度:20秒】; 【三组合】→【开始:之前】→【方向:到左侧】→【速度:30秒】; 【四组合】→【开始:之前】→【方向:到左侧】→【速度:40秒】; 【五组合】→【开始:之前】→【方向:到左侧】→【速度:50秒】。 (2)移入设置 再回过头对第一组合进行移入设置: 先选中第一组合图片→右击鼠标→下拉菜单→【自定义动画…】→【自定义动画】对话框,然后→【添加效果】→【进入】→【缓慢进入】→【开始:之前】→【方向:自右侧】→【速度:10秒】→【计时】→【延迟:40秒】→【确定】。 【注】延迟的时间确定:应选取与前面移出设置五个组合中倒数第二个组合的速度时间相同。 四、添加音乐等设置 【添加音乐】→按常规设置。

LED跑马灯实验-库函数

LED跑马灯实验

修改记录 审核记录

LED跑马灯 1.1 实验介绍 GPIO即通用可编程输入输出口,在此我们通过GPIO编程实现一个跑马灯的实验。该跑马灯实验是最简单,也是一般最先开始的一个实验,它可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上,从而节省了在搭建过程中所消耗的时间和精力。所有的 GPIO 操作都是以跑马灯为基础进行的。 1.2 实验目标 1. 理解固件库的结构 2. 分析和学习固件库 3. 灵活运用 GPIO 1.3 实验时间 60分钟 1.4 预备知识 熟悉C语言知识,熟练MDK的使用 1.5 实验步骤 1.解压stm32f10x_stdperiph_lib.zip可以从ST官方网站免费下载。本教程使用的标准库版本为 3.1.2 2.创建一个GPIO文件夹

2.1 新建子文件夹User,用于存放用户源程序 2.2 新建子文件夹Project,用户KEIL工程文件 2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。 3. 复制源代码到GPIO文件夹 3.1 将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.1.2\Libraries文件夹和Utilities文件夹整体复制到GPIO文件夹下。这就是ST的标准库,是以源代码形式提供的。 3.2 将库中的演示代码\GPIO\labsolutions\4GPIO_fuction\User中的文件复制到GPIO\User 文件夹. 4. 新建Keil MDK工程

相关文档 最新文档