求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99

如题所述

两位数码管显示00~99,无需采用数码管扫描,通常采用静态显示。

给你提供一个两位数码管00~99循环加法计数的CC语言程序。

程序中,采用了软件延时的方法,每半秒自动加1。

#include<reg52.h>

unsigned char count=0;

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段码

void delay500ms(); //延时子程序声明

void display(unsigned char X); //显示子程序声明

void main()

{

while(1)

{

delay500ms();

count++;

if(count>=100)count=0;

display(count);

}

}

void delay500ms()

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=200;j>0;j--)

for(k=248;k>0;k--);

}

void display(unsigned char X)

{

P0=table[X/10];

P2=table[X%10];

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-31
硬件连接图先发给我,不然P 口不好定.
第2个回答  2011-10-31
驱动二位数码管,先给数码管的端口(如是使用P0口连接)输入一个值,再延时30MS后,再改变另一位数码管的选择位,再往P0口输出数据就OK了,记得给分哦

//================数码延时T=(N*8+7)/3==============================================
void delay(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++);
}

//================数码管4位显示==============================================
void disp(unsigned char *str,unsigned char T)
{
unsigned char i,buf;
buf=0xfe;//1111 1110
for(i=0;i<2;i++)
{
P4=buf;
P0=*(str+i);
delay(T);
buf=(buf<<1)|0x01;//保证每一次只选择一个数码管
}
}
//=========================================================================
第3个回答  2011-10-31
无图无真相!要有对应的电路原理图,才能知道怎么编写驱动程序。
相似回答
大家正在搜