基于51单片机倒车雷达系统

基于51单片机倒车雷达系统
基于51单片机倒车雷达系统

摘要

随着科技的发展,人们生活水平的提高,城市发展建设加快,城市给交通系统也有较大发展,其状况不断改善。但是,由于多种原因合成时间住的许多不可预见因素,城市还是经常出现大量的交通事故,特别是倒车时,看不到后方而导致大量的交通事故。因此,设计出好的倒车雷达系统,对于减少城市的交通事故将有一个很好的控制作用。当然这要求倒车雷达系统,具有精度高,抗干扰强,价格应该低,适宜推广等特点,这样基于超声波的测距系统,完全可以胜任此任务。

本设计采用以A T89C51单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。整个电路采用模块化设计,由主程序、发射子程序、接收子程序、显示子程序等模块组成。各探头的信号经单片机综合分析处理,实现超声波测距仪的各种功能。在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。该设计设抗干扰能力较好,实时性良好,误差可以达到mm级,可以有效地解决汽车倒车作用。

本系统在倒车时不断测量汽车尾部与其后面障碍物的距离,并随时显示其距离,并用语音及时提示。在不同的距离范围内,不同的温度下测出距离,发出报警信号,以提高汽车倒车时的安全性的仪器。

目录

第一章绪论 (3)

1.1 课题背景,目的和意义 (3)

1.2两种常用的超声波测距方案 (3)

第2章超声波测距系统设计 (3)

2.1 超声波测距的原理 (4)

2.2超声波测距系统电路的设计 (4)

2.2.1 总体设计方案 (4)

2.2.2发射电路的设计 (4)

2.2.3接收电路的设计 (4)

2.2.4显示模块的设计 (5)

2.2.5 温度补偿模块设计 (5)

2.2.6 语音处理模块 (5)

第三章超声波测距系统的软件设 (5)

3.1总体流程图 (5)

3.2 程序及分析 (6)

第四章电路调试及误差分析 (7)

4.1电路的调试 (7)

4.2系统的误差分析 (7)

第5章功能扩展 (7)

参考文献 (7)

附录:………………………………………8-22

第1章绪论

1.1 课题背景,目的和意义

由于社会的进步,经济的发展和生活水平的不断提高,汽。

车数量逐年增长,造成道路交通拥挤不堪,交通事故频繁发生

汽车倒车报警器:在倒车时不断测量汽车尾部与其后面障碍物的距离,并随时显示其距离,并用语音及时提示。在不同的距离范围内,不同的温度下测出距离,发出报警信号,以提高汽车倒车时的安全性的仪器。

2.2两种常用的超声波测距方案

2.2.1基于CPLD的超声波测距系统

CPLD模块主要由发射模块,16位计时计数器模块,接收模块,顺序执行计数器模块和六选一数据选择器模块五部分组成。其总体框图如图1所示。

CPLD模块主要完成超声波的发射、接收和时间的测量。超声波发射模块启动40KHz的超声波发射,当发射脉冲串达到设定值后,关闭超声波的发射,同时启动六路计时计数器模块开始计时;信号经过障碍物反射回来,接收电路接收到回波后,将其进行整形,作为接收模块的信号,当接收完回波脉冲信号后,接收模块输出端发出信号,关闭计时计数器停止工作;当所有的回波接收完毕后,顺序执行计数器输出端发出信号启动单片机开始接收数据,通过顺序执行计数器的计数值、数据选择器的选择端与计时计数器的控制端分别读取六路不同的计数值。所有的数据读取完后,清除计时计数器的计数值,准备下一次的循环计数。

2.2.1基于单片机的超声波测距系统

本警器由单片机来控制。整个控制系统由超声波发射电路、超声波接收电路、报警电路、复位电路、显示电路组成。实行实时数字显示测得的距离,在不同的距离范围内发出不同的报警信号,驾驶员可根据个人需要调整设置报警距离,以减少事故的发生。本作品将采用此种方法。

第二章超声波测距系统设计

2.1 超声波测距的原理

超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为c,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=ct/2 。这就是所谓的时间差测距法。

2.2超声波测距系统电路的设计

2.2.1 总体设计方案

该设计总体基于51,包括发射模块,接收模块,显示模块,语音模块,温度补偿模块。由发射电路发射超声波,51计数器从0开始计时,当超声波反射回来,接收电路接收,51停止计时,将所计得得数转化成十进制n,因为使用的12MHz 晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用89C51定时器能保证时间误差在1mm的测量范围内。,则将n与1us相乘即可以得到时间,从而利用超声波测距的原理就可以判断距离以是否利用利用凌阳61版的语音处理功能,进行报警及播放当前的距离,温度和超声波传播速度。再者显示器也将显示距离,温度,及超声波传播速度。

2.2.2发射电路的设计

用单片机直接产生的40khz信号经过74ls04放大后直接驱动超声波发射探头。

2.2.3接收电路的设计

将超声波接收探头接收的信号经cx20106红外线专用芯片处理接收,然后送给单片机。

2.2.4显示模块的设计

使用1602液晶屏,与单片机连接,将单片机的距离,温度,超声波数度(声速)传送给液晶屏显示出来。

2.2.5 温度补偿模块设计

因为声速在不同温度下的传播速度是不同的,根据补偿公式C=C0+0.607×T℃C0为零度时的声波速度332m/s;T为实际温度(℃)。采用18b20温度传感器测温,根据测得的温度,来确定具体的声速。

2.2.6 语音处理模块

根据手中的现有的材料,利用凌阳61版的语音处理功能,播放出:“倒车请注意”并通过51单片机和凌阳的串口通讯,将51测得的距离,温度,声速数据传给凌阳,然后通过凌阳的语音处理将其播报出来。

第三章超声波测距系统的软件设计

3.1总体流程图

3.1.1凌阳模块流程图

3

.1.2 51单片机

模块

3.2 程序及分析

(见附录)

第4章电路调试及误差分析

5.1电路的调试(盲区问题)

由于超声波发射探头在发射超声波时,接受探头也会接受到超声波,所以在发射超声波时,必须先关外部中断,延时一段时间,进而消除回波干扰,所以在测量中会有盲区出现,所以硬件调试中主要的就是调节延时时间,使盲区达到最小,进而跳高测量的精度。

通过硬件调试,来控制发射脉冲波的个数以及延时时间,并在实际测量中测出三种不同测距模式下的盲区,分别约为5cm,20cm及45cm。

、5.2系统的误差分析28

根据超声波测距公式L=C×T,可知测距的误差是由超声波的传播速度误差和测量距离传播的时间误差引起的。

1.时间误差

当要求测距误差小于1mm时,假设已知超声波速度C=344m/s (20℃室温),忽略声速的传播误差。测距误差s△t<(0.001/344) ≈0.000002907s 即2.907ms。

在超声波的传播速度是准确的前提下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1mm的误差。使用的12MHz晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用89C51定时器能保证时间误差在1mm的测量范围内。

2. 超声波传播速度误差

超声波的传播速度受空气的密度所影响,空气的密度越高则超声波的传播速度就越快.

第5章功能扩展

通过串口与PC机进行通讯,并利用所学知识,用VB写了了一个接受模块,将51单片机中的数据经串

口传到电脑上显示。参考文献33

单片机原理与控制技术机械工业出版社

数字电子技术教程清华大学出版社

模拟电子技术教程清华大学出版社

胡萍.超声波测距仪的研制.计算机与现代化

时德刚,刘哗.超声波测距的研究.计算机测量与控制

https://www.360docs.net/doc/715358630.html,/mgjqr/blog/item/63c5bd1e5346c164f624e4b8.html 超声波测距原理

附录:

//////////////主文件程序main//////////////////////////////////////////////

3.2.1超声波测距

#include

#include

#include"18B20.h"

#include "intrins.h"

#include"LCD1602.H"

#include"Delay1.h"

#define uchar unsigned char

#define uint unsigned int

uchar ucHigh_time,ucLow_time; //超声波传输时间

uchar ucFlag; //中断标志位

uchar frq; //音乐频率节拍问题

float c; //不同温度下的超声波传播速度

/*************************针脚定义********************************/ sbit Hz40k_out =P3^6; //40k信号输出端

sbit Mod_short=P1^4;

sbit Mod_long=P1^5;

sbit Mod_out = P1^7; // 判断数据是发给电脑机还是凌阳版

sbit Key_tran=P1^6; //发送数据,开始通讯

/*****************************************************************/ /**********************函数声明***********************************/ void Tmr0_int(void);

void Int0_int(void);

void Send_40khz_long(void) ; //发射超声波

void Send_40khz_medium(void) ;

void Send_40khz_short(void) ;

int Distance_count(); //距离转换函数

float Compensate_c(); //温度补偿函数

void Display_dis(void) ; //距离显示函数

void Display_tem(void) ; //温度显示函数

void Display_c(void) ; //声速显示函数

void delayms(unsigned char ms);

void Tmr1_int(void);

/***********************子程序********************************/ void Tmr0_int(void)

{TMOD|=0x01; //tmr0方式1,16位计数

EA=0; //关总中断

ET0=0; //关T0中断

TR0=0; //停止计时器0

TH0=0X00;

TL0=0X00;

}

//////////////////////////////////////////////////////////////

void Int0_int(void)

{IT0=0; //低电平沿触发

EA=0; //关总中断

EX0=0; //屏蔽中断

}

/////////////////////////////////////////////////////////////

void Ustart_int(void)

{SCON |= 0x50; //串口方式1,允许接收

TMOD |= 0x20; //定时器1定时方式2

// TCON = 0x40; //设定时器1开始计数

TH1 = 0xF3; //12MHz 2400波特率

TL1 = 0xF3;

TR1 = 0; //关闭定时器

}

///////////////////////////////////////////////////////////

void Ustart_send_lingyang(void)

{ uchar send[3];

uint V oice_v;

send[0]=Distance_count();

send[1]=Distance_count()>>8;

TR1 = 1; //启动定时器

TI=0;

SBUF=send[1]; //先发高位再发低位

while(!TI); //等待发送完成

TI=0;

while(!RI); //等待接收完成

RI=0;

//delay_ms(200);

SBUF=send[0];

while(!TI);

TI=0;

send[0]=Read_Temperature()/10;

send[1]=(Read_Temperature()/10)>>8;//发送的为实际温度的十倍37.2C则发送372 while(!RI); //等待接收完成

RI=0;

//delay_ms(200);

SBUF=send[1];

while(!TI);

TI=0;

while(!RI); //等待接收完成

RI=0;

//delay_ms(200);

SBUF=send[0];

while(!TI);

TI=0;

V oice_v=Compensate_c(); //将浮点型转换为整型

send[0]=V oice_v;

send[1]=V oice_v>>8;

while(!RI); //等待接收完成

RI=0;

//delay_ms(200);

SBUF=send[1];

while(!TI);

TI=0;

while(!RI); //等待接收完成

RI=0;

//delay_ms(200);

SBUF=send[0];

while(!TI);

TI=0;

while(!RI); //等待接收完成

RI=0;

TR1=0;//关闭定时器

}

//////////////////////////////////////////////////////////////////////////

void Ustart_send_pc(void)

{

uchar send[4];

uint V oice_v;

send[0]=Distance_count()/1000+0x30;

send[1]=Distance_count()%1000/100+0x30;

send[2]=Distance_count()%100/10+0x30;

send[3]=Distance_count()%10+0x30;

TR1 = 1; //启动定时器

TI=0;

SBUF=send[0];

while(!TI);

TI=0;

SBUF=send[1];

while(!TI);

TI=0;

SBUF=send[2];

while(!TI);

TI=0;

SBUF=send[3];

while(!TI);

TI=0;

send[0]=(Read_Temperature()/10)/100+0x30;

send[1]=(Read_Temperature()/10)%100/10+0x30;//发送的为实际温度的十倍

37.2C则发送372

send[2]=(Read_Temperature()/10)%10+0x30;

SBUF=send[0];

while(!TI);

TI=0;

SBUF=send[1];

while(!TI);

TI=0;

SBUF=send[2];

while(!TI);

TI=0;

V oice_v=Compensate_c(); //将浮点型转换为整型

send[0]=V oice_v/100+0x30;

send[1]=V oice_v%100/10+0x30;

send[2]=V oice_v%10+0x30;

SBUF=send[0];

while(!TI);

TI=0;

SBUF=send[1];

while(!TI);

TI=0;

SBUF=send[2];

while(!TI);

TI=0;

TR1=0;//关闭定时器

}

void Key_scan(void)

{Key_tran=1;//写1准备开始读

if(Key_tran==0)

{ delay_ms(10);

while(!Key_tran) ;//等待按键放开

if (Mod_out==1)

Ustart_send_lingyang();

else

Ustart_send_pc();

}

}

////////////////////////////////////////////////////////////////////////////////////////

void Send_40khz_short(void) //从P1.0发出40KHz的脉冲短波测量短距离{uchar n,p;

for(n=0;n<1;n++) //输出1个脉冲

{Hz40k_out=1;

for(p=0;p<3;p++);

Hz40k_out=0;

for(p=0;p<2;p++);

Hz40k_out=0;

}

}

/////////////////////////////////////////////////////////////

void Send_40khz_medium(void) //从P1.0发出40KHz的脉冲中波测量中距离

{uchar n,p;

for(n=0;n<2;n++) //输出2个脉冲

{Hz40k_out=1;

for(p=0;p<3;p++);

Hz40k_out=0;

for(p=0;p<2;p++);

Hz40k_out=0;

}

}

////////////////////////////////////////////////////////////

void Send_40khz_long(void)//从P1.0发出40KHz的脉冲长波测量长距离

{uchar n,p;

for(n=0;n<40;n++) //输出40个脉冲

{Hz40k_out=1;

for(p=0;p<3;p++);

Hz40k_out=0;

for(p=0;p<2;p++);

Hz40k_out=0;

}

}

//////////////////////////////////////////////////////////

float Compensate_c() //温度补偿公式

{ c= 331.45+0.607*Read_Temperature()/100;

return c;

}

/////////////////////////////////////////////////////////

int Distance_count()//距离计算函数

{float Temp;

Temp=ucHigh_time*256+ucLow_time-96; //96为实际调试中距离的调整

Temp=(Temp/1000)/2;

Temp*=Compensate_c(); //毫米

return Temp;

}

///////////////////////////////////////////////////////

void Display_dis(void) //显示距离

{ switch(ucFlag)

{case 1: { LCD_gotoxy(0, 0);

write_string_LCD1602("Distance:");

if( Distance_count()/1000>0) //判读显示位数

write_number(Distance_count(),4);

else if (Distance_count()/100>0)

write_number(Distance_count(),3);

else if (Distance_count()/10>0)

{write_number(Distance_count(),2);

write_string_LCD1602(" ");}

else

{write_number(Distance_count(),1);write_string_LCD1602(" ");}

write_string_LCD1602("mm");

break;

}

case 2: { LCD_gotoxy(0, 0);

write_string_LCD1602("Distance:wrong ") ;

break;

}

default : { LCD_gotoxy(0, 0);

write_string_LCD1602("Begin ") ;

break;

}

}

}

///////////////////////////////////////////////////////////////////

void Display_tem(void) //显示温度

{ LCD_gotoxy(1, 0);

write_string_LCD1602("T:");

if (Read_Temperature()/100>=100)

write_number(Read_Temperature()/100,3);

else

write_number(Read_Temperature()/100,2);

write_string_LCD1602(".");

write_number(Read_Temperature()%100/10,1);

write_string_LCD1602("C");

}

///////////////////////////////////////////////////////////////

void Display_c(void) //显示声速

{LCD_gotoxy(1, 8);

write_string_LCD1602("c:");

write_number(Compensate_c(),3);

write_string_LCD1602("m/s");

}

/*****************中断处理***********************/

void INT0_Ultrasonic() interrupt 0

{ uchar ucTemp_time1,ucTemp_time2;

ucFlag=1;//外部中断标志位

TR0=0;//关定时器0

ET0=0;//屏蔽定时器0中断

EX0=0;//关外部中断

ucTemp_time1=TL0;

ucTemp_time2=TH0;

if((ucTemp_time1!=0)&&(ucTemp_time2!=0))

{ucHigh_time=TH0;

ucLow_time=TL0;

}

}

////////////////////////////////////////////////

void over()interrupt 1 //T0溢出为无效测量FFF;

{ucFlag=2;//溢出标志位

TR0=0;//关定时器0

ET0=0;//屏蔽定时器0中断

EX0=0;//屏蔽外部中断

}

/**************************主程序************************/ void main(void)

{ Tmr0_int();

Int0_int();

Ustart_int(); //串口通讯初始化

init_LCD1602() ;

EA=1; //开总中断

while(1)

{ PX0=1; //设置外部0中断优先级为最高

TH0=0;

TL0=0;//清定时0

TR0=1;//开定时0

ET0=1;//开启定时器0中断

if(Mod_long==0)

{ Send_40khz_long();//发射40khz脉冲测量长距离

delay_ms(1); //1ms

delay_us(80); // 0.724ms 防回波干扰总延时25*40/1000+1+0.724=2.724ms

//盲区:2.724*170=463mm

}

if (Mod_long==1& Mod_short==1)

{ Send_40khz_medium();//发射40khz脉冲测量中距离

delay_us(127);// 防回波干扰 1.157ms延时

//总延时1.157+0.05=1.207ms

//盲区:1.207*170=205.19mm

}

if(Mod_short==0)

{Send_40khz_short();//发射40khz脉冲测量短距离

}

EX0=1; //开启int0中断

Display_dis( ); //距离显示

Display_tem(); //温度显示

Display_c(); //声速显示

/* Tmr1_int(); 音乐播放

delay_ms(200);

delay_ms(200);

//delay_ms(200);

ET1=0; //关tmr1中断关闭音乐,避免开音乐是中断太频繁,引起测温和测距离都不准确

*/

// delay_ms(200);

delay_ms(200);

Key_scan(); //扫描按键判断是否要发送数据与凌阳版通讯

}

}

(2)显示模块

#ifndef _RZ_LCD1602_

#define _RZ_LCD1602_

#ifndef uchar

#define uchar unsigned char

#endif

#ifndef uint

#define uint unsigned int

#endif

uchar code number[10]={"0123456789"};//用来显示数据

#define Port P2

sbit RS_LCD1602=P1^1;

sbit RW_LCD1602=P1^2;

sbit EN_LCD1602=P1^3;

void Delay_Ms_LCD1602(uint ms)

{//延时程序(以毫秒为单位)。

uchar y,z;

for(;ms>0;ms--)

for(y=0;y<11;y++)

for(z=0;z<25;z++);

}

bit get_status_LCD1602() //读状态。

{Port=0xff;

EN_LCD1602=0;

RS_LCD1602=0;

RW_LCD1602=1;

EN_LCD1602=1;

return((bit)(Port&0x80));

}

void write_command_LCD1602(uchar com) //写命令。

{while(get_status_LCD1602());

EN_LCD1602=0;

RS_LCD1602=0;

RW_LCD1602=0;

Delay_Ms_LCD1602(5);

Port=com;

EN_LCD1602=1;

Delay_Ms_LCD1602(20);

EN_LCD1602=0;

}

void set_cursor_LCD1602(uchar line,uchar add) //设置光标的行(line),列(add)位置。

{write_command_LCD1602(0x80+line*0x40+add);

}

void write_char_LCD1602(uchar indata) //写数据。

{while(get_status_LCD1602());

EN_LCD1602=0;

RS_LCD1602=1;

RW_LCD1602=0;

Delay_Ms_LCD1602(5);

P2=indata;

EN_LCD1602=1;

Delay_Ms_LCD1602(20);

EN_LCD1602=0;

}

void Write_CGA_LCD1602(uchar *CGA_Data,uchar CGA_Index) //写自定义字符{ uchar index;

CGA_Index&=0x07;//最多8个字符。

CGA_Index=CGA_Index<<3;//决定CGARAM相对地址。

for(index=0;index<8;index++)

{//设置CGARAM地址。

write_command_LCD1602(CGA_Index|index|0x40);

//写入字模数据。

write_char_LCD1602(*CGA_Data);

CGA_Data++;

}

}

void write_char_add_LCD1602(uchar indata,uchar line,uchar add)

{//在指定的行(line),列(add)位置写入字符(indata)。

set_cursor_LCD1602(line,add);

write_char_LCD1602(indata);

}

void write_string_LCD1602(uchar indata[])

{//从当位置开始写入指定长度(lenght)的字符串(indata[])。

//一次最多写入255个。

uchar index=0;

while(indata[index]!=0&&index<255)//直到遇到字符串结束标志。

{write_char_LCD1602(indata[index]);

index++;

}

}

void cursor_show_LCD1602() //打开显示屏并显示闪烁的光标。

{write_command_LCD1602(0x0f);

}

void cursor_hide_LCD1602() //隐藏光标

{write_command_LCD1602(0x0c);

}

void clear_LCD1602() //清屏。

{while(get_status_LCD1602()&0x80);//等待空闲状态。

write_command_LCD1602(0x01);

Delay_Ms_LCD1602(50);

}

void init_LCD1602() //初始化液晶

{write_command_LCD1602(0x38);//设置显示模式。

write_command_LCD1602(0x80);//光标初始位置。

write_command_LCD1602(0x0f);//打开显示屏并显示闪烁的光标。

write_command_LCD1602(0x06);//输入数据后光标自动向后移。

cursor_hide_LCD1602(); //隐藏光标。

}

****************************************************************/ void LCD_gotoxy(uchar x, uchar y)

{ x &= 0x1; //限制x不能大于1,y不能大于15 y &= 0xF;

if(!x) write_command_LCD1602(0x80|y);

else write_command_LCD1602(0xC0|y);

}

/************************************************************

**************************************************************/ void write_number(uint num,uchar n)

{ uchar a; //个位

uchar b; //十位

uchar c; //百位

uchar d; //千位

uchar e; //万位

switch(n)

{case 1:write_char_LCD1602(number[num]);

break;

case 2:b=num/10;

a=num%10;

write_char_LCD1602(number[b]);

write_char_LCD1602(number[a]);

break;

case 3:c=num/100;

b=num%100/10;

a=num%10;

write_char_LCD1602(number[c]);

write_char_LCD1602(number[b]);

write_char_LCD1602(number[a]);

break;

case 4:d=num/1000;

c=num%1000/100;

b=num%1000%100/10;

a=num%10;

write_char_LCD1602(number[d]);

write_char_LCD1602(number[c]);

write_char_LCD1602(number[b]);

write_char_LCD1602(number[a]);

break;

case 5:e=num/10000 ;

d=num%10000/1000;

c=num%1000/100;

b=num%1000%100/10;

a=num%10;

write_char_LCD1602(number[e]);

write_char_LCD1602(number[d]);

write_char_LCD1602(number[c]);

write_char_LCD1602(number[b]);

write_char_LCD1602(number[a]);

break;

}}

#endif

(3)温度传感器模块

/***********************************************

*函数功能:单一18B20驱动*

*环境:TA89S52 晶振:12M *

*版本:V1.0 测试通过(负温度未测试) *

*By Andy 2008-5-23 copyright: *

***********************************************/

#ifndef DS18B20_H

#define DS18B20_H

#include

#include

#include

typedef unsigned char byte;

typedef unsigned int word;

/**************DS18B20温度定义部分×**************/

sbit DQ=P1^0; //18B20 接口

bit flag_minus=0;

word temp_data[3];

/********************函数列表********************/

void adjust_res(char res); //res 分别等于0x1f, 0x3f, 0x5f 温度读数分辨率分别对应

byte ow_reset(void);

byte read_byte(void);

void write_byte(char val);

word Read_Temperature(void);

/************************************************

void DS18B20_delay(word useconds)

{ for(;useconds>0;useconds--); //延时8×+7

}

byte ow_reset(void) //复位

{byte presence;

DQ = 0; //拉低总线

DS18B20_delay(29); // 保持480us 29

DQ = 1; // 释放总线

DS18B20_delay(3); // 等待回复

presence = DQ; // 读取信号

DS18B20_delay(25); // 等待结束信号

return(presence); // 返回0:正常1:不存在

}

/************************************************ byte read_byte(void)

{byte i;

byte value = 0;

for (i=8;i>0;i--)

{value>>=1;

DQ = 0;

DQ = 1;

DS18B20_delay(1);

if(DQ)value|=0x80;

DS18B20_delay(6);

}

return(value);

}

/************************************************ void write_byte(char val)

{byte i;

for (i=8; i>0; i--) // 一次写一位

{DQ = 0; //

DQ = val&0x01;

DS18B20_delay(5); //

DQ = 1;

val=val/2; //向右移1位

}

DS18B20_delay(5);

}

/************************************************ void adjust_res(char res)

{ow_reset(); //复位

write_byte(0xcc); //跳过Rom

write_byte(0x4e); //写暂存器

write_byte(0x02); //写TH

write_byte(0x01); //写TL

//write_byte(0x5f); //写结构寄存器

write_byte(res);

ow_reset(); //复位

write_byte(0xcc); //跳过Rom

基于AT89c51单片机实现的交通灯

江西科技师范大学 通信与电子学院《单片机应用技术》实训报告实训题目:模拟交通灯 小组成员:龚石冲罗仁敏曾建伟 班级:12电子科学与技术 指导老师:熊朝松

一、实训选题内容、要求 交通模拟灯 要求: 1、南北方向为主干道,东西方向为支路;主干路绿灯时间为45秒,红灯时间为35秒; 支路绿灯时间30秒,红灯时间为50秒,两个方向的黄灯时间都为4秒; 2、使用定时器实现时间的倒计时;用显示部件显示主干道路的倒计时变化; 3、设计三个外部按钮,分别用以手动控制紧急情况下两个方向同时禁通过;南北方向 长时间通过(不显示时间倒计时变化);东西方向长时间通过;释放按钮后则正常 通行。 二、实训计划和人员安排 经小组人员商定,分工完成任务,在课余时间完成。 若其中遇到什么问题,大家聚在一起讨论解决。具体分工如下: 1、程序编写:龚石冲 2、实体焊接:龚石冲 3、实训报告:罗仁敏 4、视频及PPT:曾建伟 三、实训选题分析 交通灯由东西南北四向灯,倒计时显示,人行横道通行指示标志等部分组成。其中东西南北四向灯中的每一向都由红、黄、绿三色灯组成;东西为一组,南北为一组。黄灯在红绿灯之间转换时亮。倒计时显示表示红、黄、绿灯亮时所剩时间。由于人行横道通行指示标志与红灯是同步的,所以在模拟交通灯时省略。交通会遇到一些突发情况。因此交通信号灯要设定一些特定功能,以防不时之需。

整个电路由单片机完成,控制部分由软件完成,硬件只负责响应。 四、方案设计 方案一:主控系统采用AT89C51单片机作为控制器,由定时器1间接控制通行倒计时及南北和东西的通行。由按键开关完成禁止通行,东西 通行,南北通行。

基于51单片机系统设计

基于51单片机的多路温度采集控制系统设计 言: 随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。 本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。 我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。 关键词:温度多路温度采集驱动电路 正文: 1、温度控制器电路设计 本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED显示电路等组成。由热敏电阻温度传感器测量环境温度,将其电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。89C51的P2.0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地址为F0FFH。输出驱动控制信号由p1.0输出,4个LED为状态指示,其中,LED1为输出驱动指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。当温度高于上限温度值时,有p1.0输出驱动信号,驱动外设电路工作,同时LED1亮、LED2灭、LED3亮、LED4灭。外设电路工作后,温度下降,当温度降到正常温度后,LED1亮、LED2亮、LED3灭、LED4灭。温度继续下降,当温度降到下限温度值时,p1.0信号停止输出,外设电路停止工作,同时LED1灭、LED2灭、LED3灭、LED4亮。当外设电路停止工作后,温度开始上升,接着进行下一工作周期。 2、温度控制器程序设计 本软件系统有1个主程序,6个子程序组成。6个子程序为定时/计数器0中断服务程序、温度采集及模数转换子程序ADCON、温度计算子程序CALCU、驱动控制子程序DRVCON、十进制转换子程序METRICCON 及数码管显示子程序DISP。 (1)主程序 主程序进行系统初始化操作,主要是进行定时/计数器的初始化。 (2)定时/计数器0中断服务程序 应用定时计数器0中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户可以根据实际环境温度变化率进行采样时间调整。每当定时时间到,调用温度采集机模数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给89C51单片机,然后在调用温度计算子程序CALCU,驱动控制子程序DRVCON,十进制转换子程序MERTRICCON,温度数码显示子程序DISP。

基于51单片机的超声波测距仪之倒车雷达作品设计毕业论文

基于单片机的超声波测距电子烧友会基于51单片机的超声波测距仪 之倒车雷达作品设计毕业论文 摘要: 超声波具有指向性强,能量消耗缓慢,传播距离较远等优点,所以,在利用传感器技术和自动控制技术相结合的测距方案中,超声波测距是目前应用最普遍的一种,他广泛应用于防盗、倒车雷达、水位测量、建筑施工工地以及一些工业现场。 本课题详细介绍了超声波传感器的原理和特性,以及STC公司的STC89C52的单片机的性能和特点,并在分析了超声波测距的原理的基础上,指出了设计测距系统的不足并加以改进,将温度引起的误差考虑在内并且加以修正,给出了以STC89C52单片机为核心的低成本、高精度、液晶显示超声波测距系统的硬件电路和软件设计方法。该系统电路设计合理、工作稳定、性能良好、检测速度快、计算简单并且做到了可设计报警范围的功能,在测量精度方面能达到工业使用的要求。 关键词:单片机;液晶显示;报警;测距 I

Ultrasonic distance measurement based on single chip Abstract:Ultrasound has a strong point, the energy consumption of the slow spread of the advantages of distance, so the use of sensor technology and automatic control technology, the program combines distance, ultrasonic distance measurement is the most common one, and he widely used in security, parking sensor, water level measurement, construction sites and some industrial sites. This subject introduces the principles and characteristics of ultrasonic sensors, and microcontroller STC89C52 STC's performance and characteristics, and the analysis of the ultrasonic distance measurement based on the principle that the lack of design ranging system and make improvements, will into account the error due to temperature and should be amended to STC89C52 given low-cost microcontroller as the core, high-accuracy, liquid crystal display ultrasonic ranging system of hardware and software design methods. The system circuit design is reasonable, stable, good performance, fast detection of simple calculation and can be designed to achieve the alarm range of functions to achieve precision in the measurement requirements for industrial use. Keywords:microcontroller; LCD display; alarm; ranging

80c51单片机交通灯课程设计报告1.pdf

80C51单片机交通灯课程设计报告 目录 第一章引言 (3) 第二章单片机概述 (4) 第三章芯片介绍 (6) 3.1AT89S51单片机介绍 (6) 3.1.1简介 (6) 3.1.2主要管脚介绍 (6) 3.274LS164介绍 (8) 3.3共阳数码管介绍 (8) 3.3.1分类简介 (8) 图3.3LED数码管引脚定义 (9) 3.3.2驱动方式 (9) 3.3.3主要参数 (10) 3.3.4应用范围 (10) 第四章系统硬件设计 (11) 4.1硬件设计要求 (11) 4.2硬件设计所用元器件 (11) 4.3硬件设计图 (11) 4.4设计流程图 (12) 第五章系统软件设计 (13) 5.1流程图 (13)

5.2程序设计 (14) 第六章结论 (16) 参考文献 (18)

第一章引言 在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。 1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 智能的交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题.在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行.交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。 本文为了实现交通道路的管理,力求交通管理先进性、科学化.分析应用了单片机实现智能交通灯管制的控制系统,以及该系统软、硬件设计方法,实验证明该系统实现简单、经济,能够有效地疏导交通,提高交通路口的通行能力。

基于单片机的交通灯

毕业设计说明书 基于单片机的交通灯 控制系统设计 专业 电气工程及其自动化 学生姓名 郭 恒 燕 班级 BD 电气042 学 号 0420610228 指导教师 张 兰 红 完成日期 2008年6月10日

基于单片机的交通灯控制系统设计 摘要:对基于单片机的交通灯控制系统进行了设计。系统功能为:以MCS-51系列单片机作为控制核心,设计并制作交通灯控制系统,东西南北四个方向具有左拐、右拐、直行及行人4种通行指示灯,用计时器显示路口通行转换剩余时间,在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行状态。 在对系统功能分析的基础上,提出了三种设计方案,经比较,选择性能较优的LED动态循环显示方案进行了设计。设计包括硬件和软件两大部分。硬件部分包括单片机最小系统、时间显示、交通灯显示三部分。选用Atmel公司的AT89S52单片机作为控制核心,东西南北四个方向设置了LED时间显示和交通灯显示,时间显示采用三位LED显示器,交通灯显示则采用红绿双色高亮发光二极管来模拟。软件采用了模块化的设计方法,主要分为主程序、定时器中断服务子程序、倒计时显示子程序、交通灯模拟显示子程序四部分。 在实验板上制作了基于单片机的交通灯控制系统样机,对硬件和软件部分分别进行了调试,再进行了软硬件联调,得到的交通灯控制系统样机实物,可圆满地完成毕业设计任务书所要求的功能。 关键词: 交通灯;单片机;AT89S52

基于单片机的交通灯控制系统设计 1 概述 1.1 课题研究背景与意义 随着经济的增长和人口的增加,人们生活方式不断变化,人们对交通的需求不断增加。城市中交通拥挤、堵塞现象日趋严重,由此造成巨大的经济与时间损失。资料显示,对日本东京268个主要交叉路口的调查估计表明:每年在交叉路口的时间延误,折成经济报失为20亿美元;而在我国北京市,当早晚交通高峰时,交叉路口处的排队长度竟达1000多米,有的阻车车队从一个交叉路口延伸到另一个交叉路口,这时一辆车为通过一交叉路口,往往需要半个小时以上,时间损失相当可观。 我国是一个历史悠久、人口众多的国家,城市数量随着社会的发展不断增多。随着城市化进程的大大加快,诱发的交通需求急剧增长,供需矛盾不断激化,严重的交通问题也随之而来。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊,这一切要归功于城市交通控制系统中的交通灯控制系统。交通灯控制系统对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果,使城市交通得以有效管理。 交通灯可以采用PLC、单片机等控制方法。利用单片机实现对交通信号灯的实时控制,只要采用一块单片机,加上简单的接口与驱动放大电路,即可实现,具有成本低,可靠性高的特点。 1.2 课题设计内容 本课题对基于单片机的交通灯控制系统进行设计。以MCS-51系列单片机为控制核心,设计并制作交通灯控制系统,用于十字路口的车辆及行人的交通管理。东西南北四个路口具有左拐、右拐、直行及行人4种通行指示灯,并分别用计时器显示路口通行转换剩余时间,在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行状态。 设计交通灯控制系统硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。 2 系统设计 2.1 设计方案论证 根据设计内容要求,提出了如下三种方案: 方案一:采用AT89S52单片机作为控制核心,采用四组高亮红绿双色二极管作

(完整word版)基于51单片机的温度控制系统设计

基于51单片机的水温自动控制系统 0 引言 在现代的各种工业生产中 ,很多地方都需要用到温度控制系统。而智能化的控制系统成为一种发展的趋势。本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可应用于温度范围30℃到96℃。 1 设计任务、要求和技术指标 1.1任务 设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。 1.2要求 (1)利用模拟温度传感器检测温度,要求检测电路尽可能简单。 (2)当液位低于某一值时,停止加热。 (3)用AD转换器把采集到的模拟温度值送入单片机。 (4)无竞争-冒险,无抖动。 1.3技术指标 (1)温度显示误差不超过1℃。 (2)温度显示范围为0℃—99℃。 (3)程序部分用PID算法实现温度自动控制。 (4)检测信号为电压信号。 2 方案分析与论证 2.1主控系统分析与论证 根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。其引脚图如图1所示。 2.2显示系统分析与论证 显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件。在显示驱动电路中拟订了两种设计方案: 方案一:采用静态显示的方案 采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。 方案二:采用动态显示的方案 由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电 ,但编程比较复杂,亮度不如静态的好。 由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。

基于单片机的汽车倒车雷达系统设计

基于单片机的汽车倒车雷达系统设计 摘要 随着社会经济的发展交通运输业日益兴旺,汽车的数量在大副攀升。交通拥挤状况也日趋严重,撞车事件屡屡发生,造成了不可避免的人身伤亡和经济损失,针对这种情况,设计一种响应快,可靠性高且较为经济的汽车倒车防撞预警系统势在必行。本设计是利用最常见的超声波测距法来设计的一种基于单片机的汽车倒车雷达系统。 本设计的主要是基于STC89C52单片机利用超声波的特点和优势,将超声波测距系统和STC89C52单片机结合于一体,设计出一种基于STC89C52单片机的汽车倒车雷达系统。该系统采用软、硬件结合的方法,实现了汽车与障碍物之间距离的显示以及危险距离的声光报警等功能。 本设计论文概述了超声波检测的发展及基本原理,阐述了超声波传感器的原理及特性。在超声波测距系统功能和STC89C52单片运用的基础上,提出了系统的总体构成,对系统各个设计单元的原理进行了介绍,并且对组成各单元硬件电路的主要器件做了详细说明和选择。本设计论文还介绍了系统的软件结构,并通过编程来实现系统功能和要求。 关键词:汽车倒车雷达、STC89C52、超声波、测量距离、显示距离、声光报警

第一章绪论 课题设计的目的和意义 随着汽车的普及,越来越多的家庭拥有了汽车。交通拥挤状况也随之出现,撞车事件也是经常发生,人们在享受汽车带来的乐趣和方便的同时,更加注重的是汽车的安全性,许多“追尾”事故都与车距有着密切的关系。为了解决这个安全问题,设计一种汽车测距防撞报警系统势在必行。 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单。所以超声波测距法是一种非常简单常见的方法,应用在汽车停车的前后左右防撞的近距离测量,以及在汽车倒车防撞报警系统中,超声波作为一种特殊的声波,具有声波传输的基本物理特性—折射,反射,干涉,衍射,散射。超声波测距是利用其反射特性,当车辆后退时,超声波测距传感器利用超声波检测车辆后方的障碍物位置,并利用LED 显示出来,当到达一定距离时,系统能发出报警声,进而提醒驾驶人员,起到安全的左右。 通过本课题的研究,将所学到的知识用在实践中并有所创新和进步。该设计可广泛应用在生活、军事、工业等各个领域,它需要设计者有较好的数电、模电知识,并且有一定的编程能力,综合运用所学的知识实现对超声波发射与接收信号进行控制,通过单片机程序对超声波信号进行相应的分析、计算、处理最后显示在液晶显示屏上。

基于51单片机课程设计报告

单片机课程设计 课题:基于51单片机的交通灯设计 专业:机械设计制造及其自动化 学号: 指导教师:邵添 设计日期:2017/12/18 成绩: 大学城市科技学院电气学院 基于51单片机数字温度计设计报告

一、设计目的作用 本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器DS18B20,单片机AT89C52,,四位共阴极数码管一个,电容电阻若干。DS18B20支持“一线总线”接口,测量温度围-55°C~+125°C。在-10~+85°C围,精度为±0.5°C。18B20的精度较差,为±2°C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。 本次数字温度计的设计共分为五部分,主控制器,LED显示部分,传感器部分,复位部分,按键设置部分,时钟电路。主控制器即单片机部分,用于存储程序和控制电路;LED显示部分是指四位共阴极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路,按键部分用来设置上下限报警温度。测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。 二、设计要求 (1).利用DS18B20传感器实时检测温度并显示。 (2).利用数码管实时显示温度。 (3).当温度超过或者低于设定值时蜂鸣器报警,LED闪烁指示。 (4).能够手动设置上限和下限报警温度。 三、设计的具体实现 1、系统概述 方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。 方案设计框图如下:

(完整)基于89C51单片机交通灯课程设计要点

(完整)基于89C51单片机交通灯课程设计要点 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)基于89C51单片机交通灯课程设计要点)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)基于89C51单片机交通灯课程设计要点的全部内容。

华北水利水电学院 基于C51单片机 交通灯课程设计实验报告 姓名:田坤 班级:125 专业:电子信息科学与技术 指导老师:辛艳辉刘明堂 2013年1月16日 摘要 近年来,随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,正在不断的应用到实际生活中,并且根据具体硬件结构软硬件结合,加以完善。 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊.那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MCS-51系列单片机STC89C51为中心器件来设计交通灯控制器,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题.系统具

有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。 关键词:交通灯 单片机 数码管 一 。总体设计思路 1.1设计目的及思路 设计目的 了解交通灯管理的基本工作原理,熟练掌握STC89C51的工作原理和应用编程,熟悉STC89C51单片机并行接口的各种工作方式和应用,并了解计数器/定时器的工作方式和应用编程外部中断的方法,掌握多位LED 显示问题的解决。 设计思路 (1)分析目前交通路口的基本控制技术,提出自己的交通控制的初步方案。 (2)确定系统交通控制的总体设计,增加了倒计时显示提示。 (3)进行显示电路。 (4)进行软件系统的设计。 1。2 实际交通灯显示时序及状态转换的理论分析 图1所示为红绿灯转换的状态图。 图1 红绿灯状态转换图 表1 十字路口指示灯燃 亮方 S1 S4 S3 S2

基于51单片机的温度控制系统的设计

基于单片机的温度控制系统设计 1.设计要求 要求设计一个温度测量系统,在超过限制值的时候能进行声光报警。具体设计要求如下: ①数码管或液晶显示屏显示室内当前的温度; ②在不超过最高温度的情况下,能够通过按键设置想要的温度并显示;设有四个按键,分别是设置键、加1键、减1键和启动/复位键; ③DS18B20温度采集; ④超过设置值的±5℃时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用黄灯指示,正常用绿灯指示。 2.方案论证 根据设计要求,本次设计是基于单片机的课程设计,由于实现功能比较简单,我们学习中接触到的51系列单片机完全可以实现上述功能,因此可以选用AT89C51单片机。温度采集直接可以用设计要求中所要求的DS18B20。报警和指示模块中,可以选用3种不同颜色的LED灯作为指示灯,报警鸣笛采用蜂鸣器。显示模块有两种方案可供选择。 方案一:使用LED数码管显示采集温度和设定温度; 方案二:使用LCD液晶显示屏来显示采集温度和设定温度。 LED数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选和段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬件支持。LCD显示屏可识别性较好,背光亮度可调,而且比LED 数码管显示更多字符,但是编程要求比LED数码管要高。综合考虑之后,我选用了LCD显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒值设定时同样可以采集并显示当前温度,可以直观的看到实际温度与警戒温度的对比。LCD 显示模块可以选用RT1602C。

3.硬件设计 根据设计要求,硬件系统主要包含6个部分,即单片机时钟电路、复位电路、键盘接口模块、温度采集模块、LCD 显示模块、报警与指示模块。其相互联系如下图1所示: 图1 硬件电路设计框图 单片机时钟电路 形成单片机时钟信号的方式有内部时钟方式和外部时钟方式。本次设计采用内部时钟方式,如图2所示。 单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为此放大器的输入端和输出端,其频率范围为~12MHz ,经由片外晶体振荡器或陶瓷振荡器与两个匹配电容一 起形成了一个自激振荡电路,为单片机提供时钟源。 复位电路 复位是单片机的初始化操作,其作用是使CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作,以防止电源系统不稳定造成CPU 工作不正常。在系统中,有时会出现工作不正常的情况,为了从异常状态中恢复,同时也为了系统调试方便,需要设计一个复位电路。 单片机的复位电路有上电复位和按键复位两种形式,因为本次设计要求需要有启动/复位键,因此本次设计采用按键复位,如图3。复位电路主要完成系统 图2 单片机内部时钟方式电路 图3 单片机按键复位电路

基于51单片机的超声波测距仪之倒车雷达作品设计毕业论文

基于51单片机的超声波测距仪之倒车雷达作品设计毕业论文

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

基于51单片机最小系统设计

基础强化训练任务书 学生姓名:董勇涛专业班级:电子0902 指导教师:洪建勋工作单位:信息工程学院 题目:基于51单片机最小系统设计 一、训练目的 主要目的就是对学生进行基础课程、基本技能、基本动手能力的强化训练,提高学生的基础理论知识、基本动手能力,提高人才培养的基本素质。 二、训练内容和要求 1、基础课程和基本技能强化训练 (1)设计一个基于51单片机最小系统电路; (2)对所设计电路的基本原理进行分析; 2、文献检索与利用、论文撰写规范强化训练 要求学生掌握基本的文献检索方法,科学查找和利用文献资料,同时要求学生获得正确地撰写论文的基本能力,其中包括基本格式、基本排版技巧和文献参考资料的写法、公式编排、图表规范制作、中英文摘要的写法等训练。 3、基本动手能力和知识应用能力强化训练 (1)学习PROTEL软件; (2)绘制电路的原理图和PCB版图,要求图纸绘制清晰、布线合理、符合绘图规范; 4、查阅至少5篇参考文献,按《武汉理工大学课程设计工作规范》要求撰写基础强化训练报告书,全文用A4纸打印。 三、初始条件 计算机;Microsoft Office Word 软件;PROTEL软件 四、时间安排 1、20011年7 月 11日集中,作基础强化训练具体实施计划与报告格式要求的说明; 学生查阅相关资料,学习电路的工作原理。 2、2011年7 月 12日,电路设计与分析。 3、2011年7 月 13日至2010年7 月 14日,相关电路原理图和PCB版图的绘制。 4、2011年7 月15日上交基础强化训练成果及报告,进行答辩。 指导教师签名:年月日系主任(或责任教师)签名:年月日 目录 摘要.................................................................................................................... 错误!未定义书签。

基于51单片机的倒车雷达设计

课程设计报告 (嵌入式系统设计实践) 学院:电气工程与自动化学院 题目:基于51单片机的车倒车雷达设计专业班级:自动化131班 学号:2420132905 学生姓名:吴亚敏 指导老师:罗龙 时间:2015年12月1 日

摘要 倒车雷达又称泊车辅助系统,是汽车泊车安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷,提高了安全性。 本文介绍了以STC89C51RC单片机为核心的一种低成本、高精度、微型化,并有数字显示和声光报警功能的倒车雷达系统。倒车雷达一般由超声波传感器(俗称探头)、控制器和显示器等部分组成,现在市场上的倒车雷达大多采用超声波测距原理,驾驶者在倒车时,启动倒车雷达,在控制器的控制下,由装置于车尾保险杠上的探头发送超声波,遇到障碍物,产生回波信号,传感器接收到回波信号后经控制器进行数据处理,判断出障碍物的位置,由显示器显示距离并发出警示信号,得到及时警示,从而使驾驶者倒车时做到心中有数,使倒车变得更轻松。倒车雷达的提示方式可分为液晶、语言和声音三种;接收方式有无线传输和有线传输等。本方案采用语音提示的方式,利用STC89C51RC单片机所具备的功能,外接超声波测距模组,即超声波发射模块和超声波接收模块,加上显示模块和语音报警模块,组成一个示例的倒车雷达系统,语音提示报警(0.27m~1.0m)范围内的障碍物,并通过数码管显示与障碍物之间的距离。 关键词:倒车雷达;超声波;单片机STC89C51RC

目录 第一章概述 (1) 1.1设计目的 (1) 1.2设计要求 (1) 1.3 本设计主要内容 (1) 第二章倒车雷达的基本工作原理 (2) 2.1 单片机的发展及其应用 (2) 2.2 超声波测距原理 (2) 2.2.2 超声波测距的基本原理 (2) 2.2.3 超声波测距的设计实现 (5) 2.3 超声波倒车雷达系统工作原理 (5) 2.3.1 超声波倒车雷达的工作原理 (5) 2.3.2 系统原理框图 (6) 2.4 本章小结 (6) 第三章系统硬件设计 (7) 3.1 单片机系统及显示电路 (7) 3.1.1 单片机控制芯片选择 (7) 3.1.2 单片机系统及其外围电路 (9) 3.1.3 显示电路 (10) 3.2 超声波发射电路 (11) 3.3 超声波接收电路 (12) 3.4 语音部分原理图 (13) 3.5 电源电路的设计 (14) 3.6 本章小结 (15)

(完整word版)51单片机课程设计实验报告

51单片机课程设计报告 学院: 专业班级: 姓名: 指导教师: 设计时间:

51单片机课程设计 一、设计任务与要求 1.任务:制作并调试51单片机学习板 2.要求: (1)了解并能识别学习板上的各种元器件,会读元器件标示; (2)会看电路原理图; (3)制作51单片机学习板; (4)学会使用Keil C软件下载调试程序; 用调试程序将51单片机学习板调试成功。 二、总原理图及元器件清单 1.总原理图 2.元件清单 三、模块电路分析 1. 最小系统: 单片机最小系统电路分为振荡电路和复位电路, 振荡电路选用12MHz 高精度晶振, 振荡电容选用22p和30p 独石电容;

图 1 图 2 复位电路使用RC 电路,使用普通的电解电容与金属膜电阻即可; 图 3 当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST 为高电平,之后随着时间推移电源负极通过电阻对电容放电,放完电时RST 为低电平。正常工作为低电平,高电平复位。 2. 显示模块: 分析发光二极管显示电路: 图 4 发光二极管显示电路分析:它是半导体二极管的一种,可以把电能转化成光能,常简写为

LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,产生自发辐射的荧光。图中一共有五个发光二极管其中一个为电源指示灯,当学习板通电时会发光以指示状态。其余四个为功能状态指示灯,实际作用与学习板有关 分析数码管显示电路 图 5 数码管显示电路分析:数码管按段数分为七段数码管和八段数码管,图中所用为八段数码管(比七段管多了一个小数点显示位),按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管.共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。数码管主要用来显示经电路板处理后的程序的运行结果。图中使用了八个八段数码管,可以显示八个0-15的数字。使用数码管可以直观的得到程序运行所显示的结果.也可以显示预置在学习板上的程序,主要通过16个开关来控制。 四、硬件调试 1、是否短路 用万用表检查P2两端是短路。电阻为0,则短路,电阻为一适值,电路正常。 2、焊接顺序 焊接的顺序很重要,按功能划分的器件进行焊接,顺序是功能部件的焊接--调试--另一功能部件的焊接,这样容易找到问题的所在。 3、器件功能 1)检查原理图连接是否正确 2)检查原理图与PCB图是否一致 3)检查原理图与器件的DATASHEET上引脚是否一致 4)用万用表检查是否有虚焊,引脚短路现象 5)查询器件的DATASHEET,分析一下时序是否一致,同时分析一下命令字是否正确 6)通过示波器对芯片各个引脚进行检查,检查地址线是否有信号的 7)飞线。用别的的口线进行控制,看看能不能对其进行正常操作,多试验,才能找到问题出现在什么地方。 1、详细描述硬件安装过程中出现的故障现象,并作故障分析,及解决方法。 六、软件调试

基于51单片机的智能交通灯课程设计

目录 摘要 (1) 1 系统硬件设计 (2) 1.1 80C51单片机引脚图及引脚功能介绍 (2) 1.2 74LS245引脚图及功能 (4) 1.3 八段LED数码管 (5) 1.4 硬件系统总控制电路 (6) 1.5各模块控制电路 (8) 1.5.1 交通灯控制电路 (8) 1.5.2 倒计时显示电路 (9) 1.5.3 紧急通行电路 (12) 1.5.4 声音警示装置 (13) 2 系统程序设计 (14) 2.1 主程序流程图 (14) 2.2 显示子程序流程图 (15) 3 心得体会 (16) 参考文献 (17) 附录源程序 (18)

摘要 近年来随着科技的飞速发展,一个以微电子技术、计算机技术和通信技术为先导的信息革命正在蓬勃发展。计算机技术作为三者之一,怎样与实际应用更有效的结合并发挥其作用。单片机作为计算机技术的一个分支,正在不断的应用到实际生活中,同时带动传统控制检测的更新。在实时检测和自动控制的应用系统中,单片机往往是作为一个核心部件使用,针对具体应用对象的特点,配以其它器件来加以完善。 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现交通的井然秩序呢?靠的是交通信号灯的自动指挥系统,来实现交通的井然有序。交通信号灯控制方式很多。本系统采用美国ATMEL公司生产的单片机AT80S51,以及其它芯片来设计交通灯控制。实现了通过AT89S51芯片的P1口设置红、绿灯点亮的功能,输出设置显示时间。交通灯的点亮采用发光二极管实现,时间的显示采用七段数码管实现。单片机系统采用的直流供电。 关键词:AT89S51单片机;智能交通灯控制系统;

基于51单片机的交通控制系统模拟设计

基于51单片机的交通控制系统模拟设计 学院:电气与控制工程学院 专业:自动化 姓名:

目录 1. 设计思路 (2) 2.2显示界面方案 (2) 2.3输入方案: (2) 3 单片机交通控制系统总体设计 (2) 3.1单片机交通控制系统的通行方案设计 (2) 3.2单片机交通控制系统的功能要求 (3) 3.3单片机交通控制系统的基本构成及原理 (3) 4智能交通灯控制系统的硬件设计 (4) 4.1系统硬件总电路构成及原理 (4) 4.2系统硬件电路构成 (4) 4.3系统工作原理 (4) 5 系统软件程序的设计 (6) 5.1程序主体设计流程 (6) 参考文献 (17) 设计心得体会 (18) 附录 (19) 基于单片机的交通控制系统模拟设计

1. 设计思路 (1)分析目前交通路口的基本控制技术以及各种通行方案,并以此为基础提出自己的交通控制的初步方案。 (2)确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示,基于实际情况,又增加了紧急状况处理和通行时间可调这两项特特殊功能。 (3)进行显示电路,灯状态电路,按键电路的设计和对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。 (4)进行软件系统的设计,对于本系统,采用单片机C语言编写,对单片机内部结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的编写。 2.单片机交通控制系统方案的比较、设计与论证 2.1 电源提供方案 采用单片机控制模块提供电源。改方案的优点是系统简明扼要, 节约成本;缺点是输出功率不高。 2.2 显示界面方案 采用数码管显示。这种方案只显示有限的符号和数码字符,简单,方便。 2.3 输入方案: 由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。 3 单片机交通控制系统总体设计 3.1单片机交通控制系统的通行方案设计 设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下所示。交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始。 通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下: ◆南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时30秒。此状态下,东西向禁止通行,南北向允许通行。 ◆南北方向绿灯灭,东西方向红灯灭,同时黄灯亮,倒计时3秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。

基于AT89C51单片机的超声波倒车雷达系统的设计毕业设计

基于单片机的超声波倒车雷达系统的设计 摘要 近年来,我国的汽车数量正逐年增加。在公路、街道、停车场、车库等拥挤、狭窄的地方倒车时,驾驶员既要前瞻,又要后顾,稍微不小心就会发生追尾事故。因此。增加汽车的后视能力,研制汽车后部探测障碍物的倒车雷达便成为近些年来的研究热点。为此,设计了以单片机为核心,利用超声波实现无接触测距的倒车雷达系统。工作时,超声波发射器不断发射出一系列连续脉冲,给测量逻辑电路提供一个短脉冲。最后由信号处理装置对接收的信号依据时间差进行处理,自动计算出车与障碍物之间的距离。目前,国内外一般的超声波测距仪,其理想的测量距离为1m~5 m,因此大都用于汽车倒车雷达等近距离测距中。本文根据声波在空气中传播反射原理,以超声波换能器为接口部件,介绍了基于AT89C51 单片机的超声波测距器。该设计由超声波发射模块、信号接收模块、单片机处理模块、数码显示以及声光告警显示模块等部分组成,文中详细介绍了测距器的硬件组成、检测原理、方法以及软件结构。超声波接收电路使用SONY公司的 CX20106A红外检测专用芯片,该芯片常用于38kHz的检波电路,文中通过对芯片内部电路的仔细分析,设计出能够成功对40kHz超声波检波的硬件电路,距器使用数码管显示目标物的距离。 关键词:超声波测距 AT89C51 倒车

DESIGN OF ULTRASONIC VEHICLE REVERING SYSTEM WITH ULTRASONIC BASEDON MCU ABSTRACT In recent years, China's number of cars is increasing every year. Highways, streets, parking, garage and other crowded places narrow reverse, the driver should not only forward but also looking back, a little rear-end careless accidents can occur.So after the increase of motor vehicles as the ability to detect obstacles on the development of the rear of the car reversing radar has become the research hotspot in recent years. the ultrasonic transmitter continuously emits a series of consecutive pulses to the measurement of logic circuits to provide a short pulse. Finally, signal processing devices based on the received signal for processing the time difference, automatic calculation of turnout and the distance between obstacles. Ultrasonic Ranging simple, low cost, easy production, but the transmission speed by a larger weather can not be precise range; In addition, the ultrasonic energy and the attenuation is directly proportional to the square of the distance, the farther the distance, the lower sensitivity and thus Ultrasonic Ranging way so that only apply to a shorter distance. At present, ultrasonic range finder at home and abroad in general, the ideal distance of the measurement 1~ 5 m, based on AT89C51 ultrasonic range-finder. Receiving circuit using the SONY company dedicated CX20106A infrared detecting chip, the chip used in the detector circuit 38KHz, the text of the chip through the careful analysis of the internal circuit design can successfully 40kHz ultrasonic detection of hardware circuitry and adjustable gain, The use of digital rangefinder display the distance between objects. KEY WORDS AT89C51 Silent Wave;Measure Distance Reversing

相关文档
最新文档