长汀无线电厂交流论坛

 找回密码
 注册
查看: 4439|回复: 23
打印 上一主题 下一主题

大家看看显示这样是什么问题

  [复制链接]
跳转到指定楼层
5#
 楼主| 发表于 2011-3-23 15:44:04 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式


16x80的led点阵屏   显示看起来像重影,具体看图。不懂是什么问题,请大家帮忙下

回复

使用道具 举报

24#
 楼主| 发表于 2011-3-27 00:20:23 | 只看该作者
// A B C D 对应P1.0; P1.1 ; P1.2; P1.3
//--------------------------------
#include "reg52.h"
#include <intrins.h>
#define  uchar unsigned char
#define  uint  unsigned int
sbit  CLK =P1^5 ;                  //74HC595移时钟
sbit  STB =P1^4        ;          // 74HC595锁存信号
sbit  Red=P1^6        ;          //红色数据输出引脚低电平有效            
sbit  Greed=P1^7;         //全屏控制使能0,低电平有效
sbit  OE = P0^0;           //全屏使能
uchar SendData;                  //要发送的数据变量

uchar hang;        //行扫描变量  (半屏只有16行,所以hang=0到15)
       


uchar code zhong[]=
                               
                                {
0x00,0x00,0x01,0x80,0x20,0x86,0x3F,0xFE,0x60,0x1C,0x1F,0xF8,0x07,0x18,0x0D,0xB8,0x33,0xE0,0x06,0xF0,0x19,0xD0,0x63,0x58,0x0C,0x4E,0x3A,0xC4,0x41,0xC0,0x00,0x00
                                        };       

uchar code guo[]=
                               
                                {
0x00,0x00,0x01,0x80,0x01,0x80,0x3F,0xF8,0x3F,0xF8,0x31,0x98,0x3F,0xF8,0x3F,0xF8,0x31,0x98,0x31,0x98,0x3F,0xF8,0x01,0x80,0x01,0x87,0x01,0xFE,0x00,0xFC,0x00,0x00

                                        };       

uchar code ren[]=
                               
                                {
        0x00,0x80,0x18,0xF0,0x18,0xD8,0x35,0x96,0x27,0xFE,0x6D,0xB0,0x7B,0xB4,0x5B,0xFE,0x11,0xB0,0x3F,0xB4,0x31,0xFE,0x07,0xB0,0x3D,0xB2,0x71,0xFF,0x01,0x80,0x01,0x00
                                        };       

uchar code min[]=
                               
                                {
       
0x08,0x40,0x1C,0xE0,0x18,0xC4,0x1C,0xFC,0x35,0x58,0x37,0x70,0x74,0x78,0x55,0xAF,0x17,0x70,0x14,0xF8,0x15,0xB8,0x16,0x6E,0x15,0xDC,0x13,0x70,0x17,0xC0,0x0C,0x00
                                        };       

uchar code zhu[]=
                               
                                {
       
0x00,0x00,0x0C,0x00,0x06,0xBE,0x7F,0xE6,0x33,0x24,0x1B,0x24,0x1A,0x2C,0x7F,0xEC,0x21,0x24,0x3F,0xA6,0x31,0x22,0x31,0x3E,0x3F,0x2E,0x31,0x20,0x31,0x20,0x00,0x20
                                        };       



        //------------------------------------
        //----------字发送子程序-----------


        void SendByte()
                {
                   uchar m;
                   for(m=0;m<8;m++)
                   {
                                   CLK = 0;
                                Red =(SendData & 0x80);                  //红屏显示
                            Greed =0;//(SendData & 0x80);                  //红屏显示
                                  SendData =SendData<<1;                       
                                CLK = 1;          //移位时钟上升沿
                  
                   }
                }

       
           //-----------------------------------
           //----------行扫描子程序-------------
           void RowsCan(void)
           {
                        if (hang>=16)
                        {
                                hang =0x00;
                        }
                       
                        P1 = P1 & 0xf0;
                        P1 = P1 | hang;
                        hang++;

                }
   

            //---------------------------------------
                //----------初始化-----------------

                void initial(void)
                   {
                          OE = 1;
                        Red = 1;
                        Greed = 1;
                        SendData = 0x00;
                        hang = 0x00;
                                                       
                 }
                //;---------主程序循环--------------
                   void main()
                {
                        
                        int m,t=0;
                        int k=0;
                        initial();
                        while(1)
                        {       
             
      
                  
                        for(m=t;m<2+t;m++)///////////
         {
                        SendData=zhong[m];
                        SendByte();
       
         }

                for(m=t;m<2+t;m++)//////////////////////
         {
                        SendData=guo[m];
                        SendByte();
       
         }
                for(m=t;m<2+t;m++)//////////////////////////////////
         {
                        SendData=ren[m];
                         
                        SendByte();
       
         }
                for(m=t;m<2+t;m++)//////////////////
         {
                        SendData=min[m];
                         
                        SendByte();
       
         }
                for(m=t;m<2+t;m++)/////////////////////////
         {       
                        SendData=zhu[m];
                       
                        SendByte();
       
         }
   
       
                        OE = 1;
                        RowsCan();                //行扫描
                        STB = 0;
                                STB =1;                 //上升沿数据锁存        
                                OE = 0;
                       
                                    t=t+2;
                                        if(t==32)
                                        {t=0;}
                        }
                 }


这是静态显示的程序,可以帮我在这改吗?我真的看不懂
回复 支持 反对

使用道具 举报

23#
发表于 2011-3-26 23:24:00 | 只看该作者
我上面的帖子中的横线是系统加上的。那些字也是有效的。
回复 支持 反对

使用道具 举报

22#
发表于 2011-3-26 23:12:17 | 只看该作者
本帖最后由 山东人 于 2011-3-26 23:22 编辑
zhujianfeng 发表于 2011-3-26 13:17
现在主要是移屏的问题了,我不会,谁帮帮我。。。。。。。。。
左移部分
void in_data(void)
{
char s;
        for(s=8;s>=0;s--)                        //h为向后先择字节计数器,zimuoo为向后先字计数器
        {
         BUFF[2*s+1]=hanzi[zimuo+32*s+2*h];                         //把第一个字模的第一个字节放入BUFF0中,第二个字模的第一个字节放入BUFF2中
         BUFF[2*s]=hanzi[zimuo+1+32*s+2*h];            // 把第一个字模的第二个字节放入BUFF1中,第二个字模的第二个字节放入BUFF3中
        }
}
void rxd_data(void)              //串行发送数据
{
  char s;
  uchar inc,tempyid,temp;
  if(yid<8)
    inc=0;
  else
    inc=1;
  for(s=0+inc;s<16+inc;s++)      //发送8字节数据
{
   if(yid<8)
     tempyid=yid;
      else
    tempyid=yid-8;
    temp=(BUFF>>tempyid)|(BUFF[s+1]<<(8-tempyid)); //h1右移tempyid位后和h2左移8-tempyid相或,取出移位后的数据。
   SBUF=temp;//把BUFF中的字节从大到小移位相或后发送输出。
再结合着蓝绿黄兄弟所说的道理想想就懂了。

回复 支持 反对

使用道具 举报

21#
发表于 2011-3-26 22:45:54 | 只看该作者
zhujianfeng 发表于 2011-3-26 21:38
找你的方法写,不行,嘻嘻。动都不动

那个N是要变化的啊,从1~8
回复 支持 反对

使用道具 举报

20#
 楼主| 发表于 2011-3-26 21:38:17 | 只看该作者
蓝绿黄 发表于 2011-3-26 17:21
拿笔在纸上推算推算,很快就会明白的

找你的方法写,不行,嘻嘻。动都不动
回复 支持 反对

使用道具 举报

19#
发表于 2011-3-26 17:21:14 | 只看该作者
拿笔在纸上推算推算,很快就会明白的
回复 支持 反对

使用道具 举报

18#
发表于 2011-3-26 17:19:56 | 只看该作者
zhujianfeng 发表于 2011-3-26 13:39
第一个字节左移N位,第二个字节右移(8-N)位,那第三位呢?第四位呢?。。。。。。。

以此类推啊,第2个字节左移N位,第3个字节右移(8-N)位。。。。。。
回复 支持 反对

使用道具 举报

17#
 楼主| 发表于 2011-3-26 13:39:21 | 只看该作者
蓝绿黄 发表于 2011-3-24 13:12
左移的算法是:
同一行,以字节为单位(如16*64的屏,每一行就有8字节)。如果要实现左移N列,那么就是第1 ...

第一个字节左移N位,第二个字节右移(8-N)位,那第三位呢?第四位呢?。。。。。。。
回复 支持 反对

使用道具 举报

16#
 楼主| 发表于 2011-3-26 13:17:58 | 只看该作者
现在主要是移屏的问题了,我不会,谁帮帮我。。。。。。。。。
回复 支持 反对

使用道具 举报

15#
发表于 2011-3-26 09:02:45 | 只看该作者
我不会C,个人认为产生鬼影可能和和程序有关。假设列扫描,送入数据后,廷时,关断,再送入数据,如此循环。个人推测的,请前辈指点。
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2011-3-24 15:08:27 | 只看该作者
还有就是现在闪得厉害,是不是字摸的问题,我看别人的都是用二维数组的,不过我不懂二维数组,不知道该怎么解决了。
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2011-3-24 14:46:38 | 只看该作者
                OE = 1;
        RowsCan();                //行扫描
           STB = 0;
                STB =1;                 //上升沿数据锁存        
                OE = 0;

这样改好多了,不过第一行还有一点点淡淡的亮
回复 支持 反对

使用道具 举报

12#
 楼主| 发表于 2011-3-24 13:56:22 | 只看该作者
lyxing 发表于 2011-3-24 13:25
此处改下试试:  
              while(1)
                   {        

无效。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

11#
发表于 2011-3-24 13:25:46 | 只看该作者
此处改下试试:  
              while(1)
                   {        
                  STB = 0;
                  OE=1;       //先关断再发送数据试试
回复 支持 反对

使用道具 举报

10#
发表于 2011-3-24 13:12:33 | 只看该作者
左移的算法是:
同一行,以字节为单位(如16*64的屏,每一行就有8字节)。如果要实现左移N列,那么就是第1字节左移N位,第2字节右移(8-N)位。把得到两个结果进行或运算。把或运算的结果作为第1字节重新发送到屏幕进行显示。

不知道我这样有没有表达清楚~~~~
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2011-3-24 10:23:06 | 只看该作者
老毛子 发表于 2011-3-24 09:19
是字模问题

怎么说,帮改下啊,还有这么左移?
回复 支持 反对

使用道具 举报

8#
发表于 2011-3-24 09:19:21 | 只看该作者
是字模问题
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2011-3-23 16:52:08 | 只看该作者
我的是静止的,没有移动
回复 支持 反对

使用道具 举报

6#
发表于 2011-3-23 16:42:21 | 只看该作者
本帖最后由 lihongran 于 2011-3-23 16:47 编辑

回复 zhujianfeng 的帖子

那应该是移动太快所致,将移动速度降一些试试~~我的移动快了也是这样的
这跟行扫描的速度有关。



回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|Archiver|长汀无线电厂交流论坛  

GMT+8, 2024-5-21 04:26 , Processed in 0.845344 second(s), 21 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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