赞
踩
--------------------------------------------------------------------------------------------
持续更新中~~~~~~~~20204/30
还是先汇报下进度,昨天晚上看了大概40分钟I2C和EEPROM的资料,就到了凌晨12点半,没有开始写程序,因为感觉有些困难,并且今天一早是有有课的,所以也没有继续下去,希望今天能完全搞懂吧,这部分知识我是准备边学边总结,也可能会录一点调试视频上传,最好可以在学完就可以实时的上传到知乎~以后的更新也会采用这个模式,毕竟我的记性不太好,过两天可能就会遗忘太多细节问题。
数码管部分还是按照昨天的思路来,我的数码管显示是靠两块数码管锁存芯片74HC573实现的,我也只会这一个,也不知道还有没有别的方法,附上原理图
--------------------------------------------------------------------------------------------
持续更新中~~~~~~~~20204/30
还是先汇报下进度,昨天晚上看了大概40分钟I2C和EEPROM的资料,就到了凌晨12点半,没有开始写程序,因为感觉有些困难,并且今天一早是有有课的,所以也没有继续下去,希望今天能完全搞懂吧,这部分知识我是准备边学边总结,也可能会录一点调试视频上传,最好可以在学完就可以实时的上传到知乎~以后的更新也会采用这个模式,毕竟我的记性不太好,过两天可能就会遗忘太多细节问题。
数码管部分还是按照昨天的思路来,我的数码管显示是靠两块数码管锁存芯片74HC573实现的,我也只会这一个,也不知道还有没有别的方法,附上原理图
我这个是8位共阴极的数码管,这个东西学完理解之后感觉也不难,当然我的不难是特指用和写程序,要深究锁存芯片啥的实现原理,我这个小白是说不出来的。不过只是用数码管的话就非常简单了,就操作P0口发两次数据就可以了,先位选在段选,位选控制8位数码管的哪一位通电,段选就是使单片机控制通上电的数码管显示特定的字符。我说的可能很不严谨,也可能挺多错误的,不过仅对我而言倒是容易理解。对段选来说,单个数码管其实就是由8个小LED组成的,通过P0口赋值使某几个亮某几个灭便可以使其显示特定的数字或者字符,原理如下
按照常理来说数码管只能让一位显示,因为P0位选只能赋一个值,这样也就是数码管的静态显示,下面代码是使数码管第一位显示数字1,因为它只操作一次,后边就用一个while(1)让他停住。
void main()
{
WE = 1;
P0 = 0XFE; //1111 1110
WE = 0;
DU = 1;
P0 = 0X06;//0000 0110
DU = 0;
while(1)
{
}
} 静态显示代码
那怎么才能让数码管好几位同时显示呢?办法就是动态扫描,我开始对这个概念理解的到是挺模糊的,直到后来自己写程序才算理解它的意思。上面静态显示的时候说过,数码管一次只能显示一位,你想同时显示两位是做不到的,好比说第一次位选想让数码第一位数码管显示,给P0赋值1111 1110,然后想同时使第二位数码管显示又给数码管赋值1111 1101 ,可以清楚看到数码管第二次段选时,数码管第一位就被灭掉了,这样是不可能同时显示多个数值的。解决办法就是将多个数码管显示的代码放进一个循环里面,让他不断重复亮灭的过程,当这个循环足够快的时候就给人一种同时在显示的感觉,这个可能像电影的帧这个概念,电视动画啥的就是由一帧一帧的图片构成,刷新率高的时候就流畅了起来。
下边的这个视频是数码管显示数字236,我每次延时1000微秒得到的最终显示效果,可以清楚的看出来它是第一位灭了之后第二位亮,第二位灭了第三位亮。依次循环这个过程,而当这个过程足够快的时候就会同时显示出236.
科学解释:动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
昨天是想着只写一下数码管软件延时和定时器延时的,软件延时是我刚学单片机的第一个大疑惑,当时一直想不明白为啥那样软件延时的,今天开始写的时候感觉只写这一部分感觉不大好,有点太突兀了。
--------------------------------------------------------------------------------------------
持续更新中~~~~~~~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。