怎么让数码管 逢十进一 程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tale[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f
};
uchar code tame[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
};
uchar num;
void delayms(uint);
void main()
{
uint j0,j8,j;
for(j0=0;j0<10;j0++) /*定义循环次数*/
{
P1=0xfe; /*定义那位显示*/
P0=tale[j0]; /*定义 显示什么数字 调用函数实现*/
delayms(500); /*延时函数*/
++j8;
if(j8==10) /*定义循环条件8*/
{
++j;
P1=0xfd;
P0=tale[j];
delayms(1);
}
}
}
void delayms(uint xsm)
{
uint q,w;
for(q=xsm;q>0;q--)
for(w=110;w>0;w--);
}
程序中做处理,判断你的段显到9 的时候,置0,并把高一位置一
你这个程序是静态数码管显示,只适合一位显示,学一下扫描显示就可以很好实现!
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void dispaly();
uchar code tale[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f
};
uchar num;
void delayms(uint);
uint j0,j8,j;
void main()
{
while(1)
{
dispaly();
}
}
void dispaly()
{
for(j0=0;j0<=10;j0++)//j0低位计数
{
for(j=0;j<20;j++)//一个状态多显示几次,维持亮度
{
P2=1;//数码管第几位数低位
P0=tale[j0];
delayms(4);
P0=0x00;//消残影
delayms(4);
if(j0==10)
{j0=0;j8++;}//逢10进1,低位清0
P2=0;//数码管高位
P0=tale[j8];
delayms(4);
P0=0x00;
delayms(4);
if(j8==10)
{j8=0;}
}
}
}
void delayms(uint xsm)
{
uint q,w;
for(q=xsm;q>0;q--)
for(w=110;w>0;w--);
}
我是试试 ,,,谢谢了
我用的是P0 P1口 没有什么区别吧 和P2口
我有12864电子钟的套件需要不,只要70RMB,可以下载程序学习,当电子钟用,PCB板与12864液晶尺寸一样大,非常美观的。我QQ:176798246