找回密码
 立即注册
查看: 682|回复: 0

STC89C52RC 驱动16x64LED点阵模块驱动记录(一)

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-07 08:04:39

17

主题

65

回帖

1674

积分

金牌会员

积分
1674
发表于 2023-11-24 21:39:39 | 显示全部楼层 |阅读模式

一、背景
半年前某宝上购得LED点阵驱动板:
eb5a18a88e1745129598cff6ba7ad368.jpeg


模块显示面板由16个8*8点阵屏拼为16x64点阵,主控芯片为STC89C52,行扫描为1个74HC154(4-16译码器),列扫描为8个74HC595(8位串行输入、并行输出的位移缓存器)。板上还有1块flash存储芯片sst29ee020(256k*8,感觉是字库),配合它工作的是74hc573锁存器(隔离sst29ee020输入输出,复用MCU IO);另外还有1个DS1302时钟芯片。

二、源码

  1. #include <STC89C5xRC.H>
  2. sbit SH_CP = P1^5;
  3. sbit DS = P2^7;
  4. sbit ST_CP = P1^6;
  5. //PCtoLCD2002
  6. //
  7. unsigned char code Table_row[] = {
  8. //这个调了好久,现在贴的不知道是不是实际跑的字模了
  9. //阳码,顺向,逐行式,C51,左右反转
  10. 0xFE,0xFF,0xFE,0xFF,0xFE,0xC0,0xC0,0xDF,0xDF,0x5F,0xEF,0x6D,0xFD,0xAB,0xFD,0xD7,
  11. 0xFD,0xF7,0xFA,0xEB,0xFA,0xDB,0xF7,0x5D,0xF7,0x7E,0xEF,0xBF,0xDF,0xDF,0xBF,0xEF,/*"欢",0*/
  12. 0xFF,0xFF,0xFE,0xFB,0xC3,0x37,0xDB,0xB7,0xDB,0xBF,0xDB,0xBF,0xDB,0xB0,0xDB,0xB7,
  13. 0xDB,0xB7,0xD2,0xB7,0xEB,0x37,0xFB,0xB7,0xFB,0xF7,0xFB,0xEB,0x80,0x1D,0xFF,0xFF,/*"迎",1*/
  14. 0xFF,0x7F,0xEF,0x7B,0xEF,0x77,0xF7,0x6F,0xFB,0x6F,0xFF,0x7F,0x80,0x00,0xFD,0xDF,
  15. 0xFD,0xDF,0xFD,0xDF,0xFD,0xDF,0xBD,0xEF,0xBD,0xEF,0xBD,0xF7,0x83,0xFB,0xFF,0xFC,/*"光",2*/
  16. 0xFE,0xEF,0xFE,0xEF,0xFE,0xEF,0x80,0x6D,0xFD,0x6D,0xFB,0xAD,0xFB,0xCD,0xFF,0xED,
  17. 0xC0,0x6D,0xDB,0x6D,0xDB,0x6D,0xDB,0x6D,0xDB,0x6D,0xC0,0x6F,0xDF,0x6F,0xFF,0xEF,/*"临",3*/
  18. };
  19. /*
  20. void delayms(unsigned int m)
  21. {
  22.         int i,j;
  23.         for(i=0; i<m; i++)
  24.                 for(j=0; j<120; j++);
  25. }
  26. */
  27. void HC595(unsigned char dat)
  28. {
  29.         unsigned char j;
  30.         for(j=0;j<8;j++)
  31.         {
  32.                 SH_CP = 0;        //为移位准备
  33.                 DS = dat & 0x01;        //先低位
  34.                 dat=dat>>1;
  35.                 SH_CP =1;          //上升沿,移位
  36.         }
  37. }
  38. void Matrix16x16(unsigned char num)
  39. {
  40.         unsigned char k,i;
  41.         unsigned int m,n;
  42.         unsigned char Char_num=num*32;
  43.        
  44.         for(m=0;m<Char_num;m++)    //为移动预留
  45.         {
  46.                 for(n=0;n<16;n++)//控制显示速度,防止闪烁
  47.                 {
  48.                         for(k=0;k<16;k++)        //行扫描
  49.                         {
  50.                                 for(i=0;i<num;i++)   //控制第几个字
  51.                                 {
  52.                                         HC595(Table_row[(32*i+2*k+1)]);                //
  53.                                         HC595(Table_row[(32*i+2*k+0)]);                //                                                                                                       
  54.                             }
  55.                             ST_CP = 0;
  56.                             ST_CP = 1; //并行输出
  57.                             //P1=k;    //P1低4位为74HC154输入,高4位未使用
  58.                 P1=16-k;    //从左往右显示
  59.                             //delayms(2);
  60.                         }
  61.                 }
  62.         }
  63. }
  64. void main(){
  65.         while(1){
  66.                 Matrix16x16(4);
  67.         }
  68. }
复制代码
5d99e00875de46009ad14c15de177a97.jpg



文章内容成文于半年前,先发于个人blog。
听说发文可以得芯愿,换MCU,^-^
84820b2b76e64f9a8021ac0b86aca4e0.jpg
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 14:41 , Processed in 0.144838 second(s), 47 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表