|

07:P2和P1口控制4位共陽(yáng)極LED數(shù)碼管動(dòng)態(tài)(快速)顯示字符“8.1:2 3”
;AS-02 MCU StudyBoard跳線(xiàn)設(shè)置:JP3、JP6跳左邊(LED數(shù)碼管供電工作,LED不供電),
; JP1和JP2空,其他JP跳線(xiàn)缺省跳右邊
;MCU的P2.0—P2.7分別接4位共陽(yáng)極LED數(shù)碼管的八個(gè)字段a—h
;P1.1、P1.2、P1.3、P1.4控制4位共陽(yáng)極LED數(shù)碼管千位、百位、十位和個(gè)位數(shù)碼管的供電,低電平時(shí)供電
;0,1,2...E,F共陽(yáng)顯示字段碼是C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
;MCS-51匯編語(yǔ)言程序,文件名:digisplay3.asm
;Protues7.2軟件虛擬仿真和AS-02 MCU StudyBoard硬件實(shí)驗(yàn)調(diào)試通過(guò),電子科技大學(xué)成都學(xué)院周密,20071015
;-----------------------------------------------------------------------------------------------
MAIN:
MOV P1,#0FFH ;P1口為高電平,4位共陽(yáng)極LED數(shù)碼管不供電,關(guān)閉4位數(shù)碼管顯示。
START:
CLR P1.1 ;P1.1口為低電平,千位共陽(yáng)極LED數(shù)碼管供電顯示,百位、十位和個(gè)位數(shù)碼管不供電關(guān)閉顯示。
MOV P2,#00H ;向P2口送8.字段碼,顯示8.
LCALL DELAY ;調(diào)用延時(shí)子程序,延時(shí)2ms。LCALL(Long Call)長(zhǎng)調(diào)用指令(見(jiàn)P116)
SETB P1.1 ;P1.1口為高電平,關(guān)閉千位共陽(yáng)極LED數(shù)碼管供電。
CLR P1.2 ;P1.2口為低電平,百位共陽(yáng)極LED數(shù)碼管供電顯示,千位、十位和個(gè)位數(shù)碼管不供電關(guān)閉顯示。
MOV P2,#0F9H ;向P2口送1字段碼,顯示1
LCALL DELAY ;調(diào)用延時(shí)子程序,延時(shí)2ms。LCALL(Long Call)長(zhǎng)調(diào)用指令(見(jiàn)P116)
SETB P1.2 ;P1.2口為高電平,關(guān)閉百位共陽(yáng)極LED數(shù)碼管供電。
CLR P1.3 ;P1.3口為低電平,十位共陽(yáng)極LED數(shù)碼管供電顯示,千位、百位和個(gè)位數(shù)碼管不供電關(guān)閉顯示。
MOV P2,#0A4H ;向P2口送2字段碼,顯示2
LCALL DELAY ;調(diào)用延時(shí)子程序,延時(shí)2ms。LCALL(Long Call)長(zhǎng)調(diào)用指令(見(jiàn)P116)
SETB P1.3 ;P1.3口為高電平,關(guān)閉十位共陽(yáng)極LED數(shù)碼管供電。
CLR P1.4 ;P1.4口為低電平,個(gè)位共陽(yáng)極LED數(shù)碼管供電顯示,千位、百位和十位數(shù)碼管不供電關(guān)閉顯示。
MOV P2,#0B0H ;向P2口送3字段碼,顯示3
LCALL DELAY ;調(diào)用延時(shí)子程序,延時(shí)2ms。LCALL(Long Call)長(zhǎng)調(diào)用指令(見(jiàn)P116)
SETB P1.4 ;P1.4口為高電平,關(guān)閉個(gè)位共陽(yáng)極LED數(shù)碼管供電。
MOV P1,#0F2H ;顯示冒號(hào):11110010B
MOV P2,#0FFH ; 11111111B
LCALL DELAY ;調(diào)用延時(shí)子程序,延時(shí)2ms。LCALL(Long Call)長(zhǎng)調(diào)用指令(見(jiàn)P116)
MOV P1,#0FFH
LCALL DELAY ;調(diào)用延時(shí)子程序,延時(shí)2ms。LCALL(Long Call)長(zhǎng)調(diào)用指令(見(jiàn)P116)
LJMP START
DELAY: MOV R5,#04H ;延時(shí)子程序
DELAY1: MOV R6,#0F0H ;實(shí)際延時(shí)2.10177ms,估算是(4X240)X(2X1.085)us= 2.0832 (ms)
DELAY2: DJNZ R6,DELAY2
DJNZ R5,DELAY1
RET
END
/*-----------------------------------------------------------------------------------------------
實(shí)驗(yàn)07:P2和P1口控制1位共陽(yáng)極LED數(shù)碼管動(dòng)態(tài)(快速)顯示字符“0 1 2 3”
AS-02 MCU StudyBoard跳線(xiàn)設(shè)置:JP3、JP6跳左邊(LED數(shù)碼管供電工作,LED不供電),
JP1和JP2空,其他JP跳線(xiàn)缺省跳右邊
MCU的P2.0—P2.7分別接4位共陽(yáng)極LED數(shù)碼管的八個(gè)字段a—h
P1.1、P1.2、P1.3、P1.4控制4位共陽(yáng)極LED數(shù)碼管千位、百位、十位和個(gè)位數(shù)碼管的供電,低電平時(shí)供電
0,1,2...E,F共陽(yáng)顯示字段碼分別是0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,
0x83,0xC6,0xA1,0x86,0x8E
Cx51語(yǔ)言程序,文件名:digisplay3.c
Protues7.1軟件虛擬仿真和AS-02 MCU StudyBoard硬件實(shí)驗(yàn)調(diào)試通過(guò),電子科技大學(xué)成都學(xué)院周密,20070924
-----------------------------------------------------------------------------------------------*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit P11=P1^1; //KEIL Cx51提供的關(guān)鍵字“sbit”定義某些特殊位,格式:sbit 位變量名=位地址
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
void delay(uint x) //延時(shí)函數(shù)。x=1時(shí)延時(shí)是1ms
{
uchar j=0; //根據(jù)匯編代碼分析表明,用j進(jìn)行的內(nèi)部循環(huán)大約延時(shí)8us(12MHz)
while(x--)
{
for(j=0;j<113;j++) //125應(yīng)根據(jù)實(shí)驗(yàn)進(jìn)行補(bǔ)償調(diào)整為113(11.0592MHz)
{;}
}
}
void main() //主函數(shù)
{
P11=0; //千位顯示。P1.1控制4位共陽(yáng)極LED數(shù)碼管千位數(shù)碼管的供電,低電平時(shí)供電
P2=0xC0; //顯示0。 0的共陽(yáng)顯示字段碼是0xC0
delay(10);//調(diào)延時(shí)函數(shù),延時(shí)10ms
P11=1; //關(guān)閉千位顯示。P1.1控制4位共陽(yáng)極LED數(shù)碼管千位數(shù)碼管的供電,高電平時(shí)不供電
P12=0; //百位顯示。P1.2控制4位共陽(yáng)極LED數(shù)碼管百位數(shù)碼管的供電,低電平時(shí)供電
P2=0xF9; //顯示1。 1的共陽(yáng)顯示字段碼是0xF9
delay(10);//調(diào)延時(shí)函數(shù),延時(shí)10ms
P12=1; //關(guān)閉百位顯示。P1.2控制4位共陽(yáng)極LED數(shù)碼管百位數(shù)碼管的供電,高電平時(shí)不供電
P13=0; //十位顯示。P1.3控制4位共陽(yáng)極LED數(shù)碼管十位數(shù)碼管的供電,低電平時(shí)供電
P2=0xA4; //顯示2
delay(10);
P13=1;
P14=0; //千位顯示。P1.4控制4位共陽(yáng)極LED數(shù)碼管個(gè)位數(shù)碼管的供電,低電平時(shí)供電
P2=0xB0; //顯示3
delay(10);
P14=1;
}
|
|