新聞中心

MCU SOURCE FILE_鍵盤

作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
#include<atmel/AT89X52.H>

#include

本文引用地址:http://m.butianyuan.cn/article/201611/320826.htm

#define uchar unsigned char
#define uint unsigned int
#define cmd P0 //定義LCM的數(shù)據(jù)接口,請根據(jù)實際情況修改
#define lcmbusy P0_7 //定義LCM數(shù)據(jù)接口的第8位所在的端口,請根據(jù)實際情況修改
#define RS P3_4//定義LCM的RS引腳所在的端口,請根據(jù)實際情況修改
#define RW P3_3//定義LCM的RW引腳所在的端口,請根據(jù)實際情況修改
#define EN P3_2 //定義LCM的EN引腳所在的端口,請根據(jù)實際情況修改

#define c_cls 0x01 //清屏命令
#define c_curret 0x02 //光標返回命令
#define c_setmode1 0x06//設(shè)置輸入模式:字符碼傳送完成后DDRAM地址指針自動加1,顯示不移位(一般使用此模式)
#define c_setmode2 0x07//設(shè)置輸入模式:字符碼傳送完成后DDRAM地址指針自動加1,顯示向右移位
#define c_setmode3 0x04//設(shè)置輸入模式:字符碼傳送完成后DDRAM地址指針自動減1,顯示不移位
#define c_setmode4 0x05//設(shè)置輸入模式:字符碼傳送完成后DDRAM地址指針自動減1,顯示向左移位
#define c_displayoff 0x08//關(guān)顯示
#define c_displayon1 0x0c//開顯示命令1,無光標
#define c_displayon2 0x0f//開顯示命令2,有光標且光標閃爍
#define c_displayon3 0x0e//開顯示命令3,有光標且光標不閃爍
#define c_displaymove1 0x10//光標向左移動,AC 自動減1
#define c_displaymove2 0x14//光標向右移動,AC 自動加1
#define c_displaymove3 0x18//光標和顯示一起向左移動
#define c_displaymove4 0x1c//光標和顯示一起向右移動
#define c_setfunc1 0x30//LCM功能設(shè)置:8位數(shù)據(jù)總線,單行顯示,5X8點陣字體
#define c_setfunc2 0x34//LCM功能設(shè)置:8位數(shù)據(jù)總線,單行顯示,5X10點陣字體
#define c_setfunc3 0x38//LCM功能設(shè)置:8位數(shù)據(jù)總線,雙行顯示,5X8點陣字體
#define c_setfunc4 0x20//LCM功能設(shè)置:4位數(shù)據(jù)總線,單行顯示,5X8點陣字體
#define c_setfunc5 0x24//LCM功能設(shè)置:4位數(shù)據(jù)總線,單行顯示,5X10點陣字體
#define c_setfunc6 0x28//LCM功能設(shè)置:4位數(shù)據(jù)總線,雙行顯示,5X8點陣字體

#define BL P3_5//定義LCM背光控制接口
uchar code hexcode[16]="0123456789ABCDEF";



void cmdexec(uchar scmd)
{
cmd=0xff;
RS=0;
RW=1;
_nop_();
EN=1;
_nop_();
_nop_();
while(lcmbusy);
EN=0;
RS=0;
RW=0;
cmd=scmd;
_nop_();
EN=1;
_nop_();
_nop_();
EN=0;
}

void show(uchar x,uchar y,uchar schar){
uchar temp;
temp=x&0x0f;
y&=0x3;
if(y==2)temp|=0x40;
temp|=0x80;
cmd=0xff;
RS=0;
RW=1;
_nop_();
EN=1;
_nop_();
_nop_();
while(lcmbusy);
EN=0;
RS=0;
RW=0;
cmd=temp;
_nop_();
EN=1;
_nop_();
_nop_();
EN=0;
RS=0;
RW=1;
_nop_();
EN=1;
_nop_();
_nop_();
while(lcmbusy);
EN=0;
RS=1;
RW=0;
cmd=schar;
_nop_();
EN=1;
_nop_();
_nop_();
EN=0;
}

void showstr(char x,y,char *string)
{while(*string!=