长汀无线电厂交流论坛

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

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

  [复制链接]
楼主
发表于 2011-3-23 18:59:34 | 只看该作者
zhujianfeng 发表于 2011-3-23 16:52
我的是静止的,没有移动

帖你的图及程序上来吧
回复 支持 反对

使用道具 举报

沙发
发表于 2011-3-23 19:06:10 | 只看该作者
应该是时序上的问题
换行(列)扫描的时候切换太快
回复 支持 反对

使用道具 举报

板凳
发表于 2011-3-23 21:31:26 | 只看该作者
估计是程序的问题
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2011-3-24 08:32:46 | 只看该作者
本帖最后由 zhujianfeng 于 2011-3-24 08:33 编辑

这是程序,帮看下


// 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
void Keyscan (void); //修改参数按键扫描子程序
void  Sendping(); //发送半屏子程序
sbit  CLK =P1^5 ;                  //74HC595移时钟
sbit  STB =P1^4        ;          // 74HC595锁存信号
sbit  Red=P1^6        ;          //红色数据输出引脚低电平有效            
sbit  Greed=P1^7;         //全屏控制使能0,低电平有效
sbit  OE = P0^7;           //全屏使能
uchar SendData;                  //要发送的数据变量
uchar hang;        //行扫描变量  (半屏只有16行,所以hang=0到15)
void delay()
{
        uint i;
        for(i=0;i<2;i++);

}               


uchar code zhong[]=
                                
                                {
0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x3F,0xFC,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x3F,0xFC,0x31,0x8C,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00
                                        };        

uchar code guo[]=
                                
                                {
        0x00,0x00,0x00,0x00,0x3F,0xFE,0x20,0x06,0x2F,0xF6,0x21,0x86,0x21,0x86,0x27,0xF6,0x21,0xA6,0x21,0xA6,0x2F,0xF6,0x2F,0xFE,0x20,0x06,0x3F,0xFE,0x20,0x06,0x00,0x00
                                        };        

uchar code ren[]=
                                
                                {
        
0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x80,0x03,0xC0,0x02,0x40,0x06,0x60,0x0C,0x30,0x18,0x18,0x78,0x0E,0x20,0x06,0x00,0x00
                                        };        

uchar code min[]=
                                
                                {
        
0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x80,0x03,0xC0,0x02,0x40,0x06,0x60,0x0C,0x30,0x18,0x18,0x78,0x0E,0x20,0x06,0x00,0x00
                                        };        

uchar code zhu[]=
                                
                                {
        
0x01,0x80,0x19,0x80,0x19,0x80,0x1F,0xF8,0x3F,0xF8,0x31,0x80,0x01,0x80,0x7F,0xFE,0x03,0xC0,0x07,0xE0,0x0D,0xA0,0x19,0xB8,0x39,0x9C,0x71,0x8E,0x01,0x80,0x00,0x00
                                        };        



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

void delays(int s)
{
   int i,j;
        for(i=s;i>0;i--)
         for(j=110;j>0;j--);

}        


        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;
                        initial();
                        while(1)
                        {        
              STB = 0;
                        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();
               
         }

                   t=t+2;
                        if(t==32)
                        {t=0;}

               
                        STB =1;                 //上升沿数据锁存
                        RowsCan();                //行扫描
                        
                        OE = 0;
     
                delay();
        
               
                        }
                 }
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2011-3-23 15:44:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


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

回复

使用道具 举报

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

回复 zhujianfeng 的帖子

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



回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 08:42 , Processed in 0.753022 second(s), 22 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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