完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是想让每隔1秒,sec就加,然后在数码管中显示,可是不知道为什么只显示最后一位,从0到9 ,前面4位不会亮,
哪位帮我看看,为什么会这样?怎么改? /* 功能:利用时钟中断,每隔一秒中断一次,并显示 */ #include #define uchar unsigned char #define uint unsigned int uchar code table_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar code table_we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar dspsec[5]; uchar num=0; uint sec=0; ***it dula=P2^6; //段锁存器 ***it wela=P2^7; //位锁存器 //计数器中断初始化 void init_timer() { EA=1; ET0=1; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; } void display(uchar temp) { uchar i; for(i=0;i P1=table_we[i]; wela=1; wela=0; P1=dspsec[i]; dula=1; dula=0; } } void main() { init_timer(); while(1) { if(num==20) //20*50ms=1s { num=0; sec++; //显示时间 dspsec[0]=table_du[sec/10000]; dspsec[1]=table_du[sec/1000%10]; dspsec[2]=table_du[sec/100%10]; dspsec[3]=table_du[sec/10%10]; dspsec[4]=table_du[sec%10]; display(5); } } } //中断处理程序 void timer() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; } |
|
相关推荐
5个回答
|
|
能看一下你电路板的原理图吗
|
|
|
|
显示函数有问题吧,你再看看
|
|
|
|
你编程写不完整还是显示不完整啊?
|
|
|
|
显示不完整,只显示最后一位
|
|
|
|
单片机新手,猛烈学习中
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
7 浏览 0 评论
26 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
13 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
644 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1000 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11771 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 21:15 , Processed in 0.620829 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号