长汀无线电厂交流论坛

 找回密码
 注册
12
返回列表 发新帖
楼主: zhujianfeng
打印 上一主题 下一主题

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

  [复制链接]
地板
 楼主| 发表于 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();
        
               
                        }
                 }
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 20:44 , Processed in 0.778022 second(s), 16 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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