资源描述
太原科技大学
TAIYUAN UNIVERSITY OF SCIENCE & TECHNOLOGY
单片机原理及其应用
课程设计
—距离传感器设计
学 号:XXXXXXX
班 级:SXXXXXXXXX
姓 名:XXX
指导老师:XXXXX
日 期:.01.04
课程设计任务书
班 级: XXXXXXX
姓 名: XXX
设计周数: 1 学分: 1
指导老师: XXX
设计题目: 距离传感器
设计目标及要求:
目标:
1. 熟悉手工焊锡常见工具使用及其维护和修理。
2. 基础掌握手工电烙铁焊接技术,能够独立完成简单电子产品安装和焊接。熟悉电子产品安装工艺生产步骤。
3. 熟悉印制电路板设计步骤和方法,熟悉手工制作印制电板工艺步骤,能够依据电路原理图,元器件实物设计并制作印制电路板。
4. 熟悉常见电子器件类别、型号、规格、性能及其使用范围,能查阅相关电子器件图书。
5. 能够正确识别和选择常见电子器件,而且能够熟练使用一般万用表和数字万用表。
6. 掌握和利用单片机基础内部结构、功效部件、接口技术和应用技术。
7. 多种外围器件和传感器应用;
8. 了解电子产品焊接、调试和维修方法。
要求:
1. 学生全部掌握、单片机内部结构、功效部件,接口技术等技能;
2. 依据题目进行调研,确定实施方案,购置元件,并绘制原理图,焊接电路板,调试程序;
3. 焊接和写汇编程序及调试,提交课程设计系统(包含硬件和软件);.
4. 完成课程设计汇报
设计内容和方法:(依据自己具体情况编写)用STC89C52单片机和超声波模块组成一个简单电路,利用超声波发出高频波莱测距离,并在数码管上显示。
方法:利用Altisium Designer summer09设计电路图,再用电烙铁将实物焊接到试验电路板上,经过电脑串口写入一段程序到单片机中,实现单片机计算显示作用
设计说明书要求: 应先把超声波模块线连接到单片机串口上再供电。
目录
绪论 - 4 -
第二章 总体设计 - 5 -
第三章 硬件部分 - 9 -
第四章 软件部分 - 14 -
第五章 总结 - 18 -
附录 - 20 -
绪论
超声波是指频率在20kHz以上声波,它属于机械波范围。多年来,伴随电子测量技术发展,利用超声波作出正确测量已成可能。伴随经济发展,电子测量技术应用越来越广泛,而超声波测量正确高,成本低,性能稳定则备受青睐。超声波是指频率在20kHz以上声波,它属于机械波范围。超声波也遵照通常机械波在弹性介质中传输规律,如在介质分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减等。正是因为含有这些性质,使得超声波能够用于距离测量中。伴随科技水平不停提升,超声波测距技术被广泛应用于大家日常工作和生活之中。通常超声波测距仪可用于固定物位或液位测量,适适用于建筑物内部、液位高度测量等。超声在空气中测距在特殊环境下有较广泛应用。利用超声波检测往往比较快速、方便、计算简单、易于实现实时控制,而且在测量精度方面能达成工业实用指标要求,所以为了使移动机器人能够自动躲避障碍物行走,就必需装备测距系统,以使其立即获取距障碍物位置信息(距离和方向)。所以超声波测距在移动机器人研究上得到了广泛应用。同时因为超声波测距系统含有以上这些优点,所以在汽车倒车雷达研制方面也得到了广泛应用。
此次课程设计是基于STC89C52RC单片机设计,包含LED指示灯、复位电路、数码管显示电路、超声波模块多个部分。经过设计,能够使数码管显示物体离超声波模块距离功效。
第二章 总体设计
1.系统框图:
图1 系统框图
2. 在单片机选择上,通常需要考虑以下几点:
(1) 单片机基础参数比如速度,程序存放器容量,I/O引脚数量
(2) 单片机增强功效,比如看门狗,双指针,双串口,RTC(实时时钟),EEPROM,扩展RAM,CAN接口,I2C接口,SPI接口,USB接口。
(3) Flash和OTP(一次性可编程)相比较,最好是Flash。
(4) 封装 IP(双列直插),PLCC(PLCC有对应插座)还是贴片。DIP封装在做试验时可能方便一点。
(5) 工作温度范围,工业级还是商业机。假如设计户外产品,必需选择工业级。
(6) 功耗,尽可能选择较低功耗。
(7) 工作电压范围。
(8) 供货渠道通畅。能申请样片,小批量购置有现货。
(9) 价格低。
(10)有服务商。
(11)烧录器价格低。
(12)仿真器廉价。
(13)保密性能好。
(14)抗干扰性能好。
(15)和其它外设芯片放在一起综合考虑。
在此次课程设计中,对单片机要求较低,综合考虑后选择STC89C52单片机。表一是STC89C52单片机关键功效:
表一
关键功效特征
兼容MCS51指令系统
8K可反复擦写Flash ROM
32个双向I/O口
256x8bit内部RAM
3个16位可编程定时/计数器中止
时钟频率0-24MHz
2个串行中止
可编程UART串行通道
2个外部中止源
共6个中止源
2个读写中止口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功效
3.STC89C52单片机引脚及其功效:
图2 STC89C52单片机
STC89C52单片机:
① 主电源引脚(2根)
VCC(Pin40):电源输入,接+5V电源
GND(Pin20):接地线
②外接晶振引脚(2根)
XTAL1(Pin19):片内振荡电路输入端
XTAL2(Pin20):片内振荡电路输出端
③控制引脚(4根)
RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期高电平将使单片机复位。
ALE/PROG(Pin30):地址锁存许可信号
PSEN(Pin29):外部存放器读选通信号
EA/VPP(Pin31):程序存放器内外部选通,接低电平从外部程序存放器读指令,假如接高电平则从内部程序存放器读指令。
④可编程输入/输出引脚(32根)
STC89C52单片机有4组8位可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7
2、超声波测距原理:
超声波发射器向某一方向发射超声波,在发射时刻同时开始计时,超声波在空气中传输,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中传输速度为340m/s,依据计时器统计时间t,就能够计算出发射点距障碍物距离(s),即:s=340t/2最常见超声测距方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻同时计数器开始计时,超声波在空气中传输,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回超声波就立即停止计时。超声波在空气中传输速度为340m/s,依据计时器统计时间t,就能够计算出发射点距障碍物面距离s,即:s=340t/2。因为超声波也是一个声波,其声速V和温度相关。在使用时,假如传输介质温度改变不大,则可近似认为超声波速度在传输过程中是基础不变。假如对测距精度要求很高,则应经过温度赔偿方法对测量结果加以数值校正。声速确定后,只要测得超声波往返时间,即可求得距离。这就是超声波测距仪基础原理图
图所表示:
图3 超声波测距原理
第三章 硬件部分
一、电源输入电路:
对于整个设计而言,首要问题就是处理系统供电问题。要求电源模块稳定可靠。
在本课程设计中,电源供电模块电源能够经过计算机USB口供给,也可使用外部稳定5V电源供电模块供给。在电源电路中接入了电源指示LED以示是否正常工作。
二、时钟/晶振电路:
每个单片机系统全部有晶振,晶振作用很大,它结合单片机内部电路,产生单片机所必需时钟频率。单片机一切指令实施全部是建立在这个基础上。晶振提供时钟频率越高,单片机实施速度越快。
时钟能够由内部方法产生或外部方法产生。
(a)内部方法时钟电路 (b)外部方法时钟电路
图4 时钟电路
在此次课程设计中采取内部方法时钟电路,电路图图5所表示。
三、复位电路[6]
复位电路作用:在上电或复位过程中,控制CUP复位状态。这段时间内让CPU保持复位状态,而不是一上电或刚复位完成就开始工作。预防CPU发犯错误指令、实施错误操作,也能够提升电磁兼容性能。同时,复位操作还对其它部分寄存器有影响。
单片机复位电路原理是在单片机复位引脚RST上外接电阻和电容,实现上电复位。当复位电平连续两个机器周期以上时复位有效。复位电平连续时间必需大于单片机两个机器周期。具体数值能够由RC电路计算出时间常数。复位操作有上电自动复位相按键手动复位两种方法。
上电自动复位是经过外部复位电路电容充电来实现,其电路图6(a)所表示。这佯,只要电源Vcc上升时间不超出1ms,就能够实现自动上电复位,即接通电源就成了系统复位初始化。
按键手动复位有电平方法和脉冲方法两种。其中,按键电平复位是经过使复位端经电阻和Vcc电源接通而实现,其电路图6(b)所表示;而按键脉冲复位则是利用RC微分电路产生正脉冲来实现,其电路图6(c)所表示。
(a)上电复位
(b)按键电平复位
(c)按键脉冲复位
6 复位电路
在此次课程设计中,采取按键脉冲复位电路。电路图图7所表示:
图7 复位电路
四、数码管显示电路[3] [5]
共阴极数码管8个发光二极管阴极(二极管负端)连接在一起。通常,公共阴极接低电平(通常接地),其它管脚接段驱动电路输出端。当某段驱动电路输出端为高电平时,则该端所连接字段导通并点亮,依据发光字段不一样组合可显示出多种数字或字符。此时,要求段驱动电路能提供额定段导通电流,还需依据外接电源及额定段导通电流来确定对应限流电阻。
数码管有二位一体、四位一体等类型,当多位一体时,她们内部公共端是独立,而负责显示什么数字段线全部连接在一起,独立公共端能够控制多位一体数码管中哪一位亮,而连接在一起段线能够能够控制这个能点亮什么数字,通常我们把公共端叫做“位选线”,连接在一起段线叫“段选线”,有了这两根线后,经过单片机及外部驱动电路能够控制任意数码管显示任意数字了。
当多位数码管应用和某一系统时,它们“位选”是可独立控制,而“段选”是连接在一起,我们能够经过位选信号控制那多个数码管亮。
五、超声波模块电路:
本系统采取超声波模块URF04进行测距,该模块使用直流5V供电,理想条件下测距可达500cm,广泛应用于超声波测距领域,模块性能稳定,测度距离正确,盲区(2cm)超近。超声波测距原理:单片机给超声波传感器模块一个触发电平,超声波传感器发射管自动发送8个40KHZ方波,当超声波检测到障碍物时就会信号返回,接收管接收到信号返回以后,单片机处理从单片机发送信号到接收到返回信号这段时间里超声波传感器模块输出高电平。这段高电平连续时间即为超声波从发射到返回传输时间。测量距离=(高电平连续时间*波速)/2。
模块组成原理图
第四章 软件部分
一、 主步骤图:
主程序步骤图
二、 程序设计:
软件分为两部分,主程序和中止服务程序。主程序完成初始化工作、超声波发射和接收次序控制。外部中止服务子程序关键完成时间值读取、距离计算、结果输出、数码管显示等工作。主程序首先是对超声波模块初始化,经过延时函数产生10us高电平,再将计数器初始化,判定超声波接收端是否收到回波,进而实施外部中止程序。中止程序首先关闭外部中止,关闭计数器,然后读出计数值,依据
公式计算距离,然后将结果送往数码管显示。
三、 程序[1] [4]:
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
uint time=0;
uint timer=0;
uchar posit=0;
ulong S=0;
uint qian;
uint bai;
uint ge;
sbit RX=P2^0; //接线:TRIG接 P2.1 ECH0 接P2.0
sbit TX=P2^1;
sbit dula=P2^6 ;
sbit wela=P2^7;
bit flag =0;
uchar code table[] ={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x08};
void delay(uint x) //延时
{
uchar i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void display( qian, bai, ge) //扫描数码管
{
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay (1);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay (1);
dula=1;
P0=table[qian];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay (1);
}
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100; //算出来是CM
if((S>=450)||flag==1) //超出测量范围显示“-”
{
flag=0;
qian=10; //“-”
bai=10; //“-”
ge=10; //“-”
}
else
{
qian=S%1000/100;
bai=S%1000%100/10;
ge=S%1000%10 %10;
}
}
void zd0() interrupt 1 //T0中止用来计数器溢出,超出测距范围
{
flag=1; //中止溢出
}
/********************************************************/
void zd3() interrupt 3 //T1中止用来扫描数码管和计800MS开启
{
TH1=0xf8;
TL1=0x30;
display(qian,bai,ge);
timer++;
if(timer>=400)
{
timer=0;
TX=1; //800MS 开启一次
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
}
}
/*********************************************************/
void main( void )
{
TMOD=0x11; //设T0为方法1,GATE=1;
TH0=0;
TL0=0;
TH1=0xf8; //2MS定时
TL1=0x30;
ET0=1; //许可T0中止
ET1=1; //许可T1中止
TR1=1; //开启定时器
EA=1; //开启总中止
while(1)
{
while(!RX); //当RX为零时等候
TR0=1; //开启计数
while(RX); //当RX为1计数并等候
TR0=0; //关闭计数
Conut(); //计算
}
}
第五章 总结
一、问题
在连接电途经程中出现了部分错误,总结以下:
(1) 数码管不能正常显示
经检验后,发觉程序中“display()”子程序放位置不对。
(2) 上电后,距离不对
经检验后,程序中求距离函数不对,更正后正常显示。
二、测试结果分析:
测距仪能测范围为0.03m—3.00m,测距仪最大误差不超出1cm。系统调试完后应对测量误差和反复一致性进行数次试验分析,不停优化系统使其达成实际使用测量要求。因为条件有限,我们忽略温度影响,不进行温度赔偿,声速选择340m/s.
三、收获
经过这次课程设计,使我对单片机有了初步了解,为以后深入学习做了准备。同时,也使我了解到了部分电子元器件应用。比如: 数码管能够用在显示器、汽车用灯(包含汽车内部仪表板、音响指示灯、开关背光源、阅读灯和外部刹车灯、尾灯、侧灯和头灯等)、广告牌等,超声波模块则可用来做测距仪和物位测量仪等,利用超声波检测往往比较快速、方便、计算简单、易于做到实时控制,而且在测量精度方面能达成工业实用要求,所以在工农业生产上到了广泛应用。
同时,经过这些天实际动手操作,使我认识到看似简单问题,真正做起来时候,假如不认真、不根据确定步骤进行,会产生很多问题。在动手操作时不能眼高手低,一定要养成良好做事风格和习惯。
参考文件:
[1]徐爱钧,彭秀华.《Keil Cx51 V7.0 单片机高级语言编程和uVision2应用实践》,电子工业出版社,6月
[2]郭天祥.《十天会单片机》视频教学。
[3] 史东海.《单片机数据通信技术从入门到精通》,西安电子科技大学出版社,11月
[4] 谭浩强.《C程序设计(第三版)》,清华大学出版社,7月
[5]倪小军,章韵.《单片机原理和接口技术》,清华大学出版社,9月
[6] 姜志海,黄玉清.《单片机原理及应用》,电子工业出版社,7月
附录
附录1 原理图
附录2 实物图
展开阅读全文