完善资料让更多小伙伴认识你,还能领取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了怎么可能同时显示。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
280 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1083 浏览 0 评论
846 浏览 0 评论
886 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
869 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11824 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 08:01 , Processed in 1.279002 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号