|

07:P2和P1口控制4位共阳极LED数码管动态(快速)显示字符“8.1:2 3”
;AS-02 MCU StudyBoard跳线设置:JP3、JP6跳左边(LED数码管供电工作,LED不供电),
; JP1和JP2空,其他JP跳线缺省跳右边
;MCU的P2.0—P2.7分别接4位共阳极LED数码管的八个字段a—h
;P1.1、P1.2、P1.3、P1.4控制4位共阳极LED数码管千位、百位、十位和个位数码管的供电,低电平时供电
;0,1,2...E,F共阳显示字段码是C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
;MCS-51汇编语言程序,文件名:digisplay3.asm
;Protues7.2软件虚拟仿真和AS-02 MCU StudyBoard硬件实验调试通过,电子科技大学成都学院周密,20071015
;-----------------------------------------------------------------------------------------------
MAIN:
MOV P1,#0FFH ;P1口为高电平,4位共阳极LED数码管不供电,关闭4位数码管显示。
START:
CLR P1.1 ;P1.1口为低电平,千位共阳极LED数码管供电显示,百位、十位和个位数码管不供电关闭显示。
MOV P2,#00H ;向P2口送8.字段码,显示8.
LCALL DELAY ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
SETB P1.1 ;P1.1口为高电平,关闭千位共阳极LED数码管供电。
CLR P1.2 ;P1.2口为低电平,百位共阳极LED数码管供电显示,千位、十位和个位数码管不供电关闭显示。
MOV P2,#0F9H ;向P2口送1字段码,显示1
LCALL DELAY ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
SETB P1.2 ;P1.2口为高电平,关闭百位共阳极LED数码管供电。
CLR P1.3 ;P1.3口为低电平,十位共阳极LED数码管供电显示,千位、百位和个位数码管不供电关闭显示。
MOV P2,#0A4H ;向P2口送2字段码,显示2
LCALL DELAY ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
SETB P1.3 ;P1.3口为高电平,关闭十位共阳极LED数码管供电。
CLR P1.4 ;P1.4口为低电平,个位共阳极LED数码管供电显示,千位、百位和十位数码管不供电关闭显示。
MOV P2,#0B0H ;向P2口送3字段码,显示3
LCALL DELAY ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
SETB P1.4 ;P1.4口为高电平,关闭个位共阳极LED数码管供电。
MOV P1,#0F2H ;显示冒号:11110010B
MOV P2,#0FFH ; 11111111B
LCALL DELAY ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
MOV P1,#0FFH
LCALL DELAY ;调用延时子程序,延时2ms。LCALL(Long Call)长调用指令(见P116)
LJMP START
DELAY: MOV R5,#04H ;延时子程序
DELAY1: MOV R6,#0F0H ;实际延时2.10177ms,估算是(4X240)X(2X1.085)us= 2.0832 (ms)
DELAY2: DJNZ R6,DELAY2
DJNZ R5,DELAY1
RET
END
/*-----------------------------------------------------------------------------------------------
实验07:P2和P1口控制1位共阳极LED数码管动态(快速)显示字符“0 1 2 3”
AS-02 MCU StudyBoard跳线设置:JP3、JP6跳左边(LED数码管供电工作,LED不供电),
JP1和JP2空,其他JP跳线缺省跳右边
MCU的P2.0—P2.7分别接4位共阳极LED数码管的八个字段a—h
P1.1、P1.2、P1.3、P1.4控制4位共阳极LED数码管千位、百位、十位和个位数码管的供电,低电平时供电
0,1,2...E,F共阳显示字段码分别是0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,
0x83,0xC6,0xA1,0x86,0x8E
Cx51语言程序,文件名:digisplay3.c
Protues7.1软件虚拟仿真和AS-02 MCU StudyBoard硬件实验调试通过,电子科技大学成都学院周密,20070924
-----------------------------------------------------------------------------------------------*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit P11=P1^1; //KEIL Cx51提供的关键字“sbit”定义某些特殊位,格式:sbit 位变量名=位地址
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
void delay(uint x) //延时函数。x=1时延时是1ms
{
uchar j=0; //根据汇编代码分析表明,用j进行的内部循环大约延时8us(12MHz)
while(x--)
{
for(j=0;j<113;j++) //125应根据实验进行补偿调整为113(11.0592MHz)
{;}
}
}
void main() //主函数
{
P11=0; //千位显示。P1.1控制4位共阳极LED数码管千位数码管的供电,低电平时供电
P2=0xC0; //显示0。 0的共阳显示字段码是0xC0
delay(10);//调延时函数,延时10ms
P11=1; //关闭千位显示。P1.1控制4位共阳极LED数码管千位数码管的供电,高电平时不供电
P12=0; //百位显示。P1.2控制4位共阳极LED数码管百位数码管的供电,低电平时供电
P2=0xF9; //显示1。 1的共阳显示字段码是0xF9
delay(10);//调延时函数,延时10ms
P12=1; //关闭百位显示。P1.2控制4位共阳极LED数码管百位数码管的供电,高电平时不供电
P13=0; //十位显示。P1.3控制4位共阳极LED数码管十位数码管的供电,低电平时供电
P2=0xA4; //显示2
delay(10);
P13=1;
P14=0; //千位显示。P1.4控制4位共阳极LED数码管个位数码管的供电,低电平时供电
P2=0xB0; //显示3
delay(10);
P14=1;
}
|
|