打印
[PIC®/AVR®/dsPIC®产品]

请教一个PIC单片机diy计数器的编程方法和思路问题。

[复制链接]
702|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kingkrosson|  楼主 | 2020-1-3 21:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,本人PIC单片机初学者,有点汇编语言基础。希望用PIC单片机用汇编语言diy个4位数码管显示的计数器。学习板带的是PIC16F877A单片机。

我希望做的是:一个引脚设定为输入端,来识别输入的计数信号并输出相应的数字。已经做好了一个红外发射器,每遮住一次,发出一个高电位信号。让单片机识别,然后数码管显示对应的次数数字。一个复位键,用于清零。
我的疑问是:数码管默认为0,如何让单片机根据输入的信号,控制数码管依次显示1,2,3,4,5,6,.....至9999?
请问有没有哪位大神提供下汇编代码或者给提供下思路啊,应该怎么显示那么多数字?如何让数码管的数字依次进位的?
期待诸位老师的解答,感谢

使用特权

评论回复
沙发
mzb2012| | 2020-1-3 22:41 | 只看该作者
进位就是一个变量的事情,数码管就显示这个变量的数值就可以了。或许C语言实现更容易

使用特权

评论回复
板凳
kingkrosson|  楼主 | 2020-1-4 10:43 | 只看该作者
mzb2012 发表于 2020-1-3 22:41
进位就是一个变量的事情,数码管就显示这个变量的数值就可以了。或许C语言实现更容易 ...

其实不管c语言还是汇编语言,主要就是思路,我想知道的是,应该用怎样个逻辑来显示啊?
比如,
第一次识别到一个信号,cpu调用数字1的值发送给第一个数码管端口,数码管显示1,
再识别一个信号,cpu再调用数字2的值发送给第一个数码管端口,显示2,
再识别一个信号,cpu再调用数字3的值发送给第一个数码管端口,显示3,
...
依此类推,一直到9,cpu再调用数字9的值发送给端口,显示9,
接下来,再识别一个信号,那就应该进位了,那就是用程序让cpu再调用数字1的值发送给第2个数码管端口,显示1,然后让cpu再调用数字0的值发送给第1个数码管端口显示0?
这样下去的话,可麻烦了,调用的数字越来越多,程序越来越复杂,越来越乱。
我感觉我这种思路是很荒谬的。需要个大神给指点下思路。

使用特权

评论回复
地板
mzb2012| | 2020-1-4 15:16 | 只看该作者
假如你有函数display(unsigned int num),直接把计数的值给它num形参就可以了。

display函数内部,对num进行拆分
a = num/1000;
b = num%1000/100;
c = num%100/10;
d = num%10;
最后把4个变量分别送给对应的数码管,完活。

使用特权

评论回复
5
kingkrosson|  楼主 | 2020-1-4 21:07 | 只看该作者
mzb2012 发表于 2020-1-4 15:16
假如你有函数display(unsigned int num),直接把计数的值给它num形参就可以了。

display函数内部,对num进 ...

谢谢,请问用汇编语言的话,如何写啊?怎样实现进位?各位进10位,10位进百位,而且数字不断+1

使用特权

评论回复
6
kavent| | 2020-1-4 22:01 | 只看该作者
用汇编对新手确实比较难一些!
应该不算太难,先所显示部分独立出来,用定时器来控制数码管的切换刷新!7+4个IO口都数码管控制!
计数如果你输入的频率不是太高,完全可以在主循环里面通过查询按键的方式来工作!

总之,是个入门的项目,最好用C来实现,比较省力!而且PIC的教程书本应该很多,可以参考一下数码管显示与按键输入!

使用特权

评论回复
7
asdsfgwsafd| | 2020-1-6 12:37 | 只看该作者
想好了是不是真的用汇编一条路走到黑

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

0

粉丝