给你最简单的,看得清楚易懂的,P1口接8位LED,有多种闪烁方式。P2(扫描端在P2口,P3为位选端,注意看代码)口接上两位数码管的话还可以显示00-99的数字:
ZHUCX: MOV A,#11111110B
MOV P1,A
ACALL YANSHI
MOV A,#11111100B
MOV P1,A
ACALL YANSHI
MOV A,#11111000B
MOV P1,A
ACALL YANSHI
MOV A,#11110000B
MOV P1,A
ACALL YANSHI
MOV A,#11100000B
MOV P1,A
ACALL YANSHI
MOV A,#11000000B
MOV P1,A
ACALL YANSHI
MOV A,#10000000B
MOV P1,A
ACALL YANSHI
MOV A,#00000000B
MOV P1,A
ACALL YANSHI
MOV A,#10000000B
MOV P1,A
ACALL YANSHI
MOV A,#11000000B
MOV P1,A
ACALL YANSHI
MOV A,#11100000B
MOV P1,A
ACALL YANSHI
MOV A,#11110000B
MOV P1,A
ACALL YANSHI
MOV A,#11111000B
MOV P1,A
ACALL YANSHI
MOV A,#11111100B
MOV P1,A
ACALL YANSHI
MOV A,#11111110B
MOV P1,A
ACALL YANSHI
MOV A,#11111111B
MOV P1,A
ACALL YANSHI
MOV R4,#5
D5 : MOV A,#01111110B
MOV P1,A
ACALL YANSHI
MOV A,#10111101B
MOV P1,A
ACALL YANSHI
MOV A,#11011011B
MOV P1,A
ACALL YANSHI
MOV A,#11100111B
MOV P1,A
ACALL YANSHI
MOV A,#11011011B
MOV P1,A
ACALL YANSHI
MOV A,#10111101B
MOV P1,A
ACALL YANSHI
MOV A,#01111110B
MOV P1,A
ACALL YANSHI
DJNZ R4,D5
ACALL YANSHI
MOV R0,#3
LOOP: MOV A,#01010101B
MOV P1,A
ACALL YANSHI
MOV A,#10101010B
MOV P1,A
ACALL YANSHI
DJNZ R0,LOOP
MOV A,#11111110B
MOV P1,A
ACALL YANSHI
MOV A,#11111101B
MOV P1,A
ACALL YANSHI
MOV A,#11111011B
MOV P1,A
ACALL YANSHI
MOV A,#11110111B
MOV P1,A
ACALL YANSHI
MOV A,#11101111B
MOV P1,A
ACALL YANSHI
MOV A,#11011111B
MOV P1,A
ACALL YANSHI
MOV A,#10111111B
MOV P1,A
ACALL YANSHI
MOV A,#01111111B
MOV P1,A
ACALL YANSHI
MOV A,#10111111B
MOV P1,A
ACALL YANSHI
MOV A,#11011111B
MOV P1,A
ACALL YANSHI
MOV A,#11101111B
MOV P1,A
ACALL YANSHI
MOV A,#11110111B
MOV P1,A
ACALL YANSHI
MOV A,#11111011B
MOV P1,A
ACALL YANSHI
MOV A,#11111101B
MOV P1,A
ACALL YANSHI
MOV A,#11111110B
MOV P1,A
ACALL YANSHI
START:MOV R0,#0
MOV DPTR,#TABLE
LOOP1:ACALL DISPLAY
INC R0
CJNE R0,#100,LOOP1
JMP ZHUCX
DISPLAY:MOV A,R0
MOV B,#10
DIV AB
MOV R1,A
MOV R2,B
MOV R3,#50
LOOP2:MOV A,R2
ACALL CHANG
CLR P36
ACALL DLY10MS
SETB P36
SETB P35
MOV A,R1
ACALL CHANG
CLR P37
ACALL DLY10MS
SETB P37
SETB P34
DJNZ R3,LOOP2
RET
CHANG:MOVC A,@A+DPTR
MOV P2,A
RET
DLY10MS:MOV R6,#10
D1: MOV R7,#200
DJNZ R7,$
DJNZ R6,D1
RET
YANSHI :MOV R5,#30
D3:MOV R6,#50
D4:MOV R7,#50
DJNZ R7,$
DJNZ R6,D4
DJNZ R5,D3
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
END
#include <reg51h>
#define uchar unsigend uchar
#define uint unsigned int
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};//数码管段码
void main()
{
uint k;
TMOD=0X50;//设置模式为1,计数模式
TH1=0X00;
TL1=0X00;//初始值设定
IE=0X00;//关全局中断
TR1=1;//开定时计数器1运行
while(1)
{
if(TL1==16)//进行判断,为16时,计数值归零
TL1=0X00;
k=TL1;
P0=LED7Code[k];//数码管进行显示
}
}
此程序目的见>
#include<reg51h>
#define uint unsigned int
uint width;
sbit pulse=P3^2;
main()
{
TMOD=0x09; //定时器0模式1,GATE=1
TH0=0;
TL0=0;
while(pulse); //等待P32变低
TR0=1; //启动定时器0
while(!pulse); //等待脉冲变高
while(pulse); //等待脉冲变低
TR0=0; //关闭定时器0
pulse=TH0256+TL0; //取定时值。
while(1);
}
#include<reg51h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,dat=0,dat1=16,cnt=0;
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
if(number>1)number=0;
switch(number)
{
case 0:P2=0xfd;P0=distab[dat];
break;
case 1:P2=0xfe;P0=distab[dat1];
break;
default:break;
}
cnt++;
if(cnt>=200)
{
cnt=0;
dat++;dat1=dat-1;if(dat==0)dat1=16;
dat%=16;
}
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
Keil写汇编程序与写c程序差不多,写一个汇编程序步骤如下。一,运行keil,建一个工程。二,新建一个文件,另存为后缀为asm的汇编文件。三,将这个文件载入刚建的工程。四,现在可以录入代码了。五,录入完成后编译调试直到没有错误和警告,生成HEX文件。六,将HEX文件下载到单片机,运行看效果。七,修改软件直到达到预期效果。
以上就是关于如何编写一段程序,单片机是51系列的,要求编写8个LED灯有三种以上的闪烁方式,灯闪烁时间0.5S全部的内容,包括:如何编写一段程序,单片机是51系列的,要求编写8个LED灯有三种以上的闪烁方式,灯闪烁时间0.5S、用C语言如何开51单片机的计数器,最好编个实例程序、怎么用C语言编写51单片机测脉宽的程序~ 跪求完整程序!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)