单片机学习--8*8点阵图


声明:1、我使用的单片机是STC89C52

   2、 使用74HC595来扩展I\O口

   3、其实点阵屏的原理很简单,所以这里着重讲74HC595芯片 串入并出的使用。


 

点阵图原理

                                                这是常见点阵图所看到的背面引脚部分。引脚的辨认依靠图中下方凸起的小点辨认引脚号。

 

 

 其实点阵图的使用与数码管类似。都是点亮小的二极管,来达到显示字符的功能。值的注意的是,它的显示,也是利用了人眼视觉留存效果。


 

重点来了:74HC595的使用。(可级联)

      对于未知芯片的使用解决办法-------看pdf手册

      这里我们主要看它的管脚说明、真值表、时序图。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

从这两张来看如何连接该元器件

看这张表可以得出如何使用该元器件

看完表我该抓住的点:1、(10脚)SLCR   低电平时,(复位)移位寄存器清零    通常将它接vcc

          2、 (11脚)SCK   上升沿有效,数据串行输入,在移位寄存器内具体移位 Q0->Q1->Q2.......->Q7

          3、  (13脚)OE    高电平时禁止输出  通常接地

          4、    (12脚)RCK 上升沿时,将数据Q0.....Q7并行输出。

          5、    (14脚) SI   数据串联输入,级联时,接上一个元器件的 (9脚)SQH 

          6、     (9脚)  SQH  串联数据输出脚

 


 

 这里附一张图是在b站时看视频截图得来点阵连接图

 

 这里还是得强调一下串行数据是怎么输入的:

            1、单片机通过DI线依次传入8位数据  从高位开始传送。传送到74HC595内的移位寄存器的低位。之后开始上移。

 1 /*点亮一个小灯*/
 2 #include <reg52.h>
 3 sbit DIO  = P3^4; //串行数据口
 4 sbit S_CLK = P3^5;//移位寄存器时钟
 5 sbit R_CLK = P3^6;//输出锁存器时钟
 6 void main()
 7 {
 8     //ROW 0x80 , COL 0xfe
 9     unsigned char i, dat;//i循环次数  dat需要发送的数据
10     dat = 0xfe;//发送列值     
11     for(i=0; i<8; i++)//循环8次
12     {
13         S_CLK = 0;//拉低移位寄存器时钟
14         R_CLK = 0;//拉低输出锁存器时钟
15         if(dat & 0x01)//发送1
16             DIO = 1;
17         else          //发送0
18             DIO = 0;
19         S_CLK = 1;//拉高移位寄存器时钟,数据移位
20         dat >>= 1;//数据右移
21     }
22     dat = 0x80;//发送行值      刚发送的列值就被压到第二片中的移位寄存器
23     for(i=0; i<8; i++)//循环8次
24     {
25         S_CLK = 0;//拉低移位寄存器时钟
26         R_CLK = 0;//拉低输出锁存器时钟
27         if(dat & 0x01)//发送1
28             DIO = 1;
29         else          //发送0
30             DIO = 0;
31         S_CLK = 1;//拉高移位寄存器时钟,数据移位
32         dat >>= 1;//数据右移
33     }
34     R_CLK = 1;//拉高输出锁存器时钟,并行输出数据
35     while(1);
36 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM