?? lcdmain.c
字號:
#include "chip.h"
#include "sport0.h"
#include "st7565.h"
#include "lcdm.h"
#include "lcm16.h"
#include "key.h"
#include "pcf8574.h"
#include "lcm16.h"
#include "hzk16def.h"
#include "i2c.h"
#include "clock.h"
extern unsigned char I2CINT,rx0flg;
extern const unsigned int hzk16index[][2];
unsigned char userkey;
unsigned char brightness,screencnt;
void WaitKey(void)
{
userkey=0; //清除鍵值變量
rx0flg=0; //清除串口接收標(biāo)志
I2CINT=0; //清除鍵盤標(biāo)志
while(!rx0flg && !I2CINT); //等待串口和鍵盤輸入
if(I2CINT) //如果有鍵按下
{
__disable_interrupt(); //禁止全局中斷
I2CINT=0; //清除鍵盤標(biāo)志
userkey=KeyProcess(); //讀取鍵盤鍵值
__enable_interrupt(); //允許全局中斷
Tx0S((unsigned char *)"Key:"); //顯示讀取到的鍵值
Tx0HexC(userkey);
Tx0S((unsigned char *)"\n");
if(userkey==NO_KEY) userkey=0; //如果非法鍵值,則清除鍵盤變量
}
else //如果接收到串口數(shù)據(jù)
{
userkey=RXBUF0; //保存串口接收數(shù)據(jù)
rx0flg=0; //清除串口接收標(biāo)志
}
}
void LCMStartScreen(void) //顯示液晶開機(jī)畫面
{
ClrScr(); //清除LCM顯示屏幕(DDRAM)
LCMDisplay(0,8,(unsigned char *)"EDB430B1 Rev.B"); //顯示開機(jī)畫面
LCMDisplay(2,16,"開發(fā)實(shí)驗(yàn)系統(tǒng)");
LCMDisplay(4,0,"液晶測試,版本1.0");
LCMDisplay(6,12,"2007年3月18日");
screencnt=0; //字符顯示頁面計(jì)數(shù)器
brightness=BRIGHTNESS; //初始亮度值
}
void main(void)
{
unsigned char linecnt,charcnt;
WDTCTL=WDTPW+WDTHOLD;
InitClock(); //初始化MSP430系統(tǒng)時鐘,MCLK=SMCLK=8M
InitKeyPort(); //初始化鍵盤中斷端口
I2CWrByte(I2CWR_ADDR,KEY_INIT_NOLED); //初始化鍵盤掃描狀態(tài)端口,關(guān)閉LED
InitSport0(); //初始化串口0
__enable_interrupt(); //允許全局中斷
InitLCDM(); //初始化液晶模塊(端口)
I2CWrByte(I2CWR_ADDR,KEY_INIT_LED1); //LED點(diǎn)亮
LCMStartScreen(); //顯示LCM開機(jī)屏幕
while(1)
{
Tx0S((unsigned char *)"128x64點(diǎn)陣圖形液晶模塊\n");
Tx0S((unsigned char *)"選擇以下測試項(xiàng)目\n");
Tx0S((unsigned char *)"1.亮度增加\n");
Tx0S((unsigned char *)"2.亮度減小\n");
Tx0S((unsigned char *)"3.ASCII字符庫顯示\n");
Tx0S((unsigned char *)"4.中文字符庫顯示\n");
Tx0S((unsigned char *)"5.清除屏幕\n");
Tx0S((unsigned char *)"6.滿屏點(diǎn)陣顯示\n");
Tx0S((unsigned char *)"7.LCM復(fù)位\n");
WaitKey();
switch(userkey){
case '1':
if(brightness!=0x3f)
{
brightness++; //亮度值增加
Tx0S((unsigned char *)"Brightness:0x");
Tx0HexC(brightness); //顯示亮度值(16進(jìn)制)
Tx0S((unsigned char *)"\n");
WrLCMComd(0x81); //設(shè)置LCM亮度命令
WrLCMComd(brightness); //設(shè)置LCM亮度值
}
else Tx0S((unsigned char *)"Brightness is Max\n");
break;
case '2':
if(brightness)
{
brightness--; //亮度值減少
Tx0S((unsigned char *)"Brightness:0x");
Tx0HexC(brightness); //顯示亮度值(16進(jìn)制)
Tx0S((unsigned char *)"\n");
WrLCMComd(0x81); //設(shè)置LCM亮度命令
WrLCMComd(brightness); //設(shè)置LCM亮度值
}
else Tx0S((unsigned char *)"Brightness is min\n");
break;
case '3':
for(screencnt=0;screencnt<4;) //顯示4屏ASCII字符,每屏64個字符
{
Tx0S((unsigned char *)"按'Q'鍵或者鍵盤9退出,其他鍵繼續(xù)......\n");
if(userkey=='q' || userkey=='Q' || userkey=='9') break; //如果是'q'或者'Q'或者'9',那么退出
if(userkey)
{
for(linecnt=0;linecnt<4;linecnt++) //顯示4行
{
for(charcnt=0;charcnt<16;charcnt++) //顯示每行16個字符
LcdmDisplayChar16(linecnt<<1,charcnt<<3,(screencnt<<6)+(linecnt<<4)+charcnt);//顯示一個ASCII字符
}
screencnt++;
}
WaitKey(); //等待用戶輸入
if(userkey=='Q' || userkey=='q' || userkey=='9') break;
}
break;
case '4':
screencnt=0; //清除字符顯示頁面計(jì)數(shù)器
do{
Tx0S((unsigned char *)"按'Q'鍵或者鍵盤9退出,其他鍵繼續(xù)......\n");
if(userkey)
{
ClrScr(); //清除屏幕
for(linecnt=0;linecnt<4;linecnt++) //顯示4行
{
for(charcnt=0;charcnt<8;charcnt++) //顯示每行8個中文字符
{
LcdmDisplayHZK16(linecnt<<1,charcnt<<4,hzk16index[screencnt][0]);//顯示一個中文字符
screencnt++;
if(screencnt==HZK_SIZE_LEN) break;
}
}
}
WaitKey(); //等待用戶輸入
}while(screencnt<HZK_SIZE_LEN && userkey!='q' && userkey!='Q' && userkey!='9' );
break;
case '5':
ClrScr(); //清除屏幕
break;
case '6':
WrLCMComd(SCR_DOT_ON); //寫全點(diǎn)陣命令
WaitKey(); //等待用戶輸入
WrLCMComd(SCR_DOT_OFF); //退出全點(diǎn)陣顯示命令
break;
case '7':
WrLCMComd(EVOL_MODE | 0x00); //LCD對比整命令
WrLCMComd(BRIGHTNESS); //缺省對比度值
LCMStartScreen(); //顯示開機(jī)畫面,LCM復(fù)位
break;
default:
break;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -