单片机控制8个LED左右循环来回点亮,产生来回走马灯效果,要列出主要元器件还有仿真图。源程序及流程图

单片机控制8个LED左右循环来回点亮,产生来回走马灯效果,要列出主要元器件还有仿真图。源程序及流程图,第1张

22千欧电阻,47微法电容,高频NPN与PNP三极管,047微法电容,22千欧电阻,至于电路我忘记了,你的这个我08年做过一次,成功了,现在只记住的需要的原件,电路图忘记了 ,我的是4个LED闪起来像警车那样的

DAT EQU 30H

SCANLED EQU 34H

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0ISR

ORG 0030H

MAIN:

MOV SP,#5FH

MOV TMOD,#01H

MOV TH0,#HIGH(65536-5000)

MOV TL0,#LOW(65536-5000)

MOV SCANLED,#0

MOV 30H,#1

MOV 31H,#2

MOV 32H,#3

MOV 33H,#4

MOV R2,#0

CLR 00H

SETB EA

SETB ET0

SETB TR0

SJMP $

;--------------------

T0ISR:

CLR TR0

MOV TH0,#HIGH(65536-5000)

MOV TL0,#LOW(65536-5000)

SETB TR0

INC R2

CJNE R2,#200,T0CON

MOV R2,#0

CPL 00H

JB 00H,T0RD

MOV 30H,#1

MOV 31H,#2

MOV 32H,#3

MOV 33H,#4

SJMP T0CON

T0RD:

MOV 30H,#5

MOV 31H,#6

MOV 32H,#7

MOV 33H,#8

T0CON:

MOV DPTR,#LEDTAB

T000: ;数字显示

MOV R0,#DAT

MOV A,SCANLED

ADD A,R0

MOV R0,A

MOV A,SCANLED

JNZ T001

MOV P2,#01H

SJMP T0DIS

T001:

DEC A

JNZ T002

MOV P2,#02H

SJMP T0DIS

T002:

DEC A

JNZ T003

MOV P2,#04H

SJMP T0DIS

T003:

MOV P2,#08H

T0DIS:

MOV A,@R0

MOVC A,@A+DPTR

; CPL A

MOV P0,A

INC SCANLED

MOV A,SCANLED

ANL A,#03H

MOV SCANLED,A

RETI

;--------------------

LEDTAB:

DB 0C0H ;"0" 00H

DB 0F9H ;"1" 01H

DB 0A4H ;"2" 02H

DB 0B0H ;"3" 03H

DB 99H ;"4" 04H

DB 92H ;"5" 05H

DB 82H ;"6" 06H

DB 0F8H ;"7" 07H

DB 80H ;"8" 08H

DB 90H ;"9" 09H

;--------------------

END

1、打开keil软件,在工具栏点击Project选项选择new uVision Project创建新的工程并保存,步骤如下图所示:

2、创建新的文件,按快捷键“ctrl+s”命名为ledc并保存,步骤如下:

3、将创建的51c文件添加到51项目中,鼠标右键点击"souce group"

选择添加已经存在的文件,具体步骤如下图所示:

4、编写程序

5、按照下图次序,依次点击工具栏中的"Option for target"选择框中的"output ",勾选“Create Hex file ”,确保自己编写的源程序转换为hex文件,为后续 *** 作使用

1、打开protues新建工程,并保存

2、按下图所示点击工具栏ISIS按钮,点击按钮P,添加仿真所需要的元件:

4、绘制连线图

/对于个单片机的初学者,我希望用最直观的方式来达到你要的要求,程序每一句我已经写好备注,希望对你有帮助/

#include<reg51h> //使用51功能头文件

sbit L1=P0^0; //L1对应P00,表示第一盏灯

sbit L2=P0^1; //L1对应P01,表示第二盏灯

sbit L3=P0^2; //L1对应P02,表示第三盏灯

sbit L4=P0^3; //L1对应P03,表示第四盏灯

void delay(unsigned int i) //延迟子程序,注意这里的unsigned int i,这里相当于限定了调用时候变量的类型

{

unsigned char j; //局部变量定义

while(i--) //循环i次,主程序main调用时候,i为100,这数值你可随便该,但小于65355

for(j = 200; j > 0; j--) ; //这步的意思是空 *** 作200次,也就是暂用CPU200次的工作时间

}

void main(void) //主函数,这里的viod是无类型,意思是没有给这函数指定数据类型

{

P0=0x00; //将P0口初始化位高电平,如果没有这句,初始化为低电平,这里可根据需要选择

L1=1; //第一盏灯亮

delay(100); //调用延时子程序

L2=1; //第二盏灯亮

delay(100); //调用延时子程序

L3=1; //第三盏灯亮

delay(100); //调用延时子程序

L4=1; //第四盏灯亮

delay(100); //调用延时子程序

while(1); //这里我用了个死循环,目的程序只运行一次,如果需要自动重新运行,可以把这句删掉

}

纯手工书写,并仿真调试过,记得加分哟~

以上就是关于单片机控制8个LED左右循环来回点亮,产生来回走马灯效果,要列出主要元器件还有仿真图。源程序及流程图全部的内容,包括:单片机控制8个LED左右循环来回点亮,产生来回走马灯效果,要列出主要元器件还有仿真图。源程序及流程图、用汇编语言设计4位LED动态显示,要求4位LED每隔1S交替显示1234和5678,画出电路图并编写源程序,感谢!、keil+proteus仿真实验,点亮第一个led灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9678025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存