?? lcd.c
字號:
#include <intrins.h>
#include "main.h"
#include "lcd.h"
#include "mcs51.h"
//extern uchar code HZ16[][16];
/*--------液晶驅動----*/
void write_com(unsigned char cmdcode)//寫命令到LCD
{
Di = 0;
Rw = 0;
Lcd_Bus = cmdcode;
Delay12864(0);
E = 1;
Delay12864(0);
E = 0;
}
/************************/
void write_data(unsigned char Dispdata)//寫數據到LCD
{
Di = 1;
Rw = 0;
Lcd_Bus = Dispdata;
Delay12864(0);
E = 1;
Delay12864(0);
E = 0;
}
/***************************/
void Clr_Scr(void)//清除內存
{ unsigned char j,k;
CS1=1;CS2=1;
write_com(Page_Add+0);
write_com(Col_Add+0);
for(k=0;k<8;k++){
write_com(Page_Add+k);
write_com(Col_Add+0);
for(j=0;j<64;j++){
write_data(0x00);
}
}
}
/****************************/
void Disp_Chinese(unsigned char pag,unsigned char col, char code *hzk)
{ unsigned char j=0,i=0;//指定位置顯示漢字16*16
for(j=0;j<2;j++){
write_com(Page_Add+pag+j);
write_com(Col_Add+col);
for(i=0;i<16;i++){
write_data(hzk[16*j+i]);
}
}
}
/*************************/
void Disp_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk)
{ unsigned char j=0, i=0; //指定位置顯示字母或數字8*16
for(j=0;j<2;j++){
write_com(Page_Add+pag+j);
write_com(Col_Add+col);
for(i=0;i<8;i++){
write_data(hzk[8*j+i]);
}
}
}
/***********************************/
/*void Display_1(uchar type,uchar xy,uint display_data)//teye=1顯示漢字teye=0顯示ASCII碼
{
uchar row,line;
CS1=0;CS2=0;
row = (xy%16)*8;//列
line = 2 * (xy/16); //行
if(type)
{
putHZ(row,line,display_data);
}
else
{
putASCII(row,line,display_data);
}
CS1=1;CS2=1;
}*/
/************顯示漢字驅動***********************/
/*void putHZ(uchar x,uchar y,uint show_data_index)//Y=ROW X=COLUMN
{
uchar i;
//pagenum--頁地址,低四位(0~8)
//hcolumnnum--行地址高四位
//lcolumnnum--行地址低四位
uchar pagenum,hcolumnnum,lcolumnnum;
pagenum=y|0x0B0;
hcolumnnum=((x)/0x10)|0x10;
lcolumnnum=((x)%0x10);
SerialWrite(0,pagenum);
//STARTROWADDR--初始化顯示行
SerialWrite(0,STARTROWADDR);
SerialWrite(0,hcolumnnum);
SerialWrite(0,lcolumnnum);
for(i=0;i<16;i++)
{
SerialWrite(1,HZ16[show_data_index][i]);
}
pagenum++;
SerialWrite(0,pagenum);
//STARTROWADDR--初始化顯示行
SerialWrite(0,STARTROWADDR);
SerialWrite(0,hcolumnnum);
SerialWrite(0,lcolumnnum);
for(i=0;i<16;i++)
{
SerialWrite(1,HZ16[show_data_index+1][i]);
}
}*/
/******************顯示ASCII碼驅動******************************/
/*void putASCII(uchar x,uchar y,uint show_data_index)
{
uchar i,pagenum,hcolumnnum,lcolumnnum;
CS1=0;CS2=0;
pagenum=y|0xB0;
hcolumnnum=((x)/0x10)|0x10;
lcolumnnum=((x)%0x10);
SerialWrite(0,pagenum);
//STARTROWADDR--初始化顯示行
SerialWrite(0,STARTROWADDR);
SerialWrite(0,hcolumnnum);
SerialWrite(0,lcolumnnum);
for(i=0;i<8;i++)
{
SerialWrite(1,HZ16[show_data_index][i]);
}
pagenum++;
SerialWrite(0,pagenum);
//STARTROWADDR--初始化顯示行
SerialWrite(0,STARTROWADDR);
SerialWrite(0,hcolumnnum);
SerialWrite(0,lcolumnnum);
for(i=0;i<8;i++)
{
SerialWrite(1,HZ16[show_data_index][i+8]);
}
CS1=1;CS2=1;
}*/
/*************顯示首地址*********************/
/*void SerialWrite(uchar ComDatFlag,uchar OutData)
{
uchar j;
Rw=ComDatFlag; //DATA=1,COMMAND=0
for(j=0;j<8;j++)
{
E=0;
if((OutData&0x80)==0x80)
Di=1;
else
Di=0;
_nop_();
OutData<<=1;
E=1;
_nop_();
}
}*/
void Init_lcd(void)//初始化LCD屏
{
CS1=1;
CS2=1;
Delay12864(100);
write_com(Disp_Off);
write_com(Page_Add+0);
write_com(Start_Line+0);
write_com(Col_Add+0);
write_com(Disp_On);
}
/******************************************************************************/
void Uplcd()
{
Rst=1;
CS1=0;CS2=0;
CS1=1;
ACC=0x03F;
W_INST();
CS1=0;
CS2=1;
ACC=0x03F;
W_INST();
}
void W_INST() // 寫指令子程序(INST)
{
Di=0;
Delay12864(0);
Rw=0;
Delay12864(0);
ACC=P0;
E=1;
Delay12864(0);
E=0;
}
void Delay12864(unsigned int t)//
{ unsigned int i,j;
for(i=0;i<t;i++){
for(j=0;j<10;j++);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -