51单片机控制数码管显示不正常问题,为什么后面4位数码管1234和5678都是显示乱码呢?该怎么改? 50
voidDisplay(uchark,ucharkk){sendbyte(k/1000);PA=0;Delay_1ms(5);PA=1;sendbyte(k/100);P...
void Display(uchar k,uchar kk)
{
sendbyte(k / 1000);
PA=0; Delay_1ms(5);PA=1;
sendbyte(k / 100);
PB=0; Delay_1ms(5);PB=1;
sendbyte1(k / 10);
PC=0; Delay_1ms(5);PC=1;
sendbyte(k % 10);
PD =0; Delay_1ms(5);PD=1;
sendbyte(kk / 1000);
PA1=0; Delay_1ms(5);PA1=1;
sendbyte(kk / 100);
PB1=0; Delay_1ms(5);PB1=1;
sendbyte1(kk / 10);
PC1=0; Delay_1ms(5);PC1=1;
sendbyte(kk % 10);
PD1 =0; Delay_1ms(5);PD1=1;
}
主函数在下:
void Main(void)
{
uchar Value =0000;
uchar cont=0000;
while(1)
{
if(!KK) { //KK按下
Display(Value,cont); //延时消抖
if(!KK) { //KK1依然按下
while(!KK);//等KK1释放
cont=0000;
Value++;
if (Value > 9999) Value = 9999;
if(Value<=5) cont=1234;else cont=5678;
}
}
Display(Value,cont); //显示值
}
}
PA1,PB1,PC1,PD1是控制后面4位的,sendbyte1是数码管有小数点的送数函数。 展开
{
sendbyte(k / 1000);
PA=0; Delay_1ms(5);PA=1;
sendbyte(k / 100);
PB=0; Delay_1ms(5);PB=1;
sendbyte1(k / 10);
PC=0; Delay_1ms(5);PC=1;
sendbyte(k % 10);
PD =0; Delay_1ms(5);PD=1;
sendbyte(kk / 1000);
PA1=0; Delay_1ms(5);PA1=1;
sendbyte(kk / 100);
PB1=0; Delay_1ms(5);PB1=1;
sendbyte1(kk / 10);
PC1=0; Delay_1ms(5);PC1=1;
sendbyte(kk % 10);
PD1 =0; Delay_1ms(5);PD1=1;
}
主函数在下:
void Main(void)
{
uchar Value =0000;
uchar cont=0000;
while(1)
{
if(!KK) { //KK按下
Display(Value,cont); //延时消抖
if(!KK) { //KK1依然按下
while(!KK);//等KK1释放
cont=0000;
Value++;
if (Value > 9999) Value = 9999;
if(Value<=5) cont=1234;else cont=5678;
}
}
Display(Value,cont); //显示值
}
}
PA1,PB1,PC1,PD1是控制后面4位的,sendbyte1是数码管有小数点的送数函数。 展开
3个回答
推荐于2018-05-04
展开全部
授人以鱼不如授之以渔。先建立程序的一般结构,然后定义一个code数组,里边存放数码管显示0~9的数据,之后定义一个display显示函数,传递参数但不返回参数,然后将传递的参数(1234或5678)分解成4哥单个数,然后依次选择要显示的数码管和数据,紧接消影和简单暂时,这样一个数码管显示就完成了,之后三个跟这个一样。最后在主函数里调用这个显示函数并传递参数。
希望我的回答能帮助到你。
希望我的回答能帮助到你。
展开全部
1234/1000=1,1234/100=12,1234/10=123,1234%10=4,看明白了没,应该是
1234/1000=1,1234%1000/100=2,1234%100/10=3,1234%10=4。
1234/1000=1,1234%1000/100=2,1234%100/10=3,1234%10=4。
追问
sendbyte(kk / 1000); sendbyte((kk % 1000)/100); sendbyte1((kk % 100)/10);
sendbyte(kk % 10);
我把后面四位显示的改为这样为什么还是不对吖,显示123之类的3位就对,显示1234之类的4位就出错?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主数码管用的什么驱动呀,其他都正常应该只是编码的问题
更多追问追答
追问
用的74LS164驱动。编码我看了好久还是弄不清楚,你能帮忙看看吗?
追答
你这个的功能是什么,一般都要先说这个是用来干什么的,别人看起来才简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询