完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`计数器计的脉冲在数码管上显示,外部脉冲由按键控制 按键选择了P3.4,每一次按下数码管最后一位就会加一,问我的6个数码管为什么不是同时显示
下面是程序 #include unsigned char dispBUF[]={0,0,0,0,0,0}; unsigned char code dispTAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char i; //ms延时函数 void delay_ms(unsigned int ms_number)//1ms延时函数 (AT89C51,11.0592MHz) { unsigned char j; unsigned int i; for(i=0;i { for(j=0;j<200;j++); for(j=0;j<102;j++); } } void DigDisplay() //数码管位选 { char i; for(i=0;i<6;i++) { P2_6=1;P2_7=0; P0=dispTAB[dispBUF[i]]; P2_6=0;P2_7=1; switch(i) { case 0: P0=0XFE; break; case 1: P0=0XFd; break; case 2: P0=0XFb; break; case 3: P0=0XF7; break; case 4: P0=0Xef; break; case 5: P0=0Xdf; break; } P2_6=0;P2_7=0; delay_ms(200); } } void main() { unsigned int count; TMOD=0x05; TL0=0x00; TH0=0x00; TR0=1; while(1) { //计算计数器的当前计数值并存到变量count中 count=TH0*256+TL0; //将计数器的当前计数值变为6个位分别存到显示缓冲区中 dispBUF[1]=count/10000; dispBUF[2]=count%10000/1000; dispBUF[3]=count%1000/100; dispBUF[4]=count%100/10; dispBUF[5]=count%10; DigDisplay() ; } } ` |
|
相关推荐
4个回答
|
|
void DigDisplay() 里的delay_ms(200);时间太长了,调短些,试试几十毫秒级别的
最佳答案
|
|
|
|
这是现在的状态
|
|
|
|
这是现在的状态
|
|
|
|
大佬,你都break了怎么可能同时显示。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
752 浏览 0 评论
2208 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2084 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1682 浏览 0 评论
2636 浏览 3 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5453 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-18 09:41 , Processed in 0.554574 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号