微控制器.docx
- 文档编号:8026429
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:24
- 大小:190.58KB
微控制器.docx
《微控制器.docx》由会员分享,可在线阅读,更多相关《微控制器.docx(24页珍藏版)》请在冰豆网上搜索。
微控制器
微控制器系统原理
结课论文
设计课题:
基于HCSO8AW60超声波测距系统设计
学院名称:
专业班级:
姓名:
学号:
指导教师:
目录
1概述1
1.1课题背景及重要意义1
1.2设计思想及基本功能1
2总体方案设计2
2.1总体方案设计2
3硬件电路设计2
3.1超声波测量电路2
3.2显示电路设计6
3.3LED与单片机连接电路设计8
3.4晶振电路设计8
3.5复位电路设计9
3.6电源电路设计9
4系统软件设计10
4.1主程序软件设计10
4.2中断子程序11
5总结11
参考文献12
附录
(一)系统原理图13
附录
(一)源程序14
1概述
1.1课题背景及重要意义
超声波是指频率在20kHz以上的声波,它属于机械波的范畴。
超声波也遵循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减等。
正是因为具有这些性质,使得超声波可以用于距离的测量中。
随着科技水平的不断提高,超声波测距技术被广泛应用于人们日常工作和生活之中。
由于超声测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等恶劣环境,具有少维护、不污染、高可靠、长寿命等特点。
因此可广泛应用于纸业、矿业、电厂、化工业、水处理厂、污水处理厂、农业用水、环保检测、食品(酒业、饮料业、添加剂、食用油、奶制品)、防汛、水文、明渠、空间定位、公路限高等行业中。
可在不同环境中进行距离准确度在线标定,可直接用于水、酒、糖、饮料等液位控制,可进行差值设定,直接显示各种液位罐的液位、料位高度。
因此,超声在空气中测距在特殊环境下有较广泛的应用。
利用超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指标要求,因此为了使移动机器人能够自动躲避障碍物行走,就必须装备测距系统,以使其及时获取距障碍物的位置信息(距离和方向)。
因此超声波测距在移动机器人的研究上得到了广泛的应用。
同时由于超声波测距系统具有以上的这些优点,因此在汽车倒车雷达的研制方面也得到了广泛的应用。
1.2设计思想及基本功能
系统的设计主要包括两部分,即硬件电路和软件程序。
硬件电路主要包括单片机电路、发射电路、接收电路、显示电路和电源电路,另外还有复位电路和LED控制电路等。
我采用以S08AW60单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路。
整个电路采用模块化设计,由信号发射和接收、供电、温度测量、显示等模块组成。
发射探头的信号经放大和检波后发射出去,单片机的计时器开始计时,超声波被发射后按原路返回,在经过放大带通滤波整形等环节,然后被单片机接收,计数器停止工作并得到时间。
温度测量后送到单片机,通过程序对速度进行校正,结合两者实现超声波测距的功能。
软件程序主要由主程序、预置子程序、发射子程序、接收子程序、显示子程序等模块组成。
它控制单片机进行数据发送与接收,在一定温度下对超声波速度的校正,还有实现数据正确显示在LCD上。
另外程序控制单片机消除各探头对发射和接收超声波的影响。
相关部分附有硬件电路图、程序流程图。
实际的环境对超声波有很大的影响,如空气的温度对超声波的速度影响也很大,在设计的过程中考虑了这一因素,并给出了一些解决方案。
2总体方案设计
2.1总体方案设计
综合以上方案选择,基于单片机的液位控制系统总体方案设计是基于满足设计要求的前提并且根据理论上的可实现性和硬件上的经济实用性,而进行设计的。
本系统以89C52为中控单元,采用超声波来采集液位信息,用蜂鸣器来报警,两个用独立按键分别控制报警上下限,用LCD1602显示。
液位控制系统设计的总体框图如图2.1所示。
图2.1超声波测距系统结构框图
3硬件电路设计
3.1超声波测量电路
(1)超声波工作原理
超声波发生器内部有两个压电晶片和一个共振板,当两极外加脉冲信号的频率等于压电晶片的固有振荡频率时,压电晶片将发生共振,并带动共振板振动,从而产生超声波;同理,当共振板接收到超声波时,将压迫压电晶片产生振动,将机械能转换为电信号。
时序图表明只需要提供一个10us以上的出发脉冲信号即可,该模块内部将发出8个40KHz周期点评检测回回波。
一旦检测到有回波信号。
回响信号的脉冲宽度与所测的距离成正比。
由此可以通过发射信号到收到回响信号时间间隔可以计算得到距离,测距时序原理如图3.11所示。
图3.11超声波测距时序原理图
图3.12超声波测距示意图
被测距离
。
式中:
s为超声波传播距离;h为发射探头与接收探头之间的距离。
由于s远大于h,因此可近似认为d=s,则d=s=ct/2,t为发射超声波与接收超声波的时间间隔,c为超声波在空气中的传播速度。
在空气中,常温下超声波的传播速度是334m/s,但其传播速度c易受空气中温度的影响,声速与温度关系如表1所示,由此可修正超声波传播速度
。
温度℃
-30
-20
-10
0
10
20
30
40
声速(m/s)
313
319
325
332
338
344
350
356
由于本次设计液位测量距离较近,在不同温度T下的测量结果偏差较小,故在此为忽略不同温度下c不同这一影响,选择常温声速334m/s。
图3.13超声波实物图
在图3.12中以红色开始分别为电源(VCC),出发控制信号输入(Trig),回响信号输出(Echo),电源地(GND)
(2)超声波发射电路
采用LM386对输出信号进行功率放大,LM386多用于音频放大,也可用于超声波发射。
LM386第1脚和第8脚之间串接的E1、R1,可使电路获得较大的增益,PTA1为单片机输入的脉冲信号,经功率放大后由第5脚输出,驱动探头发射超声波。
电路如图3.14所示。
图3.14超声波发射电路图
(3)超声波接收电路
为了顺利接收回波信号,本文采用索尼公司生产的集成芯片CX20106,如图3.15所示,CX20106是一款红外线检波接收的专用芯片,由于红外遥控常用的载波频率38kHz与超声波频率40kHz比较接近,而且CX20106内部设置的滤波器中心频率f0可由其5脚外接电阻调节,范围为30~60kHz,因此采用它来做接收电路。
PTE2接单片机定时器外部输入捕捉0通道。
回波信号先经过CX20106内部的前置放大器和限幅放大器,将信号调整到适当的幅值,由滤波器进行频率选择,滤除干扰信号,再经整形,送给输出端7脚,7脚与单片机INT0连接,当接收到与滤波器中心频率相符的回波信号时,输出端7脚即输出低电平,触发中断。
电路如图3.15所示。
图3.15超声波接收电路图
(4)温度补偿电路
由于声音的速度在不同的温度下有所不同,为提高系统的精度,采用了温度补偿功能。
这里采用的主要元器件是是美国Dallas半导体公司生产的单总线数字温度传感器DS18B20,其具有精度高、智能化、体积小、线路简单等特点。
将DS18B20数据线与单片机的PTA0口相连,就可以实现温度测量电路如图所示。
如图3.16所示。
图3.16DS18B20电路图
3.2显示电路设计
(1)液晶显示原理
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
(2)线段的显示
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。
这就是LCD显示的基本原理。
(3)字符的显示
用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。
这样一来就组成某个字符。
但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
1602显示即只要输对应字符的ASCII码值和相应的位置,即可显示对应的字符。
图3.211602字符型液晶显示器实物图
16脚(带背光)接口,各引脚接口说明如表3.2-1所示:
表3.2-1:
引脚接口说明表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
单片机与1602显示器就扣电路如图3.22所示。
图3.22单片机与1602接线示意图
P1为16P插座,可以用排针与1602和插座连接。
3.3LED与单片机连接电路设计
用一个单片机引脚控制一个LED灯来只是工作状态。
电路如图3.3所示。
图3.3单片机及LED灯电路图
3.4晶振电路设计
电路中的晶振即石英晶体震荡器。
由于石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力,所以,石英晶体震荡器是用来产生基准频率的。
通过基准频率来控制电路中的频率的准确性。
同时,它还可以产生振荡电流,向单片机发出时钟信号。
图3.4是单片机的晶振电路。
片内电路与片外器件就构成一个时钟产生电路,CPU的所有操作均在时钟脉冲同步下进行。
片内振荡器的振荡频率非常接近晶振频率,一般高频多在1MHz~16MHz之间选取。
C1、C2是反馈电容,其值在5pF~25pF之间选取。
本电路选用的电容为10pF,晶振频率为4MHz。
晶振电路应尽可能地接近单片机。
图3.4单片机晶振电路图
3.5复位电路设计
复位电路的作用是使CPU和系统的其他部件都处于一个确定的初始状态,并从这个状态开始工作。
复位电路包括内部复位信号产生电路和外部复位电路。
图3.5所示的复位电路可以实现上述基本功能。
图3.5单片机复位电路图
3.6电源电路设计
单片机正常工作电压为2.7V-5.5V,因此设计的电源电路主要是提供单片机工作电压。
图3.6是为单片机提供电压(5V)的电源电路。
先通过变压器将220V的交流电变换为16V交流电,然后再通过整流桥整流,通过LM7805对直流电稳压,电容器到了滤波起到作用。
在这个电路中采用了三端集成稳压器LM7805,可以输出5V的直流电压以供给单片机。
图3.6电源电路图
4系统软件设计
系统软件设计主要包括显示子程序,超声波测距程序。
本章节系统的介绍了显示子程序,超声波测距程序的设计流程,具体的程序代码见附录。
4.1主程序软件设计
主程序构成无限循环,主要完成单片机初始化,开关中断,距离显示内容初始化,工作状态显示。
主程序的流程图如图4.1所示。
图4.1主程序流程图
主程序流程说明:
电路主要分为以下几个部分,分别是定时器1初始化显示部分、超声波测距部分,各部分具有不同的子程序。
主程序的作用主要是先初始化单片机以及显示内容,初始化中断程序,等待输入捕捉发生,定时器计数值处理,通过分析处理计算出距离。
4.2中断子程序
中断服务子程序,主要完成当定时器计数溢出时,对计数值进行处理。
如图4.2所示。
图4.2中断服务子程序
5总结
经过一周左右的资料查找和设计,我已完成了基于HCS08AW60单片机的超声波测距系统设计。
本文设计了介绍了超声波测距电路设计到软件设计的一系列步骤。
本设计是以HCS08AW60单片机为主控制单元,超声波作为测距测量器件,LCD1602作为显示器液的测距系统。
参考文献
[1]王威.嵌入式微控制器S08AW原理与实践[M].北京:
北京航空航天大学出版社,2009
[2]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
[4]王巧芝、王彩霞等.AltiumDesigne电路设计标准教程[M].北京:
中国铁道出版社,2012
附录
(一)系统原理图
附录
(一)源程序
#include
#include"derivative.h"
#defineucharunsignedchar
#defineuintunsignedint
//全局变量定义
unchardata_string[]="0000";
uints=0;
uintic_time1;
uintic_timer2;
charic_flag=0;
charovf_flag=0;
uintperiod;
/******LCD1602控制端口与数据端口定义******/
#defineCLR_SCREEN0//清屏
#defineDISP_ON1//显示开
#defineDISP_OFF2//显示关
#defineCURSOR_ON3//光标开
#defineCURSOR_OFF4//光标关
#defineCURSOR_FLASH_ON5//光标闪烁开
#defineCURSOR_FLASH_OFF6//光标闪烁关
#definePICTURE_LEFT7//画面左移
#definePICTURE_RIGHT8//画面右移
#defineCURSOR_LEFT9//光标左移
#defineCURSOR_RIGHT10//光标右移
#defineLCD_RSPTED_PTED7//寄存器选择信号
#defineLCD_RWPTED_PTED6//读/写信号
#defineLCD_ENPTED_PTED5//使能端
#defineLCDIOPTBD//数据线
#defineRXPTED_PTED2;//超声波输入引脚echo
#defineTXPTAD_PTAD1;//超声波输出引脚trig
#defineDQPTAD_PTAD0;//ds18b20引脚
#defineLEDPTAD_PTAD2;//LED工作灯
/******函数声明******/
voidInit_TPM();//定时器初始化
voidInit_Port();//IO初始化函数
voidInit_ECT();//时钟初始化函数
voidLCD_dlay();//延时子程序
voidLCD_en_command();//LCD写指令
voidLCD_en_dat();//LCD写数据
voidLCD_init();//LCD初始化函数
voidLCD_cmd();//LCD指令判断和处理函数
voidLCD_set_xy();//LCD设定坐标函数
voidLCD_write_string();//写字符串函数
voidLCD_DISP_init();//LCD初始化函数
voidtransform();//数值转换函数
voiddistance_show();//距离显示函数
voidStartModule();//触发脉冲函数
/******定时器初始化******/
voidInit_TPM(void)
{
TMP1SC=0x4E;//定时器一处中断使能,总线时钟64分频
TPM1MODH=0xF4;//预置数寄存器高八位
TPM1MODL=0X24;//预置数寄存器低八位
TPM1C0SC=0x0C;//定时器1通道0在上、下升边沿捕捉,中断禁止
}
/******IO口初始化******/
voidInit_Port(void)
{
PTEDD_PTEDD5=1;//PTE5口作为输出引脚
PTEDD_PTEDD6=1;//PTE6口作为输出引脚
PTEDD_PTEDD7=1;//PTE7口作为输出引脚
PTBDD=0XFF;//B口作为输出引脚
PTAD=0X00;//A口输出为0
PTADD_PTADD0=1;//PTA0口作为输出引脚
PTADD_PTADD1=1;//PTA1口作为输出引脚
PTADD_PTADD2=1;//PTA2口作为输出引脚
}
/******时钟初始化******/
voidInit_ECT(void)
{
ICGC1=0X78;
ICGC2=0X20;
SOPT_COPE=0;
}
/******LCD延时程序******/
voidLCD_dlay(void)
{
inti;
for(i=0;i<10;i++)
{
intj;
j=0x1000;
while(j>0)
j--;
}
}
/******LCD写指令******/
voidLCD_en_command(ucharcommand)
{
LCD_delay();
LCD_RW=0;
LCD_RS=0;
LCD_EN=1;
LCDIO=command;
LCD_EN=0;
}
/******LCD写数据******/
voidLCD_en_dat(uchardat)
{
LCD_delay();
LCD_RW=0;
LCD_RS=1;
LCD_EN=1;
LCDIO=dat;
LCD_EN=0;
}
/******LCD显示初始化******/
voidLCD_init(void)
{
LCD_en_command(0x38);
LCD_en_command(0x0c);
LCD_en_command(0x01);
}
/******LCD接受的命令******/
voidLCD_cmd(ucharcmd)
{
switch(cmd)
{
caseCLR_SCREEN:
LCD_en_command(0x01);break;//清屏
caseDISP_ON:
LCD_en_command(0x0c);break;//显示开
caseDISP_OFF:
LCD_en_command(0x08);break;//显示关
caseCURSOR_ON:
LCD_en_command(0x0e);break;//光标开
caseCURSOR_OFF:
LCD_en_command(0x0c);break;//光标关
caseCURSOR_FLASH_ON:
LCD_en_command(0x0f);break;//光标闪烁开
caseCURSOR_FLASH_OFF:
LCD_en_command(0x0e);break;//光标闪烁关
casePICTURE_LEFT:
LCD_en_command(0x18);break;//画面左移
casePICTURE_RIGHT:
LCD_en_command(0x1c);break;//画面右移
caseCURSOR_LEFT:
LCD_en_command(0x10);break;//光标左移
caseCURSOR_RIGHT:
LCD_en_command(0x14);break;//光标右移
default:
break;
}
}
/******LCD行列坐标******/
voidLCD_set_xy(ucharx,uchary)
{
ucharaddress;
if(x==0)
address=0x80+y;
else
address=0xc0+y;
LCD_en_command(address);
}
/******LCD写字符******/
voidLCD_write_string(ucharx,uchary,uchar*s)
{
LCD_set_xy(x,y);
while(*s)
{
LCD_en_dat(*s);
s++;
}
}
/******LCD显示初始化******/
voidLCD_DISP_init(void)
{
LCD_init();
LCD_cmd(CLR_SCREEN);
LCD_cmd(DISP_ON);
LCD_cmd(CURSOR_ON);
LCD_cmd(CURSOR_FLASH_OFF);
}
/******LCD显示数值转换函数******/
voidtransform(uintdata)
{
uchartempt0;
uchartempt1;
uchartempt2;
uchartempt3;
tempt0=data/1000%10;
tempt1=data/100%10;
tempt2=data/10%10;
tempt3=data%10;
data_string[0]=tempt0+0x30;
data_string[1]=tempt1+0x30;
data_string[2]=tempt2+0x30;
data_string[3]=tempt3+0x30;
}
/******距离显示函数******/
voiddistance_show(uinti)
{intt;
floatc;//声速
while(timer>=1)
{
t=ReadTemperature();
c=331.5+0.607*t;
distance=(i*0.016*c)/1000;//单位m
}
transform(distance);
LED=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制器