首页 基于单片机的超声波液位图纸

基于单片机的超声波液位图纸

举报
开通vip

基于单片机的超声波液位图纸#include<reg52.h>#include<intrins.h>#include"LCD1602.h"#include"STCEEPROM.h"sbitRX=P3^6;//定义超声波端口sbitTX=P3^7;sbitLED=P2^0;//LEDsbitSPEAK=P2^1;//蜂鸣器sbitMotor=P2^2;//水泵sbitKEY1=P1^3;//设置按键sbitKEY2=P1^4;//加按键sbitKEY3=P1^5;//减按键unsi...

基于单片机的超声波液位图纸
#include<reg52.h>#include<intrins.h>#include"LCD1602.h"#include"STCEEPROM.h"sbitRX=P3^6;//定义超声波端口sbitTX=P3^7;sbitLED=P2^0;//LEDsbitSPEAK=P2^1;//蜂鸣器sbitMotor=P2^2;//水泵sbitKEY1=P1^3;//设置按键sbitKEY2=P1^4;//加按键sbitKEY3=P1^5;//减按键unsignedinttime=0;//计时变量unsignedinttimer=0;//计时变量unsignedintS=0;//当前值unsignedintSET_H=100,SET_L=10;//最高值和最低值bitflag=0;//测量标志位unsignedcharTable[3],Table1[5];//显示数组unsignedcharKEY_flag=0;//按键选择标志//延时 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数voidDelay_ms(intjj)//延时函数{intii;//延时变量while(jj--)//延时n毫秒for(ii=0;ii<116;ii++);//延时1毫秒}voidConut(void)//测量函数{time=TH0*256+TL0;//距离计数TH0=0;//定时器清零TL0=0;//定时器清零S=(time*1.87)/10;//算出来是CM、转换if((S>=700)||flag==1)//超出测量范围显示“-”{flag=0;//数据无效标志}else{Table1[0]=S/1000+0X30;//显示当前值Table1[1]=S/100%10+0X30;//显示当前值Table1[2]=S/10/10+0X30;//显示当前值Table1[3]='.';//显示当前值Table1[4]=S%10+0X30;//显示当前值LCD1602_Disp_ZF(0x88,Table1,5);//显示当前值}}voidmain(void)//主函数{LCD1602_init();//液晶初始化//////////////////////0123456789ABCDEFLCD1602_Disp_ZF(0x80,"NowS:CM",16);//0123456789ABCDEFLCD1602_Disp_ZF(0x80+0X40,"SetH:L:",16);TMOD=0x11;//设T0为方式1,GATE=1;TH0=0;//定时器清零TL0=0;//定时器清零TH1=0xf8;//2MS定时TL1=0x30;//2MS定时ET0=1;//允许T0中断ET1=1;//允许T1中断TR1=1;//开启定时器EA=1;//开启总中断EA=0;//关闭中断SET_H=ISP_READ(0x2c00)*256+ISP_READ(0x2c01);//读取存储的最大值SET_L=ISP_READ(0x2c02)*256+ISP_READ(0x2c03);//读取存储的最小值EA=1;//开启总中断while(1)//函数循环{while(!RX);//当RX为零时等待TR0=1;//开启计数while(RX);//当RX为1计数并等待TR0=0;//关闭计数Conut();//计算显示距离函数/////////////////////////////////////if((S/10>SET_H)||(S/10>SET_H))//水位过低过高报警,{LED=0;SPEAK=0;//报警}else{LED=1;SPEAK=1;//不报警}////////////////////////////////if((S/10>SET_H))//水位过低打开水泵{Motor;//打开}else{LED=1;SPEAK=1;//关闭}if(!KEY1)//切换设置最大值和最小值{Delay_ms(10);//延时去抖动if(!KEY1)//切换设置最大值和最小值{KEY_flag++;//模式选择ISP_ERASE(0x2c00);//注意:字节编程时必须要先要擦除整个扇区ISP_PROGRAM(0x2c00,SET_H/256);//记忆存储ISP_PROGRAM(0x2c01,SET_H);//记忆存储ISP_PROGRAM(0x2c02,SET_L/256);//记忆存储ISP_PROGRAM(0x2c03,SET_L);//记忆存储}while(!KEY1);//等待按键抬起}if(!KEY2)//设置加{Delay_ms(10);//延时去抖动if(!KEY2)//设置加{if(KEY_flag%2==0)SET_H++;//设置加if(KEY_flag%2==1)SET_L++;//设置加}}if(!KEY3)//设置减{Delay_ms(10);//延时去抖动if(!KEY3)//设置减{if(KEY_flag%2==0)SET_H--;//设置减if(KEY_flag%2==1)SET_L--;//设置减}}Table[0]=SET_H/100+0X30;//显示最大值Table[1]=SET_H%100/10+0X30;Table[2]=SET_H%10+0X30;LCD1602_Disp_ZF(0x86+0x40,Table,3);Table[0]=SET_L/100+0X30;//显示最小值Table[1]=SET_L%100/10+0X30;Table[2]=SET_L%10+0X30;LCD1602_Disp_ZF(0x8C+0x40,Table,3);}}/********************************************************/voidzd0()interrupt1//T0中断用来计数器溢出,超过测距范围{flag=1;//中断溢出标志}/********************************************************/voidzd3()interrupt3{TH1=0xf8;//2毫秒定时初始化TL1=0x30;//2毫秒定时初始化timer++;//计数if(timer>=100)//计数100次,200毫秒{timer=0;TX=1;//200MS启动一次模块_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TX=0;}}//////////////////////////////////////////////////#include"LCD1602.h"voiddelay_50us_1602(unsignedintt){unsignedcharj;for(;t>0;t--)for(j=19;j>0;j--);}voidLCD1602_write_com(unsignedcharcom){LCD1602_E=0;LCD1602_RS=0;LCD1602_RW=0;LCD1602_Data=com;delay_50us_1602(10);LCD1602_E=1;delay_50us_1602(20);LCD1602_E=0;}voidLCD1602_write_data(unsignedintdat){LCD1602_E=0;LCD1602_RS=1;LCD1602_RW=0;LCD1602_Data=dat;delay_50us_1602(10);LCD1602_E=1;delay_50us_1602(20);LCD1602_E=0;}voidLCD1602_init(void){delay_50us_1602(300);LCD1602_write_com(0X38);delay_50us_1602(100);LCD1602_write_com(0X38);delay_50us_1602(100);LCD1602_write_com(0X38);LCD1602_write_com(0X38);LCD1602_write_com(0X08);LCD1602_write_com(0X01);LCD1602_write_com(0X06);LCD1602_write_com(0X0C);}/*******************************************函数名称:Disp_ZF功能:控制液晶显示字符参数:addr--显示位置的首地址pt--指向显示数据的指针num--显示字符个数返回值:无********************************************/voidLCD1602_Disp_ZF(unsignedcharaddr,constunsignedchar*pt,unsignedcharnum){unsignedchari;LCD1602_write_com(addr);for(i=0;i<(num*1);i++)LCD1602_write_data(*(pt++));}
本文档为【基于单片机的超声波液位图纸】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
潮起潮落
一线信息技术教师,具有丰富教学经验和管理经验,多次被评为地级优秀教师
格式:doc
大小:821KB
软件:Word
页数:0
分类:交通与物流
上传时间:2019-10-11
浏览量:7