电路仿真图
#include <AT89X51.H>typedef unsigned int u16; typedef unsigned char u8;#define SMG P0#define WE P2u8 code smgduan[]={0x3f,0x5b,0x6d,0x3f,0x6d,0x5b,0x3f,0x6d,0x3f,0x6d0x3f,0x5b,0x6d,0x3f,0x6d,0x5b,0x3f,0x6d,0x3f,0x6d}; //数字可更改 void delay(u8 us)//延时函数us=1,10us{while(us--);}void display(){u16 i,j,k;for(k=1;k<11;k++) //10个字符{for(j=0;j<300;j++)//反比于字符显示变化速度 {for(i=1;i<9;i++)//8位{switch(i) //位选,选择点亮的数码管,{case(1):WE=0xFE; break;//显示第7位(左边第一位)case(2):WE=0xFD; break;//显示第6位case(3):WE=0xFB; break;//显示第5位case(4):WE=0xF7; break;//显示第4位case(5):WE=0xEF; break;//显示第3位case(6):WE=0xDF; break;//显示第2位case(7):WE=0xBF; break;//显示第1位case(8):WE=0x7F; break;//显示第0位default:break;}SMG=smgduan[k+i-2]; //发送段码delay(300); SMG=0x00; //消影}}}}void main(){while(1){display();}}