单片机课程设计说明书转速测量.docx
- 文档编号:7358378
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:25
- 大小:511.39KB
单片机课程设计说明书转速测量.docx
《单片机课程设计说明书转速测量.docx》由会员分享,可在线阅读,更多相关《单片机课程设计说明书转速测量.docx(25页珍藏版)》请在冰点文库上搜索。
单片机课程设计说明书转速测量
目录
摘要…………………………………………………………………………………………2
1引言………………………………………………………………………………………3
2方案设计…………………………………………………………………………………4
2.1系统设计方案论证…………………………………………………………………42.1.1第一方案……………………………………………………………………4
2.1.2第二方案………………………………………………………………………4
2.2第二方案的总体设计框图………………………………………………………4
3系统硬件部分……………………………………………………………………………5
3.1主控芯片……………………………………………………………………………5
3.2滤波电路及LM324芯片……………………………………………………………7
3.3显示设备…………………………………………………………………………………8
3.4控制执行机构…………………………………………………………………………9
4系统软件设计………………………………………………………………………………10
4.1设计思路……………………………………………………………………………10
4.2程序流程图…………………………………………………………………………10
5系统仿真与调试……………………………………………………………………………12
5.1Proteus仿真软件…………………………………………………………………12
5.2仿真图建立…………………………………………………………………………12
5.3仿真调试结果………………………………………………………………………14
结论…………………………………………………………………………………………18
致谢…………………………………………………………………………………………19
参考文献……………………………………………………………………………………20
附录A原理图………………………………………………………………………………21
附录B程序编译图…………………………………………………………………………22
附录C仿真图………………………………………………………………………………23
附录D程序代码……………………………………………………………………………25
摘要
现在汽车的安全性很重要,发动机的转速高低也在安全的范围之列。
本文介绍用AT89C52单片机设计制作发动机转速电控系统,仅需AT89C52最小系统,外接一个LCD1602、滤波电路和作为控制机构的电动机。
这样就能够对发动机转速进行检测并相应控制电机运作,并将转速显示在LCD1602上。
关键词:
转速单片机显示控制LCD1602
1引言
1.1问题的提出
目前汽车上转速表显示过于复杂,并且处于安全的考虑,要用单片机知识及常见的元器件搭建出能检测汽车发动机或者其它装置的转速,并相应的进行控制将其显示在监视员的视野之内,这样将减少因发动机转速而造成的人身危害。
1.2任务与分析
本文是应用MCS-51单片机原理和控制理论设计发动机转速检测并控制的硬件电路,利用C语言进行程序设计。
通过检测单片机的外部中断触发信号来启动内部的定时器定时两个信号之间的时间,所得时间在程序中进行加权滤波、转换,最后将转速在LCD上显示,以此提醒驾驶人员注意发动机的转速。
2
方案设计
2.1发动机转速电控系统设计方案论证
2.1.1第一方案
本设计程序采用定时计数器0定时一段时间,在此段时间内设置定时器计数1对外部进行计数,最后将所得的个数进行滤波、转换,最后在数码管上显示。
但是,这种方案采用数码管显示,较为复杂。
第二方案
与方案一相比,本方案将转速在LCD上显示并相应的控制其执行机构。
这种设计显示部分很简洁,系统稳定性较高。
2.2第二方案的总体设计框图
本设计采用89C52作为主控芯片,通过滤波电路处理输入信号,LCD作为输出设备显示转速。
其中P3.2作为信号的输入,P1口用作LCD的数据线,P2.5、P2.6、P2.7口用作LCD的控制信号。
设计框图如图一所示。
图2.1发动机转速电控系统设计框图
3系统硬件介绍
3.1主控芯片
设计中所采用主控芯片为AT89C52。
因其价格便宜,在市场上已经很成熟,各个方面都能够满足设计要求故选择它。
其采用标准双列直插式引脚DIP-40大规模集成电路封装。
它的引脚排列如下图3.1所示
图3.1AT89C52的引脚排列
引脚介绍:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3口管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INT0(外部中断0)
P3.3INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
图3.2系统最小系统
3.2滤波电路及LM324芯片
LM324芯片是差动输入的四运算放大器。
该运放放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。
共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。
每一组运算放大器可用图三所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
图3.3LM324管脚图
霍尔传感器输出信号为正弦信号,而单片机只能处理高低电平信号,为此必须将正弦信号转换成TTL电平信号。
设计中利用LM324的比较作用将输入信号与参考电压进行比较,到大于时LM324输出端为高电平,否则为低电平。
由于LM324为模拟器件,其驱动能力不足。
设计中在输入端串联了一片74LS04的六非门芯片,提高输入的驱动能力,以便于单片机处理。
图3.4信号输入滤波电路
3.3显示设备
图3.5转速显示设备LCD1602
3.3控制执行机构
通过汽车理论知识学习,我们知道汽车发动机不能超过某一转速。
如果长期在高转速下运作,对汽车发动机的寿命将大打折扣。
为此,防止发动机高速情况发生,系统特意采用LED作为显示灯,提醒驾驶员此时发动机高转速运行情况,使其做相应的处理。
同时电机运作,将控制汽车油路的电磁阀逐渐闭合,使供油减小,发动机转速降低,直至电磁阀完全闭合,停止供油。
图3.6控制机构及指示灯原理图
4系统软件设计
4.1设计思路
利用80C52单片机内部的定时计数器和外部中断功能,通过检测P3.2端口的信号启动定时计数器进行计时,当下一次触发信号到来时,定时器停止计时并保存当前值。
再启动定时器计时,如此循环。
保存值达到五次后,对其进行加权滤波处理。
最后将所得的值赋给数码管显示。
当转速值大于设定值时,控制电机运作,指示灯亮。
4.2程序流程图
图4.1主程序流程图
图4.2定时器0中断函数流程图
图4.3外部中断函数流程图
5系统仿真与调试
5.1Proteus软件介绍
系统采用Proteus软件来进行程序的仿真,这款软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
5.2仿真图建立
系统采用Proteus软件进行仿真,利用软件自带的仿真模块建立系统的仿真图。
图5.1为发动机转速电控系统的最小系统图。
图5.1主控芯片仿真
由于汽车上常用的转速传感器为霍尔式,集成的传感器其输出的信号为脉冲信号。
在仿真中,采用霍尔传感器的原始信号即正弦信号来作为输入信号,利用LM324芯片的比较功能对其进行滤波处理将其转换成对应的脉冲信号。
图5.2为滤波转换电路。
图5.2系统滤波转换电路
系统采用LCD1602作为显示器件,其具体的仿真连接图如下。
图5.3系统的显示器件
当系统检测完后得到转速大于我所设定的值时,控制执行机构运作同时指示灯将会点亮。
当转速正常(小于设定值)时,电机停止工作,指示灯灭。
在仿真中我选用直流电机作为执行机构。
图5.5执行机构仿真图
5.3仿真调试结果
图5.5,图5.6,图5.7分别表示在不同的输入频率下,对应的LCD显示的转速情况及电机运作情况。
图5.6仿真图
(一)
当调节信号发生器改变输入的频率值时,单片机通过对其进行计数并运算处理,在数码管上面对应的显示当前值。
调节信号发生器为图5.6所示即为18HZ时,LCD显示值为1080r/min,其值和18*60=1080相同。
仿真结果正确。
图5.7仿真图
(二)
当调节信号发生器为50HZ时,LCD显示为3006r/min,这和理论值50*60=3000有一定误差。
基本满足设计要求。
图5.8仿真图(三)
继续调节信号发生器的频率时直到超过设定值8000r/min时,电机将会转动,由于此为动态效果,我们可以从三极管基极为高电平可以判断出此情况,并且指示灯将点亮。
此时输入频率为140HZ,输出为8450r/min,其和理论140*60=8400r/min有一定误差,在设计要求范围内。
结论
致谢
参考文献
[1]徐峥颖编著.Protel99SEEDA技术及应用[M].北京:
机械工业出版社,2005.
[2]张靖武编著.单片机系统的protues设计与仿真[M].北京:
电子工业出版社,2007.
[3]李朝青编著.单片机原理及接口技术[M].北京:
北京航空航天大学出版社,2005.
[4]边春远编著.MCS-51单片机应用开发实用子程序[M].北京:
人民邮电出版社,2005.
[5]刘守义编著.单片机应用技术[M].西安:
西安电子科技大学出版社,2002.
[6]韩志军编著.单片机应用系统设计[M].北京:
机械工业出版社,2005.
[7]张毅刚,刘喜元编著.新编MCS-51单片机应用设计[M].哈尔滨:
哈尔滨工业大学出版社,2003.
[8]唐岚编著.汽车测试技术[M].北京:
机械工业出版社,2006.
附录A:
原理图
附录B:
程序编译
附录C:
仿真图
附录D:
程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitLED=P3^1;
sbitMO=P3^3;
bitFlag;//第一次中断标志
bitFlag_s;//转换标志
sbitE=P2^5;
sbitRW=P2^6;
sbitRS=P2^7;
ucharCOUNT;//溢出次数
unsignedlongT[5];
ucharW[5]={1,2,3,4,5};//权值
voidInit(void);
unsignedintSmooth(void);
voiddelay(uintN);
voidwrite_cmd(ucharcmd);
voidwrite_data(uchardate);
voidLCD_Init();
voidLCD_Disp(uintd);
voidWrite_Datas(ucharaddress,ucharWdata);
//-------------------------------
//主函数
//-------------------------------
voidmain(void)
{
ucharmsg1[14]="CurrentRevis";
ucharmsg2[14]="r/min";
uinti,dis_dat;
Flag=0;
Flag_s=0;
COUNT=0;
dis_dat=0;
Init();
LCD_Init();
EA=1;
write_cmd(0x80);
for(i=0;i<14;i++)
{
write_data(msg1[i]);
}
write_cmd(0x80+0x40);
for(i=0;i<14;i++)
{
write_data(msg2[i]);
}
while
(1)
{
if(Flag_s)
{
dis_dat=Smooth();
Flag_s=0;
}
if(dis_dat>8000)
{
LED=0;
MO=1;
}else
{
LED=1;
MO=0;
}
LCD_Disp(dis_dat);
}
}
voiddelay(uintN)//延时N毫秒子程序
{
uintx,y;
for(x=N;x>0;x--)
for(y=110;y>0;y--);
}
voidwrite_cmd(ucharcmd)//写指令子程序
{
RS=0;
RW=0;
P1=cmd;
delay
(1);
E=1;
delay
(1);
E=0;
}
voidwrite_data(uchardate)//写数据子程序
{
RS=1;
RW=0;
P1=date;
delay
(1);
E=1;
delay
(1);
E=0;
}
voidLCD_init()
{E=0;
write_cmd(0x38);//5*7点阵字符
write_cmd(0x0c);//整体显示,关光标,不闪烁
write_cmd(0x06);//AC自动增一,画面不动
write_cmd(0x01);//清屏
write_cmd(0x80);//设置DDRAM地址
}
voidWrite_Datas(ucharaddress,ucharWdata)
{
write_cmd(0x80+address);
write_data(0x30+Wdata);//写数据
}
voidLCD_Disp(uintd)
{
unsignedchardd[4],i;
dd[0]=d/1000;
dd[1]=d%1000/100;
dd[2]=d%1000%100/10;
dd[3]=d%10;
for(i=0;i<4;i++)
{
Write_Datas(0x42+i,dd[i]);
}
}
//-----------------------------
//名称:
定时器,中断初始化
//功能:
定时器0采用16位,中断下降沿触发
//-----------------------------
voidInit(void)
{
TMOD=0x01;
EX0=1;
ET0=1;
IT0=1;
}
//-----------------------------
//名称:
滤波函数
//功能:
加权滤波,权值1,2,3,4,5
//-----------------------------
unsignedintSmooth(void)
{
uchari;
uintdat;
floatsum;
floatavg;
sum=0;
for(i=0;i<5;i++)
{
sum+=T[i]*W[i];
}
sum=sum/15;
avg=60000000/sum;
dat=(int)avg;
if(dat>9999)dat=9999;
returndat;
}
//---------------------------
//外部中断0的中断函数
//---------------------------
voidINT(void)interrupt0
{
if(Flag)
{
staticunsignedcharm=0;
T[m]=TH0*256+TL0+65536*COUNT;
TH0=0;
TL0=0;
COUNT=0;
m++;
if(m==5)
{
m=0;
Flag_s=1;
}
}else
{
Flag=1;
TH0=0;
TL0=0;
TR0=1;
}
}
//-----------------------------
//定时器0的中断函数
//-----------------------------
voidTime(void)interrupt1
{
COUNT++;
TH0=0;
TL0=0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 说明书 转速 测量