因为是大二直接找前辈借的,手头没有资料,也没老师专门带着用,只能自己一点一点找资料了。

芯片型号是Cyclone EP1C3T100C8

芯片的一些引脚原理图

芯片所有的引脚
左上角便是数码管的接线

还有一些别的部件的原理图

这种数码管的原理:

段标志
首先这八个数字都共用一个ABCDEFGH的信号,H就是DP。
这八个字段对应的芯片引脚标号可以看前面的图,也可以直接在板子上找到(紧靠着ABCDEFGH的那些引脚数字)。
然后就是看到前面原理图,八个数字下面都会引出一条线,从SEL7到SEL0,代表控制这个数字部分亮不亮,0的话就亮。
他们对应的芯片引脚可以在第一张原理图找到,也可以在板子上找到,就是在ABCDEFGH上面的那些数字。
既然是共用ABCDEFGH的话,实际上我同一时刻只能显示同一个数字。但是我们可以用SEL7到0控制同时亮多少个数字,亮哪几个数字。那我想要同时亮出不同的数字实际上是不能真正实现的。代替办法是让数码管的每个时刻在不同位置显示一个数字,然后让显示的变化速度加快,提高帧率,达到人眼看不出这么短的变化过程,就类似于同时显示的效果了。
假设我要显示1234,
那我就让第1毫秒显示1空空空,
第2毫秒显示空2空空,
第3毫秒显示空空3空,
第4毫秒显示空空空4,
第5毫秒显示1空空空,
第6毫秒显示空2空空……
如此快速地循环往复,起到类似同时显示的效果。
代码方面我参考的是下面这篇文章:

实现OUT指令的暂停和继续

因为指令运行非常快,必须要进行自动的指令暂停和按键后继续。我的设计思路是在IN OUT模块中接入OUT指令,当OUT指令为1的时候,输出一个指令令SM_EN=0,类似停机,然后接入一个外部按钮输入(按钮按下为0,不按是1),当按下按钮的时候,实现恢复SM_EN=1。

实现按键去抖

按键毕竟不像时钟,他按下和释放都会有波形抖动,造成运行错误,所以要进行去抖,我写了个模块进行暂停恢复按键和复位按键的去抖。

实现复位

最后修改:2021 年 01 月 30 日 12 : 43 PM