完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char //宏定义 void display(uchar qian,uchar bai,uchar shi,uchar ge); //显示函数申明 uchar table[]={ 0xeb,0x88,0xb3,0xba, 0xd8,0x7a,0x7b,0xa8, 0xfb,0xfa,0xf9,0x5b, 0x63,0x9b,0x73,0x71}; /*数码管译码表*/ uchar tablewe[]={0x01,0x02,0x04,0x08}; //数码管位选表 uchar cnt1,cnt2; uchar qian,bai,shi,ge; //显示四位整数,千百十个 int num; void main() { EA=1; //定时器初始化 TMOD=0x01; TH0=(65536-200)/256; TL0=(65536-200)%256; ET0=1; TR0=1; //定时器的初始化完成 num=2352; //对num进行赋值 while(1) { qian=num/1000; //对num进行千百十个的分离 bai=(num/100)%10; shi=(num/10)%10; ge=num%10; //将整数分离完成 if(cnt1==5) //当cnt1=5时,即1ms时,进入显示部分 { cnt1=0; //将cnt1清零 display(qian,bai,shi,ge); //调用显示子函数,问题出在这里 } } } void display(uchar qian,uchar bai,uchar shi,uchar ge) //显示子函数 { while(cnt2<4) //判断cnt2的值是否小于4,总共4个数码管,显示4次 { P1=tablewe[cnt2]; //位选通 if(cnt2==0) //判断是整数的哪一位,并显示出来 P0=table[qian]; else if(cnt2==1) P0=table[bai]; else if(cnt2==2) P0=table[shi]; else if(cnt2==3) P0=table[ge]; cnt2++; //将cnt2从0,1,2,3分别显示出来 } if(cnt2==4) //当cnt2=4时,清零 cnt2=0; } void into_T0() interrupt 1 //定时器中断,晶振为24MHZ,定时时间为0.2ms { TH0=(65536-200)/256; TL0=(65536-200)%256; //装入初值 cnt1++; //对cnt1累加计数,当cnt1=5时,进入显示部分 } 这个函数的功能,是用单片机数码管,动态显示一个四位数整数“2352”。 我试过,如果不写显示子函数的话,将显示部分放在void main主函数下,while语句中if判断语句下,程序执行没有问题,并且下载运行没问题。 但是我想写一个子函数(主要是在学习期),但发现实现不了,数码管上只能显示一个数“2”。我怀疑是子函数调用时,参数的定义和传递有问题,我试着改了多次,也无法成功(主要是我对子函数参数传递这块不太熟悉)。 如果有哪位仁兄,能热心帮助一下小弟,不胜感激!!! |
|
相关推荐
5个回答
|
|
一个简单功能写的这么复杂,数码管显示不用定时中断。
|
|
|
|
把子函数的void display(...)改为uchar display(。。。),因为void是无返回值的函数定义,你的display函数不是类似于delay那种空循环的,而是需要返回一个值得函数。
|
|
|
|
把子函数的void display(...)改为uchar display(。。。),因为void是无返回值的函数定义,你的display函数不是类似于delay那种空循环的,而是需要返回一个值得函数。
|
|
|
|
rcj780 发表于 2014-10-28 20:37 感谢你的回答哈,我试过你的方法,不可行的。这样写是可以的哈,因为本来就没有返回值嘛 后来校内网上有哥们找出问题了,主要是子函数中,while()循环中,一直在显示,中间没有任何延迟,就会导致4位数码管只显示一位,后来我将while语句去掉,再将display(qian,bai,shi,ge);放入中断函数中,这样就可以实现功能呢 最后,还是要谢谢你哈 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
515 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
515 浏览 0 评论
780 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1360 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
572 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11760 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:24 , Processed in 0.733158 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号