for(i=0;i<8;i++) {
value <<= 1;
if((dat & 0x01) == 0x01)
value |= 0x01;
dat >>= 1;
}
return value;
}
/************ 写命令函数void write_com(uchar com) {
P0=change_dat(com); rw=0; rs=0;
delay_uint(25); e=1;
delay_uint(50); e=0; }
/************ 写数据函数void write_dat(uchar dat) {
P0=change_dat(dat); rw=0; rs=1;
delay_uint(25); e=1;
delay_uint(50); e=0;
*****************/ *****************/ 32
}
/********************************************************** *函数名: addr_12864 *功能:写地址
*说明:写汉字时要写个地址 *输入:无 *返回:无
**********************************************************/ void addr_12864(uchar hang,uchar lie) //地址转换 { }
/********************************************************** *函数名: write_string
*功能:在12864上显示字符数据 *说明: *输入:无
33
uchar address; switch(hang) { }
case 1: address=0x80 + lie ;
break;
case 2: address=0x90 + lie ;
break;
case 3: address=0x88 + lie ;
break;
case 4: address=0x98 + lie ;
break;
default :
break;
write_com(address);
*返回:无
**********************************************************/
void write_string(uchar hang,uchar lie,uchar *p) { }
/************12864液晶初始化函数*****************/ void init_12864() {
write_com(0x30); write_com(0x0c); write_com(0x01); }
/************初始化显示*****************/ void init_12864_dis() { }
34
write_string(1,0,\ 欢迎乘座 \write_string(2,0,\ BRT 3 号线 \write_string(3,0,\ \write_string(4,0,\ \addr_12864(hang,lie); while(*p != '\\0') { }
write_dat(*p); p++;
delay_uint(50);
//地址转换
/***********************小延时函数**************************/ void delay_us (unsigned int us) { }
/***********************三线发码子程序************************/ void Send_threelines(unsigned char addr) {
unsigned char i;
VRST=0; delay_1ms(5); VRST=1;
delay_1ms(20); /* 复位拉高20ms*/ VCS=0;
delay_1ms(5); /* 片选拉低5ms */ while(us--) { }
_nop_();
for(i=0;i<8;i++)
{
VSCL=0; if(addr&0x01) { } else
VSDA=0; VSDA=1;
addr>>=1;
delay_us(150); /* 150us */
35
VSCL=1;
delay_us(150); /* 150us */
} VCS=1;
delay_1ms(200); // while(VBUSY == 0);
//忙等待
}
/********************独立按键程序*****************/ uchar key_can; //按键值
void key() //独立按键程序 { static uchar key_new;
key_can = 20; //按键值还原 P1 |= 0x03;
if((P1 & 0x03) != 0x03)
//按键按下
{ delay_1ms(1);
//按键消抖动
if(((P1 & 0x03) != 0x03) && (key_new == 1)) {
key_new = 0; switch(P1 & 0x03) { case 0x02: key_can = 2; break; case 0x01: key_can = 1; break;
} }
}
else //按键松开
key_new = 1;
}
36
//确认是按键按下 //得到按键值 //得到按键值
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库公交车语音报站系统 - - - 毕业论文(7)在线全文阅读。
相关推荐: