我的硬件连线是总线方式连接的, 现在想让液晶从第6行开始写0X00;但是总是从液晶首行开始写,并会列递加,然后至第二行,再列递加, 再写第三行第四行,写完第四行各列后就不再往下写了,用XBYTE[2000] = Start_Line+6改了行址址也不起作用,不知道怎么解决,请大师们帮忙指点迷津,十二分感谢!
程序及硬件线路如下
//***********************************************************************
#include <absacc.h>
#include <stdio.h>
#include <intrins.h>
#include<at89x52.h>
//#define LCM_read_busy_status XBYTE [0X2003]
//#define LCM_write_left_command XBYTE[0X2004] //LCD_write_left_command 指向XRAM
//#define LCM_write_right_command XBYTE[0X2000]
//#define LCM_write_left_show_data XBYTE[0X2001]
//#define LCM_write_right_show_data XBYTE[0X2005]
#define Disp_Off 0x3e //关闭显示的命令(0011 1110)
#define Disp_On 0x3f //打开显示的命令(0011 1111)
#define Start_Line 0xc0 //起始行地址(1100 0000)
#define Col_Add 0x40 //起始列地址(0100 0000)
#define Page_Add 0xb8 //起始页地址(1011 1000)
sbit LCM_RST = P1^0;
void delay(unsigned int t)
{
unsigned int i, j;
for (i = 0;i < t;i++)
{
for (j = 0;j < 10;j++)
{
;
}
}
}
/*-----------------------------主程序---------------------------------*/
main()
{
unsigned char i;
LCM_RST = 0; // 复位驱动芯片
//for(i=0; i<500; i++);
_nop_();
LCM_RST = 1;
while(1)
{
//XBYTE[2004]=0x36;
XBYTE[2004]=Disp_On;
XBYTE[2004] = Start_Line;//#define Start_Line 0xc0 //起始行地址(1100 0000)
XBYTE[2000]=Disp_On;
XBYTE[2000] = Start_Line;//我对Start_Line加4,或者加5,或者加6,但是总是从液晶首行开始写,并会列递加,然后至第二行,再列递加,
//再写第三行第四行,写完第四行各列后就不再往下写了,不知道怎么解决,请大师们帮忙指点迷津,十二分感谢!
XBYTE[0X2001] = 0x00; //写左边
XBYTE[0X2005]= 0x00; //写右边
//XBYTE[20b8] =0x3F;
//XBYTE[20b8] =0xC0;
//XBYTE[2045] = 0x3F;
//XBYTE[2045] = 0xC0;
//XBYTE[0X2001] = 0x00; //写左边
//XBYTE[0X2005]= 0x00; //写右边
delay(5000);
}
}
|