哪位高手能给我解释解释单片机点阵扫描原理不谢谢

哪位高手能给我解释解释单片机点阵扫描原理不谢谢,第1张

谈LED点阵的扫描原理,只要一看LED点阵的原理图就一目了然了,如下图:

图中,A--H可以看做行,1--7看做列;假如我们给点阵送人一个列数据0x80(1000 0000),并且同时送人一个行数据0x7f(0111 1111),此时我们就点亮了这个点阵左上角的那颗LED发光管,如果我们不停的行数据:0111 1111;1011 1111;1101 1111;1110 1111;1111 0111;1111 1011;1111 1101;1111 1110,这8个数据周而复始的送人点阵就是行扫描的过程,这个过程一般采用74HC138等译码器来完成,而在对应的行数据送人的同时也送人1--7的列数据,例如:

行=0111 1111,列=1000 0000

行=1011 1111,列=0100 0000

行=1101 1111,列=1010 0000

行=1110 1111,列=1001 0000

行=1111 0111,列=1000 1000

行=1111 1011,列=1000 0100

行=1111 1101,列=1000 0010

行=1111 1110,列=1000 0001

此时程序循环执行的结果会在点阵屏上显示左上至右下的对角斜线。

仔细想想应该不难理解。

在代码编写上,实现上述功能有很多方法,最长用的就是for循环,如果你百度资料会发现,大凡点阵显示代码中都会在显示函数中引用for循环,而且根据点阵数的不同会有:

for(i=0i<8i++)或for(i=0i<16i++)或for(i=0i<32i++)这就是对于8行、16行、32行点阵的扫描算法。

就说到这里吧,更多的知识请百度搜索吧。

你的数码管显示应该是动态显示的吧。动态显示的原理就是轮流点亮,当频率足够快时肉眼会发现同时在点亮,只是亮度比静态显示低。所以你需要做的就是在扫描温度时,交叉运行数码管显示子函数。但是要记得重复的频率要高一些啊

我查看了网上的一些ds18b20的驱动程序,发现在读取数值的时候用的时钟周期并不多。根据我的经验,动态显示的数码管只要点亮频率在50HZ以上无论是实物还是仿真,看起来都会一直亮。所以建议你检查你的程序:1、你的晶振是多少,默认的是片内12M,你的晶振选择的如果过小可能会出现你的现象;2、这是最可能的一种,是不是你的温度芯片的扫描程序有问题,里面可能会有不必要的长时间延时。你的系统中如果没有其它任务,同时运行这三个子程序,频率至少在几百HZ以上

延时里有个j, 主程序里又有个j, 而且还在一个地方!

for(j=0j<16j++)

{

P0=0XFF

Hi=1Lo=1

Hi=1

Lo=0

P0=LED[0][j]

delay(1)

Lo=1

Hi=0

P0=LED[1][j]

delay(1)

看这一部分,明显重复了!

把其中一个j用另一个字母代替就行了!

还有不懂的问我,Q364630430


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7790084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存