一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 4254|回复: 12

请教一个问题

[复制链接]
发表于 2012-4-25 16:45 | 显示全部楼层 |阅读模式
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
sbit HC138_A=P1^0;  
sbit HC138_B=P1^1;   
sbit HC138_C=P1^2;   
sbit HC138_D=P1^3;   
sbit HC138_OE=P1^6;  
sbit HC595_STB=P1^4;     
sbit HC595_CLK=P1^5;   
sbit HC595_GD=P1^7;   
sbit HC595_RD=P3^4;   
unsigned char code hanzi[]={
/*--  文字11:  测  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x44,0xC4,0x8C,0x98,0xF8,0xFC,0xE4,0xF4,0xFC,0xFC,0xF8,0xFC,0xFC,0xFC,0xFC,0x00,
0x80,0xE0,0x79,0xBD,0xCF,0xFF,0x7F,0x1F,0x3F,0xFF,0xCF,0x9F,0x9F,0xFF,0xFF,0x00,
/*--  文字12:  试  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x80,0x84,0x9C,0x9C,0x10,0x10,0x10,0x10,0x10,0x10,0xFC,0xFC,0x1C,0x1C,0x38,0x00,
0x00,0x00,0x7F,0x7F,0x60,0x71,0x51,0x7F,0x3F,0x21,0x23,0x3F,0xFF,0xE0,0xF8,0x00,
/*--  文字13:  开  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x04,0x04,0xFC,0xFC,0xFC,0x04,0x04,0x04,0x04,0xFC,0xFC,0xFC,0x04,0x04,0x00,
0x01,0x81,0xC1,0xFD,0x7F,0x0F,0x01,0x01,0x01,0x01,0xFF,0xFF,0xFF,0x01,0x01,0x00,
/*--  文字14:  始  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0xD0,0xFE,0x7E,0x10,0xF0,0xF0,0xE0,0xF8,0xBC,0x8C,0x80,0x98,0xF8,0xE0,0x00,
0x80,0xC7,0xFF,0x78,0x7E,0xEF,0xC3,0xFC,0xFC,0x84,0x84,0x84,0x84,0xFC,0xFD,0x00,
/*--  文字11:  测  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x44,0xC4,0x8C,0x98,0xF8,0xFC,0xE4,0xF4,0xFC,0xFC,0xF8,0xFC,0xFC,0xFC,0xFC,0x00,
0x80,0xE0,0x79,0xBD,0xCF,0xFF,0x7F,0x1F,0x3F,0xFF,0xCF,0x9F,0x9F,0xFF,0xFF,0x00,
/*--  文字12:  试  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x80,0x84,0x9C,0x9C,0x10,0x10,0x10,0x10,0x10,0x10,0xFC,0xFC,0x1C,0x1C,0x38,0x00,
0x00,0x00,0x7F,0x7F,0x60,0x71,0x51,0x7F,0x3F,0x21,0x23,0x3F,0xFF,0xE0,0xF8,0x00,
/*--  文字15:  结  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xC0,0xF0,0xFC,0x9C,0xF4,0x70,0x90,0x90,0x90,0xFC,0xFC,0xFC,0x90,0x90,0x90,0x00,
0xC0,0xCC,0x4F,0x4F,0x6D,0x24,0xFC,0xFC,0x84,0x84,0x84,0x84,0x84,0xFC,0xFC,0x00,
/*--  文字16:  束  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0xC8,0xC8,0xE8,0x28,0x28,0x28,0xFE,0xFE,0x28,0x28,0x28,0xE8,0xC8,0xC8,0x08,
0x80,0x83,0xC3,0x67,0x62,0x3A,0x1E,0xFF,0xFF,0x1E,0x32,0x72,0x67,0xC7,0x83,0x80,
};
void delay(int z)
{
  int x,y;
  for(x=0;x<z;x++)
    for(y=0;y<100;y++);
}
void send_in(char dat)
{
  char i;
  for(i=0;i<8;i++)
    {
   dat=dat>>1;
   HC595_RD=CY;
   HC595_CLK=0;
   HC595_CLK=1;
    }
}
void main()
{
  int num, s;
  while(1)
  {
    for(s=0;s<8;s++)
   for(num=0;num<16;num++)
   {
     send_in(hanzi[2*num+32*s]);
  send_in(hanzi[2*num+32*s+1]);
  P1=num;
  HC595_STB=1;
  HC595_STB=0;
  delay(2);
   };
  }
}


请各位帮忙修改下 接显示屏没有反应

评分

参与人数 1一乐金币 -1 收起 理由
auxccc -1 请教要写下主题

查看全部评分

 楼主| 发表于 2012-4-25 16:47 | 显示全部楼层
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define SPEED 1                       //定义速度12M
#define light 3                                      //定义亮度
sbit HC138_A=P1^0;        
sbit HC138_B=P1^1;   
sbit HC138_C=P1^2;   
sbit HC138_D=P1^3;          
sbit HC138_OE=P1^5;          
sbit HC595_STB=P3^0;   
sbit HC595_CLK=P3^1;   
sbit HC595_GD=P3^2;   
sbit HC595_RD=P3^3;                  
uchar yid,h;                      //yid为位移变量,h为行变量
uint word;
uchar code tab[]=
{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};/*16行段码*/
uchar code HZ[];
uchar BUFF[10];//4字是10,8字是18
void loadoneline(void);
void sendoneline(void);
/*******根据列指针,由双字节合并为单字节的子程序模块12MHZ************/
uchar two_onebyte(uchar h1,uchar h2)
{
uchar temp,tempcol;
if(yid<8) tempcol=yid;
else tempcol=yid-8;
temp=(h1<<tempcol)|(h2>>(8-tempcol));
return temp;
}
/****************************主函数***************************/
void main(void)
{
uchar i;
yid=0;word=0;
while(1)
{
while(yid<16)// 循环16次,点亮并移动一个汉字
      
{
  for(i=0;i<SPEED;i++)//汉字在屏幕上的停留时间(即移动速度快慢)
               
  {
   for(h=0;h<16;h++)//扫描16行
                           
   {
   loadoneline();//装载一线点阵数据                                                  
   sendoneline();//发送一线点阵数据
    //P1_4=1;//消影。
    //P1_7= 1;   // 点亮屏幕                          
    P1=tab[h];                        
    HC595_STB=0;
        HC595_STB=1;    //(CLK=P3_1)上升沿595输出     
   }
  }
               
yid++; //列指针递增
}   
yid=0;word=word+32;// 一个汉字移动后,指向下一个汉字
if(word>=1024)word=0;// 移动28个汉字后,重新开始
}
}
/**************装载一线点阵数据****************/
void loadoneline(void)
{
uchar s;
for(s=0;s<5;s++)   //s为要显示的数字+1,4字是for(s=0;s<5;s++) ,8字是for(s=0;s<9;s++)
{
BUFF[2*s]=HZ[word+32*s+2*h];
BUFF[2*s+1]=HZ[word+1+32*s+2*h];
}
}
/***************发送一线点阵数据*******************/
void sendoneline(void)
{
char s;uchar inc;
if(yid<8)inc=0;else inc=1;
for(s=9+inc;s>=0+inc;s--)//4字是for(s=9+inc;s>=0+inc;s--),8字是for(s=17+inc;s>=0+inc;s--)
{
SBUF=two_onebyte(BUFF,BUFF[s+1]);
while(!TI);TI=0;
}
}
/***********************汉字点阵码阴逐行顺上下*************************/
uchar code HZ[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//=============================================================================
0x40,0x08,0x40,0x14,0x40,0x04,0x48,0x24,0x4F,0xE4,0x48,0x24,0x48,0x24,0x48,0x24,
0x4F,0xE4,0x40,0x04,0x40,0x04,0x5F,0xF4,0x40,0x04,0x40,0x04,0x7F,0xFC,0x00,0x00,/*"同",0*/
0x28,0x10,0x24,0x10,0x22,0x10,0x22,0x10,0x21,0x10,0xE1,0x10,0x21,0x10,0x11,0x10,
0x16,0x0E,0x51,0xB0,0x48,0x40,0x88,0xA0,0x01,0x10,0x27,0xFE,0x20,0x40,0x40,0x80,/*"济",1*/
0x00,0x10,0x14,0x28,0x12,0x04,0x11,0x04,0x10,0x84,0xD4,0x44,0x32,0x24,0x19,0x24,
0x14,0x94,0x94,0x94,0x52,0x54,0x7D,0x54,0x51,0xFC,0x50,0x80,0x10,0x80,0x10,0x80,/*"物",2*/
0x00,0x00,0x00,0x00,0xFF,0xFE,0x04,0x44,0x04,0x40,0x04,0x40,0x14,0x60,0x1C,0x50,
0x14,0x50,0x24,0x48,0x24,0x4C,0x44,0x46,0x04,0x44,0x04,0x40,0x04,0x40,0x04,0x40,/*"业",3*/
0x88,0x10,0x44,0x18,0x42,0x30,0x21,0x40,0x24,0x90,0x24,0x90,0x24,0x90,0x24,0x90,
0x24,0x10,0x27,0xF0,0x21,0x00,0x20,0x80,0x2F,0xF8,0x20,0x80,0x3F,0x80,0x00,0x7C,/*"质",4*/
0x00,0x00,0xFF,0xFE,0x01,0x00,0x1F,0xF8,0x01,0x00,0x1F,0xF0,0x11,0x10,0x1F,0xF0,
0x11,0x10,0xFF,0xFE,0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,/*"量",5*/
0x00,0x00,0xC0,0x60,0x20,0x90,0x10,0x10,0x08,0x10,0x08,0x10,0x04,0x10,0x04,0x10,
0x02,0x10,0x03,0xF0,0x02,0x00,0x02,0x00,0xFF,0xFE,0x00,0x80,0x01,0x00,0x02,0x00,/*"方",6*/
0x00,0x20,0x10,0x20,0x18,0x20,0x14,0x20,0x12,0x20,0x10,0x20,0x10,0x20,0xFE,0x20,
0x10,0x20,0x91,0xFE,0x7C,0x20,0x40,0x20,0x3E,0x20,0x20,0x20,0x10,0x20,0x10,0x20,/*"针",7*/
0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*":",8*/
0x04,0x00,0x82,0x0E,0x41,0x12,0x44,0x92,0x26,0x92,0x24,0x50,0x28,0x50,0x11,0x24,
0xFF,0x24,0x11,0x24,0x11,0x24,0x11,0x24,0x7D,0x24,0x11,0x04,0x11,0xFC,0x10,0x00,/*"规",9*/
0x20,0x00,0x20,0xFC,0x21,0x04,0x21,0x04,0xE1,0x00,0x11,0x10,0x09,0x38,0x49,0x08,
0x61,0x08,0x91,0x08,0x31,0xF8,0x40,0x00,0x04,0x60,0xFF,0xFE,0x04,0x20,0x04,0x20,/*"范",10*/
0x00,0x00,0x88,0x84,0x54,0xCE,0x44,0xA8,0x24,0x90,0x24,0xA8,0x24,0xA8,0x24,0xC4,
0x3C,0xC4,0x24,0xFC,0x24,0x80,0x3C,0x88,0x24,0x94,0x24,0x84,0x24,0x84,0x3C,0xFC,/*"服",11*/
0xC0,0x20,0x30,0x50,0x08,0x10,0x04,0x10,0x02,0x10,0x02,0x10,0x1F,0xF0,0x61,0x04,
0x19,0x1E,0x06,0x60,0x81,0x80,0x62,0x40,0x14,0x20,0x0C,0x10,0x07,0xF0,0x04,0x00,/*"务",12*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",13*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",14*/
0x08,0x20,0x08,0x70,0x08,0x90,0x08,0x10,0x0F,0xF0,0x08,0x10,0x88,0x10,0x4F,0xF0,
0x28,0x10,0x18,0x10,0x0F,0xF0,0x04,0x00,0x02,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,/*"有",15*/
0x00,0x80,0x01,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x88,0x40,0xF8,0x40,0x8F,0xFE,
0x88,0x40,0x89,0x50,0x89,0x48,0x8A,0x4C,0x88,0x48,0xFF,0xC0,0x00,0x3C,0x00,0x00,/*"呼",16*/
0x00,0x00,0xC0,0x00,0x2F,0xF8,0x18,0x08,0x0C,0x08,0x4A,0x04,0x49,0x06,0x28,0x84,
0x28,0x48,0x28,0x50,0x08,0x20,0x0C,0x20,0x01,0x10,0x01,0x98,0x02,0x10,0x04,0x00,/*"必",17*/
0x00,0x00,0x80,0x00,0x5F,0xFE,0x40,0x40,0x44,0x20,0x26,0x20,0x24,0x90,0x24,0x90,
0x28,0xC8,0x30,0x8C,0x21,0x08,0x22,0x00,0x20,0x00,0x3F,0xFC,0x00,0x80,0x01,0x00,/*"应",18*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",19*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",20*/
0x00,0x00,0x80,0x02,0x40,0x06,0x28,0x26,0x24,0x2A,0x12,0x6A,0x11,0x48,0x10,0x88,
0x10,0x88,0x11,0x48,0x12,0x48,0x14,0x68,0x10,0x48,0x10,0x08,0x1F,0xF8,0x00,0x00,/*"风",21*/
0x11,0x08,0x11,0xF8,0x11,0x08,0x11,0x08,0x11,0x08,0x11,0x08,0x91,0xF8,0x57,0x06,
0x54,0xD8,0x38,0x20,0x34,0x50,0x12,0x90,0xFD,0x08,0x11,0xF8,0x10,0x80,0x10,0x80,/*"格",22*/
0x02,0x00,0x45,0x08,0x21,0x0C,0x19,0x18,0x11,0x20,0x01,0x00,0x3F,0xFC,0x01,0x00,
0x01,0x00,0x7F,0xFE,0x04,0x40,0x04,0x30,0x08,0x20,0x3F,0xFC,0x01,0x00,0x02,0x00,/*"亲",23*/
0x08,0x00,0x08,0x00,0x08,0x44,0x88,0x7C,0x4A,0x44,0x2B,0x44,0x2A,0x44,0x1C,0x44,
0x18,0x44,0x08,0x44,0x7F,0x44,0x08,0x44,0x08,0x7C,0x78,0x00,0x07,0x00,0x00,0x00,/*"和",24*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",25*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",26*/
0x08,0x10,0x24,0x10,0x32,0x10,0x2A,0x10,0x21,0x10,0x21,0x10,0x21,0x10,0x2F,0xFE,
0x21,0x10,0xE1,0x10,0x01,0x10,0x07,0xFC,0x21,0x10,0x31,0x10,0x21,0x10,0x41,0x10,/*"讲",27*/
0x00,0x00,0x20,0x3E,0x10,0x42,0x08,0x42,0x04,0x42,0x04,0x40,0x02,0x40,0x02,0x40,
0x1F,0xC0,0x42,0x08,0x22,0x10,0x12,0x20,0x40,0x04,0x7F,0xFE,0x01,0x00,0x02,0x00,/*"究",28*/
0x10,0x00,0x09,0x02,0x2A,0xC6,0x34,0xAA,0x2C,0x92,0x24,0x98,0x24,0x94,0x24,0x94,
0x27,0xA6,0x24,0x24,0xE4,0x20,0x04,0x20,0x0F,0xFE,0x20,0x24,0x30,0x28,0x40,0x20,/*"诚",29*/
0x00,0x00,0x12,0x08,0x13,0xF8,0x12,0x08,0x12,0x08,0x12,0x08,0x13,0xF8,0x10,0x00,
0x93,0xF8,0x50,0x00,0x33,0xF8,0x30,0x00,0x17,0xFE,0x18,0x40,0x0C,0x60,0x08,0x80,/*"信",30*/

//============================================================================
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
还有这个程序  
我修改后始终没有反应  我的屏是32*64的  标准的08接口
回复

使用道具 举报

发表于 2012-4-27 02:56 | 显示全部楼层
建议一般在试验时候,如果没有把握,尽量不要去修改源程序,这样很难判断是程序问题还是连接问题,下面这个程序可以再试试。

用这个程序只能显示红色或者绿色,如果可以正常显示,再给你找找显示双色,一步一步来了。

P1_4=1;//消影。------OE。
P1_7= 1;   // 点亮屏幕------STR.
P1=tab[disrow];   -------P10,P11,P12,P13连接A,B,C,D。                                             
P3_1=1;      //(CLK=P3_1)上升沿595输出 --------CLK
P3_0;-------R或者G。

试验10字.rar (308.25 KB, 下载次数: 315)
回复

使用道具 举报

 楼主| 发表于 2012-4-27 08:25 | 显示全部楼层
建议一般在试验时候,如果没有把握,尽量不要去修改源程序,这样很难判断是程序问题还是连接问题,下面这个 ...
shqi2003 发表于 2012-4-27 02:56 https://www.yleee.com.cn/images/common/back.gif



    呵呵 谢谢老师这么晚咯都还回复 我试咯 接R口的时候下半屏全亮 上半屏能显示流动的字  但是接G口的时候 下半屏全亮 但是上半屏闪烁 而且没有感到有绿颜色 这个是怎么回事呢  那位高手看到咯也帮我分析下原因 在此谢过咯!
回复

使用道具 举报

发表于 2012-4-27 14:02 | 显示全部楼层
本帖最后由 shqi2003 于 2012-4-27 14:04 编辑
呵呵 谢谢老师这么晚咯都还回复 我试咯 接R口的时候下半屏全亮 上半屏能显示流动的字  但是接G口 ...
ziqian0512 发表于 2012-4-27 08:25 https://www.yleee.com.cn/images/common/back.gif



    【接R口的时候下半屏全亮 上半屏能显示流动的字】
1】因为这个是16X64的程序,你的屏是32X64,所以接R口的时候下半屏全亮,你要把下半屏的R和G接地或者接VCC+5V,试试是不是可以解决。

【接G口的时候 下半屏全亮 但是上半屏闪烁 而且没有感到有绿颜色】
2】和上面一样试试,上半屏闪烁,因为是绿色显示,晶体必须是24M,如果用STC芯片,用6T下载,效果还要好。

3】如果要同时上下屏一起试验,可以把上屏的R  的最后一个595的9脚,和G的最后一个595的9脚,分别连接到输入接口的下屏R和G端口。

4】程序因为是单色显示程序,所以在显示时候,如果用R时候,G必须接地或者接VCC+5V,显示G时候,R必须接地或者接VCC+5V。
回复

使用道具 举报

 楼主| 发表于 2012-4-27 19:51 | 显示全部楼层
//#include <AT89x52.H>
#include <regx52.h>
#define uchar unsigned char
#define uint unsigned int
#define SPEED 1                       //定义速度12M
#define light 3                        //定义亮度
uchar col,disrow;                      //col为位移变量,disrow为行变量
uint word;
uchar code tab[]=
{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};/*16行段码*/
//{0x0f,0x09,0x05,0x02,0x08,0x04,0x00,0x0c,0x03,0x0b,0x07,0x0d,0x01,0x0e,0x0a,0x06};
uchar code HZ[];
uchar BUFF[22];//4字是10,8字是18
void loadoneline(void);
void sendoneline(void);
/*******根据列指针,由双字节合并为单字节的子程序模块12MHZ************/
uchar two_onebyte(uchar h1,uchar h2)
{
uchar temp,tempcol;
if(col<8) tempcol=col;
else tempcol=col-8;
temp=(h1>>tempcol)|(h2<<(8-tempcol));
//temp=255-temp;
return temp;
}
/****************************主函数***************************/
void main(void)
{
uchar i;
col=0;word=0;
while(1)
{
while(col<16)// 循环16次,点亮并移动一个汉字
{
  for(i=0;i<SPEED;i++)//汉字在屏幕上的停留时间(即移动速度快慢)
  {
   for(disrow=0;disrow<16;disrow++)//扫描16行   
   {
   loadoneline();//装载一线点阵数据
   sendoneline();//发送一线点阵数据
                         P1_4=1;//消影。
                         P1_7= 1;   // 点亮屏幕
                                                
                         P1=tab[disrow];                                                
    P3_1=1;      //(CLK=P3_1)上升沿595输出     
   }
  }
               
col++; //列指针递增
}   
col=0;word=word+32;// 一个汉字移动后,指向下一个汉字
if(word>=400)word=0;// 移动28个汉字后,重新开始
}
}
/**************装载一线点阵数据****************/
void loadoneline(void)
{
uchar s;
for(s=0;s<11;s++)   //s为要显示的数字+1,4字是for(s=0;s<5;s++) ,8字是for(s=0;s<9;s++)
{
BUFF[2*s]=HZ[word+32*s+2*disrow];
BUFF[2*s+1]=HZ[word+1+32*s+2*disrow];
}
}
/***************发送一线点阵数据*******************/
void sendoneline(void)
{
char s;uchar inc;
if(col<8)inc=0;else inc=1;
for(s=0+inc;s<=19+inc;s++)//4字是for(s=9+inc;s>=0+inc;s--),8字是for(s=17+inc;s>=0+inc;s--)
{
SBUF=two_onebyte(BUFF,BUFF[s+1]);
while(!TI);TI=0;
}
}
/***********************汉字点阵码阴逐行顺上下*************************/
uchar code HZ[]=
{
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
//=============================================================================
0xFF,0x6F,0xFE,0x6F,0xDF,0x77,0x80,0x37,0xDF,0xBB,0xED,0xD3,0xFD,0xE9,0xF5,0xBA,
0xED,0x3B,0xED,0xBB,0xDD,0xDB,0x9D,0xDB,0xDD,0xEB,0xFD,0x7B,0xFE,0xFB,0xFF,0xFF,/*"你",0*/
0xFF,0xF7,0xC0,0x77,0xEF,0xF7,0xF7,0xF7,0xFB,0xC0,0xFB,0xDB,0xFB,0xDB,0x80,0x1B,
0xFB,0xDD,0xFB,0xD9,0xFB,0xE7,0xFB,0xEF,0xFB,0xD7,0xFB,0x9B,0xFA,0xDD,0xFD,0xFE,/*"好",1*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,
0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,/*"!",2*/
0xFD,0x9F,0xF5,0xE3,0xED,0xEF,0xED,0xEF,0xFD,0xEF,0x80,0x00,0xFD,0xEF,0xED,0xEF,
0xEB,0x8F,0xF3,0xE3,0xFB,0xEC,0xF5,0xEF,0xB6,0x6F,0xAF,0xEF,0x9F,0xEB,0xBF,0xF7,/*"我",3*/
0xFF,0xFF,0xF0,0x0F,0xF7,0xEF,0xF0,0x0F,0xF7,0xEF,0xF0,0x0F,0xFF,0xFF,0x80,0x00,
0xFF,0x7F,0xFF,0x6F,0xE0,0x6F,0xFF,0x6F,0xFF,0x57,0xFF,0x3B,0x80,0xFD,0xFF,0xFF,/*"是",4*/
0xFF,0xFF,0xF8,0x03,0xFB,0xFF,0xFB,0xEF,0xFB,0xEF,0xFB,0xEF,0xFB,0xEF,0xC0,0x0F,
0xDF,0xFF,0xDF,0xFF,0xD0,0x01,0xDF,0xFF,0xDF,0xFF,0xD3,0xFF,0xEF,0xFF,0xFF,0xFF,/*"马",5*/
0xFF,0x7F,0xFF,0x7F,0xE0,0x03,0xFF,0x7F,0xFC,0xBF,0xE3,0xCF,0xF7,0xF3,0x80,0x00,
0xF7,0xFF,0xF7,0x07,0xF7,0x77,0xF7,0x77,0xF7,0x07,0xF7,0x77,0xF5,0xFF,0xFB,0xFF,/*"奇",6*/
0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0x80,0x00,0xFF,0xBF,0xFF,0xBF,0xF0,0x1F,0xF7,0xDF,
0xFB,0x9F,0xFB,0x6F,0xFC,0xEF,0xFC,0xF7,0xFB,0x7B,0xE7,0xBD,0x8F,0xCE,0xDF,0xF3,/*"友",7*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,
0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,/*"!",8*/

//============================================================================
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
我将上面老师给的程序改咯下 改成从右往左移动  字就出现错位 这个是怎么回事呢
还有这句8字是for(s=17+inc;s>=0+inc;s--)
  s的取值我还是没有搞好清楚  这里的8字是指要显示的字为八个么
回复

使用道具 举报

 楼主| 发表于 2012-4-28 17:15 | 显示全部楼层
回复 5# shqi2003


    有几个问题我没有明白:
(1)就是点阵代码前面的uchar code HZ[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//=============================================================================
这一段空白代码什么作用,一定要么?
(2)void loadoneline(void)函数里for(s=0;s<9;s++)              //s为要显示的数字+1  这个为什么是要显示的字加一
(3)void sendoneline(void)函数里 for(s=18+inc;s>=0+inc;s--)  这个为什么是18?  没有理解明白  
回复

使用道具 举报

发表于 2012-4-28 23:11 | 显示全部楼层
【这一段空白代码什么作用,一定要么?】主要是考虑屏上电后,有4个字的不显示区,如果不要,上电就在左面开始直接显示了。
(2)void loadoneline(void)函数里for(s=0;s<9;s++)              //s为要显示的数字+1  这个为什么是要显示的字加一】】】这个我也不知道。
(3)void sendoneline(void)函数里 for(s=18+inc;s>=0+inc;s--)  这个为什么是18?  没有理解明白  】】这个18表示这个程序可以在8字屏上显示,因为8字X2+2=18。
回复

使用道具 举报

 楼主| 发表于 2012-4-30 10:33 | 显示全部楼层
回复 8# shqi2003


    有个问题我没有搞明白,就是我想把移动换个方向,我把这句语句换咯下temp=(h1<<tempcol)|(h2>>(8-tempcol));把这个符号换个方向,然后再将void sendoneline(void)里的for(s=9+inc;s>=0+inc;s--)换成 for(s=0+inc;s<=9+inc;s++) 但是显示就是乱码,  还有老师有显示32*64字的程序没有  你之前给那个基本明白咯! 不过要用两个138控制整个屏我还没有搞明白! 希望有个参考学习!谢谢
回复

使用道具 举报

发表于 2012-4-30 18:25 | 显示全部楼层
左右移动,区别在哪里,请比较2个程序,哪里不一样。

左和右移动程序.rar (7.76 KB, 下载次数: 288)

32X64的显示程序,请看这里:https://www.yleee.com.cn/thread-4894-1-3.html


很多相关问题,这个论坛有很多程序可以参考,只要能够仔细看看论坛的程序,对学习一定有不少帮助。
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2026-3-13 22:40 , Processed in 0.041218 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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