普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 10044|回复: 13

求教!

 关闭 [复制链接]

4

主题

36

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2018-1-18 21:56:53 | 显示全部楼层 |阅读模式
如何做到点阵移动或顺次逐个显示多个汉字?
回复

使用道具 举报

4

主题

36

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2018-1-18 21:57:39 | 显示全部楼层
移动显示更好,顺次逐个显示也行。
回复 支持 反对

使用道具 举报

4

主题

36

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2018-1-18 21:58:01 | 显示全部楼层
哪位大神可以帮帮忙!
回复 支持 反对

使用道具 举报

20

主题

1344

帖子

8379

积分

论坛元老

Rank: 8Rank: 8

积分
8379
发表于 2018-1-19 08:26:45 | 显示全部楼层

这个程序,是普中HC800-EM3-V3.0板子的16*16点阵显示汉字,且向上移动的例程,你看看吧。
/*******************************************************************************
*                 
*                                        普中科技
--------------------------------------------------------------------------------
* 实 验 名                 : 汉字移动显示
* 实验说明       :
* 连接方式       : 见接线图
* 注    意                 :
*******************************************************************************/

#include <REG51.H>
#include <intrins.h>
#include "array.h"

//--重定义函数变量--//
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long

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

//--全局函数声明--//
void HC595SendData(  uchar BT3, uchar BT2,uchar BT1,uchar BT0);
                                                                                                                                                                                       
/*******************************************************************************
* 函 数 名         : main
* 函数功能                   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

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

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

               
                j++;
                if(j == (17*15) )
                {
                        j = 0;
                }
               
        }                                                                               
}

/*******************************************************************************
* 函 数 名         : HC595SendData
* 函数功能                   : 通过595发送四个字节的数据
* 输    入         : BT3:第四个595输出数值
*                  * BT2: 第三个595输出数值
*                  * BT1:第二个595输出数值
*                  * BT0:第一个595输出数值
* 输    出         : 无
*******************************************************************************/

void HC595SendData(  uchar BT3, uchar BT2,uchar BT1,uchar BT0)
{  
        uchar i;
       
        //--发送第一个字节--//
        for(i=0;i<8;i++)
        {
                MOSIO = BT3 >> 7 ;        //从高位到低位
                BT3 <<= 1;

                S_CLK = 0;
                S_CLK = 1;               
        }

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

                S_CLK = 0;
                S_CLK = 1;       
        }

        //--发送第一个字节--//
        for(i=0;i<8;i++)
        {
                MOSIO = BT1 >> 7;                //从高位到低位
                BT1 <<= 1;
                S_CLK = 0;
                S_CLK = 1;       
        }

        //--发送第一个字节--//
        for(i=0;i<8;i++)
        {
                MOSIO = BT0 >> 7;                //从高位到低位
                BT0 <<= 1;
                S_CLK = 0;
                S_CLK = 1;
        }

        //--输出--//
        R_CLK = 0; //set dataline low
        R_CLK = 1; //片选
        R_CLK = 0; //set dataline low
}
我只有程序,没有板子,如果你是这块板子,可以试试,注意接线。

如果你不是这块板子,那么,就学习方法吧。
回复 支持 反对

使用道具 举报

4

主题

36

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2018-1-20 22:26:49 | 显示全部楼层
HC6800-ES-V2.0 发表于 2018-1-19 08:26
这个程序,是普中HC800-EM3-V3.0板子的16*16点阵显示汉字,且向上移动的例程,你看看吧。
/************ ...

大神,您的程序好像有点问题呢。
Build target 'Target 1'
compiling main.c...
main.c(3): warning C318: can't open file 'array.h'
MAIN.C(31): error C202: 'tab17': undefined identifier
MAIN.C(31): error C202: 'tab1': undefined identifier
MAIN.C(31): error C202: 'tab2': undefined identifier
MAIN.C(31): error C202: 'tab3': undefined identifier
MAIN.C(31): error C202: 'tab4': undefined identifier
MAIN.C(31): error C202: 'tab5': undefined identifier
MAIN.C(31): error C202: 'tab6': undefined identifier
MAIN.C(31): error C202: 'tab7': undefined identifier
MAIN.C(31): error C202: 'tab8': undefined identifier
MAIN.C(32): error C202: 'tab9': undefined identifier
MAIN.C(32): error C202: 'tab10': undefined identifier
MAIN.C(32): error C202: 'tab11': undefined identifier
MAIN.C(32): error C202: 'tab12': undefined identifier
MAIN.C(32): error C202: 'tab13': undefined identifier
MAIN.C(32): error C202: 'tab14': undefined identifier
MAIN.C(32): error C202: 'tab15': undefined identifier
MAIN.C(32): error C202: 'tab16': undefined identifier
MAIN.C(40): error C202: 'tab0': undefined identifier
Target not created
回复 支持 反对

使用道具 举报

4

主题

36

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2018-1-20 22:27:09 | 显示全部楼层
这是怎么回事呢?
回复 支持 反对

使用道具 举报

20

主题

1344

帖子

8379

积分

论坛元老

Rank: 8Rank: 8

积分
8379
发表于 2018-1-21 13:51:05 | 显示全部楼层

对不起,我没看仔细的原固。
少发了一个头文件:array.h
内容如下:
//点阵显示数组
unsigned char code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,
                             0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00};

unsigned char code tab17[] = {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};

unsigned char code tab1[] = {64,0,128,8,254,31,16,2,32,1,255,63,64,0,64,0,254,31,64,0,72,6,68,8,82,16,32,0,0,0,0,0};

unsigned char code tab2[] = {0,14,252,1,72,8,144,4,254,63,2,16,33,8,252,31,32,0,224,7,80,2,136,1,68,2,58,28,0,0,0,0};

unsigned char code tab3[] = {8,2,8,2,4,17,62,63,162,16,98,16,34,17,62,18,34,18,34,16,34,16,34,16,62,10,34,4,0,0,0,0};

unsigned char code tab4[] = {0,16,190,63,2,2,186,31,170,16,170,20,170,20,186,20,138,20,138,20,170,20,26,10,1,49,193,32,0,0,0,0};

unsigned char code tab5[] = {64,0,128,0,254,31,34,16,241,11,40,2,68,1,192,1,32,2,248,63,23,4,16,4,16,4,240,7,0,0,0,0};

unsigned char code tab6[] = {0,1,0,1,63,1,32,63,162,32,148,18,84,2,8,2,8,2,20,5,36,5,162,8,65,16,32,32,0,0,0,0};

unsigned char code tab7[] = {2,1,196,16,36,62,32,18,32,18,39,18,36,18,164,18,100,18,36,26,4,2,10,2,49,0,192,63,0,0,0,0};

unsigned char code tab8[] = {16,2,16,18,232,63,8,2,204,31,74,18,73,18,200,31,8,18,72,2,136,2,8,1,136,6,104,56,0,0,0,0};

unsigned char code tab9[] = {0,8,252,31,132,8,132,8,252,15,132,8,132,8,132,8,252,15,132,8,132,8,130,8,130,10,129,4,0,0,0,0};

unsigned char code tab10[] = {16,2,32,1,254,31,32,1,36,9,40,5,255,63,0,0,248,7,8,4,248,7,8,4,8,4,248,7,0,0,0,0}        ;

unsigned char code tab11[] = {64,0,64,0,64,8,254,31,66,8,66,8,66,8,66,8,254,15,64,0,64,0,64,0,64,0,64,0,0,0,0,0};

unsigned char code tab12[] = {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};

unsigned char code tab13[] = {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};

unsigned char code tab14[] = {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};

unsigned char code tab15[] = {0,0,0,0,60,240,102,156,67,130,0,0,0,0,0,0,0,0,0,0,48,24,96,8,192,7,0,0,0,0,0,0};

unsigned char code tab16[] = {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};
回复 支持 反对

使用道具 举报

4

主题

36

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2018-1-22 09:07:02 | 显示全部楼层
HC6800-ES-V2.0 发表于 2018-1-21 13:51
对不起,我没看仔细的原固。
少发了一个头文件:array.h
内容如下:

谢谢。把这个补到前面还是后面?
回复 支持 反对

使用道具 举报

1

主题

9

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2018-1-22 16:01:58 | 显示全部楼层
科技爱好者 发表于 2018-1-22 09:07
谢谢。把这个补到前面还是后面?

补到最上面啊,头文件意思就是标头
  

#include<array.h>
回复 支持 反对

使用道具 举报

4

主题

36

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2018-1-22 17:34:07 | 显示全部楼层
1453324485 发表于 2018-1-22 16:01
补到最上面啊,头文件意思就是标头
  

要补unsigned char code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,
                             0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00};

unsigned char code tab17[] = {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};

unsigned char code tab1[] = {64,0,128,8,254,31,16,2,32,1,255,63,64,0,64,0,254,31,64,0,72,6,68,8,82,16,32,0,0,0,0,0};

unsigned char code tab2[] = {0,14,252,1,72,8,144,4,254,63,2,16,33,8,252,31,32,0,224,7,80,2,136,1,68,2,58,28,0,0,0,0};

unsigned char code tab3[] = {8,2,8,2,4,17,62,63,162,16,98,16,34,17,62,18,34,18,34,16,34,16,34,16,62,10,34,4,0,0,0,0};

unsigned char code tab4[] = {0,16,190,63,2,2,186,31,170,16,170,20,170,20,186,20,138,20,138,20,170,20,26,10,1,49,193,32,0,0,0,0};

unsigned char code tab5[] = {64,0,128,0,254,31,34,16,241,11,40,2,68,1,192,1,32,2,248,63,23,4,16,4,16,4,240,7,0,0,0,0};

unsigned char code tab6[] = {0,1,0,1,63,1,32,63,162,32,148,18,84,2,8,2,8,2,20,5,36,5,162,8,65,16,32,32,0,0,0,0};

unsigned char code tab7[] = {2,1,196,16,36,62,32,18,32,18,39,18,36,18,164,18,100,18,36,26,4,2,10,2,49,0,192,63,0,0,0,0};

unsigned char code tab8[] = {16,2,16,18,232,63,8,2,204,31,74,18,73,18,200,31,8,18,72,2,136,2,8,1,136,6,104,56,0,0,0,0};

unsigned char code tab9[] = {0,8,252,31,132,8,132,8,252,15,132,8,132,8,132,8,252,15,132,8,132,8,130,8,130,10,129,4,0,0,0,0};

unsigned char code tab10[] = {16,2,32,1,254,31,32,1,36,9,40,5,255,63,0,0,248,7,8,4,248,7,8,4,8,4,248,7,0,0,0,0}        ;

unsigned char code tab11[] = {64,0,64,0,64,8,254,31,66,8,66,8,66,8,66,8,254,15,64,0,64,0,64,0,64,0,64,0,0,0,0,0};

unsigned char code tab12[] = {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};

unsigned char code tab13[] = {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};

unsigned char code tab14[] = {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};

unsigned char code tab15[] = {0,0,0,0,60,240,102,156,67,130,0,0,0,0,0,0,0,0,0,0,48,24,96,8,192,7,0,0,0,0,0,0};

unsigned char code tab16[] = {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};
可是只补一句是什么意思?
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-4-25 21:40 , Processed in 0.090777 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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