?? 240128.h
字號(hào):
#define width 30 //顯示區(qū)寬度
#define addr_w 0x0000 //文本顯示區(qū)首地址
#define addr_t 0x01e0 //圖形顯示區(qū)首地址
#define uchar unsigned char
#define uint unsigned int
#define data_ora P1 //MCU P1<------> LCM
sbit wr = P2 ^ 0; //Data Write into T6963C,L有效
sbit rd = P2 ^ 1; //Data Read from T6963C,L有效
sbit ce = P2 ^ 2; //使能信號(hào),L有效
sbit cd = P2 ^ 3; //當(dāng)wr=L,cd=H:寫(xiě)命令,cd=L:寫(xiě)數(shù)據(jù);當(dāng)rd=L,cd=H:讀狀態(tài),cd=L:讀數(shù)據(jù)
sbit rst = P2 ^ 4; //Lcm reset,低有效
sbit fs = P2 ^ 5; //字體選擇,H:6*8點(diǎn)陣;L:8*8點(diǎn)陣
sbit bf0 = P1 ^ 0;
sbit bf1 = P1 ^ 1;
sbit bf3 = P1 ^ 3;
uchar t[128] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
uchar code num[] =
{
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19
};
void wr_comm(uchar comm);
void wr_data(uchar dat);
void chk_busy(uchar autowr);
/*---------------延時(shí)子程序----------------*/
void delay1(uint ms)
{
uint i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 1000; j++)
;
}
/*------------寫(xiě)命令或數(shù)據(jù)到LCD--------------*/
//寫(xiě)一個(gè)數(shù)據(jù)和一個(gè)命令
void wr_od(uchar dat, uchar comm)
{
wr_data(dat);
wr_comm(comm);
}
//寫(xiě)兩個(gè)數(shù)據(jù)和一個(gè)命令
void wr_td(uchar datl, uchar dath, uchar comm)
{
wr_data(datl);
wr_data(dath);
wr_comm(comm);
}
//寫(xiě)一個(gè)16進(jìn)制數(shù)據(jù)和一個(gè)命令
void wr_xd(uint dat, uchar comm)
{
uchar datl, dath;
datl = dat;
dath = dat >> 8;
wr_data(datl);
wr_data(dath);
wr_comm(comm);
}
//自動(dòng)寫(xiě)數(shù)據(jù)
void wr_auto(uchar dat)
{
chk_busy(1);
cd = 0;
rd = 1;
data_ora = dat;
wr = 0;
wr = 1;
}
//寫(xiě)命令
void wr_comm(uchar comm)
{
chk_busy(0);
cd = 1;
rd = 1;
data_ora = comm;
wr = 0;
wr = 1;
}
//寫(xiě)數(shù)據(jù)
void wr_data(uchar dat)
{
chk_busy(0);
cd = 0;
rd = 1;
data_ora = dat;
wr = 0;
wr = 1;
}
//測(cè)狀態(tài)
void chk_busy(uchar autowr)
{
data_ora = 0xff;
cd = 1;
wr = 1;
rd = 0;
if (autowr)
while (bf3 == 0)
;
}
else
{
while ((bf0 == 0) || (bf1 == 0))
;
}
rd = 1;
}
/*------------------初始化-----------------*/
void init_lcd(void)
{
rst = 0;
;
rst = 1;
fs = 0;
ce = 0;
wr = 1;
rd = 1;
wr_xd(addr_w, 0x40); //文本顯示區(qū)首地址
wr_xd(addr_t, 0x42); //圖形顯示區(qū)首地址
wr_td(width, 0x00, 0x41); //文本顯示區(qū)寬度
wr_td(width, 0x00, 0x43); //圖形顯示區(qū)寬度
wr_comm(0x81); //邏輯"異或"
wr_td(0x02, 0x00, 0x22); //CGRAM偏置地址設(shè)置
wr_comm(0x9c); //啟用文本顯示,啟用圖形顯示
}
/*--------------清RAM------------------*/
void clrram(void)
{
uchar i, j;
wr_xd(addr_w, 0x24);
wr_comm(0xb0);
for (j = 0; j < 144; j++)
{
for (i = 0; i < width; i++)
wr_auto(0x00);
}
wr_comm(0xb2);
}
/*--------------在addr處顯示8xl*yl的圖形--------------
void disp_img(uint addr,uchar xl,uchar yl,uchar code*img)
{
uchar i,j ;
for(j=0;j<yl;j++)
{
for(i=0;i<xl;i++)
{
wr_xd(addr+j*width+i,0x24);
wr_od(img[j*xl+i],0xc0);
}
}
}*/
/*----------在addr處顯示row_yl行(每行row_xl個(gè))8xl*yl的文字----------*/
void disp_chn(uint addr, uchar xl, uchar yl, uchar row_xl, uchar row_yl, uchar
code *chn, uchar fanbai)
{
uchar i, j, k, m;
for (m = 0; m < row_yl; m++)
{
for (k = 0; k < row_xl; k++)
{
for (j = 0; j < yl; j++)
{
for (i = 0; i < xl; i++)
{
wr_xd(addr + m * yl * width + k * xl + j * width + i, 0x24);
if (fanbai)
wr_od(~chn[(m *row_xl * xl * yl) + (k *xl * yl) + (j *xl) + i],
0xc0);
else
wr_od(chn[(m *row_xl * xl * yl) + (k *xl * yl) + (j *xl) + i], 0xc0)
;
}
}
}
}
}
/*--------------顯示字符------------------*/
void disp_eng(uint addr, uchar eng)
{
wr_xd(addr, 0x24);
wr_comm(0xb0);
wr_auto(eng);
wr_comm(0xb2);
}
/*--------------顯示點(diǎn)陣------------------*/
void disp_dz(uchar data1, uchar data2)
{
uchar i, j;
wr_xd(addr_t, 0x24);
wr_comm(0xb0);
for (j = 0; j < 3; j++)
{
for (i = 0; i < width *2; i++)
wr_auto(data1);
for (i = 0; i < width *2; i++)
wr_auto(data2);
}
wr_comm(0xb2);
wr_xd(addr_t + 118 * 30, 0x24);
wr_comm(0xb0);
for (j = 0; j < 3; j++)
{
for (i = 0; i < width *2; i++)
wr_auto(data1);
for (i = 0; i < width *2; i++)
wr_auto(data2);
}
wr_comm(0xb2);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -