太原科技大学
位则是利用RC微分电路产生的正脉冲来实现的,其电路如图6(c)所示。
(a)上电复位 (b)按键电平复位 (c)按键脉冲复位 在本次课程设计中,采用按键脉冲复位电路。电路图如图7所示:
图7 复位电路
四、数码管显示电路[3] [5]
共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
数码管有二位一体、四位一体等类型,当多位一体时,他们内部的公共端是独立的,而负责显示什么数字的段线全部连接在一起,独立的公共端可以控制多位一体数码管中的哪一位亮,而连接在一起的段线可以可以控制这个能点亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫“段选线”,有了这两根线后,通过单片机及外部驱动电路可以控制任意的数码管显示任意的数字了。
当多位数码管应用与某一系统时,它们的“位选”是可独立控制的,而“段
- 11 -
太原科技大学
选”是连接在一起的,我们可以通过位选信号控制那几个数码管亮。
五、超声波模块电路:
本系统采用超声波模块URF04进行测距,该模块使用直流5V供电,理想条件下测距可达500cm,广泛应用于超声波测距领域,模块性能稳定,测度距离精确,盲区(2cm)超近。超声波测距原理:单片机给超声波传感器模块一个触发电平,超声波传感器的发射管自动发送8个40KHZ的方波,当超声波检测到障碍物时就会信号返回,接收管接收到信号返回之后,单片机处理从单片机发送信号到接收到返回信号这段时间里超声波传感器模块输出高电平。这段高电平持续时间即为超声波从发射到返回的传播时间。测量距离=(高电平持续时间*波速)/2。
- 12 -
太原科技大学
模块构成原理图
- 13 -
太原科技大学
第四章 软件部分
一、主流程图:
主程序流程图
二、程序设计:
软件分为两部分,主程序和中断服务程序。主程序完成初始化工作、超声波发射和接收顺序的控制。外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出、数码管显示等工作。主程序首先是对超声波模块初始化,通过延时函数产生10us的高电平,再将计数器初始化,判断超声波接收端是否收到回波,进而执行外部中断程序。中断程序首先关闭外部中断,关闭计数器,然后读出计数值,根据
公式计算距离,然后将结果送往数码管显示。
三、程序[1] [4]:
#include
#define uint unsigned int #define uchar unsigned char #define ulong unsigned long
- 14 -
太原科技大学
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;
- 15 -