找回密码
 注册会员
img_loading
智能检测中
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

RA8835 显示文字不全错位

[复制链接]
admin 发表于 2012-9-2 04:30:03 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本人最近在用320240 控制器为RA8835 的液晶模块,但发现显示的文字不全且显示的光标定位不对,看了好几天也看不出问题,求各路大侠,帮小弟看看问题所在,万分感激,一下是我的程序,省去了头文件,用STC89C5116RD+为芯片,两片74HC573锁存器,再次感激...

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define SystemSet 0x40 //控制器定义
#define Scroll 0x44 //显示域设置
#define SleepIn 0x53 //休闲模式设置
#define DispOn 0x59 //显示状态开
#define DispOff 0x58
#define Ovlay 0x5B //显示合成设置
#define HdotScr 0x5A //点位移设置
#define CsrForm 0x5D //光标形状设置
#define CgramAdr 0x5C //CGRAM首地址设置
#define CsrDirR 0x4C //光标移动右
#define CsrDirL 0x4D //左
#define CsrDirU 0x4E //上
#define CsrDirD 0x4F //下
#define CsrW 0x46 //设置光标地址
#define CsrR 0x47 //读出光标地址
#define mWrite 0x42 //显示数据写入
#define mRead 0x43

sbit LCDD_LATCH=P3^5; //74HC573锁存器使能输入液晶数据
sbit LCDC_LATCH=P1^4; //74HC573锁存器使能输入液晶命令

uchar bdata TS320240IO;

sbit TS320240_CS =TS320240IO^6;
sbit TS320240_WR =TS320240IO^2;
sbit TS320240_RD =TS320240IO^5;
sbit TS320240_A0 =TS320240IO^4;
sbit TS320240_RESET =TS320240IO^3;


code uchar table[][32]={
{0x10,0x10,0x10,0x10,0xFE,0x30,0x58,0x98,0x94,0x14,0x12,0x10,0x10,0x10,0x10,0x10,0x00,0x7E,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0x7E,0x42},
{0x09,0x0C,0x10,0x17,0x20,0x34,0x52,0x52,0x91,0x11,0x11,0x10,0x10,0x1F,0x10,0x00,0x00,0xC0,0x40,0xFC,0x00,0x10,0x18,0x10,0x10,0x20,0x20,0x20,0x40,0xFE,0x00,0x00},
{0x00,0x00,0x7C,0x44,0x47,0x44,0x7C,0x45,0x44,0x44,0x7C,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x10,0x50,0x20},
{0x08,0x08,0x08,0x08,0x09,0x0E,0x08,0xFF,0x0A,0x09,0x08,0x08,0x09,0x0A,0x0C,0x08,0x00,0x10,0x20,0x40,0x80,0x00,0x00,0xFE,0x00,0x00,0x80,0x40,0x30,0x1C,0x08,0x00}
};


void delay(int i)
{
uint x,y;
for(x=0;x<i;x++)
for(y=0;y<110,y++)
}

void delay2(int i)
{
while(--i);
}

void Lcd_dataw(uchar Lcd_data)
{
TS320240_RESET=1; TS320240_A0=0; TS320240_CS=0; TS320240_RD=1; TS320240_WR=0; P0=TS320240IO;
LCDC_LATCH=1; LCDC_LATCH=0;
P0=Lcd_data; LCDD_LATCH=1; LCDD_LATCH=0;
TS320240_RESET=1; TS320240_A0=0; TS320240_CS=0; TS320240_RD=1; TS320240_WR=1; P0=TS320240IO;
LCDC_LATCH=1; LCDC_LATCH=0;
TS320240_RESET=1; TS320240_A0=0; TS320240_CS=1; TS320240_RD=1; TS320240_WR=0; P0=TS320240IO;
LCDC_LATCH=1; LCDC_LATCH=0;
TS320240_RESET=1; TS320240_A0=0; TS320240_CS=0; TS320240_RD=1; TS320240_WR=0; P0=TS320240IO;
LCDC_LATCH=1; LCDC_LATCH=0;
}

void Lcd_comw(uchar Lcd_com)
{
TS320240_RESET=1; TS320240_A0=1; TS320240_CS=0; TS320240_RD=1; TS320240_WR=0; P0=TS320240IO;
LCDC_LATCH=1; LCDC_LATCH=0;
P0=Lcd_com; LCDD_LATCH=1; LCDD_LATCH=0;
TS320240_RESET=1; TS320240_A0=1; TS320240_CS=0; TS320240_RD=1; TS320240_WR=1; P0=TS320240IO;
LCDC_LATCH=1; LCDC_LATCH=0;
TS320240_RESET=1; TS320240_A0=1; TS320240_CS=1; TS320240_RD=1; TS320240_WR=0; P0=TS320240IO;
LCDC_LATCH=1; LCDC_LATCH=0;
TS320240_RESET=1; TS320240_A0=1; TS320240_CS=0; TS320240_RD=1; TS320240_WR=0; P0=TS320240IO;
LCDC_LATCH=1; LCDC_LATCH=0;
}

void clean()
{
uint i;
i=32768;
Lcd_comw(CsrDirR);
Lcd_comw(CsrW);
Lcd_dataw(0x00);
Lcd_dataw(0x00);
Lcd_comw(mWrite);
while(i--)
Lcd_dataw(0x00);
}

void SystemSet_init()
{
Lcd_comw(SystemSet);
Lcd_dataw(0x30);
Lcd_dataw(0x87);
Lcd_dataw(0x07);
Lcd_dataw(0x27);
Lcd_dataw(0x2F);
Lcd_dataw(0xEF);
Lcd_dataw(0x28);
Lcd_dataw(0x00);
}

void Scroll_init()
{
Lcd_comw(Scroll);
Lcd_dataw(0x00);
Lcd_dataw(0x00);
Lcd_dataw(0xF0);
Lcd_dataw(0x80);
Lcd_dataw(0x25);
Lcd_dataw(0xF0);
Lcd_dataw(0x00);
Lcd_dataw(0x4B);
Lcd_dataw(0x00);
Lcd_dataw(0x00);

}

void Lcd_init()
{
SystemSet_init();
Scroll_init();
Lcd_comw(HdotScr);
Lcd_dataw(0x00);
Lcd_comw(Ovlay);
Lcd_dataw(0x0C);
Lcd_comw(DispOff);
clean();
Lcd_comw(CsrW);
Lcd_dataw(0x00);
Lcd_dataw(0x00);
Lcd_comw(CsrForm);
Lcd_dataw(0x04);
Lcd_dataw(0x86);
Lcd_comw(DispOn);
Lcd_dataw(0x54);
Lcd_comw(CsrDirR);
}

void Setpos(uchar x,uchar y)//设置光标定位
{
uint ipos;
ipos = y*40+x; //每行40B
Lcd_comw(CsrW);
Lcd_dataw(ipos%256); //取低位
Lcd_dataw(ipos/256); //去高位
}

void XHZ(uchar x,uchar y,uchar k) //显示文字
{
uchar i,m;
for(m=0;m<2;m++)
{
Setpos(x+m,y);
Lcd_comw(CsrDirD);
Lcd_comw(mWrite);
for(i=0;i<16;i++)
{
Lcd_dataw(table[k][i+m*16]);
}
}
}

void main()
{
Lcd_init();
while(1)
{
XHZ(0,0,0);
XHZ(2,0,1);
XHZ(4,0,2);
XHZ(6,0,3);

XHZ(0,16,0);
XHZ(2,16,1);
XHZ(4,16,2);
XHZ(6,16,3);

XHZ(0,32,0);
XHZ(2,32,1);
XHZ(4,32,2);
XHZ(6,32,3);
}
}
您需要登录后才可以回帖 登录 | 注册会员

*滑块验证:
加载失败,请点击重试! (img)
本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2025-7-26 21:23 , Processed in 0.069506 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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