单片机控制直流电机正反转
单片机控制直流电机正反转调速--基础简单实现

单片机控制直流电机正反转调速--基础简单实现
如何使用单片机控制直流电机呢?
真正控制之前我们要知道以下三点:
1、直流电机的控制是通过设置PWM波的占空比来控制直流电机的转速,占空比越大,转速越快,越小转速越低。
2、单片机的I/O口是不能直接驱动电机的,所以你还需要用一个驱动芯片。
像LG9110、CMO825L298等。
驱动芯片可以将单片机I/O输出信号放大,这样电机中流过的电流足够大,电机才能转起来。
本文采用的是L298
3、为了实现调节转速功能必须来个滑动变阻器和数模转化器
ADC0831,同时使用开关控制电机正反转。
开始行动~
OK一切就绪。
基于单片机的直流电机调速系统设计

直流电机转速 :
根据基尔霍夫第二定律,得到电枢电压电动势平衡方程式 U=Ea+Ia(Ra+Rc)……………式1
式1中,Ra为电枢回路电阻,电枢回路串联保绕阻与电刷 接触电阻的总和;Rc是外接在电枢回路中的调节电阻
由此可得到直流电机的转速公式为:
n=(Ua-IR)/CeΦ ………………………式2
式2中, Ce为电动势常数, Φ是磁通量。 由1式和2式得
n=Ea/CeΦ ……………………………式3
由式3中可以看出, 对于一个已经制造好的电机, 当励磁电压和 负载转矩恒定时, 它的转速由回在电枢两端的电压Ea决定, 电 枢电压越高, 电机转速就越快, 电枢电压降低到0V时, 电机就 停止转动;改变电枢电压的极性, 电机就反转。
PWM脉宽调速
PWM(脉冲宽度调制)是通过控制固定电压的 直流电源开关频率, 改变负载两端的电压, 从 而达到控制要求的一种电压调整方法。在PWM 驱动控制的调整系统中, 按一个固定的频率 来接通和断开电源, 并且根据需要改变一个 周期内“接通”和“断开”时间的长短。通 过改变直流电机电枢上电压的“占空比”来 达到改变平均电压大小的目的, 从而来控制 电动机的转速。也正因为如此, PWM又被称为 “开关驱动装置”。
, 软件简单。但每个按键需要占用一个输入口线, 在 按键数量较多时, 需要较多的输入口线且电路结构复杂, 故此种键盘适用于按键较少或操作速度较高的场合。
数码管显示部分 本设计使用的是一种比较常用的是四位数码 管, 内部的4个数码管共用a~dp这8根数据线, 为使用提供了方便, 因为里面有4个数码管, 所以它有4个公共端, 加上a~dp, 共有12个引 脚, 下面便是一个共阴的四位数码管的内部 结构图(共阳的与之相反)
基于51单片机红外遥控电机课程设计说明书

课程实训报告课程名称:单片机与接口技术实训题目:红外控制直流电机正反转任务书一、实训任务设计一款基于AT89C51单片机用红外遥控控制电机的正反转加减速。
二、设计要求1. 基本要求1).用无线模块控制电机的正反转加减速,实现自动化控制。
2).通过对AT89C51单片机的编程,实现直流电机的正反转,加减速。
3).写出详细的设计报告。
4).给出全部电路和源程序。
2. 发挥部分1).可通过PC机,对系统编程,实现直流电机转速的快慢。
摘要随着科技的不断进步,人们进入了无线电时代,它为我们的生活带来了极大的方便。
像现在的移动电话,无线网络,无线鼠标,无线键盘等都已经融入了我们的生活当中。
从我们身边的电子产品就可以看出我们已经进入了无线电时代。
本设计就是一款基于AT89C51的用无线模块控制的电机的正反转以及它的加减速。
这非常适应于在工厂使用,特别是在工业控制中。
可以想象,机器在工厂运转时,我们只需要用无线遥控来控制电机的转速以及它的转向,这样我们就可以在远处来控制了,用不着再跑到电机的旁边来控制开关,为工厂生产带来了极大的方便。
软件上采用C51编程,主要编写了主程序,直流电机驱动程序,中断程序延时程序等。
经过调试,实现了对电机的控制。
关键词:AT89C51 L298 PWM 直流电机无线模块目录第一章绪论 (5)1.1 概述 (5)1.2 设计目的 (5)1.3 设计任务和内容 (5)第二章总体设计及核心器件简介 (7)2.1总体设计 (7)2.2 AT89C51 (7)2.3 L298 (9)引脚介绍: (10)2.4 伺服电机介绍 (11)2.5 PT2262/PT2272 (12)第三章单元电路模块设计 (17)3.1 复位电路 (17)3.2时钟电路 (18)3.3电机驱动电路图 (18)3.4PWM调速系统设计 (19)第四章软件编程设计 (21)4.1 设计思想 (21)4.2 流程图 (21)4.3源程序 (22)第五章设计心得和存在问题 (26)第一章绪论1.1 概述近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
基于单片机的直流电机控制系统

摘要本设计首先介绍了AT89S52单片机,L298驱动电路及直流电机的基本原理与功能;其次,设计直流电机实现转向、速度的控制方案;再次,在这些器件功能与特点的基础上,拟出设计思路,构建系统的总体框架,并利用LED数码管对测试结果进行显示;最后利用Proteus软件绘出电路图,同时写出设计系统的运行流程和相关程序。
整个系统通过写入单片机中的程序分配好控制字的存储单元以及相应的内存地址赋值;启动系统后,从单片机的I/O口输出控制脉冲,经过L298驱动电路对脉冲进行处理,输出能直接控制直流电机的脉冲信号。
本系统采用了低成本的AT89S52单片机芯片作为控制芯片,以按键做为输入达到对直流电机的启停、速度和方向的精确控制。
直流电机的驱动采用的是达林顿集成管L298,并且采用LED的进行显示。
在设计中,采用了PWM技术对电机进行控制,通过对占空比的计算达到精确调速的目的。
总之,本次设计出了操作简单、显示直观的直流电机控制系统。
关键字: AT89S52单片机;L298驱动芯片;直流电机。
AbstractThe design first introduced the AT89S52 single-chip microcomputer, L298 drive circuit and dc motor of the basic principle and function; Second, the design of dc motor to realize, the speed control scheme; and Again, in these devices based on the characteristics of the function and, draw up the design idea, construction of the whole system framework, and use of LED digital tube the results shows; Finally, using the Proteus software draw circuit diagram, at the same time, write design the operation of the system process and procedures. The whole system by writing to the single chip microcomputer program allocation good control of the word and the corresponding storage unit of the memory address assignment; Reboot your system, from single chip I/O mouth output control pulse, after L298 driving circuit pulse processing, the output can directly control dc motor of the pulse signal. This system USES a low cost AT89S52 single-chip microcomputer chip as control chip, with button as input to the keyboard to dc motor of the rev. Stop, speed and direction of the accurate control. Dc motor driver uses is the integration of L298 tube, and using the LED displayed. In the design, adopted PWM technology of motor control, through to the occupies emptiescompared to achieve the purpose of accurate calculation speed. All in all, this design out the operation is simple, direct display of dc motor control system.Key word:AT89S52 single-chip microcomputer; L298 driving chip; DC motor.目录1 绪论 (1)1.1 直流电机调速系统的发展 (1)1.2 开发背景 (2)1.3 选题的目的及意义 (3)1.4 研究方法 (4)2 系统方案设计 (5)2.1 概述 (5)2.2 总体设计任务 (5)2.3 系统总体设计方案论证 (6)2.4 系统总体设计方框图 (7)2.5 直流电机调速概述 (8)2.5.1 直流电机简介 (8)2.5.2 直流电机调速原理 (9)2.5.3 直流调速系统实现方式论证 (9)3 电机调速驱动设计 (11)3.1 PWM控制方式 (11)3.2 PWM控制的基本原理 (11)3.3 PWM 发生电路的设计 (13)3.4 功率放大驱动电路 (16)3.4.1 芯片L 298 性能及特点....................... ..163.4.2 L298芯片引脚的电气特性及功能 (17)3.4.3 L298驱动电机的逻辑功能 (19)4 硬件电路设计 (21)4.1 AT89S52的最小系统电路 (21)4.1.1 单片机芯片AT89S52介绍 (21)4.1.2单片机管脚说明 (22)4.1.3 时钟电路 (25)4.1.4 复位电路 (26)4.2 数码管显示 (27)4.3 排阻的简介 (27)4.4 显示电路与AT89S52单片机接口电路设计 (28)4.5 键盘与AT89S52单片机接口电路设计 (30)4.6 驱动电路与AT89S52单片机接口电路设计 (30)5 系统软件设计 (32)5.1 主程序设计 (33)5.2 子程序设计 (34)5.2.1 键盘子程序设计 (34)5.2.2显示子程序设计 (35)5.2.3 P W M控制程序设计 (36)5.3 系统仿真 (36)5.4 Proteus的简单使用 (37)6 设计总结 (39)致谢 (40)参考文献 (41)附录1 程序清单 (42)附录2 系统总图 (50)绪论1.1 直流电机调速系统的发展直流电气传动系统中需要有专门的可控直流电源,常用的可控直流电源有以下几种: 第一,最初的直流调速系统是采用恒定的直流电压向直流电动机电枢供电,通过改变电枢回路中的电阻来实现调速。
基于单片机的直流电机调速系统的课程设计

一、总体设计概述本设计基于8051单片机为主控芯片,霍尔元件为测速元件, L298N为直流伺服电机的驱动芯片,利用 PWM调速方式控制直流电机转动的速度,同时可通过矩阵键盘控制电机的启动、加速、减速、反转、制动等操作,并由LCD显示速度的变化值。
二、直流电机调速原理根据直流电动机根据励磁方式不同,分为自励和它励两种类型,其机械特性曲线有所不同。
但是对于直流电动机的转速,总满足下式:式中U——电压;Ra——励磁绕组本身的内阻;——每极磁通(wb );Ce——电势常数;Ct——转矩常数。
由上式可知,直流电机的速度控制既可以采用电枢控制法也可以采用磁场控制法。
磁场控制法控制磁通,其控制功率虽然较小,但是低速时受到磁场和磁极饱和的限制,高速时受到换向火花和换向器结构强度的限制,而且由于励磁线圈电感较大,动态响应较差,所以在工业生产过程中常用的方法是电枢控制法。
电枢控制法在励磁电压不变的情况下,把控制电压信号加到电机的电枢上来控制电机的转速。
传统的改变电压方法是在电枢回路中串连一个电阻,通过调节电阻改变电枢电压,达到调速的目的,这种方法效率低,平滑度差,由于串联电阻上要消耗电功率,因而经济效益低,而且转速越慢,能耗越大。
随着电力电子的发展,出现了许多新的电枢电压控制法。
如:由交流电源供电,使用晶闸管整流器进行相控调压;脉宽调制(PWM)调压等。
调压调速法具有平滑度高、能耗低、精度高等优点,在工业生产中广泛使用,其中PWM应用更广泛。
脉宽调速利用一个固定的频率来控制电源的接通或断开,并通过改变一个周期内“接通”和“断开”时间的长短,即改变直流电机电枢上的电压的“占空比”来改变平均电.压的大小,从而控制电动机的转速,因此,PWM又被称为“开关驱动装置”。
如果电机始终接通电源是,电机转速最大为Vmax,占空比为D=t1/t,则电机的平均转速:Vd=Vmax*D,可见只要改变占空比D,就可以调整电机的速度。
平均转速Vd与占空比的函数曲线近似为直线。
单片机课程设计完整版《PWM直流电动机调速控制系统》

单片机原理及应用课程设计报告设计题目:学院:专业:班级:学号:学生姓名:指导教师:年月日目录设计题目 (3)1 设计要求及主要技术指标: (4)1.1 设计要求 (4)1.2 主要技术指标 (5)2 设计过程 (6)2.1 题目分析 (9)2.2 整体构思 (10)2.3 具体实现 (12)3 元件说明及相关计算 (14)3.1 元件说明 (14)3.2 相关计算 (15)4 调试过程 (16)4.1 调试过程 (16)4.2 遇到问题及解决措施 (20)5 心得体会 (21)参考文献 (22)附录一:电路原理图 (23)附录二:程序清单 (24)设计题目:PWM直流电机调速系统本文设计的PWM直流电机调速系统,主要由51单片机、电源、H桥驱动电路、LED液晶显示器、霍尔测速电路以及独立按键组成的电子产品。
电源采用78系列芯片实现+5V、+15V对电机的调速采用PWM波方式,PWM是脉冲宽度调制,通过51单片机改变占空比实现。
通过独立按键实现对电机的启停、调速、转向的人工控制,LED实现对测量数据(速度)的显示。
电机转速利用霍尔传感器检测输出方波,通过51单片机对1秒内的方波脉冲个数进行计数,计算出电机的速度,实现了直流电机的反馈控制。
关键词:直流电机调速;定时中断;电动机;PWM波形;LED显示器;51单片机1 设计要求及主要技术指标:基于MCS-51系列单片机AT89C52,设计一个单片机控制的直流电动机PWM 调速控制装置。
1.1 设计要求(1)在系统中扩展直流电动机控制驱动电路L298,驱动直流测速电动机。
(2)使用定时器产生可控的PWM波,通过按键改变PWM占空比,控制直流电动机的转速。
(3)设计一个4个按键的键盘。
K1:“启动/停止”。
K2:“正转/反转”。
K3:“加速”。
K4:“减速”。
(4)手动控制。
在键盘上设置两个按键----直流电动机加速和直流电动机减速键。
在手动状态下,每按一次键,电动机的转速按照约定的速率改变。
PIC单片机控制直流电机转速毕业设计

,a click to unlimited possibilities
汇报人:
目录 /目录
01
PIC单片机介 绍
02
直流电机介绍
03
PIC单片机控 制直流电机转 速的原理
04
系统实现
05
毕业设计总结 与展望
01 PIC单片机介绍
PIC单片机的特点
体积小,功耗低 速度快,处理能力强 集成度高,功能丰富 易于编程,开发周期短 应用广泛,适用于各种控制系统
按照结构分类:有刷直流电机、无刷直流 电机
按照用途分类:驱动直流电机、控制直流 电机、调速直流电机、伺服直流电机
按照转速分类:高速直流电机、低速直流 电机
按照功率分类:大功率直流电机、小功率 直流电机
按照控制方式分类:开环控制直流电机、 闭环控制直流电机
直流电机的应用
Байду номын сангаас
工业自动化: 用于控制生产 线、机械臂等
PIC单片机的作用: 通过控制电枢电 流的大小来控制 转速
调速方法:通过 改变电枢电压或 电枢电流来改变 转速
调速效果:可以 实现平滑、稳定 的调速效果
PIC单片机PWM输出控制直流电机转速
PIC单片机:一种 微控制器,用于控 制各种电子设备
PWM输出:一种 脉冲宽度调制技术, 用于控制直流电机 转速
软件编程与调试
调试工具:串口调试助手 编程环境:Keil uVision5 编程语言:C语言
程序结构:主程序、子程序、 中断服务程序
调试步骤:编译、链接、下 载、运行、调试
调试技巧:断点设置、单步 执行、变量观察、堆栈跟踪
系统测试与优化
单片机控制的直流电机正反转和加速减速C程序

单片机控制的直流电机正反转和加速减速C程序简介本文档旨在向读者介绍如何使用单片机控制直流电机实现正反转和加速减速功能的C程序。
程序实现正反转控制以下是控制直流电机正反转的C程序示例:include <avr/io.h>void motor_forward(){// 设置引脚控制直流电机正转}void motor_reverse(){// 设置引脚控制直流电机反转}int main(){// 初始化单片机引脚设置和其他必要的配置while (1){// 检测是否需要正转或反转,根据需要调用motor_forward()或motor_reverse()函数}return 0;}加速减速控制以下是控制直流电机加速减速的C程序示例:include <avr/io.h>void motor_speed_up(){// 调整引脚控制直流电机的占空比以加速电机转速}void motor_slow_down(){// 调整引脚控制直流电机的占空比以减速电机转速}int main(){// 初始化单片机引脚设置和其他必要的配置while (1){// 检测是否需要加速或减速,根据需要调用motor_speed_up()或motor_slow_down()函数}return 0;}结论通过上述示例程序,我们可以实现通过单片机控制直流电机的正反转和加速减速功能。
读者可以根据实际需求进行相应的参数调整和功能扩展。
请注意,上述示例程序仅为演示目的,具体的引脚配置和控制方式需根据实际硬件和单片机型号进行调整。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录第1章总体设计方案 (1)1.1 总体设计方案 (1)1.2 软硬件功能分析 (1)第2章硬件电路设计 (2)2.1 单片机最小系统电路设计 (2)2.2直流电机驱动电路设计 (2)2.3 数码管显示电路设计 (4)2.4 独立按键电路设计 (5)2.5 系统供电电源电路设计 (5)2.5.1直流稳压电路中整流二极管的选取: (6)2.5.2直流稳压电路中滤波电容的选取: (6)第3章系统软件设计 (7)3.1 软件总体设计思路 (7)3.2 主程序流程设计 (7)附录1 总体电路图 (10)附录2 实物照片 (11)附录3 C语言源程序 .......................................12实习报告第1章总体设计方案1.1 总体设计方案早期直流传动的控制系统采用模拟分离器件构成,由于模拟器件有其固有的缺点,如存在温漂、零漂电压,构成系统的器件较多,使得模拟直流传动系统的控制精度及可靠性较低。
随着计算机控制技术的发展,微处理器已经广泛使用于直流传动系统,实现了全数字化控制。
由于微处理器以数字信号工作,控制手段灵活方便,抗干扰能力强。
所以,全数字直流调速控制精度、可靠性和稳定性比模拟直流调速系统大大提高。
所以,本次实习采用了驱动芯片来驱动直流电机,并运用单片机编程控制加以实现。
系统设计采用驱动芯片来控制的,所以控制精度和可靠性有了大幅度的提高,并且驱动芯片具有集成度高、功能完善的特点,从而极的大简化了硬件电路的设计。
图1.1 直流电机定时正反转方案1.2 软硬件功能分析本次实习直流电机控制系统以STC89C52单片机为控制核心,由按键输入模块、LED显示模块及电机驱动模块组成。
采用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给L293D直流电机驱动芯片发送PWM波形,H 型驱动电路完成电机正,反转控制;同时单片机不停的将变化的定时时间送到LED数码管完成实时显示。
第页 1实习报告第2章硬件电路设计单片机最小系统电路设计2.1单片机最小系统设计是单片机应用系统设计的基础。
STC89C52单片机最小系统2.1电路如图所示。
单片机最小系统图2.1直流电机驱动电路设计2.2图2.2 直流电机驱动电路提供L293D的;36 V至4.5 V,电压是从1 A是提供双向驱动电流高达L293D 的。
两个设备是专为驱动等感至4.5 V36 V毫安,电压是从双向驱动电流高达600高电压提供电性负载继电器,电磁阀,直流双极步进和马达,也可以给其他高电流/第页 2实习报告源负载。
兼容所有的TTL输入。
每个输出都是推拉式驱动电路,与达林顿三极管和伪达林源。
启用1,2 EN驱动器和3,4 EN驱动器。
当使能输入为高电平时,相关联的驱动器被启用和他们的输出处于活动状态,并在其输入端的同相。
当使能输入为低,这些驱动器被禁用其输出关闭,在高阻抗状态。
【PS:1,2EN为1和2的使能端(高电平使能);3,4EN同理】用适当的数据输入端,每对驱动程序的形式一个完整的H桥可逆驱动器适用于电磁阀或电机应用。
L293D外部输出为高速钳位二极管,应使用电感的瞬态抑制。
VCC1和VCC2分开,提供逻辑输入,以尽量减少设备功耗。
L293D的工作温度是从0°C至70°C外部引脚排列图L293D2.3 图在热关断模式下,输出的是高阻态,而不管输入电平。
页第 3实习报告图2.4 逻辑图电机驱动电路组要是由L293D芯片组成,单片机P3.4,P3.6,P3.7输出的信号经过L293D芯片后直接与直流电机相连,从而控制直流电机的运行。
其中VCC1接+5V电源,VCC2接+12V电源。
2.3 数码管显示电路设计本设计利用数码管作为显示单元,采用动态显示技术,电路如图2.5所示。
图2.5 显示电路电路的接法决定了必须采用逐位扫描显示方式。
即从段选口送出某位LED的字型码,然后选通该位LED,并保持一段延时时间。
然后选通下一位,直到所有位扫描完。
第页 4实习报告2.4 独立按键电路设计独立式键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。
因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下。
独立按键电路图2.6系统供电电源电路设计2.5电源,所采用的电源电路是由整流电路和三端+12V+5V电源和本系统需要采用稳压器组成的。
电路输出电压和最大输出电流决定于所选三端稳压器。
其电源电路所示。
如图2.7+12V电源供电电路2.7 +5V和图页第 5实习报告直流稳压电路中整流二极管的选取:2.5.11)2?1(????t)sin Utd(2U20(AV)?π0U为副边其中电压2解得220.9U?U2?U)2?2(20(AV)πU的实现了全波整流电路,他将由于整流桥电路2负半周也利用起来,所以在变压器副边电压有效值相同的情况下,输出电压的平均值是半波整流电路的两倍。
输出电流的平均值(即负载电阻中的电流平均值)0.9UUo2(AV)?Io?(AV))32?(RR LL在单相桥式整流电路中,因为每只二极管只在变压器副边电压的半个周期通过电流,所以每只二极管的平均电流只有负载电阻上的电流的平均值的一半,即0.45UUo2(AV))(2?4?Io?(AV)RR LL与半波整流电路中的平均电流相同。
二极管所能承受的最大反向电压)52?(22UU?max R%10?的余考虑到电网电压的波动范围为_x0010_,在实际选用二极管时,应至少有U和最高反向工作电压分别为量,选择最大整流电流I RMF2(A V)11.IoI.1U1 ??F2)?6(2?R2L)(2?7U21U.1 2RM? 2.5.2直流稳压电路中滤波电容的选取:U U O(AV)?R:输出电压的平均值)VO(A LI L(AV)I负载:电流的平均值L(AV)TT5)~C?(3?。
.12U时,当C?(3~5)U?2O(A V)2R R2L L%?10点解电容的耐压值应,由于采用电解电容,考虑到电网电压的波动范围为U121.。
大于2第页 6实习报告第3章系统软件设计3.1 软件总体设计思路经过前几章的设计工作,系统的硬件电路设计已经完成了。
然而,对于一个完整的设计系统来说,只有硬件电路的设计完成是不够的,它必须通过软件编程来实现系统工作的控制功能,从而才能实现电路应有的系统功能。
单片机系统的软件设计主要使用汇编语言或高级语言。
汇编语言与系统硬件的关系密切,可方便地实现诸如中断管理以及模拟/数字量的输入/输出等功能,具有占用系统资源小、执行速度快的特点,但是,对复杂的大型应用系统,其代码可读性差,并不利于升级和维护。
高级语言的代码效率和长度都不如汇编语言,但其结构清晰、可读性好、开发周期短、有极强的可移植性,在多数应用方面执行效率与汇编语言的差距也不大,近年来得到了极为广泛的应用。
而C语言既有高级语言的各种特点,又可对硬件进行操作,并可进行结构化程序设计。
用C语言编写的程序较容易移植,可生成简洁、可靠的目标代码,用C语言进行单片机计算机开发已经是必然的发展趋势。
本设计的整体思路为:主程序中循环的调用按键程序,通过按键从而使单片机输出变化的定时时间和控制电机正反转,从而控制直流电机达到不同的旋转效果,并通过数码管将变化的定时时间显示出来。
本设计以单片机作为系统的核心控制单元,运用C语言进行编程工作,按照工作流程来实现设计要求的控制直流电机的运行状态。
3.2 主程序流程设计直接应用STC89C52的软件方法实现电机驱动和定时时间的设置与变化。
其流程图如图3.1所示。
开始时打开电源开关对电路供电,完成系统初始化和显示初始化,数码管显示0059,倒计时开始,按键循环扫描,设置键按下,倒计时停止,由加减键控制定时时间,确定键按下,进入中断,倒计时开始,电机启动,结束时,电机停止,显示恢复初始化。
第页7实习报告开始系统初始化显示初始化调用按键子中断处理程序定时中断10定时中断为是否有键按下无有、电机正反转系统定时键处理子程发送数据至中断返处理器3.1 系统主单片机总程序框图图第页8实习报告实习总结第页9实习报告附录1 总体电路图第页10实习报告附录2 实物照片第页11实习报告附录3 C语言源程序#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit MOTOR_A2 = P3^6;sbit MOTOR_A1 = P3^7;sbit EN_MOTOR_A = P3^4 ;//uchar code segcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code segcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0,1,2,3,4,5,6,7,8,9,//uchar code dispbit[]={0x0e,0x0d,0x0b,0x07};uchar code dispbit[]={0xef,0xdf,0xbf,0x7f};//数码管位选位uchar buffer[]={0,0,0,0};uint min=59,sec=59;uint status=0;//函数声明void delayMS(uint t) ;void keyprocess(uchar key);void display();void timer0();void MotorStart();void delayS(uint b);main(){bit keyrelease;uchar buf;uchar keyinput;keyrelease=1;buf=0xff;TMOD=0x01; //T0工作在方式1,16位计数器TH0=0xFC; //定时器0设置延时1ms中断初始值TL0=0x18;第页12实习报告TR0=1;IE=0x82; //开定时器0中断status=0;while(1) //键扫描程序{keyinput=P1&0x0f;if(keyinput!=0x0f){delayMS(10);if(keyinput!=0x0f){buf=keyinput;P1=0xff;while(P1!=0xff)P1=0xff;调用按键处理函数keyprocess(buf); //buf=0xff;}}display();}}//延时程序void delayMS(uint t) //晶振频率12MHZ{uint i;while(t--)for(i=0;i<125;i++);}//按键处理函数void keyprocess(unsigned char key) //键值处理,正常计时,设置时分秒{switch (key){第页13实习报告case 0x0e:status++; //按下设置键TR0=0;if (status>=3) status = 0;break;case 0x0d:1 1 switch(status) //按下加键,3种模式下加{case 0x01:if(min<59) min++;else min=0;break;case 0x02:if(sec<59) sec++;else sec=0;break;}break;case 0x0b:1// switch(status) 按下减键{min--; case 0x01:if(min>0)else min=59;break;sec--; case 0x02:if(sec>0)else sec=59;break;}break;case 0x07: TR0=1;MotorStart();default:break;}}第页14实习报告//数码管显示函数void display(){uchar i; //正常计时显示{buffer[0]=min/10; // 显示分的十位buffer[1]=min_x0010_; // 显示分的个位buffer[2]=sec/10; // 显示秒的十位buffer[3]=sec_x0010_; // 显示秒的个位for(i=0;i<4;i++){P0=segcode[buffer[i]];P2=dispbit[i];delayMS(1); //防止数码管显示的时候闪动P2=0xff;}}}//定时器0中断函数void timer0() interrupt 1 using 2 中断服务函数,第二组工作寄存器//T0 {static uint count;// 定时器0设置初始值1ms中断初始值TH0=0xFC;TL0=0x18;TR0=1;//正常计时count++;到,以下为时钟的正常走钟逻辑定时1S if(count>=1000) //{count=0;sec--;if(sec==0){页第15实习报告sec=59;min--;if(min==0&&sec==0){P2=0xff;}}}}void MotorStart(){EN_MOTOR_A = 1;MOTOR_A2 = 1;MOTOR_A1 = 0;delayS(60);EN_MOTOR_A = 0;delayS(60);EN_MOTOR_A = 1;MOTOR_A2 = 0;MOTOR_A1 = 1;delayS(60);}12MHZ //晶振频率void delayS(uint b){uint j;while(b--)for(j=0;j<2000;j++);}第页16。