我的硬件連線是總線方式連接的, 現在想讓液晶從第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);
}
}
|