基于51单片机的转速表系统设计
基于单片机的转速表设计讲解

中北大学信息商务学院2015届毕业设计说明书基于单片机的转速表设计与实现摘要单片机又称单片微控制器(MCU),它把一个计算机系统集成到一个芯片上。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
本文便是运用AT89C51单片机控制的转速表设计。
电机在运行过程中,需要对其进行监控,转速是一个必不可少的参数。
数字式转速表就是对电机转速进行测量,并可以和PC机进行通信,显示电机的转速,并观察电机运行的基本情况。
本设计主要是运用了AT89C51作为控制核心,由霍尔传感器,LED数码显示管,施密特触发器等构成。
充分发挥单片机的性能。
本设计优点是电路较简单、功能完善、测量速度快、精度高、控制系统可靠,性价比较高等特点。
关键字:AT89C51单片机转速测量霍尔传感器AbstractSingle-chip, also known as single-chip microcontroller (MCU), it is a computer system integrated into a chip. It’s small size, light weight, cheap, for the learning, application and development of facilities provided.This article, we use the AT89C51 microcontroller to control the digital tachometer. During operation, the motor needs to be monitoring, speed is an essential parameter. Digital tachometer to measure motor speed, and can communicate with a PC, display the motor speed, and observe the motor running.This design with AT89C51 as control core, by the Hall sensor, LED digital display tube, the composition of the Schmitt trigger,and so on. Give full play to the performance of the microcontroller.The advantage of a simple hardware and software capabilities improve, measuring speed, high precision and control system reliable, cost-effective and so on.Keywords:AT89C51 Tachometer Digital;speeds measure; Hall element目录1 引言 (1)1.1本课题研究意义 (1)1.2国内外研究现状 (1)1.3本课题研究的目的 (2)2 转速表原理 (3)2.1 转速表基本原理 (3)2.2 转速计算及误差分析 (4)2.3 转速测量 (6)3 硬件电路 (7)3.1 单片机概述 (7)3.2 复位电路 (11)3.3 显示电路 (12)3.4 报警电路 (18)4 软件设计 (20)4.1 主程序框图 (20)4.2 按键程序框图 (21)4.3 显示程序框图 (23)4.4 报警子程序框图 (24)结论 (25)参考文献 (26)致谢 (27)附录一:系统总图 (28)附录二仿真图 (29)附录三:PCB图 (30)附录四:主程序 (31)1 引言1.1本课题研究意义随着现代科学技术特别是微型计算机的高速发展,计量技术相应地也得到迅速发展,单片微机技术也得到了飞速发展。
基于51单片机的直流电机转速测控系统设计

基于51单片机的直流电机转速测控系统设计0 引言目前使用的电机模拟控制电路都比较复杂,测量范围与精度不能兼顾,且采样时间较长,难以测得瞬时转速。
本文介绍的电机控制系统利用PWM 控制原理,同时结合霍尔传感器来采集电机转速,并经单片机检测后在显示器上显示出转速值,而单片机则根据传感器输出的脉冲信号来分析转速的过程量,并超限自动报警。
本系统同时设置有按键操作仪表,可用于调节电机的转速。
1 系统方案的制定直流电机控制系统主要是以C8051 单片机为核心组成的控制系统,本系统中的电机转速与电机两端的电压成比例,而电机两端的电压与控制波形的占空比成正比,因此,由MCU 内部的可编程计数器阵列输出PWM 波,以调整电机两端电压与控制波形的占空比,从而实现调速。
本系统通过霍尔传感器来实现对直流电机转速的实时监测。
系统的设计任务包括硬件和软件两大部分,其中硬件设计包括方案选定、电路原理图设计、PCB 绘制、线路调试:软件设计包括内存空间的分配,直流电机控制应用程序模块的设计,程序调试、软件仿真等。
2 硬件设计C8051 是完全集成的混合信号系统级MCU 芯片,具有64 个数字I/O 引脚,片内含有VDD 监视器、看门狗定时器和时钟振荡器,是真正能独立工作的片上系统,并能快捷准确地完成信号采集和调节。
同时也方便软件编程、干扰防制、以及前向通道的结构优化。
本单片机控制系统与外部连接可实时接收到外部信号,以进行对外部设备的控制,这种闭环系统可以较准确的实现设计要求,从而制定出一个合理的方案,图1 所示是电机测控系统框图。
本系统先由单片机发出控制信号给驱动电机,同时通过传感器检测电机的转速信号并传送给单片机,单片机再通过软件将测速信号与给定转速进行比较,从而决定电机转速,同时将当前电机转速值送LED 显示。
此外,也可以通过。
基于51单片机的直流电机转速测控系统设计

基于51单片机的直流电机转速测控系统设计—内容提要:随着现代科技的不断发展,现在的电子产品越来越多,在早期,电子产品一般是纯硬件电路,没有使用单片机,电路复杂难以设计,也难以检查问题,随着微控制技术的不断完善和发展,集成芯片越来越多,单片机便出来了,换言之,单片机的应用是对传统控制技术的一场革命。
具有划时代的意义。
在电机控制方面也是靠人的感觉,没有侧速和侧距的概念,以前人机界面一般采用LED数码二极管,随着LCD液晶显示器的出现,人机界面更加人性化、智能化,它能显示数字、汉字和图象,控制LCD液晶显示器也很方便,电路设计也比较简单;加上单片机,组合实现的功能也比较强大,还可方便以后电路的升级与扩展。
本文结合LCD显示、电机控速、红外侧距、键盘操作等多种技术,实现了基于51单片机的电机转速测量控制系统的设计。
本文从第二章方案论证与选择开始,就阐述了该系统的基本工作原理、所采用的相关技术等,进而交代了电机转速测量控制的实现方法。
最后重点阐述了LCD液晶显示和案键部分。
该设计经过测试,实现了在LCD上的菜单多级滚动显示,达到预期的设计效果。
基于该系统在LCD上实现菜单控制系统在电路图设计比较方便,主要分为四部分,电源部分、安键部分、LCD显示部分和控制部分;较复杂的是在控制软件部分,软件控制部分分为三部分,一部分是安键判断部分、菜单控制部分和显示部分。
关键词:单片机电机液晶显示器按键红外元件目录一、引言 4二、方案论证 4(一)基于嵌入式单片机的设计方案 4(二)基于EDA为核心的设计方案 5(三)方案选择 5三.结构设计 5(一)CPU控制模块 6(二)键盘模块7(三)LCD液晶显示模块7(四)电源模块8(五)红外侧距模块9(六)PWM电机控制模块9四、各硬件模块设计9(一)电源设计9(二)键盘设计10(三)LCD液晶显示设计11(四)CPU硬件设计13(五)时钟模块15(六)红外测速模块15(七)电机模块16五、软件设计17(一)初始化和主程序模块17(二)按键模块19(三)显示部分21(四)电机程序设计说明35六、测试报告35七、总结38八、附录38参考文献591 引言直流电机监控系统是机电产品中的重要环节,其控制性能反映了机电设备的控制质量。
(完整版)基于51单片机和霍尔开关传感器的转速测量仪毕业论文

基于51单片机和霍尔传感器的转速测量仪摘要系统由传感器、信号处理、系统软件等部分组成。
传感器采用霍尔开关传感器(JK8002C),负责将转速转化为脉冲信号;信号处理电路(反相器74LS14)包含待测信号整形反相等部分,波形变换和波形整形电路实现把正负交变的信号波形变换成可被单片机接受的TTLCMOS兼容信号。
处理器采用51单片机,显示器采用单片机开发板自带的8位LED数码管动态显示。
课题背景在工农业生产和工程实践中,经常会遇到各种需要测量转速的场合,测量转速的方法分为模拟式和数字式两种。
模拟式采用测速发电机为检测元件,得到的信号是模拟量,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难。
数字式通常采用光电编码器、圆光栅、霍尔元件等为检测元件,得到的信号是脉冲信号。
单片机技术的日新月异,特别是高性能价格比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法,使得许多控制功能及算法可以采用软件技术来完成。
采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。
本课题,是要利用霍尔传感器来测量转速。
由磁场的变化来使霍尔传感器产生脉冲,由单片机计数,经过数据计算转化成所测转速,再由数码管显示出来。
1.硬件部分概述1.1系统组成框图系统框图原理如图1-1所示,系统由传感器、信号处理、数码管显示、蜂鸣器超速报警和系统软件等部分组成。
传感器采用霍尔开关传感器(JK8002C),负责将转速转化为脉冲信号。
信号处理电路反相器74LS14)包含待测信号波形变换、波形整形等部分,波形变换和波形整形电路实现把正负交变的信号波形变换成可被单片机接受的TTLCMOS兼容信号。
处理器采用51单片机,显示器采用8位LED数码管动态显示。
1.2霍尔传感器测转速原理及特性霍尔传感器是对磁敏感的传感元件,由磁钢、霍耳元件等组成。
测量系统的转速传感器选用SiKO 的jk8002c的霍尔传感器,其响应频率为100KHz,额定电压为5-30(V)、检测距离为10(mm)。
基于51单片机的数字测速系统的设计方案

基于51单片机的数字测速系统的设计方案 0 引言 本方案所设计的基于霍尔元件的脉冲发生器要求成本低,构造简单,性能好。
在电气控制系统中存在着较为恶劣的电磁环境,因此要求产品本身要具有较强的抗干扰能力。
系统主要由AT89S52 单片机处理系统、电机、传感器检测单元、信号处理单元和显示系统等几个部分组成。
1 总体方案设计 对转速的测量实际上是对转子旋转引起的周期脉冲信号的频率进行测量。
霍尔元件测速法是利用霍尔开关元件测转速的。
霍尔开关元件内含稳压电路、霍尔电势发生器、放大器、施密特触发器和输出电路。
输出电平与TTL 电平兼容,在电机转轴上装一个圆盘,圆盘上装若干对小磁钢,小磁钢越多,分辨率越高,霍尔开关固定在小磁钢附近,当电机转动时,每当一个小磁钢转过霍尔开关,霍尔开关便输出一个脉冲,计算出单位时间的脉冲数,即可确定旋转体的转速。
其系统框图如图1 所示。
2 系统硬件电路设计 该系统包括霍尔传感器、隔离整形电路、主CPU、显示电路、报警电路及电源等部分。
其测量过程是测量转速的霍尔传感器和电机机轴同轴连接,机轴每转一周,产生一定量的脉冲个数,由霍尔器件电路输出,经隔离整形后送入单片机进行处理,单片机收到信号将该值数据处理后,在LCD 液晶显示器上显示出来。
一旦超速,CPU 通过蜂鸣器进行报警。
2.1 传感器的选择 测量电机转速的第一步就是要将电机的转速表示为单片机可以识别的脉冲信号,从而进行脉冲计数。
利用霍尔器件检测脉冲信号因其具有结构牢固、体积小、重量轻、寿命长、安装方便等优点。
当电机转动时,带动传感器运动,产生对应频率的脉冲信号,经过信号处理后输出到计数器或其他的脉冲计数装置,进行转速的测量。
2.2 微处理器的选择 为了减少体积与功耗,采用较常使用且较经济的AT89S52单片机:AT89S52 是一种低功耗、高性能CMOS 的8 位微控制器,具有8K 在系统可编程存储器。
其最小系统包括单片机AT89S52接口电路、晶振电路、复位电路。
基于51单片机测电机转速的设计

基于51单片机测电机转速的设计[摘要]:本课题设计了一种基于单片机的电子测速仪,测速仪以89C51为数据处理主控芯片。
测速仪的主要组成部分:霍尔传感器、以89C51芯片为核心的密码锁的数据处理与控制电路、输出显示电路。
另外系统还有LED报警灯,单片机复位电路等。
测速电路的关键问题是物理信号到电信号的转换,以及脉冲的产生、报警与复位。
同时该测速仪具有低能耗、体积小、使用方便,非接触等优点,具有很强的使用价值[关键词]:单片机;测速仪51 singlechip design of measurement of motor speed based onAbstract:This project is to design a kind of electronic measurement instrument based on single chip microcomputer, velocimetry using 89C51 as main control chip data processing.Main components: Holzer velocimetry sensors, taking the 89C51 chip as the corecryptographic data processing and control circuit, the lock output display circuit.Another system and LED warning lamp, microprocessor reset circuit etc.. The keyproblem of conversion speed measuring circuit is a physical signal to electrical signal,and the pulse generation, alarm and reset. At the same time, the instrument has theadvantages of low energy consumption, small volume, convenient use, non - contactand other advantages, has the very strong use valueKeywords:MCU; velocimetry目录第一章绪论 (3)1.1测速仪的背景与分类 (3)1.2测速仪的运用于发展 (3)1.3本设计的意义与要求.................................................. .1 第二章单片机测速仪的主要元件介绍.. (2)2.1单片机89c51的介绍 (2)2.2 霍尔元件的介绍 (5)2.3比较器LM393的介绍............................................................................. (6)第三章基于单片机测速的工作概述以及原理分析 (9)3.1基于单片机测速的工作概述 (9)3.2系统硬件总电路图............................................................................. .. (9)3.3检测电路模块............................................................................. (9)3.4复位电路模块 (10)3.5晶振电路模块 (11)3.6电源电路模块 (11)3.7显示电路模块............................................................................. (12)3.8报警电路模块............................................................................. (12)第四章单片机测速系统组成 (13)4.1转速测量系统原理框图 (13)4.2系统软件框图 (13)第五章系统软件设计 (14)5.1系统流程序 (14)5.1.1系统主程序流程图............................................................................. (14)5.1.2测速程序流............................................................................. . (15)5.1.3 显示流程图............................................................................. (16)5.2程序............................................................................. . (21)第六章单片机测速电路实物运行 (22)6.1实物整体图......................................................... .226.2 测速显示 (23)6.2.1转速显示............................................................................. (23)6.2.2低速报警显............................................................................. . (24)6.2.3高速报警显示............................................................................. (25)小结............................................................................. ............................................................................... . (26)致谢 (27)附录一单片机测速PCB原理图............................................................................. . (28)附录二单片机测速元器件清单............................................................................. .. (29)参考文献............................................................................. ............................................................................... . (30)第一章绪论1.1测速仪的分类目前测量电机转速的方法很多,按照不同的理论方法,先后产生过模拟测速法(如离心式转速表、用电机转矩或者电机电枢电动势计算所得)、同步测速法(如机械式或闪光式频闪测速仪)以及计数测速法。
基于单片机实现的数字转速表的设计

目录一、前言二、系统工作原理三、总体设计1、设计方案2、硬件任务及结构框图3、软件任务及模块图4、各模块说明5、内存空间分配四、结束语五、程序清单六、附录系统原理图七、参考资料八、课程设计评分表前言单片机课程是已们实践性很强的专业技术课程,初学者只有通过大量的编程、实验、调试、设计制作等一系列的实践环节的训练,才能真正理解单片机软件及硬件设计和调试技巧,才能灵活的运用单片机的各条指令系统和各种开发调试工具,设计出高效、可靠、低功耗、体积更小的单片机应用系统,充分体现单片机的嵌入式应用特色。
要进行单片机的开发、实验及课程设计等,必须有一套软硬件开发工具,这样可以省下许多宝贵的时间及精力,提高工作效率。
单片机是计算机家族的一个重要分支,它具有体积小、价格低、面向控制的特点,适用于各种工业控制、仪器仪表装置,在人类生产和生活的各个领域都有极为广泛的应用。
近年来,微型计算机的发展速度足以让世人惊叹,以计算机为主导的信息技术作为一种崭新的生产力,正在向社会的各个领域渗透,也使机电一体化的进程大大加快。
机电一体化是当今制造技术和产品发展的主要倾向,也是我国机电工业发展的必由之路。
可以认为,它是用系统工程学的观点和方法,研究在机电系统和产品中如何将机械、计算机、信息处理和自动控制技术综合应用,以求机电系统和产品达到最佳的组合。
机电一体化产品所需要的是嵌入式微机,而单片机具有体积小、集成度高、功能强等特点,适于嵌入式应用。
智能仪器、家用电器、数控机床、工业控制等机电设备和产品中竟相使用单片机。
就目前而言,单片机的发展势头依然不减,各种型号和功能更强的单片机和超级接口芯片不断出现,进一步向高层次发展的重要标志就是构成多机系统和分布式网络。
世界上单片机芯片的产量以每年27%的速度递增,到本世纪初已达30亿片,而我国的年需求量也超过了亿片的数量,这表明单片机有着广阔的应用前景。
本课程主要针对目前我国早期应用比较广泛的“MCS-51”单片机进行系统的讲解和分析。
基于51单片机的光电传感器转速计设计

#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char/*----1602 Part------*/sbit RS = P2^4; //定义端口sbit RW = P2^5;sbit EN = P2^6;#define RS_CLR RS=0#define RS_SET RS=1#define RW_CLR RW=0#define RW_SET RW=1#define EN_CLR EN=0#define EN_SET EN=1#define DataPort P0/*---------ISR Part-----------*/uint timer=0,timer1=0,PWM_timer=0;/*---------KEY Part-----------*/sbit KEY1=P1^0;sbit KEY2=P1^1;sbit KEY3=P1^2;char key1_flag=0,key2_flag=0,key3_flag=0;/*---------MOTOR Part-----------*/sbit PWM=P1^4;int pwm_num=5;char exchange_flag=0; //切换显示 minute or second/*---------REV Part-----------*/sbit REV_flag=P1^5;uint grating=0; //光栅数uchar ge_num=0,shi_num=0,bai_num=0,qian_num=0,tens_num=0,percentile_num=0;/*---------MAIN Part-----------*//*------------------------------------------------ T=tx2+5 uS------------------------------------------------*/ void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/ void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------判忙函数------------------------------------------------*/ bit LCD_Check_Busy(void){DataPort= 0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return (bit)(DataPort & 0x80);}/*------------------------------------------------写入命令函数------------------------------------------------*/ void LCD_Write_Com(unsigned char com){// while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_CLR;RW_CLR;EN_SET;DataPort= com;_nop_();EN_CLR;}/*------------------------------------------------写入数据函数------------------------------------------------*/void LCD_Write_Data(unsigned char Data){//while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_SET;RW_CLR;EN_SET;DataPort= Data;_nop_();EN_CLR;}/*------------------------------------------------清屏函数------------------------------------------------*/void LCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*------------------------------------------------写入字符串函数------------------------------------------------*/void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}while (*s){LCD_Write_Data( *s);s ++;}}/*------------------------------------------------写入字符函数------------------------------------------------*/void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) {if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}LCD_Write_Data( Data);}/*------------------------------------------------初始化函数------------------------------------------------*/void LCD_Init(void){LCD_Write_Com(0x38); /*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08); /*显示关闭*/LCD_Write_Com(0x01); /*显示清屏*/LCD_Write_Com(0x06); /*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C); /*显示开及光标设置*/}/*--------------KEY------------------*/void key(){if(!KEY1){DelayMs(10);if(!KEY1){pwm_num++;if(pwm_num>=19) pwm_num=19;while(!KEY1);}}if(!KEY2){DelayMs(10);if(!KEY2){pwm_num--;if(pwm_num<=1) pwm_num=1;while(!KEY2);}}if(!KEY3){DelayMs(5);if(!KEY3){exchange_flag=!exchange_flag;while(!KEY3);}}}/*-------------REV--------------*/unsigned char Trg;unsigned char Cont;void REVRead(){unsigned char ReadData = REV_flag^0xff; // 1Trg = ReadData & (ReadData ^ Cont); // 2Cont = ReadData; // 3 if(Trg==0x01){grating++; //记录光栅数目}}/*--------------ISR------------------*/ void ISR_init(){TMOD=0x01;TH0=(65536-1000)/256; //1msTL0=(65536-1000)%256;EA=1;ET0=1;TR0=1;}void T0_ISR()interrupt 1{TH0=(65536-1000)/256; //1msTL0=(65536-1000)%256;PWM_timer++;timer++;REVRead();if(PWM_timer==0){PWM = 1;}if(PWM_timer==pwm_num){PWM = 0;}if(PWM_timer==20){PWM = 1;PWM_timer =0;}if(timer==1) //1ms 扫描一次{timer1++;timer=0;}if(timer1==1000) //1000ms 计算一次光栅数量{if(exchange_flag==0){ge_num=grating/20%10; //20 plus per revshi_num=grating/20%1000/100 ;bai_num=grating/20%1000/100;qian_num=grating/20%10000/1000;tens_num=grating%20/10; //十分位percentile_num=grating%20%10; //百分位 }if(exchange_flag==1){grating=grating*60; //REV per secondge_num=grating/20%10; //20 plus per revshi_num=grating/20%1000/100 ;bai_num=grating/20%1000/100;qian_num=grating/20%10000/1000;tens_num=grating%20/10; //十分位percentile_num=grating%20%10; //百分位 }grating=0;timer1=0;}}/*------------------------------------------------主函数------------------------------------------------*/void main(void){ISR_init();LCD_Init();PWM = 0;LCD_Write_String(0,0,"THE REV IS:");while (1){//LCD_Clear();key();if(exchange_flag==0){LCD_Write_Char(1,1,qian_num+0x30);LCD_Write_Char(2,1,bai_num+0x30);LCD_Write_Char(3,1,shi_num+0x30);LCD_Write_Char(4,1,ge_num+0x30);LCD_Write_Char(5,1,'.');LCD_Write_Char(6,1,tens_num+0x30);LCD_Write_Char(7,1,percentile_num+0x30);LCD_Write_String(9,1,"rad/sec");}if(exchange_flag==1){LCD_Write_Char(1,1,qian_num+0x30);LCD_Write_Char(2,1,bai_num+0x30);LCD_Write_Char(3,1,shi_num+0x30);LCD_Write_Char(4,1,ge_num+0x30);LCD_Write_Char(5,1,'.');LCD_Write_Char(6,1,tens_num+0x30);LCD_Write_Char(7,1,percentile_num+0x30);LCD_Write_String(9,1,"rad/min");}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1.前言 (1)2 智能转速表的系统设计 (1)2.1 系统硬件设计 (1)2.1.1方案选择 (1)2.1.2仪器各部分组成 (2)2.2 系统软件设计 (3)3 设计原理 (5)3.1转速计算及误差分析 (5)3.2转速测量 (6)3.2.1门控方式计数 (6)3.2.2中断方式计数 (7)3.3串行显示接口 (7)4 软件程序的设计 (8)4.1 1s定时 (8)4.2 T1计数程序 (8)4.3 频率数据采集 (9)4.4 进制转换 (10)4.5 数码显示 (13)5 软件设计总体程序 (15)6 总程序调试 (21)7 心得体会 (21)参考文献 (22)1.前言单片微型计算机简称单片机,又称为微控制器(MCU)是20世纪70年代中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。
单片机在我国大规模的应用已有十余年历史,单片机技术的研究和推广正方兴未艾。
MSC-51系列单片机是国内目前应用最广泛的一种8位单片机之一。
经过20多年的推广与发展,51系列单片机形成了一个规模庞大、功能齐全、资源丰富的产品群。
随着嵌入式系统、片上系统等概念的提出和普遍应用,MCS-51系列单片机的发展又进入了一个新的阶段。
我们使用的89C51单片机是目前各大高校及市场上应用最广泛的单片机型.其内部包含: 一个8位的CPU;4K的程序存储空间ROM;128字节的RAM数据存储器;两个16位的定时/计数器;可寻址64KB外部数据存储器和64KB外部程序存储器空间的控制电路;32条可编程的I/O线;具有两个优先级嵌套的中断结构的5个中断源。
本次课程设计便是设计一个基于89C51单片机转速表系统。
要求进行电路硬件设计和系统软件编程,硬件电路要求动手制作并能够完成系统硬件和软件调试。
2 智能转速表的系统设计2.1 系统硬件设计2.1.1方案选择由于单片机所具有的特性,它特别适用于各种智能仪器仪表,家电等领域中,可以减少硬件以减轻仪表的重量,便于携带和使用,同时也可能低存本,提高性能价格之比。
该转速表选用MCS-51系列单片机的8031芯片,外部扩展4KB EPROM和8155作为显示器的接口。
该系统的整体结构框图见下图2.1所示:图2.1智能转速表总结构流程图2.1.2仪器各部分组成(1)传感器传感器为红外光电式传感器。
其中一个发光二极管发出红外波长的光,可不受室内自然光的影响,此光照到旋转物体上反射回后,被光敏三极管接收。
光敏三极管接受到此信号后,经放大,整形转换为矩形脉冲信号送入MCS-51单片机的外部中断输入端INTO和INT1上。
(2)键盘键盘由功能键,数字键,存入键,取出键,单双键路选择键,启动停止键等组成。
为了减少键的数目,以减少故障率,采用了一键多用的复用键方案,但软件相对复杂一些。
键盘于8031的P1口直接相连,以加快对键盘的扫描速度。
也可以用8155等芯片作为键盘的输入接口,但扫描速度比前者慢一些。
(3)显示器8个LED数码管作显示器,它通过可编程并行I/O接口芯片8155与8031相连。
8155的A口通过反相驱动(75452或7406)作为显示器位选口;B口通过同相驱动器(7407)作显示器段选口。
在进行不同测量时,除在LED显示器上以英文字母提示外,在运行过程中还以不同的发光二极管指示测量的内容。
发光二极管由8155的C口驱动。
(4)程序存储器系统的监控程序和运算处理程序存放在外接4K字节的EPROM2732中。
(5)数据存储器数据存储器由8031片内的低128字节和8155内部256字节的RAM组成.8031的内部RAM主要用于堆栈,工作寄存器,显示缓冲器,各测量参数的计算缓冲器和标致位等。
而8155内部的RAM除上部4个单元外,全部用于存放转速和线速度值,其存储空间划分如图2-2所示,共分为三组,每组84个单元,可存入42个16位二进制数据,即42个4位16进制数据。
如下图2.1为外部RAM存储器空间划分图。
图2.1 外部RAM存储器空间划分2.2 系统软件设计系统监控程序的主程序流程框图见图2.2系统软件采用模块式结构,由主程序及多个功能模块子程序组成,可使程序清楚,易编易读,便于调试和修改。
图2.2监控主程序流程图主程序的任务是对8031单片机初始化,如设置堆栈,预置各定时器的控制字,初始化显示缓冲区,8155的初始化,设置标致位,清内存等;然后显示开机初始化状态,扫描键盘,根据按下键的功能各自的功能操作。
3 设计原理3.1转速计算及误差分析根据转速,周期,频率之间的关系可知:60n T = (3-1) 1f T= (3-2)C T NT = (3-3)式中, n —被测转速,r/min; T -转速信号周期,s; f -转速信号频率,Hz;C T -计算计数脉冲的周期,又称时基,4C T s μ=. 将式(3-3)代入式(6-1),可得:7601.510/Cn N NT ==⨯ (3-4) 用十六进制数表示,为: (410)/()H H n E E C N =式中N 已存入75H,74H,73H 单元。
利用除法子程序,即可求出转速。
下面计算系统得相对误差。
分别对式(3-1)和(3-3)求微分260Tn nf T T∆∆==∆ (3-5) C T NT ∆=∆ (3-6)将式(3-6代入(3-5),可得:C nf NT n∆=∆ (3-7) 式中,N ∆为量化误差,1N ∆=±个计数脉冲,又已知时基4C T s μ=,故4nf s nμ∆=±⨯ (3-8) 由式(3-8)可知,相对误差与频率成正比,即相对误差随转速得升高而升高。
因此,为了提高测量精度,高转速时需要连续测量数个周期。
本系统中为4个周期,即测得的N 为4个周期内的总和,所以4CNT T = (3-9) 6606010/n N T==⨯ (3-10)用十六进制数表示,为(3938700)/()H H n N =,对式(3-9)进行微分得:4CNT T ∆∆=.因此,可求出高速测量时的相对误差为4C f NT nf T n ∆∆=∆=。
同样,代入4C T s μ=,1N ∆=±个计数脉冲,则:144n f N f s n sμμ∆∆==±⨯⨯ (3-11) 将式(3-11)与式(3-8)比较可知,采用多周期测量相对精度大大提高。
若设置系统的临界转速为3662r/min ,其对应的每周期计数脉冲个数为(4096)(1000)D H =。
开机时,首先按低转速测量,然后判断转速n 是高于还是低于3662r/min 。
若低与此临界值,则仍然低转速测量,若高于它,便主动转入高转速测量,即连续测量4个周期.这样,就可以实现量程自动切换。
3.2转速测量由式(3-4)和(3-10)可知,只要能够求出脉冲个数N ,即可求出转速。
为了得到计数脉冲,可以采用门控方式的硬件计数方法,也可以采用中断方式的软件计数方法。
3.2.1门控方式计数由8031定时器/计数器T0工作原理可知,当其工作在计数方式,只要T0引脚上有负跳变,计数器就加1。
CPU 在每个机器周期的52S P 状态时,采样T0,所以需要2个机器周期才能识别一个T0的负跳变,即T0的周期至少应该等于2倍机器周期。
若晶振频率为6MHz ,6分频后得到ALE 信号,故ALE 信号周期为1s μ,机器周期为2s μ。
由此可知,最低计数脉冲周期C T 为4s μ,可由ALE 信号经74LS74中的两个D 触发器4分频后取得。
为了保证精度,要求8031内部计数器0与0INT 的上跳沿同步,此时开始计数,在0INT 的下跳沿停止计数。
图3.1 门控脉冲与计数脉冲为了实现此功能,可以利用51单片机特有的定时器门控工作方式,通过指令MOV THOD ,#1DH 来设置定时器/计数器的工作方式。
这里使定时器/计数器0工作于16位技术方式,并由0INT 门脉冲进行控制。
只有当0INT 为高电平时,且运行控制位01TR =时,计数器0才开始工作。
一旦0INT 转为低电平,计数器0即刻停止计数。
3.2.2中断方式计数高转速时,为了连续测量4个输入脉冲周期,可以采用中断方式计数。
在初始化或前一次测量结果时,单片机禁止”外部中断0”和”定时器0”溢出中断。
设置”外部中断0”为负跳沿触发方式,设定”计数器0”为非门控计数方式,然后等待中断。
外部中断负脉冲一到,立刻启动”计数器0”对T0的4s μ计数脉冲进行计数。
计到4个测量周期时,停止”计数器0” 工作,禁止外”中断”,恢复测量周期常数3,并将计得的脉冲数存入相应的单元。
门控方式和中断方式计数,有效的解决了精度测量输入脉冲周期和高低量程自动切换问题,测得计数脉冲个数后,即可转入计算转速n 子程序,计算结果得BCD 吗存入相应的4个存储单元,以备显示。
3.3串行显示接口51单片机的I/O 口串行口为全双工接口,串行工作在方式0时,外接移位寄存器,可将串口转换成8位并口。
其显示的速率为12OSC f ,即60.512MHzMHz =,可以满足显示器稳定显示。
串行数据的接受/发送均通过RXD ,而由TXD 输出移位脉冲。
在串口上外接4片移位寄存器74LS64作为8位显示器的静态显示口。
变串行输入为并行输出,经缓冲器接至数码管。
4 软件程序的设计4.1 1s 定时本次设计选用定时器T0完成定时功能,选用方式1时最多也只能定时ms 1.71)100592.11/(12655366=⨯⨯,显然不能满足定时1s 的要求,可以用下面这种方法解决:采用T0定时10ms ,连续循环定时100次即可完成1s 定时,用一个计数单元20H 存放循环的次数,每一次循环20H 单元自减1,当20H 单元为零时则1s 定时到时。
定时器T0初始化程序如下:MOV IE,#8AH ;开放T0、T1中断MOV TMOD,#51H ;T0定时,T1计数,都工作于方式一 MOV 20H,#100 ;100*10ms=1s SETB TR0 1s 定时程序如下:T0INT:DJNZ 20H,NEXTNEXT:MOV TH0,#0DCH ;1s 还未到则置初值继续定时 MOV TL0,#00H EXIT:RETI4.2 T1计数程序设计中T1采用计数功能,需要注意的一个问题是,输入的待测时钟信号的频率最高可以达到460800Hz ,但计数器最多只能计数65536次,显然需要对计数单元进行扩展,扩展的思路是除了计数器T1的TH1和TL1用于计数外,再选用一个计数单元23H ,每当计数器T1溢出回零时产生中断,中断程序执行23H 单元自增1,这样,当一秒到时时采集的计数数据,23H单元存放的是数据的最高位,TH1存放的是数据的次高位,TL1存放的是数据的最低位。