《转速表课程设计.doc》由会员分享,可在线阅读,更多相关《转速表课程设计.doc(20页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、单 片 机 课 程 设 计题目: 转 速 表 系 别: 电气与电子工程系专 业: 电子信息工程专业姓 名: 周 巍 巍学 号: 指导教师: 李小敏 田巍 宁蕴绯河南城建学院2011年12月28日成绩评定一、指导教师评语:二、成绩评定成绩等级: 指导教师签字: 年 月 日一、设计目的 利用单片机控制实现对转动物体速度的测量二、设计要求1、可采用接触或非接触式,实现对转动物体(如电动机轴)转速的测量, 2、要求显示精度为三位半三、设计的总体结构1、电路的总体原理框图1显示 STC90c51单片机复位电路霍尔传感器电路电压比较器 图一 本转速测量系统由霍尔传感器,和LCD液晶显示等组成。传感器部分采
2、用UGN3144霍尔传感器,负责将被测量量的转速转化为脉冲信号,因为采用的是集成霍尔开关元件,输出的是数字信号,可以直接把信号送入到单片机进行处理。单片机采用的是STC89C51,显示 采用的是LCD液晶显示。3、元器件名称及简介 霍尔元件的应用使用霍尔器件检测磁场的方法极为简单,将霍尔器件做成各种式的探头,放在被测磁场中,因霍尔器件只对垂直于霍尔片表面的磁感应强度敏感,因而必须令磁力线和器件表面垂直,通电后即可由输出电压得到被测磁场的磁感应强度。若不垂直,则应求出其垂直分量来计算被测磁场的磁感应强度值。而且,因霍尔元件的尺寸极小,可以进行多点检测,由单片机进行数据处理,可以得到场的分布状态,
3、并可对狭缝,小孔中的磁场进行检测用磁场作为被传感物体的运动和位置信息载体时,一般采用永久磁钢来产生工作磁场。UGN3144霍尔开关元件的引脚功能和封装形式UGN3144 采用SOT89或者TO-243封装。其中,引脚端1为电源正端,引脚端2为接地,引脚端3为输出(OC形式)。图二UGN3144的封装结构1602字符型LCD简介 字符型液晶显示模块是一种专门用于显示字母、数字、符号,点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面介绍其用法。一般1602字符型液晶显示器实物下如图 图三1602字符型液晶显示器实物图1602LCD的基本参数及引脚功能 1602LCD分为
4、带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:图四1602LCD尺寸图1602LCD主要技术参数: 显示容量:162个字符、芯片工作电压:4.55.5V、工作电流:2.0mA(5.0V)、 模块最佳工作电压:5.0V。引脚功能说明 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据
5、7D0数据15BLA背光源正极8D1数据16BLK背光源负极 : 表一第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低
6、电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。四、各部分电路设计1、复位电路图五(复位电路)复位电路工作原理如上图所示,VCC上电时,C3充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C3充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下RESTE,C3放电。 RESTE松手,C3又充电,在10K电阻上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。2、时钟电路图六时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ 。
7、MCS-51内部都有一个反相放大器, XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。电路中的电容C1和C2典型值通常选择为30pf左右。对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器的频率的高低,振荡器的稳定性和起振的快速性。晶振的振荡频率的范围通常是在1.2MHZ-12MHZ之间。晶振的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。但反过来运行速度快对存储器的速度要求就高,对印制电路板的工艺要求也高,即要求线简的寄生电容要小;晶振和电容应 尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地
8、保证振荡器稳定,可靠地工作。综合考虑,本设计采用30pf的电容,因为晶振的频率无法精确达到12MHZ,所以一般情况采用11.0592MHZ,3、LCD液晶显示电路图七 各脚功能如上第5、6页介绍五、整体电路图 见附图。六、设计总结1、设计过程中遇到的问题及解决方法在正设计中遇到的问题主要是焊接电路板时出现的问题。刚开始的设计思想是用LED八段数码管显示速度,但在实际焊接电路时需要焊接的管脚太多了,经过思考后改为LED液晶显示,不但减少了焊接的任务,而且程序方面也简单了不少。其次在焊接霍尔传感器后电压比较器忘记接正极导致不显示,经 过仔细检查后发现原来是忘记接正极了。2、设计体会整个毕业设计过程
9、是对自己大学三年所学知识归纳总结和应用,也就是把理论知识用到实践之中去。让理论和实践相结合,以此产生实际的成果。而这正是我们学习理论知识的目的之所在。除此之外,我们要在拥有扎实的专业知识的前提条件下,在整个设计过程中要有信心和耐心,对自己有信心,相信自己能够很好的完成本次设计任务。 在不断发现问题进而解决问题,这是一个再学习的过程,其本身就是对自己的 一次锻炼,培养了自己独立思考,动手解决问题的能力。从而从各个方面得到提高与完善了自己,使自己的各个方面提高到一个新的台阶,同时为以后的工作打下基础。在本次毕业设计中,特别要感谢李老师以及其他老师和同学给我们的热心帮助和鼓励,才使得我们的毕业设计能
10、够很好的完成。3、对设计的建议这次设计没有完成发挥部分即实现识别正反转的功能,而且在转速盘的设计也可以通过单片机控制直流电机转速和正反转。七、程序 #include#include#define uchar unsigned char /定义无符号#define uint unsigned int /无符号整形sbit lcdrs=P24; /数据命令sbit lcdrw=P25; /读写控制端sbit lcden=P26; /使能端口 uint num,num4,int_tp,timej,flg_cal ,distance,t ;uchar temp216; /定义一个16位的数组float
11、 speed,v;uchar min,sec,num1; /*延时z ms */void delay(uchar z)uchar x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com ) lcdrs=0;delay(5);P0=com ; lcden=1; delay(5); lcden=0;void write_data(uchar dataa )lcdrs=1;delay(5); lcden=1;P0=dataa;delay(5);lcden=0;/*- 写入字符串函数-*/ void write_string(unsign
12、ed char x,unsigned char y,unsigned char *s) if (y = 0) write_com(0x80 + x); /表示第一行 else write_com(0xC0 + x); /表示第二行 while (*s) write_data( *s); s +; /*- 写入字符函数-*/void write_char(unsigned char x,unsigned char y,unsigned char Data) if (y = 0) write_com(0x80 + x); else write_com(0xC0 + x); write_data(
13、Data); void init() /初始化 PX0 = 1; IT0 = 1; EX0 = 1; /外中断0 跳变触 使能off sec=0;min=0;num=0;num1=0;speed=0; TMOD=0x01; /0x15时速度指示 /TH0 = 0xff; /TL0 = 0x5a; /500us (65536-166) /256=255 %256=90TH0 = (65535-50000)/256; /50msTL0 = (65535-50000)%256; ET0=1; /定时器 TR0=1;EA=1;lcden=0;lcdrw=0;write_com(0x38); /设置16
14、x2显示,5x7点阵,8位数据接口write_com(0x01); / 开显示。不显示光标write_com(0x14); / 写一个字符后地址指针加一write_com(0x0c);/ 显示清零 void main() init();while(1) if(flg_cal=1) flg_cal= 0;/if(distance65530)distance=distance+num1;speed=num1*30v=distance*30/t;num1=0;sprintf(temp2, V= %5.1f r/min, speed);/ write_string(0,0,temp2);/显示第一行s
15、printf(temp2, v= %5.1f r/min, v );/ write_string(0,1,temp2);/显示第二行 void t0_time()interrupt 1TR0 = 0; ET0 = 0; /TH0 = 0xff; /TL0 = 0x5a; /计时初值 TH0 = (65535-50000)/256; /50msTL0 = (65535-50000)%256; timej+; /超过3.5S无中断相应,即判断速度为0,则最低速度2.04km/h if(timej = 20) timej =0; flg_cal=1; t+; if(t=65535)t=0; ET0 = 1; TR0 = 1; /外部中断函数 void Int0_SEV(void) interrupt 0 using 1 EX0 = 0; num1+; EX0 = 1; 附:整体电路图
限制150内