不清楚你的电路构成如何,因此先按下面的假设执行段码及位码的输出;
其中,延时值可根据实验效果予以调整;
设 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];
}