51单片机控制4个数码管显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
//使用AT89c51单片机控制四个数码管动态显示0-9999 ,12MHz
#include
void jiayi();//加1函数
void chufa();//除法函数
void xianshi();//显示函数
void delay();//延时函数
sbit P2_0=P2^0;//个位位码
sbit P2_1=P2^1;//十位位码
sbit P2_2=P2^2;//百位位码
sbit P2_3=P2^3;//千位位码
unsigned char qianwei,baiwei,shiwei,gewei;
unsigned int count=0;
unsigned char code dis[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极0-9
void main()
{
while(1)
{
jiayi();
chufa();
xianshi();
}
}
void chufa()//将数字的各个位拆开
{
qianwei=count/1000;//千位数
baiwei=count%1000/100; //百位数
shiwei=count%100/10; //十位数
gewei=count%10; //个位数
}
void jiayi()
{
count=count+1;
if(count==10000)
count=0;
}
void delay()//延时
{
unsigned int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<200;j++);
}
}
void xianshi()//显示当前数值{
P2_0=1; //显示个位
P1=dis[gewei];
delay();
P2_0=0;
P2_1=1;//显示十位
P1=dis[shiwei];
delay();
P2_1=0;
P2_2=1; //显示百位
P1=dis[baiwei];
delay();
P2_2=0;
P2_3=1; //显示千位
P1=dis[qianwei];
delay();
P2_3=0;
}