找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6132|回复: 3
收起左侧

16X16点阵led汉字纵向移屏显示程序

[复制链接]
ID:143843 发表于 2016-10-21 23:12 | 显示全部楼层 |阅读模式
因为只有纵向,没有实现其他的太多功能,但也可以了解一下对点阵led的实现方法下载:
5、16X16 汉字纵向移屏.rar (80.5 KB, 下载次数: 82)
  1. /*******************************************************************************
  2. *
  3. --------------------------------------------------------------------------------
  4. * 实 验 名                 : 汉字移动显示
  5. * 实验说明       :
  6. * 连接方式       : 见接线图
  7. * 注    意                 :
  8. *******************************************************************************/

  9. #include <REG51.H>
  10. #include <intrins.h>
  11. #include "array.h"

  12. //--重定义函数变量--//
  13. #define uchar unsigned char
  14. #define uint  unsigned int
  15. #define ulong unsigned long

  16. //--定义SPI要使用的 IO--//
  17. sbit MOSIO = P3^4;
  18. sbit R_CLK = P3^5;
  19. sbit S_CLK = P3^6;

  20. //--全局函数声明--//
  21. void HC595SendData(  uchar BT3, uchar BT2,uchar BT1,uchar BT0);
  22.                                                                                                                                                                                        
  23. /*******************************************************************************
  24. * 函 数 名         : main
  25. * 函数功能                   : 主函数
  26. * 输    入         : 无
  27. * 输    出         : 无
  28. *******************************************************************************/

  29. void main(void)
  30. {   
  31.         int k, j, ms;
  32.         
  33.         //--定义一个指针数组指向每个汉字--//
  34.         uchar *p[] =
  35.                     {tab17, tab1, tab2, tab3, tab4, tab5, tab6, tab7, tab8,
  36.                      tab9, tab10, tab11, tab12, tab13, tab14, tab15, tab16};                                                
  37.         while(1)
  38.         {

  39.                 for(ms = 20; ms > 0; ms--)        //移动定格时间设置
  40.                 {
  41.                         for(k = 0; k < 16; k++)        //显示一个字
  42.                         {                                                         
  43.                                 HC595SendData(~(*(p[0] + 2*(k+j) + 1)),~(*(p[0] + 2*(k+j) )),tab0[2*k],tab0[2*k + 1]); //因为字模软件取的数组是高电平有效,所以列要取反                    
  44.                         }
  45.                         
  46.                         //--清屏--//
  47.                         HC595SendData(0xff,0xff,0,0);                                                                                   //清屏                 
  48.                 }

  49.                
  50.                 j++;
  51.                 if(j == (17*15) )
  52.                 {
  53.                         j = 0;
  54.                 }
  55.                
  56.         }                                                                              
  57. }

  58. /*******************************************************************************
  59. * 函 数 名         : HC595SendData
  60. * 函数功能                   : 通过595发送四个字节的数据
  61. * 输    入         : BT3:第四个595输出数值
  62. *                  * BT2: 第三个595输出数值
  63. *                  * BT1:第二个595输出数值
  64. *                  * BT0:第一个595输出数值
  65. * 输    出         : 无
  66. *******************************************************************************/

  67. void HC595SendData(  uchar BT3, uchar BT2,uchar BT1,uchar BT0)
  68. {  
  69.         uchar i;
  70.         
  71.         //--发送第一个字节--//
  72.         for(i=0;i<8;i++)
  73.         {
  74.                 MOSIO = BT3 >> 7 ;        //从高位到低位
  75.                 BT3 <<= 1;

  76.                 S_CLK = 0;
  77.                 S_CLK = 1;               
  78.         }

  79.         //--发送第一个字节--//
  80.         for(i=0;i<8;i++)
  81.         {
  82.                 MOSIO = BT2 >>7;                //从高位到低位
  83.                 BT2 <<= 1;

  84.                 S_CLK = 0;
  85.                 S_CLK = 1;        
  86.         }

  87.         //--发送第一个字节--//
  88.         for(i=0;i<8;i++)
  89.         {
  90.                 MOSIO = BT1 >> 7;                //从高位到低位
  91.                 BT1 <<= 1;
  92.                 S_CLK = 0;
  93.                 S_CLK = 1;        
  94.         }

  95.         //--发送第一个字节--//
  96.         for(i=0;i<8;i++)
  97.         {
  98.                 MOSIO = BT0 >> 7;                //从高位到低位
  99.                 BT0 <<= 1;
  100.                 S_CLK = 0;
  101.                 S_CLK = 1;
  102.         }

  103.         //--输出--//
  104.         R_CLK = 0; //set dataline low
  105.         R_CLK = 1; //片选
  106.         R_CLK = 0; //set dataline low
  107. }
复制代码





评分

参与人数 1黑币 +60 收起 理由
51hei学习技术中 + 60 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:137876 发表于 2017-7-17 09:38 | 显示全部楼层
因为只有纵向,没有实现其他的太多功能,但也可以了解一下对点阵led的实现方法下载:
回复

使用道具 举报

ID:137876 发表于 2017-11-10 21:35 | 显示全部楼层
什么时候能学会?
回复

使用道具 举报

ID:506767 发表于 2019-4-8 10:24 | 显示全部楼层
支持一下,支持支持
回复

使用道具 举报

5#
无效楼层,该帖已经被删除
6#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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