?? topway-graphiclcm-s6b0741-demopro-v0.1.c
字號:
SCLK = 1; // 初始化SCLK
A0 = 1; // 選擇數(shù)據(jù)通道
_CS = 0; // 選通模塊
for(j=0;j<8;j++)
{
SID=transbit; // 位寄存器D7位送數(shù)據(jù)口
SCLK=0; // 產(chǎn)生移位脈沖
SCLK=1; // 上升沿有效
transdata=transdata<<1; // 位寄存器數(shù)據(jù)左移一位
}
_CS=1; // 封鎖模塊
}
//----------------------------------------
// 功能子程序
//----------------------------------------
//-----灰度設置程序---------------
//
//-----前景灰度設置子程序---------
void SetFgray(uchar gray)
{
gray=gray&0x03;
gray=gray<<4;
GrayLevel4=GrayLevel4&0x0f|gray;
}
//-----背景灰度設置子程序---------
void SetGgray(uchar gray)
{
GrayLevel4=gray&0x03|GrayLevel4&0xf0;
}
//-----灰度數(shù)據(jù)生成子程序---------
void SdGraydata(uchar MonoData)
{
uchar i;
graydata0=0;
graydata1=0;
for (i=0;i<8;i++)
{
graydata0=graydata0>>1;
graydata1=graydata1>>1;
switch (MonoData&0x01)
{
case 1 : grayd1bit7=Fgraybit1;grayd0bit7=Fgraybit0;break;
case 0 : grayd1bit7=Ggraybit1;grayd0bit7=Ggraybit0;break;
}
MonoData=MonoData>>1;
}
SdData(graydata1);
SdData(graydata0);
}
//------ASCII字符寫入子程序---------------
void PrintASCII(uint x,y,uchar *pstr)
// 坐標(x,y),x為水平方向像素列;y為垂直方向字符行(8點像素/行)
{
uchar j;
uint addr;
SdCmd(y|0xb0); // 設置頁地址
SdCmd((x>>4)|0x10); // 設置列地址高4位
SdCmd(x&0x0f); // 設置列地址低4位
while(*pstr>0)
{
addr=*pstr++; // 取字符代碼
addr=(addr-0x20)*8; // 計算字符字模起始地址
for (j=0;j<6;j++) // 設置循環(huán)量,顯示6*8點陣字符
{
SdGraydata(ASCIITAB[addr+j]); // 寫字模數(shù)據(jù)
}
}
}
//------漢字字符寫入子程序-----------------
void PrintGB(uchar x,y,uchar *pstr)
// 坐標(x,y),x為水平方向像素列;y為垂直方向字符行(8點像素/行)
{
uint addr;
uchar j,n;
while(*pstr>0)
{
addr=*pstr++; // 取漢字代碼
addr=(addr-1)*32; // 計算漢字字模起始地址
for (n=0;n<2;n++)
{
SdCmd(y|0xb0); // 設置頁地址
SdCmd((x>>4)|0x10); // 設置列地址高4位
SdCmd(x&0x0f); // 設置列地址低4位
for (j=0;j<16;j++) // 寫16字節(jié)字模數(shù)據(jù)
{
SdGraydata(CCTAB[addr+j+16*n]); // 寫字模數(shù)據(jù)
}
y=y+1;
} // 頁地址加1
y=y-2; // 頁地址修正原值
x=x+16; // 列地址修正下一個漢字位置
}
}
//-----------------------------------
// 對比度調節(jié)程序 Contrast control
//-----------------------------------
//-----對比度增強子程序-------------
void LCD_Darker(void)
// 對比度參數(shù)ConTrastLevel初始值在初始化程序中設置
{
if (ContrastLevel<0x3F) // 限制上限值
{
ContrastLevel++; // 對比度參數(shù)加1
}
SdCmd(0x81); // 對比度設置指令代碼
SdCmd(ContrastLevel); // 寫入對比度值
}
//-----對比度減弱子程序---------------
void LCD_Lighter(void)
// 對比度參數(shù)ConTrastLevel初始值在初始化程序中設置
{
if (ContrastLevel>0x00) // 限制下限值
{
ContrastLevel--; // 對比度參數(shù)減1
}
SdCmd(0x81); // 對比度設置指令代碼
SdCmd(ContrastLevel); // 寫入對比度值
}
//-----------------------------------
// 初始化子程序Init LCD module
//-----------------------------------
void initLCDM(void)
{
//------對比度參數(shù)初始值設置-----------------------------------
ContrastLevel=0x20; // 對比度參數(shù)初始化設置
//------顯示設置----------------------------------------------
SdCmd(0xa1); // ADC=1,RAM列地址與列驅動逆順序
SdCmd(0xc8); // SHL=1,行驅動方向為反向
SdCmd(0x44); SdCmd(0x10); // COM0寄存器=10H
SdCmd(0x48); SdCmd(0x60); // 占空比設置1/96
SdCmd(0x40); SdCmd(0x00); // 顯示起始行=0
SdCmd(0xab); // 啟用內部振蕩器
SdCmd(0x4c); SdCmd(0x00); // 設置M信號周期
//-------LCD電源設置-------------------------------------------
SdCmd(0x66); // 5X倍壓
SdCmd(0x27); // 調節(jié)器電阻比設置
SdCmd(0x81);SdCmd(ContrastLevel);// 對比度設置
SdCmd(0x54); // 偏壓1/9
SdCmd(0x2f); // 啟用內部LCD驅動電源
//-------灰度設置---------------------------------------------
SdCmd(0x93); // 設置灰度驅動方式為4FRC+15PWM
SdCmd(0x88); SdCmd(0x00); // 設置W_FR2,1灰度寄存器值
SdCmd(0x89); SdCmd(0x00); // 設置W_FR4,3灰度寄存器值
SdCmd(0x8a); SdCmd(0x88); // 設置L_FR2,1灰度寄存器值
SdCmd(0x8b); SdCmd(0x88); // 設置L_FR4,3灰度寄存器值
SdCmd(0x8c); SdCmd(0xaa); // 設置D_FR2,1灰度寄存器值
SdCmd(0x8d); SdCmd(0xaa); // 設置D_FR4,3灰度寄存器值
SdCmd(0x8e); SdCmd(0xff); // 設置B_FR2,1灰度寄存器值
SdCmd(0x8f); SdCmd(0xff); // 設置B_FR4,3灰度寄存器值
//-------開顯示------------------------------------------------
SdCmd(0xa6); // 正向顯示
SdCmd(0xaf); // 開顯示
}
//----清屏子程序-----------------
void ClearRAM()
{
uint i,j;
for (i=0;i<12;i++) // 循環(huán)寫8頁
{
SdCmd(i|0xb0); // 頁地址設置
SdCmd(0x10); // 列地址高4位
SdCmd(0x00); // 列地址低4位
for(j=0;j<128;j++) // 循環(huán)寫128單元
{
SdData(0x00); // 數(shù)據(jù)設置為0
SdData(0x00);
}
}
}
//-----圖畫寫入子程序
void ShowBMP(uint x,y,width,high,uchar bmp[])
// 坐標(x,y),x為水平方向像素列;y為垂直方向頁(8點像素/頁)
//width:圖形水平像素點數(shù);high:圖形垂直頁數(shù);bmp[]:圖形數(shù)組名
{
uint i,j;
uint k=0;
for(i=0;i<high;i++)
{
SdCmd(y|0xb0); // 設置頁地址
SdCmd((x>>4)|0x10); // 設置列地址高4位
SdCmd(x&0x0f); // 設置列地址低4位
for(j=0;j<width;j++)
{
SdData(bmp[k]); // 寫圖形數(shù)據(jù)
k=k+1;
}
y=y+1; // 頁地址修正
}
}
//-----------------------------------
// Main Program
//-----------------------------------
void main()
{
uchar code dis6[]={0x01,0x02,0x03,0x04,0x05,0x0a,0x0b,0x00};
SP=0x60;
EA = 0; // disable interrupts
_RST=1; // hardware reset LCD module
_RST=0;
delayms(10);
_RST=1;
delayms(500);
_CS =1;
A0 =1;
SCLK =1;
SID =1;
initLCDM();
while(1)
{
ClearRAM();
SetFgray(3);SetGgray(0);
PrintGB(9,1,dis6);
SetFgray(2);SetGgray(0);
PrintASCII(4,4,"SHENZHEN TOPWAY LTD.");
SetFgray(1);SetGgray(0);
PrintASCII(6,6,"{^_^}LM9033(A){^.^}");
SetFgray(0);SetGgray(2);
PrintASCII(13,8,"TEL:0755-26613055");
SetFgray(2);SetGgray(1);
PrintASCII(0,11,"*********************");
delayms(3000);
ClearRAM();
ShowBMP(0,0,256,12,pic1);
delayms(3000);
}
}
//end of program
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -