{ }
/********************************************************************
* 名称 : init_1602()
* 功能 : 1602初始化,请参考1602的资料 * 输入 : 无 * 输出 : 无
***********************************************************************/
void init_1602() { }
write_com(0x38); // write_com(0x0c); write_com(0x06); if(hang==1)
write_com(0x80+add); write_com(0x80+0x40+add);
else
write_data(0x30+date/100); write_data('.');
write_data(0x30+date/10); write_data(0x30+date);
36
/********************************************************************
* 名称 : write_string(uchar hang,uchar lie,uchar *p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示\cd ef\,调用该函数如下
write_string(1,5,\* 输入 : 行,列,需要输入1602的数据 * 输出 : 无
***********************************************************************/
void write_string(uchar hang,uchar add,uchar *p) { }
uchar key_can;
/********************独立按键程序*****************/ void key()
if(hang==1)
write_com(0x80+add); write_com(0x80+0x40+add); while(1) {
if(*p == '\\0') break; write_data(*p); p++;
else
}
37
{ static uchar key_new; key_can = 20;
if((P2 & 0x0f) != 0x0f) { delay_uint(50);
if(((P2 & 0x0f) != 0x0f) && (key_new == 1)) { key_new = 0; switch(P2 & 0x0f) { case 0x0e: key_can = 1; break; //左边第1个 case 0x0d: key_can = 2; break; //左边第2个 case 0x0b: key_can = 3; break; //左边第3个 case 0x07: key_can = 4; break; //左边第4个 }
//
write_sfm2(2,0,key_can);
}
} else
key_new = 1; }
/***********
读
数
模
转
换
数
********************************************************/
38
据
//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的 {
unsigned char i=0,value=0,value1=0;
SCL=0; DO=1; CS=0; SCL=1; SCL=0; DO=SGL;
SCL=1; //第二个上升沿 SCL=0; DO=ODD;
SCL=1; //第三个上升沿 SCL=0; //第三个下降沿 DO=1;
for(i=0;i<8;i++) { }
SCL=1;
SCL=0; //开始从第四个下降沿接收数据 value<<=1; if(DO)
value++;
//开始
//第一个上升沿
// 1 0 0 通道 // 1 1 1 通道
unsigned char ad0832read(bit SGL,bit ODD)
39
}
for(i=0;i<8;i++) { } CS=1; SCL=1;
if(value==value1)
return value;
//与校验数据比较,正确就返回
//接收校验数据
value1>>=1; if(DO)
value1+=0x80; SCL=1; SCL=0;
数据,否则返回0
return 0;
/*********************小延时函数*****************************/ void delay() { }
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
//执行一条_nop_()指令就是1us
40