51单片机8个数码管功:先让第一个数码管显示某字符,保持前面数码管点亮再点亮下一个数码管并任意显示
51单片机8个数码管功:先让第一个数码管显示某字符,保持前面数码管点亮再点亮下一个数码管并任意显示某字符。怎么实现,解释一下。...
51单片机8个数码管功:先让第一个数码管显示某字符,保持前面数码管点亮再点亮下一个数码管并任意显示某字符。怎么实现,解释一下。
展开
展开全部
首先要搞清硬件接线:如sbit DULA=...
uchar disbuff[8]={.........要显示的内容};
uchar TABLE[16]={.........共阴或共阳数码管编码};
ucha wei_ma[8]={.........如果很有规律可不用数组};//位码表
for(j=0;j<800;j++)
for(i=0;i<j/100;i++)
{
DATA=TABLE(disbuff[i]);//送段码
DULA=1;//打开段锁存器
DULA=0;
DATA=wei_ma[i];//送位码
weiLA=1;//打开位锁存器
weiLA=0;
delay_ms(5);
}
当然,如果想让每次显示持续时间相等(如显示1个数码管时持续1.5s,显示2个数码管时仍持续1.5s),延时时间应该也是变化的,如delay_ms(5)可改成delay_ms(9-j/100);
uchar disbuff[8]={.........要显示的内容};
uchar TABLE[16]={.........共阴或共阳数码管编码};
ucha wei_ma[8]={.........如果很有规律可不用数组};//位码表
for(j=0;j<800;j++)
for(i=0;i<j/100;i++)
{
DATA=TABLE(disbuff[i]);//送段码
DULA=1;//打开段锁存器
DULA=0;
DATA=wei_ma[i];//送位码
weiLA=1;//打开位锁存器
weiLA=0;
delay_ms(5);
}
当然,如果想让每次显示持续时间相等(如显示1个数码管时持续1.5s,显示2个数码管时仍持续1.5s),延时时间应该也是变化的,如delay_ms(5)可改成delay_ms(9-j/100);
更多追问追答
追问
没看懂
要想让中8个数码管任意显示某字符,有动态显示。实现我说的功能用哪些方法?不用定时器吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询