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灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)