长汀无线电厂交流论坛

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

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

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

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

使用道具 举报

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中的字节从大到小移位相或后发送输出。
再结合着蓝绿黄兄弟所说的道理想想就懂了。

回复 支持 反对

使用道具 举报

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

使用道具 举报

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;}
                        }
                 }


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 19:36 , Processed in 0.735535 second(s), 18 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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