while(*p)
write_data(*p++); //用while(*p)……自动检测是否写完,当写完后指针变为零,跳出循环 }
/******************************************/ /******************液晶写命令子函数************************/ void write_com(uchar com) {
lcdrs=0; //将RS拉低,说明对指令操作, 上电时是默认高电平
P0=com; //对P0赋值,该值是对应命令码 ,com为形参
delay(5); //延时约五毫秒
lcden=1; //E拉高,让液晶读P0口,写入对应命令码
delay(5); //延时约五毫秒,让液晶忙完再对其操作,防止数据丢失
lcden=0; //将E拉低 }
/******************************************/ /*******************液晶写数据子函数***********************/ void write_data(uchar da) {
lcdrs=1; //将RS拉低高,说明对数据操作
P0=da; //对P0赋值,该值是要写入的数据 ,da为形参
delay(5); //延时约五毫秒
lcden=1; //E拉高,让液晶读P0口,写入数据
delay(5); //延时约五毫秒,让液晶忙完再对其操作,防止数据丢失
lcden=0; //将E拉低 }
/******************************************/
/**********************AD转换子函数********************/ void ad() {
31
wr=0; //将WR拉低,让芯片开始读6、7号引脚电压值 delay(1); //延时约一毫秒,让芯片忙完
wr=1; //将WR拉高,上升沿到来时,AD转换开始 delay(5); //软件延时约五毫秒,等待AD转换完成 P3=0xff; //将P3口全部拉高,等待测试数据 delay(1); //延时一会,避免紊乱 rd=0; //将RD拉低,芯片送出数据 delay(1); //延时约一毫秒,让P3口 temp=P3; //将数据存入temp rd=1; //将RD拉高 }
/******************************************/ /********************酒精浓度显示子函数**********************/ void display() {
uint value; uchar a,b,c; value=3.92*temp; a=value/100; b=value0/10; c=value;
write_com(0x80+0x40+4); write_data(0x30+a); write_com(0x80+0x40+5); write_data(0x30+b); write_com(0x80+0x40+6); write_data(0x30+c); }
/******************************************/
/*****************定时器程序*************************/ void timer0()interrupt 1
{ TMOD=0X01; //定时器工作方式设置为定时器0,方式1 TH0=(65536-50000)/256; //计数寄存器高8位 TL0=(65536-50000)%6; //计数寄存器低8位 TR0=1; //开启定时器0运行 ET0=1; //开定时器0中断 tt++;
32
if(tt==20) {
tt=0; if(b==10) b=11; else b=10; d++;
if(d==10) {
d=0; c++;
if(c==6) {
c=0; a++;
if(a==10) //掉电和空闲模式的进入 {
ET0=0; //关定时器
PCON=0X02; //PD=1,进入掉电模式//或 PCON=0X01;//IDL=1,进入空闲模式 } } } } }
/*****************休眠唤醒程序*************************/ void huan_xing() interrupt 2 //采用硬件复位唤醒单片机,按键K1 {
PCON=0;//清除之前的掉电(空闲)模式 ET0=1; //开定时器0 }
33
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库智能酒精浓度探测仪(7)在线全文阅读。
相关推荐: