找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1015|回复: 0
收起左侧

关于单片机16*64点阵屏驱动程序调试

[复制链接]
ID:715064 发表于 2021-10-11 11:24 | 显示全部楼层 |阅读模式
这是一块64*16的点阵LED屏,STC11系列驱动74HC245
245的五个输出控制2颗hc138d来驱动上-》下2行8*8点阵模块的行显示,高电平点亮。
245的三个输出控制8颗hc595d来驱动左-》右8列模块的列显示。
我程序直接行显示固定死的情况下,列显示给值0x55,对应屏幕模块应该显示:亮灭亮灭 亮灭亮灭的,但是为什么是图中的样子,只有第一个亮灭实现了,后边全是灭的。求指教-------------
制作出来的实物图如下:
51hei图片_20211011112052.jpg 51hei图片_20211011092804.jpg
单片机源程序如下:
  1. #include<reg52.h> //EN=HC138D的E1,E2必须置于低电平。D=HC138D的E3置于低电平上八行工作,置于高电平下八行工作。
  2. #include<intrins.h>
  3. typedef unsigned char u8;
  4. sbit A=P2^4;
  5. sbit Bb=P2^5;
  6. sbit C=P2^6;
  7. sbit D=P2^7;
  8. sbit EN=P0^7;
  9. sbit ST=P0^6;
  10. sbit CK=P1^7;
  11. sbit DATA=P1^6;

  12. void sendlie(dat)         //发送列数据函数
  13. {
  14.         u8 a;

  15.         for(a=0;a<8;a++)                 //发送8位数
  16.         {
  17.                                                                                                                                                       
  18.                 DATA = dat >> 7;                 //从最高位开始发送
  19.                 dat <<= 1;
  20.                 CK = 0;
  21.                 _nop_();
  22.                 _nop_();
  23.                 CK = 1;                         //发送时序
  24.             _nop_();
  25.                 _nop_();
  26.                 CK = 0;        
  27.         }

  28.         
  29. }
  30. void lieout()
  31. {
  32. ST = 0;
  33. _nop_();
  34. _nop_();
  35. ST = 1;
  36.         _nop_();
  37.         _nop_();
  38.         ST = 0;
  39. }
  40. /*******************************************************************************
  41. * 函 数 名       : main
  42. * 函数功能                 : 主函数
  43. * 输    入       : 无
  44. * 输    出             : 无
  45. *******************************************************************************/
  46. void main()
  47. {

  48. EN = 0; //使HC138d的E1,E2置低位
  49. D = 0;        //HC138D的E3置高位下八行工作,置低位上八行工作。
  50. A = 0;         //ABC发送行数据
  51. Bb = 0;
  52. C = 1;        
  53.         while(1)
  54.         {
  55.          
  56.          
  57.            sendlie(0xff);
  58.            sendlie(0xff);
  59.            sendlie(0x55);
  60.            sendlie(0xff);
  61.            sendlie(0xff);
  62.            sendlie(0x55);
  63.            sendlie(0xff);
  64.            sendlie(0xff);

  65.            lieout();
  66.            
  67.          
  68.         }               
  69. }
复制代码

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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