找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4009|回复: 2
收起左侧

单片机74Hc595控制列74Hc138控制行8*8点阵程序

[复制链接]
ID:492819 发表于 2019-4-6 22:10 | 显示全部楼层 |阅读模式
根据别人的程序改编,调试出来,分享一下,不能只拿不送

制作出来的实物图如下:
IMG_20190406_215823.jpg

单片机源程序如下:
  1. #include "reg51.h"                         //此文件中定义了单片机的一些特殊功能寄存器
  2. #include<intrins.h>

  3. typedef unsigned int u16;          //对数据类型进行声明定义
  4. typedef unsigned char u8;

  5. sbit SRCLK=P3^6;//SH_CP                                          //Hc595接线
  6. sbit RCLK =P3^5;//ST_CP
  7. sbit SER  =P3^4;//DS

  8. sbit IA=P1^0;//行控制线A                                           //Hc138 接线
  9. sbit IB=P1^1;//行控制线B
  10. sbit IC=P1^2;//行控制线C

  11. u8 ledduan[3][8]=                                                             //3个字符 8位扫描
  12. {
  13.    0x00,0x7C,0x10,0x14,0x74,0x14,0x7E,0x00,                   //正
  14.    0x00,0x66,0x99,0x81,0x81,0x42,0x24,0x18,
  15.    0x00,0x00,0x18,0x3c,0x5a,0x18,0x18,0x00                  //格式必须准确 没有逗号

  16. };                                                                                         //格式必须准确 加分号

  17. /*******************************************************************************
  18. * 函 数 名         : delay
  19. * 函数功能                   : 延时函数,i=1时,大约延时10us
  20. *******************************************************************************/
  21. void delay(u16 i)
  22. {
  23.         while(i--);        
  24. }

  25. /*******************************************************************************
  26. * 函数名         : Hc595SendByte(u8 dat)
  27. * 函数功能                   : 向74HC595发送一个字节的数据
  28. * 输入           : 无
  29. * 输出                  : 无
  30. *******************************************************************************/
  31. void Hc595SendByte(u8 dat)                                      //Hc595扫描程序
  32. {
  33.         u8 a;
  34.         SRCLK=0;      //首先设移位寄存器为低电平
  35.         RCLK=0;         //再设存储寄存器为低电平
  36.         for(a=0;a<8;a++)
  37.         {
  38.                 SER=dat>>7;        //输入
  39.                 dat<<=1;

  40.                 SRCLK=1;
  41.                 _nop_();
  42.                 _nop_();
  43.                 SRCLK=0;        
  44.         }

  45.         RCLK=1;
  46.         _nop_();
  47.         _nop_();
  48.         RCLK=0;
  49. }



  50. void main()
  51. {                        
  52.         u8 i;        
  53.                 u16 r;
  54.                 u16 j;
  55.       while(1)
  56.       {
  57.                   for(r = 0; r < 80; r++)
  58.                   {
  59.                 P0=0x7f;
  60.                                                    
  61.                 for(i=0;i<8;i++)
  62.                 {
  63.                   switch(i)  
  64.                                   {
  65.                                 case 0:  IA=0;IB=0;IC=0; break;               //Hc138行扫描
  66.                                 case 1:  IA=1;IB=0;IC=0; break;
  67.                                 case 2:  IA=0;IB=1;IC=0; break;
  68.                                 case 3:  IA=1;IB=1;IC=0; break;
  69.                                 case 4:  IA=0;IB=0;IC=1; break;
  70.                                 case 5:  IA=1;IB=0;IC=1; break;
  71.                                 case 6:  IA=0;IB=1;IC=1; break;
  72.                                 case 7:  IA=1;IB=1;IC=1; break;
  73.                                   }   
  74.                   Hc595SendByte(ledduan[j][i]);               
  75.                         delay(100);                   //延时
  76.                         Hc595SendByte(0x00);  //消隐
  77.                 }
  78.                         
  79.                    }
  80.                   
  81.                         j++;                                // 字符轮流输出
  82.                 if(j == 3)
  83.                 {
  84.                         j = 0;
  85.                  }
  86.                     
  87.       }               
  88. }
复制代码


回复

使用道具 举报

ID:486353 发表于 2019-5-20 21:50 来自手机 | 显示全部楼层
谢谢你,这个很有用。
回复

使用道具 举报

ID:485432 发表于 2019-6-3 13:01 | 显示全部楼层
楼主,能发下两个74HC595和一个8*8点阵如何连接,我搞不懂引脚图,我邮箱1767020292@qq.com
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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