一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3057|回复: 4
收起左侧

16*32显示有问题

[复制链接]
发表于 2010-8-20 16:43 | 显示全部楼层 |阅读模式
我手里有快16*32的屏,但是显示有问题,请高手帮忙解决。 3.JPG 程序如下:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char  
#define uint unsigned int
#define NOP     _nop_()
sbit OE     = P2^0;
sbit A1     = P2^1;
sbit B1     = P2^2;
sbit SHCP=P2^4;    //11脚SHCP    移位时钟
sbit STCP=P2^3;    //12脚STCP    锁存时钟
sbit DATA=P3^7;    //数据输入
uchar code table[10][32]=
{
{0xFE,0xF7,0xBD,0xF7,0xC8,0x77,0xDB,0x77,0xF8,0x01,0xFB,0x77,0x18,0x37,0xDB,0x57,
0xD0,0x57,0xDE,0x77,0xDD,0x77,0xD5,0x77,0xCB,0x77,0xD7,0x77,0xED,0x57,0xFE,0xEF},/*"谢",0*/
/* (16 X 16 , 宋体 )*/
{0xFE,0xF7,0xBD,0xF7,0xC8,0x77,0xDB,0x77,0xF8,0x01,0xFB,0x77,0x18,0x37,0xDB,0x57,
0xD0,0x57,0xDE,0x77,0xDD,0x77,0xD5,0x77,0xCB,0x77,0xD7,0x77,0xED,0x57,0xFE,0xEF},/*"谢",1*/
/* (16 X 16 , 宋体 )*/
};
/*******************************************************************************************/  
      
/*******************************************************************************************/
/*******************************************************************************************/
//数据串行输入  
void serial_input(uchar dat)     
{
uint m;
for(m=0;m<8;m++)
{
if(dat & 0x80)
DATA=1;
else  
  DATA=0;
SHCP=0;
SHCP=1;   
        NOP;
NOP;
SHCP=0;
NOP;
NOP;
dat=dat<<1;
}
}
/*******************************************************************************************/
//并出
void serial_output()
{
STCP=1;                  
NOP;
NOP;
STCP=0;
}   
/*******************************************************************************************/
/*******************************************************************************************/
//行显控制
void HC138_scan(uchar temp)
{
   OE=1;
   A1=0x01 & temp;
   B1=0x01 &(temp>>1);
}
/*******************************************************************************************/
/*******************************************************************************************/
//整屏显示
void display()
{
uint i,j,k;
for(k=0;k<4;k++)                  //显示的四行
{
for(j=0;j<2;j++)          //显示3、4列
{
for(i=0;i<2;i++)      // 显示1、2列
{
serial_input(table[j][3*8+2*k+i]);           
serial_input(table[j][2*8+2*k+i]);   
serial_input(table[j][1*8+2*k+i]);
serial_input(table[j][0*8+2*k+i]);
}
}
serial_output();
HC138_scan(k);
}
}
/*******************************************************************************************/
/*******************************************************************************************/
/*******************************************************************************************/
/*******************************************************************************************/
void main()
{
while(1)
{
display();   
}
}
 楼主| 发表于 2010-8-20 17:57 | 显示全部楼层
搞定了
1,电源纹波太大
2,烧录程序时没有擦除
发表于 2010-8-20 20:43 | 显示全部楼层
你的是4扫的吧
发表于 2010-8-20 20:43 | 显示全部楼层
你的是4扫的吧
 楼主| 发表于 2010-8-22 11:28 | 显示全部楼层
对,是1/4扫的

本版积分规则

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

GMT+8, 2025-4-28 16:35 , Processed in 0.059896 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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