- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
毕 业 设 计
设计题目: 基于单片机的超声波视力保护仪的设计
目 录TOC \o 1-1 \h \u
//报警按键
#include display.h //显示头函数
#include ultrasonic_wave.h//超声波头函数
#include DS18B20.h //温度传感器头函数
//函数声明
void delayms(uint ms);
//主函数
void main()
{
Init_ultrasonic_wave();
//屏幕初始化
Init1602();
//温度初始化
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
//循环显示
while(1)
{
Key();
//正常显示
if(mode==0)
{
StartModule();//启动超声波
while(!RX); //当RX为零时等待
TR0=1; //开启计数
while(RX); //当RX为1计数并等待
TR0=0; //关闭计数
delayms(20); //20MS
tmpchange(); //温度转换
t_=tmp(); //度温度
Conut(t_/10); //计算距离
if(L_Max||L_Min)
Display_1602(t_/10,L_);
}
//调整显示
else if(mode!=0)
{
//最大最小值
Init_MaxMin();
while(mode!=0)
{
Key();
if(k==1mode==1)
{
Init_MaxMin();
write_com(0x8d);//设置位置
}
else if(k==1mode==2)
{
Init_MaxMin();
write_com(0x8d+0x40);//设置位置
}
k=0;
}
//界面初始化
Init1602();
}
}
}
void delayms(uint ms)
{
uchar i=100,j;
for(;ms;ms--)
{
{
j=10;
while(--j);
}
}
}
//T0中断用来计数器溢出,超过测距范围
void CJ_T0() interrupt 1
{
flags=1; //中断溢出标志
}
//LCD管脚声明
sbit LCDRS = P2^7;
sbit LCDEN= P2^6;
//初始画时显示的内容
uchar code Init1[]=Temperature: C;
uchar code Init2[]=Distance: 000CM;
//初始画时显示的内容
uchar code Init3[]= Max CM;
uchar code Init4[]= Min CM;
//LCD延时
void LCDdelay(uint z)
{
uint x,y;
for(x=z;x0;x--)
}
//写命令
void write_com(uchar com)
{
LCDRS=0;
P0=com;
LCDdelay(5);
LCDEN=1;
LCDdelay(5);
LCDEN=0;
}
//写数据
void write_data(uchar date)
{
LCDRS=1;
P0=date;
LCDdelay(5);
LCDEN=1;
LCDdelay(5);
LCDEN=0;
}
//1602初始化
void Init1602()
{
uchar i=0;
write_com(0x0C);//打开显示 无光标 无光标闪烁
write_com(0x06);//当读或写一个字符是指针后一一位
write_com(0x01);//清屏
write_com(0x80);//设置位置
for(i=0;i14;i++)
{
write_data(Init1[i]);
}
write_data(0xdf);
write_data(Init1[14]);
write_com(0x80+40);//设置位置
for(i=0;i16;i++)
{
write_data(Init2
文档评论(0)