直流电机转速测量与控制程序
电机转速控制实验报告
电机转速控制实验报告
1. 实验目的
本实验旨在研究电机转速控制的原理和方法,通过实际操作和数据分析来加深对电机控制的理解,并验证控制算法的有效性。
2. 实验原理
电机转速控制是通过改变电机供电电压或者改变电机绕组的接线方式来控制电机的转速。
在本次实验中,我们将采用调制技术来实现电机转速的控制。
3. 实验设备与材料
- 电机:直流电机
- 控制器:单片机控制器
- 传感器:转速传感器
- 电源
- 连接线
4. 实验步骤
1. 搭建实验电路:将电机和传感器连接至控制器,并接通电源。
2. 编写控制程序:根据所选的控制算法,编写相应的控制程序,并将其烧录至控制器中。
3. 运行实验:根据预设条件,控制电机的转速并记录数据。
4. 数据分析:对实测数据进行分析,验证控制算法的有效性。
5. 实验结果与分析
在实验过程中,我们采用了调制技术来实现电机转速的控制。
通过对控制程序的设计和实验数据的分析,我们得出以下结论:
- 当调制信号的频率增加时,电机的转速也随之增加,说明控制算法的设计是成功的。
- 通过调整调制信号的占空比,我们可以实现对电机转速的精确控制。
6. 实验总结
通过本次实验,我们深入了解了电机转速控制的原理和方法。
实验结果表明,调制技术能够有效地实现电机转速的控制,并且可以通过调整参数来实现不同的控制效果。
在实验过程中,我们还学习了如何编写控制程序和分析实验数据。
这些都对我们进一步深入研究电机控制提供了良好的基础。
7. 参考文献
- 电机控制技术原理与应用教材
- 直流电机转速控制实验指导书。
直流电机测速系统课程设计
西安邮电学院单片机课程设计报告书题目:电机测速系统院系名称:自动化学院学生姓名:专业名称:自动化班级:自动XXXX班时间:20XX年X月X日至 X月XX日电机测速系统一、设计目的随着科技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领域,而单片机的应用则起到了举足轻重的作用。
在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。
为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。
因此设计一种较为理想的电机测速控制系统是非常有价值的。
二、设计要求1.用按键控制电机起停;2.电机有两种速度,通过按键来改变速度;3.通过数码管显示每分钟或每秒的转速。
四、设计方案及分析(包含设计电路图)1. STC89C52单片机介绍STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
(1)单片机最小系统单片机最小系统电路如图所示,由主控器STC89C52、时钟电路和复位电路三部分组成。
单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。
图单片机最小系统(2)晶振电路(3)复位电路复位是单片机的初始化操作。
其主要功能是把PC 初始化为0000H ,使单片机从0000H 单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
2. ST151光电转速传感器是根据光敏二极管工作原理制造的一种感应接收光强度变化的电子器件,当它发出的光被目标反射或阻断时,则接收器感应出相应的电信号。
直流电机转速测控实验
直流电机转速测控实验一、实验目的1. 掌握电机转速的测量原理;学会根据被测环境、对象不同选择合适的传感器测量转速;2. 掌握电机转速控制的原理;学会用计算机和传感器组成转速测控系统。
二、实验原理图1所示为计算机直流电机转速测控系统原理图。
图1 计算机测控直流电机转速原理框图根据被测环境和对象选择不同转速传感器(光电、霍尔、磁电)实现直流电机转速的测量及控制。
三. 实验仪器和设备1. CSY-5000型传感器测控技术实训公共平台;2. 环形带综合测控实验台;3. 数据采集模板及测控软件(LabVIEW试用版);4. 12V直流电机调节驱动挂箱;5. 光电式、霍尔式、磁电式转速传感器各一件;6. PC机及RS232通讯接口。
四.实验预习要求1.查阅资料,了解旋转轴转速测量的常用方法;2.掌握采用光电式、霍尔式、磁电式传感器测量转速的原理及特点;3.理解计算机测控直流电机转速的系统工作原理;4.熟悉CSY-5000型传感器测控技术实训平台的硬件配置。
五. 实验步骤及内容第一部分:转速测量1、在关闭公共平台主机箱电源开关的前提下,连接数据采集模板电源线、RS232通讯线;2、根据你选用的转速传感器,按转速传感器附录图1、图2、图3示意图安装接线;(注意光电、霍尔传感器为+5V供电,磁电传感器为+15V供电)3、主机箱上0~12V可调电源与电压表(电压表量程选择20V档)及环形带综合测控实验台电机(环形带综合测控实验台背面)接口并接(注意接口的相应极性);4、检查接线无误后,首先将主机箱上0~12V可调旋钮逆时针方向缓慢调节到底(起始输出电压最小);然后桌面“环形带综合测试软件”(或者启动计算机中的测试软件目录“SensorTest.vi”),双击打开,显示图2环形带综合测试程序软件界面;再打开主机箱电源开关给测量系统供电。
图2 环形带综合测试软件界面5、在计算机的环形带综合测试程序软件界面采单栏下方栏点击运行按钮,串口通讯正常后选择测试软件中“手动转速控制与测量”选项,软件界面显示为图3转速测量选择传感器类型界面;在界面下方选择“传感器类型”为现在做测量转速实验相对应的转速传感器。
基于STM32直流电机控制程序
STM32 直流减速电机控制直流减速电机控制中,最常用的方法就是通过PWM来控制直流电机的转速。
在控制小车走直线的过程中,需要两者的转速一置(如果要走得很直,还需要在短时间内保证两者的行程大致相当,这可以用PID算法来控制,以后的文章中会专门叙述)。
因此,在检测到两者转速不一样时,需要动态调整其中一个或两个轮子的PWM的点空比(简单点的就以一个轮为基准,调整另外一个轮子即可;如果以一个固定的标准的话,需要调整两个轮子的PWM占空比)。
程序第一步:设置GPIO,略(输出PWM的管脚用Mode_AF_PP即可)程序第二步:设置定时器,(保证产生两路PWM即可,我用的是TIM4)void TIM4_Configuration(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_OCInitTypeDef TIM_OCInitStructure;//时间基初始化TIM_TimeBaseInitStructure.TIM_Period=144; //18K/144=125Hz,这个是电机PWM的频率TIM_TimeBaseInitStructure.TIM_Prescaler=4000; //72000000/4000=18KTIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0x0000;TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);//输出比较模式设置,用于4路PWM输出TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2; //输出PWMTIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //使能正向通道TIM_OCInitStructure.TIM_OutputNState=TIM_OutputState_Disable; //失能反向通道TIM_OCInitStructure.TIM_Pulse=PWM_L; //左轮DIR的占空比TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low; //输出极性为低电平TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCPolarity_High;//互补输出极性为高电平TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;TIM_OC1Init(TIM4,&TIM_OCInitStructure); //PWM_L初始化TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Disable); //改变点空比后,立即产生效应TIM_OCInitStructure.TIM_Pulse=PWM_R; //左轮PWM的占空比TIM_OC2Init(TIM4,&TIM_OCInitStructure); //PWM_R初始化TIM_OC2PreloadConfig(TIM4,TIM_OCPreload_Disable); //改变点空比后,立即产生效应//使能定时器4TIM_Cmd(TIM4,ENABLE);TIM_CtrlPWMOutputs(TIM4,ENABLE);}程序第三步:在SysTick中断中,读取两个轮子的速(具体的方法是:每0.1秒读一次,并以此人作为速度的依据),并比较,如果以右轮为基准,则调整左轮的PWM占空比。
直流电机调速系统设计与实现
直流电机调速系统设计与实现直流电机调速系统是一种常见的电机控制系统,通过调节电机的转速和输出功率,可以实现对机械设备的精准控制。
在工业生产和机械设备中得到广泛应用。
本文将介绍直流电机调速系统的设计和实现过程。
一、系统设计1. 电机选择:首先需要选择适合的直流电机作为调速系统的执行器。
根据需要的输出功率和转速范围,选择合适的电机型号和规格。
2. 电机驱动器选择:电机驱动器是控制电机转速的核心设备。
根据电机的额定电流和电压,选择合适的电机驱动器。
常见的电机驱动器包括PWM调速器、直流电机驱动模块等。
3. 控制器选择:控制器是调速系统的大脑,负责接收输入信号,并输出控制信号来调节电机转速。
常见的控制器包括单片机、PLC等。
4. 传感器选择:为了实现闭环控制,通常需要使用传感器来检测电机的转速和位置。
根据具体的需求选择合适的传感器,如编码器、霍尔传感器等。
5. 调速算法设计:根据应用需求,设计合适的调速算法。
常见的调速算法包括PID控制、模糊控制等。
二、系统实现1. 硬件连接:根据设计需求,将电机、电机驱动器、控制器和传感器等硬件设备连接起来。
确保电气连接正确无误。
2. 软件编程:根据设计的调速算法,编写控制程序。
在控制器上实现信号的采集、处理和输出,实现电机的闭环控制。
3. 参数调试:在系统搭建完成后,进行参数调试。
根据实际效果,调节PID参数等,使电机能够稳定运行并达到设计要求的转速和功率输出。
4. 性能测试:进行系统的性能测试,包括转速稳定性、响应速度等。
根据测试结果对系统进行优化和改进。
5. 系统应用:将设计好的直流电机调速系统应用到具体的机械设备中,实现精准的控制和调节。
根据实际应用情况,对系统进行进一步调优和改进。
通过以上设计和实现过程,可以建立一个稳定可靠的直流电机调速系统,实现对电机转速和功率的精确控制。
在工业生产和机械领域中得到广泛应用,提高了生产效率和设备的精度。
希望本文对直流电机调速系统的设计和实现有所帮助,让读者对这一领域有更深入的了解。
实验13--直流电机测速实验
4562、由DAC0832经功放电路驱动直流电机,计数光电开关通关次数并经过换算得出直流电机的转速,并将转速显示在LED上。
3、G5区的0、1号按键控制直流电机转速快慢, (最大转速≈96r/s,5V,误差±1r/s)六、演示程序(完整程序见目录SPEED);键盘、LED显示子程序请参阅综合实验一.MODEL TINYEXTRN CMD_8279:WORD, DATA_8279:WORDEXTRN Display8:NEAR, SCAN_KEY:NEAR,GetKeyA:NEARPCIBAR1 EQU 14H ;PCI9052 I/O基地址(用于访问局部配置寄存器)PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址,;也为DMA & 32 BIT RAM板卡上的8237提供基地址) PCIIPR EQU 3CH ;IRQ号INTCSR EQU 4CH ;PCI9052 INTCSR地址mask_int_9052 EQU 24HVendor_ID EQU 10EBH ;厂商ID号Device_ID EQU 8376 ;设备ID号VoltageOffset EQU 5 ;0832调整幅度.STACK 200.DATAIO8259_0 DW 00F0HIO8259_1 DW 00F1HRD_IO8259 DW 0000HCon_8253 DW 00E3HT0_8253 DW 00E0HT1_8253 DW 00E1HDA0832 DW 00D0HIO_Bit8_BaseAddress DW ?PCI_IO_BaseAddress0 DW ?PCI_IRQ_NUMBER DB ?INT_MASK DB ?INT_Vector DB ?INT_CS DW ? ;保护原中断入口地址INT_IP DW ?msg0 DB 'BIOS不支持访问PCI $'msg1 DB '找不到Star PCI9052板卡 $'msg2 DB '读PCI9052 I/O基地址时出错$'msg3 DB '读8位I/O空间基地址时出错$'msg4 DB '读IRQ号出错$'buffer DB 8 DUP(0) ;显示缓冲区,8个字节buffer1 DB 8 DUP(0) ;显示缓冲区,8个字节VOLTAGE DB 0 ;转换电压数字量Count DW 0 ;一秒转动次数NowCount DW 0 ;当前计数值kpTime DW 0 ;保存上一次采样时定时器的值bNeedDisplay DB 0 ;需要刷新显示.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPCALL InitPCICALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址CALL ModifyVector ;修改中断向量、允许中断MOV bNeedDisplay,1 ;显示初始值MOV VOLTAGE,99H ;初始化转换电压输入值,99H-3.0VMOV Count,0 ;一秒转动次数MOV NowCount,0 ;当前计数值MOV kpTime,0 ;保存上一次采样时定时器的值CALL DAC0832 ;初始D/ACALL Init8253CALL Init8259STIMAIN: CALL IfExitCALL GetKeyA ;按键扫描JNB Main1JNZ Key1Key0: MOV AL,VoltageOffset ;0号键按下,转速提高ADD AL,VOLTAGECMP AL,VOLTAGEJNB Key0_1MOV AL,0FFH ;最大Key0_1: MOV VOLTAGE,AL ;D/ACALL DAC0832JMP Main2Key1: MOV AL,VOLTAGE ;1号键按下,转速降低SUB AL,VoltageOffsetJNB Key1_1XOR AL,AL ;最小Key1_1: MOV VOLTAGE,ALCALL DAC0832 ;D/AJMP Main2Main1: CMP bNeedDisplay,0JZ MAINMOV bNeedDisplay,0 ;1s定时到刷新转速Main2: CALL RateTest ;计算转速/显示JMP MAIN ;循环进行实验内容介绍与测速功能测试;转速测量/显示RateTest: MOV AX,CountMOV BL,10DIV BLCMP AL,0JNZ RateTest1MOV AL,10H ;高位为0,不需要显示RateTest1: MOV buffer,AHMOV buffer+1,ALMOV AL,VOLTAGE ;给0832送的数据AND AL,0FHMOV buffer+4,ALMOV AL,VOLTAGEAND AL,0F0HROR AL,4MOV buffer+5,ALMOV buffer+2,10H ;不显示MOV buffer+3,10HMOV buffer+6,10HMOV buffer+7,10HLEA SI,bufferLEA DI,buffer1MOV CX,8REP MOVSBLEA SI,bufferCALL Display8 ;显示转换结果RETTimer0Int: MOV bNeedDisplay,1MOV AX,NowCountSHR AX,1SHR AX,1MOV Count,AX ;转一圈,产生四个脉冲,Count = NowCount/4MOV NowCount,0RETIntProc: PUSH AXPUSH DXCALL ClearIntMOV DX,RD_IO8259IN AL,DXIN AL,DX ;判断由哪个中断源引起的中断CMP AL,08HJNZ IntProc1CALL Timer0IntJMP IntProc2IntProc1: CMP AL,0FHJNZ IntProc2CALL CountIntIntProc2: MOV DX,IO8259_0MOV AL,20HOUT DX,ALPOP DXPOP AXIRETCountInt: MOV DX,Con_8253MOV AL,40HOUT DX,AL ;锁存MOV DX,T1_8253IN AL,DXMOV AH,ALIN AL,DXXCHG AL,AH ;T1的当前值XCHG AX,kpTimeSUB AX,kpTimeCMP AX,100JB CountInt1 ;前后二次采样时间差小于100,判断是干扰INC NowCountCountInt1: RETInit8253 PROC NEARMOV DX,Con_8253MOV AL,34HOUT DX,AL ;计数器T0设置在模式2状态,HEX计数MOV DX,T0_8253MOV AL,12HOUT DX,ALMOV AL,7AHOUT DX,AL ;CLK0=31250Hz,1s定时MOV DX,Con_8253MOV AL,74HOUT DX,AL ;计数器T1设置在模式2状态,HEX计数MOV DX,T1_8253MOV AL,0FFHOUT DX,ALMOV AL,0FFHOUT DX,AL ;作定时器使用RETInit8253 ENDPInit8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,7EHOUT DX,ALRETInit8259 ENDP;数模转换,A-转换数字量DAC0832 PROC NEARMOV DX,DA0832MOV AL,VOLTAGEOUT DX,ALRETDAC0832 ENDP;IfExit、InitPCI、ModifyAddress、ModifyVector、ClearInt、Exit子程序请参阅8259实验END START七.实验扩展及思考题实验内容:在日光灯或白炽灯下,将转速调节到25、50、75,观察转盘有什么现象出来。
基于51单片机的直流电机转速PI控制
… …
图 xx 电路原理图
上图中 LED 数码管显示中的 74LS164 芯片的引脚及功能如下所述:
芯片引脚功能对照表
符号 SA、SB Q0~Q7 CP(CLK) VCC GND /MR(/CLR)
功能 串行数据输入端 并行数据输出端 时钟输入端(上升沿有效) 电源正(5V) 接地 清零端(低电平有效)
直流电机 PI 转速控制—基于 51 单片机
1.项目系统组成
本项目由 STC89C52RC 单片机最小系统,12MHZ 晶振。直流电机驱动电路、直流电机(5V)、光电测 速电路以及数码管显示电路组成。详细器件见下文电路图。
2.直流电机转速控制电路原理
直流调速的方法有多种,本文是基于 PWM(脉冲宽度调制)技术,改变直流电机等效电枢电压,以此 在一定范围实现直流电机的调速。
void timer1() interrupt 3 {
TR1=0; TH1=pwmh; TL1=pwml; PWM1=0;
//T1 中断响应函数
//关闭定时器 T1 //T1 重置初值 //T1 重置初值,改变 PWM 占空比 //输出低电平
}
void PID_pwm()
{
unsigned int speed=0,pwm=0,pwmhh=0,pwmll=0; speed=10*pulse; //脉冲数换算为转速(转/分)speed=60*pulse*1000/(12*50*10)
综上所述,要想电机正转,则需要 PWM1=1,同时 PWM2=0;要想电机反转,则需要 PWM2=1,同时 PWM1=0;要想电机停止,则需要 PWM1=1,同时 PWM2=1,或者 PWM1=0,同时 PWM2=0。
直流电机转速计算机控制实验结论
直流电机转速计算机控制实验结论
在本次实验中,我们通过计算机控制技术实现了对直流电机转速的有效调节。
实验结果表明,计算机控制技术在直流电机控制领域具有显著的优势和应用前景。
首先,通过实验数据的分析,我们发现计算机控制技术可以实现对直流电机转速的精确控制。
在实验过程中,我们通过改变输入的电压或电流,观察到了直流电机转速的相应变化。
这表明计算机控制技术可以快速、准确地响应指令,实现对电机转速的精细调节。
其次,计算机控制技术还具有灵活性高的优点。
在实验中,我们通过编写不同的控制程序,实现了对直流电机不同转速模式和响应时间的控制。
这使得计算机控制技术在不同的应用场景中具有广泛的应用前景。
此外,我们还发现计算机控制技术可以有效地提高直流电机的能效。
在实验中,我们通过优化控制算法,减少了电机的能耗并提高了其运行效率。
这为节能减排和可持续发展提供了重要的技术支持。
综上所述,直流电机转速计算机控制实验结果表明,计算机控制技术在直流电机控制领域具有广泛的应用前景和重要的价值。
未来,我们可以通过进一步研究和开发,实现更加高效、智能的电机控制系统,为工业自动化和智能制造的发展做出更大的贡献。
直流电机测速实训报告
一、实训目的通过本次实训,使学生了解直流电机测速的基本原理,掌握直流电机测速仪的设计与制作方法,提高学生的动手能力和创新意识。
同时,培养学生的团队合作精神和严谨的科学态度。
二、实训内容1. 直流电机测速原理直流电机测速是通过测量电机转动时产生的电压信号,从而确定电机的转速。
常用的测速方法有电磁测速、光电测速和霍尔元件测速等。
本次实训采用霍尔元件测速方法。
2. 直流电机测速仪的设计与制作(1)电路设计直流电机测速仪的电路主要由以下几个部分组成:电源模块、霍尔元件模块、放大电路模块、滤波电路模块、A/D转换模块、单片机控制模块和显示模块。
(2)硬件制作根据电路设计,制作电路板,焊接各个元件,连接好电路。
(3)软件编程编写单片机控制程序,实现以下功能:1)采集霍尔元件输出的电压信号;2)将电压信号转换为转速值;3)将转速值显示在LCD屏幕上;4)通过红外遥控器控制测速仪的开关和转速设定。
3. 实验步骤(1)组装测速仪按照电路图组装好测速仪,确保各个元件焊接牢固,电路连接正确。
(2)调试测速仪将组装好的测速仪接入电源,调试各个模块,确保电路正常工作。
(3)测试测速仪将测速仪与待测电机连接,通过红外遥控器控制测速仪的开关和转速设定,观察LCD屏幕上显示的转速值是否准确。
三、实训结果与分析1. 实验结果本次实训成功制作了一台直流电机测速仪,通过测试,测速仪能够准确测量电机的转速,满足实验要求。
2. 结果分析(1)电路设计合理,元件选择合适,电路连接正确,确保了测速仪的正常工作。
(2)软件编程实现功能完善,能够满足实验要求。
(3)测速仪具有较好的稳定性和抗干扰能力。
四、实训总结1. 通过本次实训,使学生掌握了直流电机测速的基本原理和测速仪的设计与制作方法。
2. 提高了学生的动手能力和创新意识,培养了团队合作精神和严谨的科学态度。
3. 深化了对电子电路、单片机编程和传感器应用等课程知识的理解。
五、实训体会1. 在实训过程中,认真对待每一个环节,确保电路连接正确,编程无误。
基于PWM控制的直流电机自动调速系统设计
基于PWM控制的直流电机自动调速系统设计一、引言直流电机是工业中最常见的电动机之一,其工作原理简单,结构紧凑,控制方便,广泛应用于各行各业。
为了满足不同工况下的运行需求,需要设计一个自动调速系统来调整直流电机的转速。
本文将基于PWM控制方法设计一个直流电机自动调速系统。
二、系统设计1.系统结构直流电机自动调速系统的基本结构包括传感器、控制器、电源和执行器。
传感器用于检测电机的转速,控制器根据检测到的转速信号进行处理,并通过PWM控制方法调整电机的输入电压,从而实现自动调速。
2.传感器选择直流电机的转速检测一般使用霍尔效应传感器来实现。
霍尔传感器可以直接测量电机转子的位置,并根据位置变化来计算转速。
传感器输出的信号经过放大和处理后,可以作为控制器的输入信号。
3.控制器设计控制器是整个自动调速系统的核心部分。
控制器接收传感器的转速信号,并通过PID算法对电机的转速进行调节。
PID算法是一种经典的控制方法,可以根据当前的偏差、偏差变化率和偏差积分值来计算控制量。
在本系统中,控制器输出的控制量即为PWM信号。
4.PWM控制方法PWM(Pulse Width Modulation)控制方法是一种通过调整脉冲宽度来控制输出电压的方法。
在本系统中,PWM控制方法可以通过改变PWM信号的占空比来调整电机的输入电压。
当需要提高电机转速时,增加PWM信号的占空比;当需要降低电机转速时,减小PWM信号的占空比。
通过反馈控制,控制器可以根据实际转速信号不断调整PWM信号的占空比,从而实现电机的自动调速。
5.电源选择在直流电机自动调速系统中,电源需要提供稳定的直流电压以供电机正常工作。
一般可选择线性稳压器或开关稳压器来提供所需的直流电压。
在选择电源时,需要考虑电机的功率和电源的效率,以确保系统的稳定性和可靠性。
6.执行器选择执行器是将控制信号转换为实际操作的部分。
在直流电机自动调速系统中,执行器可选择光耦隔离器和驱动芯片来实现PWM信号控制。
直流电机PWM调速
直流电机转速的PWM控制测速王鹏辉姬玉燕摘要本设计采用PWM的控制原理来完成对直流电机的正转、反转以及其加速、减速过程的控制,在此过程中是通过单片机的定时器加上中断的方式产生不同时长的高低电压脉冲信号来完成。
并通过霍尔传感器对直流电机的转速进行测定,最后将实时测定的转速数值1602液晶屏上。
关键词:PWM控制直流电机霍尔传感器 1602液晶显示屏 L298驱动一、设计目的:了解直流电机工作原理,掌握用单片机来控制直流电机系统的硬件设计方法,熟悉直流电机驱动程序的设计与调试,能够熟练应用PWM方法来控制直流电机的正反转和加减速,提高单片机应用系统设计和调试水平。
1.1系统方案提出和论证转速测量的方案选择,一般要考虑传感器的结构、安装以及测速范围与环境条件等方面的适用性;再就是二次仪表的要求,除了显示以外还有控制、通讯和远传方面的要求。
本说明书中给出两种转速测量方案,经过我和伙伴查资料、构思和自己的设计,总体电路我们有两套设计方案,部分重要模块也考虑了其它设计方法,经过分析,从实现难度、熟悉程度、器件用量等方面综合考虑,我们才最终选择了一个方案。
下面就看一下我们对两套设计方案的简要说明。
1.2 方案一:霍尔传感器测量方案霍尔传感器是利用霍尔效应进行工作的?其核心元件是根据霍尔效应原理制成的霍尔元件。
本文介绍一种泵驱动轴的转速采用霍尔转速传感器测量。
霍尔转速传感器的结构原理图如图3.1, 霍尔转速传感器的接线图如图3.2 。
传感器的定子上有2 个互相垂直的绕组A 和B, 在绕组的中心线上粘有霍尔片HA 和HB ,转子为永久磁钢,霍尔元件HA 和HB 的激励电机分别与绕组A 和B 相连,它们的霍尔电极串联后作为传感器的输出。
图3.1 霍尔转速传感器的结构原理图方案霍尔转速传感器的接线图缺点:采用霍尔传感器在信号采样的时候,会出现采样不精确,因为它是靠磁性感应才采集脉冲的,使用时间长了会出现磁性变小,影响脉冲的采样精度。
直流电机基本知识与控制方法
专业资料电机简要学习手册2015-2-3一、直流电机原理与控制方法1直流电机简介直流电机(DM)是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。
它是能实现直流电能和机械能互相转换的电机。
当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。
直流电机由转子(电枢)、定子(励磁绕组或者永磁体)、换向器、电刷等部分构成,以其良好的调速性能以至于在矢量控制出现以前基本占据了电机控制领域的整座江山。
但随着交流电机控制技术的发展,直流电机的弊端也逐渐显现,在很多领域都逐渐被交流电机所取代。
但如今直流电机仍然占据着不可忽视的地位,广泛用于对调速要求较高的生产机械上,如轧钢机、电力牵引、挖掘机械、纺织机械,龙门刨床等等,所以对直流电机的了解和研究仍然意义重大。
2 直流电动机基本结构与工作原理2.1 直流电机结构如下图,是直流电机结构图,电枢绕组通过换向器流过直流电流与定子绕组磁场发生作用,产生转矩。
定子按照励磁可分为直励,他励,复励。
电枢产生的磁场会叠加在定子磁场上使得气隙主磁通产生一个偏角,称为电枢反应,通常加补偿绕组使磁通畸变得以修正。
2.2 直流电机工作原理如图所示给两个电刷加上直流电源,如上图(a)所示,则有直流电流从电刷A 流入,经过线圈abcd,从电刷B 流出,根据电磁力定律,载流导体ab和cd收到电磁力的作用,其方向可由左手定则判定,两段导体受到的力形成了一个转矩,使得转子逆时针转动。
如果转子转到如上图(b)所示的位置,电刷A 和换向片2接触,电刷B 和换向片1接触,直流电流从电刷A 流入,在线圈中的流动方向是dcba,从电刷B 流出。
此时载流导体ab和cd受到电磁力的作用方向同样可由左手定则判定,它们产生的转矩仍然使得转子逆时针转动。
这就是直流电动机的工作原理。
外加的电源是直流的,但由于电刷和换向片的作用,在线圈中流过的电流是交流的,其产生的转矩的方向却是不变的。
直流电机调速的PLC控制
直流电机调速的PLC控制背景:使用直流电机有许多优点如:电机调速经济,控制方便;机械特性较硬,稳定性较好;PLC电动机转速控制可以完成了液位控制、直流电动机旋转控制组态图,使得操作人员通过计算机屏幕对现场的运行情况一目了然。
用户可以通过组态图随时了解、观察并掌握整个控制系统的工作状态,必要时还可以通过界面向控制系统发出故障报警,进行人工干预。
一、硬件输入输出接口电路实际上是PLC与被控对象间传递输入输出信号的接口部件。
输入输出接口电路要有良好的电隔离和滤波作用。
1.输入接口电路输入输出信号分为开关量、模拟量及数字量。
可编程控制器的一个重要特点就是所有的输入输出信号全部经过了隔离,无论任何形式的输入输出最终都是经过光电偶合口或继电器将信号传入/送出PLC。
由于生产过程中使用的各种开关、按钮、传感器等输入器件直接接到PLC输入接口电路上,为防止由于触点抖动或干扰脉冲引起错误的输入信号,输入接口电路必须有很强的抗干扰能力[1]。
2.输出接口电路根据驱动负载元件不同可将输出接口电路分为三种形式:一种是继电器输出型,CPU接通继电器的线圈,继而吸合触点,而触点与外线路构成回路;另一种是晶体管输出,它是通过光偶合使开关晶体管通断以控制外电路;再一种就是可控硅输出型,这里的可控硅是采用光触发型的。
二、软件第一部分为系统监控程序。
它是每一个可编程控制器成品必须包括的部分,是由可编程控制器的制造者编制的,用于控制可编程控制器本身的运行。
另一部分为用户程序。
它是由可编程控制器的使用者编制的,用于控制被控装置的运行。
这里主要介绍监控程序。
系统管理程序是监控程序中最重要的部分,整个可编程控制器的运行都由它主管。
管理程序又分为三个部分:第一部分是运行管理,控制可编程控制器何时输入、何时输出、何时自检等等,进行时间上的分配管理。
第二部分进行存储空间的管理,即生成用户环境,由它规定各种参数、程序的存放地址,将用户使用的数据参数存储地址转化为实际的数据格式及物理存放地址。
基于PLC技术的直流电机转速控制系统设计
基于PLC技术的直流电机转速控制系统设计目录一、内容概括 (2)1.1 直流电机简介 (2)1.2 PLC技术概述 (3)二、系统需求分析 (4)2.1 控制要求 (6)2.2 性能指标 (6)三、系统设计 (7)3.1 系统结构设计 (9)3.2 PLC选型与配置 (10)3.3 传感器模块设计 (11)3.4 人机界面设计 (13)四、控制算法设计 (14)4.1 PID控制算法原理 (15)4.2 PID参数整定方法 (17)4.3 控制算法实现 (18)五、系统实现与调试 (20)5.1 系统搭建 (21)5.2 调试过程 (22)5.3 调试结果分析 (23)六、系统测试与应用 (24)6.1 测试环境与方法 (26)6.2 测试结果分析 (26)6.3 系统应用场景探讨 (28)七、总结与展望 (29)7.1 系统总结 (30)7.2 未来展望 (31)一、内容概括本文档主要探讨了基于PLC技术的直流电机转速控制系统的设计方案。
介绍了直流电机的基本原理和转速控制的重要性,以及PLC 技术在工业自动化中的广泛应用。
详细阐述了系统设计的目标、硬件选型、软件设计和实现方法。
在系统设计目标中,我们强调了高精度、高稳定性和实时性,以满足实际应用中对电机转速控制的高要求。
硬件选型部分,选择了功能强大的PLC作为控制核心,并配置了相应的输入输出模块和传感器,以实现对电机转速的实时监测和控制。
软件设计方面,采用了梯形图编程语言,编写了功能完善的控制程序,包括初始化、速度调节、故障处理等模块。
在实现方法上,我们描述了如何通过PLC编程实现对电机的速度控制,以及如何通过调试和优化,确保系统的稳定运行和高效性能。
本文档旨在为读者提供一个基于PLC技术的直流电机转速控制系统的设计思路和方法,具有一定的实用性和参考价值。
1.1 直流电机简介直流电机(DC Motor)是一种将电能转换为机械能的电动机,广泛应用于各种机械设备中。
STM32直流电机控制程序简明教程
STM32直流电机控制程序简明教程
STM32是一款功能强大的微控制器,可以用于控制各种外设,例如直流电机。
在本教程中,我们将介绍如何使用STM32控制直流电机。
本教程面向有一定STM32开发经验的开发者。
以下是实现电机控制的基本步骤:
1.硬件连接:首先,将STM32与直流电机连接起来。
一般来说,直流电机有两个引脚,一正一负,以控制运动的方向。
将这两个引脚与STM32的GPIO引脚连接,并确保引脚的方向正确。
2. 配置GPIO引脚:使用STM32的开发工具,如Keil或
STM32CubeIDE,配置GPIO引脚。
将引脚配置为输出模式,并设置为默认状态下关闭电机。
3.配置定时器:使用STM32的定时器来生成PWM信号以控制电机的速度。
配置定时器的时基和计数值,以获得所需的PWM频率。
4.生成PWM信号:设置定时器的通道和占空比,以生成PWM信号。
根据电机的要求,设置合适的占空比来控制电机的转速。
5.控制电机方向:根据需要,将GPIO引脚设置为高电平或低电平,以确定电机的运动方向。
6.启动电机:启动定时器,开始生成PWM信号。
此时,电机将按照所设定的方向和速度运动。
7.监控电机状态:使用STM32的输入捕获功能,可以读取电机的实际转速或电流等信息。
根据需要,可以对电机进行实时监控和调整。
8.程序优化:通过调整PWM频率、占空比和电机控制算法等参数,对电机控制程序进行优化,以实现更好的控制效果。
步进电机实验报告(1)
步进电机控制实验一、实验目的步进电机作为一种数字控制电机,可以准确的控制角度和距离应用非常广泛,本实验利用SPCE061A单片机通过自己编写程序实现步进电机的控制使我们加深对步进电机的了解,同时学会使用步进电机的驱动芯片WZM-2H042M。
另外要求我们掌握单片机控制步进电机的硬件接口电路,以及熟悉步进电机的工作特性。
二、实验内容根据步进电机驱动电路,使用单片机驱动步进电机,控制步进电机正转、反转操作。
三、实验要求按实验内容编写程序,并在实验仪上调试和验证。
四、实验说明1.步进电动机有三线式、五线式、六线式三种,但其控制方式均相同,必须以脉冲电流来驱动。
若每旋转一圈以20个励磁信号来计算,则每个励磁信号前进18度,其旋转角度与脉冲数成正比,正、反转可由脉冲顺序来控制。
2.步进电动机的励磁方式可分为全部励磁及半步励磁,其中全步励磁又有1相励磁及2相励磁之分,而半步励磁又称1-2相励磁。
图为步进电动机的控制等效电路,适应控制A、B、/A、/B的励磁信号,即可控制步进电动机的转动。
每输出一个脉冲信号,步进电动机只走一步。
因此,依序不断送出脉冲信号,即可步进电动机连续转动。
a.1相励磁法:在每一瞬间只有一个线圈导通。
消耗电力小,精确度良好,但转矩小,振动较大,每送一励磁信号可走18度。
若欲以1相励磁法控制步进电动机正转,其励磁顺序如图所示。
若励磁信号反向传送,则步进电动机反转。
励磁顺序: A→B→C→D→AA B C DSTEP1 1 0 0 02 0 1 0 03 0 0 1 04 0 0 0 1b.2相励磁法:在每一瞬间会有二个线圈同时导通。
因其转矩大,振动小,故为目前使用最多的励磁方式,每送一励磁信号可走18度。
若以2相励磁法控制步进电动机正转,其励磁顺序如图所示。
若励磁信号反向传送,则步进电动机反转。
励磁顺序: AB→BC→CD→DA→ABSTEP A B C D1 1 1 0 02 0 1 1 03 0 0 1 14 1 0 0 1c.1-2相励磁法:为1相与2相轮流交替导通。
直流电机调速控制和测速系统设计
直流电机调速控制和测速系统设计摘要:直流型的电机得性能在电机结构中有着较好的优势,由于时代的持续进步,与直流电机相关的使用频率也变得更高。
然而,以往的直流电机工作性质与所面临得运转问题息息相关,怎样对转速进行合理管控就变成了直流电机发展和应用期间存在的困难。
而直流电机控制系统的产生,可以较好的处理该方面的情况,不仅能够增强直流电机的平稳程度和精准程度,还可以合理管控直流电机的运行速度,从而达到我国对相关设备的应用标准。
基于此,本文重点分析了直流电机调速控制的方式,进一步对测速系统进行设计,以供相关人员参考。
关键词:直流电机;调速控制;测速系统目前,直流发电机的应用非常广泛,在自动化装备领域中,其内蓄电池内部都配置有相应的直流发电机,保证在断电的情况下起到一定的发电机组的润滑作用。
而直流电动机在启动时,其所用的电流量会增大很多,造成一定的冲击力,这种冲击力会造成一定的影响,比如充电器出现损坏、短路等,这些故障的产生都会使得发电设备无法正常运转。
因此,为了解决我国在有关这方面的控制技术上存在的问题,需要对调速与测速系统进行控制与设计,以此来确保整个电机设备的稳定性与安全性。
1电机调速原理及其实现电机调速原理主要是指对电机两端所存在的电压进行数据上的更改,以此来完成对电机转速的调节工作,对于电机而言,当自身的电压方向出现改变,那么电机的旋转变化发生改变。
而PWM在调速原理方面则是以脉冲信号为主,利用脉冲信号的输出特性来进行传输,并改变原本存在于电机内部空间的脉冲信号,通过间接或速度按钮来完成有关电机电压的更改工作,从而来确保电机的转速能够因此发生改变。
在这一过程中,电机内部的脉冲占比越大,转速也就越慢。
整个电路主要是以H桥为主,为了确保整个驱动电机能够得到有效控制,将三极管进行单片机的引脚安装,将基极部分分别安装,从而来确保当电机处于运行状态时,能够利用垫片机来对其自身的转速内容进行控制。
当脉冲信号输送工作时,另一端会通过开展低电平的模式来进行应用,这时的直流电机会呈现为正转状态,反之亦然。
课程设计---直流电动机测速系统设计
专业课程设计题目三直流电动机测速系统设计院系:专业班级:小组成员:指导教师:日期:前言1.题目要求设计题目:直流电动机测速系统设计描述:利用单片机设计直流电机测速系统具体要求: 8051 单片机作为主控制器、利用红外光传感器设计转速测量、检测直流电机速度,并显示。
元件: STC89C52、晶振(12MHz)、小按键、 ST151、数码管以及电阻电容等2.组内分工(1)负责软件及仿真调试:主要由完成(2)负责电路焊接:主要由完成(3)撰写报告:主要由完成3.总体设计方案总体设计方案的硬件部分详细框图如图一所示 :数码管显示按键控制单片机 PWM 电机驱动一、转速测量方法转速是指作圆周运动的物体在单位时间内所转过的圈数,其大小及变化往往意味着机器设备运转的正常与否,因此,转速测量一直是工业领域的一个重要问题。
按照不同的理论方法,先后产生过模拟测速法 (如离心式转速表) 、同步测速法(如机械式或闪光式频闪测速仪) 以及计数测速法。
计数测速法又可分为机械式定时计数法和电子式定时计数法。
本文介绍的采用单片机和光电传感器组成的高精度转速测量系统,其转速测量方法采用的就是电子式定时计数法。
对转速的测量实际上是对转子旋转引起的周期脉冲信号的频率进行测量。
在频率的工程测量中,电子式定时计数测量频率的方法一般有三种:①测频率法:在一定时间间隔t 内,计数被测信号的重复变化次数N ,则被测信号的频率fx 可表示为f x =Nt(1)②测周期法:在被测信号的一个周期内,计数时钟脉冲数m0 ,则被测信号频率fx = fc/ m0 ,其中, fc 为时钟脉冲信号频率。
③多周期测频法:在被测信号m1 个周期内, 计数时钟脉冲数m2 ,从而得到被测信号频率fx ,则fx 可以表示为fx =m1 fcm2, m1 由测量准确度确定。
电子式定时计数法测量频率时, 其测量准确度主要由两项误差来决定: 一项是时基误差 ; 另一项是量化± 1 误差。
直流电机的转速检测及电路设计
摘要在电气时代的今天,电动机在工农业生产与人们日常生活中都起着十分重要的作用。
直流电机作为最常见的一种电机,具有非常优秀的线性机械特性、较宽的调速范围、良好的起动性以及简单的控制电路等优点,因此在社会的各个领域中都得到了十分广泛的应用。
系统主要功能是:AT89C51单片机接受霍尔传感器传来的脉冲信号,单片机根据外部中断,以及内部定时器进行计数计算出电机转速送到LED并显示,外部装有蜂鸣器电路,在超速或低俗过低都会停止电动机,蜂鸣器发音,显示器不显示,从实用角度看,评价一个系统实用价值的重要标准,就是这个系统对社会生活和科技观念有多大的贡献。
本设计以单片机为核心设计一个电动机转速测定及数据显示控制系统,要求对转速范围在0-3000r/min的直流调速电动机进行测量并显示,转速数据显示精度要达到转速个位数,有转速高、低限报警提示。
本设计使用6V直流电机。
将霍尔传感器产生的脉冲信号输入到单片机外部中断0口,单片机工作在内部定时器工作方式0,对周期信号进行计数,调用计算公式计算出转速,调用显示程序在LED上,其主要内容是单片机部分主要完成电机转速的测量,LED显示部分主要是把转速显示出来,显示范围在0-3000r/min之间。
本设计主要研究直流电机的控制和测量方法,效率高,电路简单,使用也比较广泛,测速系统采用集成霍尔传感器敏感速率信号,具有频率响应快、抗干扰能力强等特点。
从而对电机的控制精度、响应速度以及节约能源等都具有重要意义。
关键词:单片机霍尔IC传感器 , DAC0832 直流电动机转速流程图A/D 和D/A转换器目录摘要 (2)第一章:引言 (5)第二章:系统功能分析 (7)2.1 系统功能概述 (7)2.2 系统要求及主要内容 (7)2.3 系统技术指标 (7)第三章:系统总体设计 (8)3.1 硬件电路设计思路 (8)3.2 软件设计思路 (9)第四章:硬件电路设计 (8)4.1 单片机描述 (12)4.1.1 AT89C51引脚及作用 (12)4.1.2 ULN2003引脚图及功能 (13)4.2 外围电路设计 (14)4.2.1时钟电路 (14)4.2.2复位电路 (14)4.2.3测速电路 (15)4.2.4报警电路 (16)4.2.5显示电路 (16)4.2.6 74HC573引脚图及功能 (18)第五章:软件电路设计 (20)第六章:系统调试 (23)6.1 硬件调试 (23)6.2 软件调试 (24)6.3 综合调试 (24)6.4 故障分析与解决方案 (24)6.4.1 故障出现情况 (24)6.4.2 解决方案 (25)第七章:结论 (30)参考文献 (31)致谢 (28)附录 (29)第一章引言电子技术的高速发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机调速技术进入到一个新的阶段。
利用LabVIEW进行直流电机控制与调速
利用LabVIEW进行直流电机控制与调速直流电机在工业控制和自动化领域中具有重要作用,其控制与调速是一项关键技术。
LabVIEW是一款功能强大的图形化编程环境,适用于各种控制系统的设计和调试。
本文将介绍如何利用LabVIEW实现直流电机的控制与调速过程。
一、LabVIEW环境搭建首先,我们需要安装LabVIEW软件并搭建相应的开发环境。
具体步骤如下:1. 下载LabVIEW安装包并进行安装;2. 打开LabVIEW软件,在主界面选择新建一个项目;3. 在新建项目中选择合适的目录,并创建一个新的VI(Virtual Instrument)。
二、硬件连接在开始编程之前,我们需要连接实际的硬件设备,包括直流电机和相应的驱动电路。
确保电机和电路连接正确,并通过串口或USB接口将其与计算机相连。
三、编写控制程序在LabVIEW环境下,我们可以通过拖拽控件和线连接的方式来编写控制程序。
以下是一个基本的直流电机控制程序示例:1. 读取输入信号使用LabVIEW提供的输入控件,如拨动开关或旋钮,读取用户输入的控制信号。
这可以包括电机的启动、停止、加速和减速等操作。
2. 控制信号处理根据用户输入的信号,进行相应的处理和逻辑判断。
例如,当用户选择启动电机时,向驱动电路发送启动信号,并控制电机的电流或电压。
3. 电机速度调节利用PID控制算法或其他调节算法,实现电机的速度控制。
这可以通过使用LabVIEW提供的控制函数和模块来实现。
4. 输出控制信号将处理后的控制信号转换为电机可理解的信号,并通过串口或USB 接口发送到驱动电路。
这将导致电机以相应的速度和方向旋转。
5. 反馈信号读取连接电机的编码器或其他传感器,读取电机的实际转速或位置。
这将用作反馈信号,用于控制回路的闭环控制。
6. 控制回路闭环通过比较用户设定的目标速度和实际测量的速度,实现闭环控制。
根据误差信号,调整输出控制信号,以使电机的实际转速趋近于设定值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
直流电机转速测量与控制程序
#include "reg51.h"
#include "absacc.h"
#define LEDLen 6
#define Tick 10 // 10 x 100us = 1ms
unsigned int C100us; // 100us记数单元
xdata unsigned char CS0832 _at_ 0xb000;
xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口xdata unsigned char IN _at_ 0x8001; // 键盘读入口
unsigned char LEDBuf[LEDLen]; // 显示缓冲
code unsigned char LEDMAP[] = { // 八段管显示码
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};
code unsigned char KeyTable[] = { // 键码定义
0x16, 0x15, 0x14, 0xff,
0x13, 0x12, 0x11, 0x10,
0x0d, 0x0c, 0x0b, 0x0a,
0x0e, 0x03, 0x06, 0x09,
0x0f, 0x02, 0x05, 0x08,
0x00, 0x01, 0x04, 0x07
};
long int n;
unsigned char flag;
unsigned char DA;
unsigned char Key_temp;
unsigned char k_TEMP[2];
void time1_int(void);
void delay(unsigned char CNT)
{
unsigned char i;
while (CNT-- !=0)
for (i=50; i !=0; i--);
}
unsigned char TestKey()
{
OUTBIT = 0; // 输出线置为0
return (~IN & 0x0f); // 读入键状态(高四位不用) }
unsigned char GetKey()
{
unsigned char Pos;
unsigned char i;
unsigned char k;
i = 6;
Pos = 0x20; // 找出键所在列
do {
OUTBIT = ~ Pos;
Pos >>= 1;
k = ~IN & 0x0f;
} while ((--i != 0) && (k == 0));
// 键值= 列x 4 + 行
if (k != 0) {
i *= 4;
if (k & 2)
i += 1;
else if (k & 4)
i += 2;
else if (k & 8)
i += 3;
OUTBIT = 0;
do delay(10); while (TestKey()); // 等键释放
return(KeyTable[i]); // 取出键码
} else return(0xff);
}
void DisplayLED()
{
unsigned char i;
unsigned char Pos;
unsigned char LED;
Pos = 0x20; // 从左边开始显示for (i = 0; i < LEDLen; i++) {
OUTBIT = 0; // 关所有八段管LED = LEDBuf[i];
OUTSEG = LED;
OUTBIT = Pos; // 显示一位八段管delay(5);
Pos >>= 1; // 显示下一位
}
OUTBIT = 0; // 关所有八段管}
void time1_int(void) interrupt 3
{
C100us--;
if (C100us == 0)
{
C100us = Tick;
TR0 = 0;
TR1 = 0;
n=TH0*256+TL0;
TH0 = 0;
TL0 = 0;
TH1 = 255 - 50;
TL1 = 255 - 50;
flag = 1;
TR0 = 1;
TR1 = 1;
}
}
void main()
{
unsigned char i = 0;
//TMOD = 0X05; // T0计数方式C100us = Tick;
n = 0;
TMOD = 0X15;
TH0 = 0;
TL0 = 0;
TH1 = 255 - 50; // 定时100US
TL1 = 255 - 50;
ET1 = 1; // 开中断
EA = 1;
while(1){
if (TestKey())
{
Key_temp = GetKey() & 0x0f ;
LEDBuf[i] = LEDMAP[Key_temp];
k_TEMP[i] = Key_temp;
i++;
if(i==2)
{
i = 0;
break;
}
}
}
Key_temp = k_TEMP[0]*10+k_TEMP[1];
DA = 0x2f;
CS0832 = DA;
TR0 = 1;
TR1 = 1;
while(1){
while(flag)
{
LEDBuf[4] = LEDMAP[n/10];
LEDBuf[5] = LEDMAP[n%10];
if(n>Key_temp)
{ DA--;
CS0832 = DA;
}
if(n<Key_temp)
{
DA++;
CS0832 = DA;
}
if(n==Key_temp)
{TR0=0;
TR1=0;
}
flag = 0;
}
DisplayLED(); // 显示计数值}
}。