不清楚你的電路構成如何,因此先按下面的假設執行段碼及位碼的輸出;
其中,延時值可根據實驗效果予以調整;
設 P0 為輸出七段碼(共陽極數據);
四位數碼管有4個陽極,設位碼分別與P2.4--P2.7對應,並且=1時表示可點亮數碼管;
sbit wma1=b2^4; //對應左起第1個數碼管的陽極
sbit wma2=b2^5; //對應左起第2個數碼管的陽極
sbit wma3=b2^6;
sbit wma4=b2^7;
void main()
{
wma1=0; wma2=0; wma3=0; wma4=0;
while(1)
{
P0=table[0]; wma1=1; delay(10); wma1=0;
P0=table[1]; wma1=2; delay(10); wma2=0; P0=table[2]; wma1=3; delay(10); wma3=0; P0=table[3]; wma1=4; delay(10); wma4=0; P0=table[4]; wma1=1; delay(10); wma1=0; P0=table[5]; wma1=2; delay(10); wma2=0; P0=table[6]; wma1=3; delay(10); wma3=0; P0=table[7]; wma1=4; delay(10); wma4=0;
}
}
⑵ 編程實現51單片機,P2口連接一個共陽極數碼管,每到1s更新顯示0~9s,要求採用定時器1定時
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TABLE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};//七段碼表
主程序中:
TMOD=0X10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET1=1;//開定時器1中斷
EA=1;//開總中斷
TR1=1;//啟動定時器1
//中斷子程序
void Timer1(void) interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
a++;
if(a==20) {a=0;sec++;}//20次是1秒
if(sec==10) {sec=0;}
P0=TABLE[sec];
}