?? lcm.c
字號(hào):
/*=========================================================
* 開發(fā)環(huán)境:Keil uVision3 *
* 軟件名稱: *
* 開發(fā)日期:2007/1/10 *
* 開 發(fā) 者:LPC *
=========================================================*/
/*加入頭文件*/
#include<W77C32.h> //W77E58頭文件
#include<intrins.h> //
#include<stdio.h> //
#include<stdlib.h> //
#include<TYPE.H> //聲明定義
#include<WORD.H> //聲明字庫
#include<OUTTYPE.H> //
#include<INCLUDES.H> //聲明所有子函數(shù)
//=======================================================//
/********************LCM函數(shù)開始**************************/
//=======================================================//
/*=========================================================
函數(shù)名:LCM_WriteByteData()
功能:LCM寫數(shù)據(jù)字節(jié)函數(shù)
入口參數(shù):Data
出口參數(shù):無
=========================================================*/
void LCM_WriteByteData(Uchar Data)
{
LCM_CS=1; //置高片選
LCM_A0=1; //數(shù)據(jù)輸入使能
P0=Data; //寫入字節(jié)數(shù)據(jù)
LCM_A0=0; //輸入為數(shù)據(jù)輸入狀態(tài)
LCM_CS=0; //使能LCM
LCM_WR=0; //寫使能
_nop_(); //空操作
LCM_WR=1; //寫禁止
LCM_CS=1; //釋放LCM
LCM_A0=1; //數(shù)據(jù)傳輸狀態(tài)結(jié)束
}
/*=========================================================
函數(shù)名:LCM_WriteByteCon()
功能:LCM寫指令字節(jié)函數(shù)
入口參數(shù):Data
出口參數(shù):無
=========================================================*/
void LCM_WriteByteCon(Uchar Data)
{
LCM_CS=1; //片選置高
LCM_A0=0; //數(shù)據(jù)/指令選擇
P0=Data; //輸入指令
LCM_A0=1; //指令使能
LCM_CS=0; //片選使能
LCM_WR=0; //寫啟動(dòng)
_nop_(); //空操作
LCM_WR=1; //寫結(jié)束
LCM_CS=1; //釋放片選
LCM_A0=0; //數(shù)據(jù)/指令選擇
}
/*=========================================================
函數(shù)名:LCM_ClrRam()
功能:LCM清除RAM函數(shù)
入口參數(shù):無
出口參數(shù):無
=========================================================*/
void LCM_ClrRam(void)
{
Uchar i,j; //臨時(shí)變量
LCM_WriteByteCon(0x46); //CSRW,指令代碼:46H
LCM_WriteByteData(0x00); //CSRL=0
LCM_WriteByteData(0x00); //CSRH=0
LCM_WriteByteCon(0x4C); //CSRDIR:指令代碼:4CH
LCM_WriteByteCon(0x42); //MWRTTE:指令代碼:42H
for(i=0;i<240;i++)
{
for(j=0;j<40;j++)
{
LCM_WriteByteData(0x00); //清空RAM
}
}
}
/*=========================================================
函數(shù)名:LCM_Screen()
功能:LCM全屏函數(shù)
入口參數(shù):無
出口參數(shù):無
=========================================================*/
void LCM_Screen(Uchar Data1,Uchar Data2)
{
Uchar i,j; //臨時(shí)變量
LCM_WriteByteCon(0x46); //CSRW,指令代碼:46H
LCM_WriteByteData(0x00); //
LCM_WriteByteData(0x40); //為什么送40H?
LCM_WriteByteCon(0x4C); //該指令設(shè)置光標(biāo)右移
LCM_WriteByteCon(0x42); //該指令允許顯示數(shù)據(jù)連續(xù)輸入顯示區(qū)
for(i=0;i<120;i++)
{
for(j=0;j<40;j++)
{
LCM_WriteByteData(Data1); //黑屏
}
for(j=0;j<40;j++)
{
LCM_WriteByteData(Data2); //黑屏
}
}
}
/*=========================================================
函數(shù)名:LCM_WriteChinese()
功能:LCM顯示漢字函數(shù)
入口參數(shù):字符位置參數(shù)(2字節(jié)),字符數(shù)據(jù)
出口參數(shù):無
=========================================================*/
void LCM_WriteChinese(Uchar Row,Uchar Col,Uchar x[32])
{
Uchar i,j,k; //臨時(shí)變量
Uint Biao; //臨時(shí)變量
Biao=(Uint)((Row*40+Col)+0x4000); //計(jì)算位置
k=0;
for(i=0;i<16;i++)
{
LCM_WriteByteCon(0x46); //寫入指令,設(shè)置光標(biāo)地址和緩沖區(qū)地址
LCM_WriteByteData((Uchar)(Biao&0x00FF)); //寫入附帶數(shù)據(jù)
LCM_WriteByteData((Uchar)((Biao&0xFF00)>>8)); //寫入附帶數(shù)據(jù)
for(j=0;j<2;j++)
{
LCM_WriteByteCon(0x4C); //光標(biāo)右移操作
LCM_WriteByteCon(0x42); //連續(xù)寫操作
LCM_WriteByteData(x[k++]); //帶入數(shù)據(jù)
}
Biao+=(Uint)(40); //重新計(jì)算
}
}
/*=========================================================
函數(shù)名:LCM_WriteEnglish()
功能:LCM顯示英文字母和數(shù)字函數(shù)
入口參數(shù):字符位置參數(shù)(2字節(jié)),內(nèi)置字符代碼
出口參數(shù):無
=========================================================*/
void LCM_WriteEnglish(Uchar Row,Uchar Col,Uchar x[16])
{
Uchar i,k; //臨時(shí)變量
Uint Biao; //臨時(shí)變量
Biao=(Uint)((Row*40+Col)+0x4000); //計(jì)算位置
k=0;
for(i=0;i<16;i++)
{
LCM_WriteByteCon(0x46); //寫入指令,設(shè)置光標(biāo)地址和緩沖區(qū)地址
LCM_WriteByteData((Uchar)(Biao&0x00FF)); //寫入附帶數(shù)據(jù)
LCM_WriteByteData((Uchar)((Biao&0xFF00)>>8)); //寫入附帶數(shù)據(jù)
LCM_WriteByteCon(0x4C); //光標(biāo)右移操作
LCM_WriteByteCon(0x42); //連續(xù)寫操作
LCM_WriteByteData(x[k++]); //帶入數(shù)據(jù)
Biao+=(Uint)(40); //重新計(jì)算
}
}
/*=========================================================
函數(shù)名:LCM_Write8x8()
功能:LCM顯示1/4漢字大小的字符函數(shù)
入口參數(shù):字符位置參數(shù)(2字節(jié)),內(nèi)置字符代碼
出口參數(shù):無
=========================================================*/
void LCM_Write8x8(Uchar Row,Uchar Col,Uchar x[8])
{
Uchar i,k; //臨時(shí)變量
Uint Biao; //臨時(shí)變量
Biao=(Uint)((Row*40+Col)+0x4000); //計(jì)算位置
k=0;
for(i=0;i<8;i++)
{
LCM_WriteByteCon(0x46); //寫入指令,設(shè)置光標(biāo)地址和緩沖區(qū)地址
LCM_WriteByteData((Uchar)(Biao&0x00FF)); //寫入附帶數(shù)據(jù)
LCM_WriteByteData((Uchar)((Biao&0xFF00)>>8)); //寫入附帶數(shù)據(jù)
LCM_WriteByteCon(0x4C); //光標(biāo)右移操作
LCM_WriteByteCon(0x42); //連續(xù)寫操作
LCM_WriteByteData(x[k++]); //帶入數(shù)據(jù)
Biao+=(Uint)(40); //重新計(jì)算
}
}
/*=========================================================
函數(shù)名:LCM_Wel()
功能:LCM顯示歡迎使用函數(shù)
入口參數(shù):無
出口參數(shù):無
=========================================================*/
void LCM_Wel(void)
{
Uchar y; //聲明變量
//顯示【歡迎使用】
LCM_ClearWorkSpace(); //清除工作區(qū)
y=0x68; //定位縱坐標(biāo)
LCM_WriteChinese(y,0x0D,W29); //“歡”
LCM_WriteChinese(y,0x11,W30); //“迎”
LCM_WriteChinese(y,0x15,W31); //“使”
LCM_WriteChinese(y,0x19,W32); //“用”
}
/*=========================================================
函數(shù)名:LCM_Welcom()
功能:LCM顯示歡迎界面函數(shù)
入口參數(shù):無
出口參數(shù):無
=========================================================*/
void LCM_Welcom(void)
{
Uchar i,j; //聲明變量
LCM_ClrRam(); //清除LCM中RAM
LCM_Screen(0xFF,0xFF); //黑屏
LCM_WriteByteCon(0x46); //準(zhǔn)備顯示數(shù)據(jù)指令
LCM_WriteByteData(0x00); //附帶參數(shù)
LCM_WriteByteData(0x00); //
//顯示【歡迎使用】
LCM_Wel(); //調(diào)顯【歡迎使用】
//顯示【中央空調(diào)計(jì)費(fèi)系統(tǒng)】
i=0x08; //定位縱坐標(biāo)
LCM_WriteChinese(i,0x0C,W33); //“中”
LCM_WriteChinese(i,0x0E,W34); //“央”
LCM_WriteChinese(i,0x10,W35); //“空”
LCM_WriteChinese(i,0x12,W36); //“調(diào)”
LCM_WriteChinese(i,0x14,W37); //“計(jì)”
LCM_WriteChinese(i,0x16,W38); //“費(fèi)”
LCM_WriteChinese(i,0x18,W39); //“系”
LCM_WriteChinese(i,0x1A,W40); //“統(tǒng)”
//顯示時(shí)間固定字符【20年月日星期】
i=0x20; //定位縱坐標(biāo)
LCM_WriteEnglish(i,0x04,No2); //“2”
LCM_WriteEnglish(i,0x05,No0); //“0”
LCM_WriteChinese(i,0x08,W18); //“年”
LCM_WriteChinese(i,0x0C,W19); //“月”
LCM_WriteChinese(i,0x10,W20); //“日”
LCM_WriteChinese(i,0x14,W21); //“星”
LCM_WriteChinese(i,0x16,W22); //“期”
LCM_WriteEnglish(i,0x1E,FH3); //時(shí)鐘分割符號(hào)“:”
LCM_WriteEnglish(i,0x21,FH3); //時(shí)鐘分割符號(hào)“:”
//顯示【鄭州春泉暖通節(jié)能設(shè)備有限公司】
i=0xC8; //定位縱坐標(biāo)
j=0x06; //定位起始橫坐標(biāo)
LCM_WriteChinese(i,j,W0); //“鄭”
LCM_WriteChinese(i,j+2,W1); //“州”
LCM_WriteChinese(i,j+4,W2); //“春”
LCM_WriteChinese(i,j+6,W3); //“泉”
LCM_WriteChinese(i,j+8,W4); //“暖”
LCM_WriteChinese(i,j+10,W5); //“通”
LCM_WriteChinese(i,j+12,W6); //“節(jié)”
LCM_WriteChinese(i,j+14,W7); //“能”
LCM_WriteChinese(i,j+16,W8); //“設(shè)”
LCM_WriteChinese(i,j+18,W9); //“備”
LCM_WriteChinese(i,j+20,W10); //“有”
LCM_WriteChinese(i,j+22,W11); //“限”
LCM_WriteChinese(i,j+24,W12); //“公”
LCM_WriteChinese(i,j+26,W13); //“司”
//顯示【電話:(0371)67579116 67579117】
i=0xD8; //定位縱坐標(biāo)
j=0x06; //定位起始橫坐標(biāo)
LCM_WriteChinese(i,j,W70); //“電”
LCM_WriteChinese(i,j+2,W131); //“話”
LCM_WriteEnglish(i,j+4,FH3); //“:”
LCM_WriteEnglish(i,j+5,FH1); //“(”
LCM_WriteEnglish(i,j+6,No0); //“0”
LCM_WriteEnglish(i,j+7,No3); //“3”
LCM_WriteEnglish(i,j+8,No7); //“7”
LCM_WriteEnglish(i,j+9,No1); //“1”
LCM_WriteEnglish(i,j+10,FH2); //“)”
LCM_WriteEnglish(i,j+11,No6); //“6”
LCM_WriteEnglish(i,j+12,No7); //“7”
LCM_WriteEnglish(i,j+13,No5); //“5”
LCM_WriteEnglish(i,j+14,No7); //“7”
LCM_WriteEnglish(i,j+15,No9); //“9”
LCM_WriteEnglish(i,j+16,No1); //“1”
LCM_WriteEnglish(i,j+17,No1); //“1”
LCM_WriteEnglish(i,j+18,No6); //“6”
LCM_WriteEnglish(i,j+19,FH5); //“/”
LCM_WriteEnglish(i,j+20,No6); //“6”
LCM_WriteEnglish(i,j+21,No7); //“7”
LCM_WriteEnglish(i,j+22,No5); //“5”
LCM_WriteEnglish(i,j+23,No7); //“7”
LCM_WriteEnglish(i,j+24,No9); //“9”
LCM_WriteEnglish(i,j+25,No1); //“1”
LCM_WriteEnglish(i,j+26,No1); //“1”
LCM_WriteEnglish(i,j+27,No7); //“7”
/* LCM_WriteEnglish(0xD8,0x1C,No12); //“C”
LCM_WriteEnglish(0xD8,0x1D,No50); //“o”
LCM_WriteEnglish(0xD8,0x1E,No51); //“p”
LCM_WriteEnglish(0xD8,0x1F,No60); //“y”
LCM_WriteEnglish(0xD8,0x20,No53); //“r”
LCM_WriteEnglish(0xD8,0x21,No44); //“i”
LCM_WriteEnglish(0xD8,0x22,No42); //“g”
LCM_WriteEnglish(0xD8,0x23,No43); //“h”
LCM_WriteEnglish(0xD8,0x24,No55); //“t”
LCM_WriteEnglish(0xD8,0x25,FH1); //“(”
LCM_WriteEnglish(0xD8,0x26,No38); //“c”
LCM_WriteEnglish(0xD8,0x27,FH2); //“)”
*/
//顯示上述字符下短線【-】
for(i=0x06;i<0x22;i++)
{
LCM_Write8x8(0x18,i,L0); //畫單線
}
//顯示上述字符下短線【=】
for(i=0x02;i<0x26;i++)
{
LCM_Write8x8(0x30,i,L1); //畫粗線
}
for(i=0x02;i<0x26;i++)
{
LCM_Write8x8(0xC0,i,L1); //畫粗線
}
}
/*=========================================================
函數(shù)名:LCM_ClearWorkSpace()
功能:LCM清除工作區(qū)函數(shù)
入口參數(shù):無
出口參數(shù):無
=========================================================*/
void LCM_ClearWorkSpace(void)
{
Uchar i,j,y; //聲明變量
y=0x40; //變量賦值
for(i=0;i<8;i++,y+=0x10)
{
for(j=0;j<40;j++)
{
LCM_WriteEnglish(y,j,FH4); //清除工作區(qū)
}
}
}
/*=========================================================
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -