for(i=0;i<8;i++) {
SCK = 0;
Dbyte=Dbyte<<1; SID = CY; SCK = 1; SCK = 0; } }
/********************************************************** 接收一个字节
***********************************************************/ unsigned char ReceiveByte(void) {
unsigned char i,temp1,temp2; temp1=temp2=0; for(i=0;i<8;i++) {
temp1=temp1<<1; SCK = 0;
SCK = 1; SCK = 0;
if(SID) temp1++; }
for(i=0;i<8;i++) {
temp2=temp2<<1; SCK = 0; SCK = 1; SCK = 0;
if(SID) temp2++; }
return ((0xf0&temp1)+(0x0f&temp2)); }
/**************************************************************** 检查忙状态
******************************************************************/ void CheckBusy( void ) {
do SendByte(0xfc); //11111,RW(1),RS(0),0 while(0x80&ReceiveByte()); }
/****************************************************************** 写一个字节的指令
*******************************************************************/ void WriteCommand( unsigned char Cbyte ) {
CS = 1;
CheckBusy();
SendByte(0xf8); //11111,RW(0),RS(0),0 SendByte(0xf0&Cbyte); SendByte(0xf0&Cbyte<<4); CS = 0; }
/************************************************************* 写一个字节的数据
**************************************************************/ void WriteData( unsigned char Dbyte ) {
CS = 1;
CheckBusy();
SendByte(0xfa); //11111,RW(0),RS(1),0 SendByte(0xf0&Dbyte); SendByte(0xf0&Dbyte<<4); CS = 0; }
/****************************************************************** lcd初始化函数
*******************************************************************/ void LcmInit( void ) {
WriteCommand(0x30); WriteCommand(0x03); WriteCommand(0x0c); WriteCommand(0x01); WriteCommand(0x06); }
/*******************************************************************************************************
设定光标函数
********************************************************************************************************/
void Location_xy_12864(unsigned char x,unsigned char y) {
switch(x) {
case 0:
x=0x80;break;
case 1:
x=0x90;break; case 2:
x=0x88;break; case 3:
x=0x98;break; default: x=0x80; }
y=y&0x07;
WriteCommand(0x30); WriteCommand(y+x); WriteCommand(y+x); }
/*********************************************************************************** 清除文本
************************************************************************************/ void LcmClearTXT( void ) {
unsigned char i; WriteCommand(0x30); WriteCommand(0x80); for(i=0;i<64;i++) WriteData(0x20);
Location_xy_12864(0,0); }
/************************************************************************************** 清除图片
*****************************************************************************************/
void LcmClearBMP( void ) {
unsigned char i,j; WriteCommand(0x34); WriteCommand(0x36); for(i=0;i<32;i++) {
WriteCommand(0x80|i); WriteCommand(0x80); for(j=0;j<32;j++) WriteData(0); } }
//显示温度
void PutTemp(unsigned char row,unsigned char col) {
WriteCommand(0x30);
WriteCommand(AC_TABLE[8*row+col]); WriteData((zhengshu0)/10+48); WriteData(zhengshu+48); WriteData('.');
WriteData(xiaoshu1+48); }
/****************************************************************************************
显示字符串
*****************************************************************************************/
void PutStr(unsigned char row,unsigned char col,unsigned char *puts) {
WriteCommand(0x30);
WriteCommand(AC_TABLE[8*row+col]); while(*puts != '\\0') {
if(col==8) {
col=0; row++; }
if(row==4) row=0;
WriteCommand(AC_TABLE[8*row+col]); WriteData(*puts); puts++;
if(*puts != '\\0') {
WriteData(*puts); puts++; col++; } } } /*
//显示一个四位的数字
void PutNum(unsigned char row,unsigned char col,unsigned int num) {
WriteCommand(0x30);
WriteCommand(AC_TABLE[8*row+col]);
相关推荐: