普中开源电子分享网

 找回密码
 立即注册
搜索
楼主: xzf586

关于16*16点阵液晶显示问题

 关闭 [复制链接]

15

主题

196

帖子

503

积分

高级会员

Rank: 4

积分
503
 楼主| 发表于 2017-9-20 11:26:11 | 显示全部楼层
本帖最后由 xzf586 于 2017-9-20 11:39 编辑

静态显示汉字程序,关键就在
for(k = 0; k < 16; k++)                                                                                
          {         
               HC595SendData(~TAB[2*k +1],~TAB[2*k],tab0[2*k],tab0[2*k + 1]);                     
          }
k=0 tab0[0]=0x00,U5控制,tab0[1]=0x01,U4控制,扫描第一行,
第一行行代码:1-8列TAB[0],U16控制,9-16列TAB[1],U17控制
因此汉字取模,从左到右,从上到下 , 即横向取模,右高位
以此类推,K=1。。。。。。            
回复 支持 反对

使用道具 举报

15

主题

196

帖子

503

积分

高级会员

Rank: 4

积分
503
 楼主| 发表于 2017-9-20 11:28:05 | 显示全部楼层
上面的汉字还没有动起来,如何移动?
不过这个论坛很冷清,不想讲了!
回复 支持 反对

使用道具 举报

0

主题

16

帖子

42

积分

新手上路

Rank: 1

积分
42
发表于 2017-9-20 22:01:40 | 显示全部楼层
老哥还是不是很懂
回复 支持 反对

使用道具 举报

15

主题

196

帖子

503

积分

高级会员

Rank: 4

积分
503
 楼主| 发表于 2017-9-20 22:40:27 | 显示全部楼层
wwf 发表于 2017-9-20 22:01
老哥还是不是很懂

静听建议,也是接触时间不长,业余时间弄弄!
回复 支持 反对

使用道具 举报

0

主题

16

帖子

42

积分

新手上路

Rank: 1

积分
42
发表于 2017-9-20 23:01:33 | 显示全部楼层
xzf586 发表于 2017-9-20 22:40
静听建议,也是接触时间不长,业余时间弄弄!

老哥我想知道怎么让它流动显示
回复 支持 反对

使用道具 举报

15

主题

196

帖子

503

积分

高级会员

Rank: 4

积分
503
 楼主| 发表于 2017-9-21 13:16:06 | 显示全部楼层
本帖最后由 xzf586 于 2017-9-21 13:18 编辑
wwf 发表于 2017-9-20 23:01
老哥我想知道怎么让它流动显示

建立一个显示缓存数组变量,每次要显示的放入其中,行扫描上下移动比较利于编程,列扫描,左右移动较方便,这是原则,否则逻辑关系就很复杂
回复 支持 反对

使用道具 举报

0

主题

16

帖子

42

积分

新手上路

Rank: 1

积分
42
发表于 2017-9-21 13:37:12 | 显示全部楼层
老铁我才学这东西没多久还是弄不来啊,试了试
回复 支持 反对

使用道具 举报

15

主题

196

帖子

503

积分

高级会员

Rank: 4

积分
503
 楼主| 发表于 2017-9-21 15:53:18 | 显示全部楼层
本帖最后由 xzf586 于 2017-9-21 16:10 编辑
wwf 发表于 2017-9-21 13:37
老铁我才学这东西没多久还是弄不来啊,试了试

/*******************************************************************************
*                 
*                                        普中科技
--------------------------------------------------------------------------------
* 实 验 名        : LED点阵显示汉字
* 实验说明       :
* 连接方式       : 见接线图
* 注    意                 :
*******************************************************************************/

#include <REG51.H>

//--重定义函数变量--//
#define uchar unsigned char

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


//点阵显示数组
uchar code tab0[] = {
0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,//1-8行
0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00 //9-16行
                     };
                     
uchar code tab[] =                                 //为了显示方便,弄到一起来
{
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,                    // 缓冲
     0,8,254,31,16,2,16,2,16,2,16,18,255,63,16,2,16,2,16,2,16,2,8,2,4,2,3,2,0,0,0,0,            //开
     32,2,36,4,36,4,34,16,254,63,32,0,224,15,80,8,80,4,136,2,8,1,132,2,98,60,29,16,0,0,0,0,     //发
     4,8,4,30,196,1,95,0,196,15,68,8,78,9,86,9,69,5,69,5,68,2,36,5,164,56,84,16,0,0,0,0,        //板
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,                    // 缓冲
};


uchar distab[32];            //为了利于编程,定义显示缓存变量
uchar index=0;                  //记录每次显示的16行的起始行,思路关键



/*******************************************************************************
* 函 数 名         : HC595SendData
* 函数功能                   : 通过595发送四个字节的数据
* 输    入         : BT3:第四个595输出数值
*                  * BT2: 第三个595输出数值
*                  * BT1:第二个595输出数值
*                  * BT0:第一个595输出数值
* 输    出         : 无
*******************************************************************************/
void HC595MoveData(uchar dat)   //--移位一个字节,从高到低--//
{
     uchar i;        
        for(i=0;i<8;i++)
        {
                MOSIO = dat >> 7 ;        //从高位到低位
                dat <<= 1;
                S_CLK = 0;
                S_CLK = 1;               
        }
}

void HC595SendData(uchar DuanU17, uchar DuanU16,uchar WeiU5,uchar WeiU4)
{  
        HC595MoveData(DuanU17);       //控制点阵的c9~c16脚,9-16行代码
     HC595MoveData(DuanU16);       //控制点阵的c1~c8脚  1-8行代码  低电平亮灯
     HC595MoveData(WeiU5);         //控制点阵的R9~R16脚  9-16行扫描  高电平亮灯
     HC595MoveData(WeiU4);         //控制点阵的R1~R8脚  1-8行扫描  高电平亮灯
        
        R_CLK = 0;
        R_CLK = 1; //--输出--//
        R_CLK = 0;
}

void DisplayOneChar(uchar TAB[32])
{
     int k, i, ms;
     i =40;                                                                //显示时间
     for(ms = i; ms > 0; ms--)
     {
          for(k = 0; k < 16; k++)                                                                                
          {         
               HC595SendData(~TAB[2*k +1],~TAB[2*k],tab0[2*k],tab0[2*k + 1]);
          }                  
     }
     HC595SendData(0xff,0xff,0,0);        //清屏
}

void MoveUp()
{
     uchar i;
     for(i=0;i<32;i++)
     {
          distab=tab[(i+index)];
     }
           DisplayOneChar(distab);
}

                                                                                                                                                                                       
/*************主函数*****************************/        

void main(void)
{
     while(1)
     {
          HC595SendData(0xff,0xff,0,0);        //清屏
          MoveUp();
          index++;
          if(index==128)
          index=0;
      }
}
            
回复 支持 1 反对 0

使用道具 举报

15

主题

196

帖子

503

积分

高级会员

Rank: 4

积分
503
 楼主| 发表于 2017-9-21 15:54:25 | 显示全部楼层
本帖最后由 xzf586 于 2017-9-21 16:39 编辑
xzf586 发表于 2017-9-21 15:53
/*******************************************************************************
*                ...

上面程序留点bug,有兴趣就修改一下,仔细分析就可以找出来,在此卖个关子!找到了,我就将上下移动完整程序全部放出来
回复 支持 反对

使用道具 举报

0

主题

16

帖子

42

积分

新手上路

Rank: 1

积分
42
发表于 2017-9-21 17:30:58 | 显示全部楼层
xzf586 发表于 2017-9-21 15:53
/*******************************************************************************
*                ...

老铁有语法错误
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-6 11:35 , Processed in 0.102179 second(s), 28 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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