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是数码管有小数点的送数函数。
展开
 我来答
匿名用户
推荐于2018-05-04
展开全部
授人以鱼不如授之以渔。先建立程序的一般结构,然后定义一个code数组,里边存放数码管显示0~9的数据,之后定义一个display显示函数,传递参数但不返回参数,然后将传递的参数(1234或5678)分解成4哥单个数,然后依次选择要显示的数码管和数据,紧接消影和简单暂时,这样一个数码管显示就完成了,之后三个跟这个一样。最后在主函数里调用这个显示函数并传递参数。
希望我的回答能帮助到你。
翼之向空
2014-01-07
知道答主
回答量:11
采纳率:0%
帮助的人:3.7万
展开全部
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。
追问
sendbyte(kk / 1000);    sendbyte((kk % 1000)/100);   sendbyte1((kk % 100)/10);           
sendbyte(kk % 10);
我把后面四位显示的改为这样为什么还是不对吖,显示123之类的3位就对,显示1234之类的4位就出错?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳阳百宝箱
2014-01-07 · 超过33用户采纳过TA的回答
知道答主
回答量:169
采纳率:66%
帮助的人:46万
展开全部
楼主数码管用的什么驱动呀,其他都正常应该只是编码的问题
更多追问追答
追问
用的74LS164驱动。编码我看了好久还是弄不清楚,你能帮忙看看吗?
追答
你这个的功能是什么,一般都要先说这个是用来干什么的,别人看起来才简单
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式