基于单片机的直流电机

合集下载

基于单片机的直流电机调速系统设计

基于单片机的直流电机调速系统设计

直流电机转速 :
根据基尔霍夫第二定律,得到电枢电压电动势平衡方程式 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个引 脚, 下面便是一个共阴的四位数码管的内部 结构图(共阳的与之相反)

基于stm32单片机的直流电机调速系统设计

基于stm32单片机的直流电机调速系统设计

基于stm32单片机的直流电机调速系统设计
本文介绍一种基于STM32单片机的直流电机调速系统设计,主要包括硬件电路设计和软件程序设计两部分。

硬件电路设计:
该电机调速系统的主要硬件电路包括电源模块、STM32单片机控制电路、直流电机驱动电路和反馈电路。

1. 电源模块
电源模块包括AC/DC变换模块和稳压模块,用于将输入的AC电压转换为适宜单片机和电机工作的DC电压。

2. STM32单片机控制电路
STM32单片机控制电路包括主控芯片STM32单片机、晶振、复位电路和下载程序电路等。

3. 直流电机驱动电路
直流电机驱动电路包括电机驱动芯片(如L298N)和电机,用于控制电机的转
速和方向。

4. 反馈电路
反馈电路包括编码器和光电传感器等,用于实现电机转速的反馈和闭环控制。

软件程序设计:
该电机调速系统的软件程序采用C语言编写,主要包括定时器计数、PWM输出控制、编码器读取、PID算法控制等模块。

1. 定时器计数
通过STM32单片机内部定时器计数来实现电机转速的测量和控制。

2. PWM输出控制
采用STM32单片机内部PWM输出控制模块控制电机的转速,并实现电机方向的控制。

3. 编码器读取
通过编码器读取电机的转速信息,并反馈到单片机进行控制和显示。

4. PID算法控制
采用PID(比例、积分、微分)算法控制电机的转速,实现闭环控制,提高控制精度。

总之,基于STM32单片机的直流电机调速系统设计,既可以提高电机运行的效率和精度,又可以简化电路结构和减小系统成本,具有较好的应用前景。

基于单片机STC89C52的直流电机PWM调速控制系统

基于单片机STC89C52的直流电机PWM调速控制系统

第一章:前言Pwm 电机调速原理对于电机的转速调整,我们是采用脉宽调制(PWM)办法,控制电机的时候,电源并非连续地向电机供电,而是在一个特定的频率下以方波脉冲的形式提供电能。

不同占空比的方波信号能对电机起到调速作用,这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上,这样,改变在始能端EN1 和EN2 上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了转速。

此电路中用微处理机来实现脉宽调制,通常的方法有两种:(1)用软件方式来实现,即通过执行软件延时循环程序交替改变端口某个二进制位输出逻辑状态来产生脉宽调制信号,设置不同的延时时间得到不同的占空比。

(2)硬件实验自动产生PWM 信号,不占用CPU 处理的时间。

这就要用到STC89C52的在PWM模式下的计数器1,具体内容可参考相关书籍。

51 单片机PWM 程序产生两个PWM,要求两个PWM 波形占空都为80/256,两个波形之间要错开,不能同时为高电平!高电平之间相差48/256,PWM 这个功能在PIC 单片机上就有,但是如果你就要用51 单片机的话,也是可以的,但是比较的麻烦.可以用定时器T0来控制频率,定时器T1 来控制占空比:大致的的编程思路是这样的:T0 定时器中断是让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1 是让IO 口输出低电平,这样改变定时器T0 的初值就可以改变频率,改变定时器T1 的初值就可以改变占空比。

前言:直流电机的定义:将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。

近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,需要满足生产过程自动化系统各种不同的特殊要求,从而对直流电机提出了较高的要求,改变电枢回路电阻调速、改变电压调速等技术已远远不能满足现代科技的要求,这是通过 PWM 方式控制直流电机调速的方法就应运而生。

基于单片机的无刷直流电机的控制系统设计

基于单片机的无刷直流电机的控制系统设计

【基于单片机的无刷直流电机的控制系统设计】1. 引言无刷直流电机(BLDC),作为一种高效、低噪音、长寿命的电动机,被广泛应用于各种领域。

而采用单片机进行控制,实现对BLDC的精准控制,则成为现代工业中的热门技术。

本文将围绕基于单片机的无刷直流电机控制系统设计展开探讨,深入剖析其原理和实现过程。

2. 无刷直流电机的工作原理无刷直流电机是一种采用电子换相技术的电机,其工作原理与传统的直流电机有所不同。

它不需要使用碳刷和电刷环来实现换向,而是通过内置的电子控制器来精确控制转子上的永磁体和定子上的电磁线圈的相互作用,实现转子的旋转运动。

3. 单片机在无刷直流电机控制中的作用单片机在无刷直流电机的控制系统中扮演着核心角色,它通过内置的PWM模块生成PWM波形,用于控制电机驱动器中的功率器件,同时监测电机的运行状态,并根据需要进行调整和反馈控制,实现对电机的精准控制。

4. 基于单片机的无刷直流电机控制系统设计(1)硬件设计在设计基于单片机的无刷直流电机控制系统时,需要考虑到电机的功率和控制要求,选择合适的单片机和电机驱动器,设计电机驱动电路以及检测装置,确保系统能够稳定可靠地工作。

(2)软件设计利用单片机的PWM模块生成PWM波形,采用适当的控制算法(如PID控制算法),编写控制程序,实现对无刷直流电机的精准控制。

考虑到系统的实时性和稳定性,需要进行充分的软件优化和调试。

5. 个人观点和理解在基于单片机的无刷直流电机控制系统设计中,充分理解无刷直流电机的工作原理和单片机的控制特点,合理选择硬件和编写软件,是至关重要的。

只有系统全面、深刻地理解,才能设计出高质量、稳定可靠的控制系统。

6. 总结本文围绕基于单片机的无刷直流电机控制系统设计展开了探讨,从无刷直流电机的工作原理、单片机在控制系统中的作用,到具体的硬件设计和软件设计,全面、深入地阐述了相关内容。

希望通过本文的阐述,读者能够对基于单片机的无刷直流电机控制系统设计有更深入的理解和应用。

基于单片机的直流电机调速系统的课程设计

基于单片机的直流电机调速系统的课程设计

一、总体设计概述本设计基于8051单片机为主控芯片,霍尔元件为测速元件, L298N为直流伺服电机的驱动芯片,利用 PWM调速方式控制直流电机转动的速度,同时可通过矩阵键盘控制电机的启动、加速、减速、反转、制动等操作,并由LCD显示速度的变化值。

二、直流电机调速原理根据直流电动机根据励磁方式不同,分为自励和它励两种类型,其机械特性曲线有所不同。

但是对于直流电动机的转速,总满足下式:式中U——电压;Ra——励磁绕组本身的内阻;——每极磁通(wb );Ce——电势常数;Ct——转矩常数。

由上式可知,直流电机的速度控制既可以采用电枢控制法也可以采用磁场控制法。

磁场控制法控制磁通,其控制功率虽然较小,但是低速时受到磁场和磁极饱和的限制,高速时受到换向火花和换向器结构强度的限制,而且由于励磁线圈电感较大,动态响应较差,所以在工业生产过程中常用的方法是电枢控制法。

电枢控制法在励磁电压不变的情况下,把控制电压信号加到电机的电枢上来控制电机的转速。

传统的改变电压方法是在电枢回路中串连一个电阻,通过调节电阻改变电枢电压,达到调速的目的,这种方法效率低,平滑度差,由于串联电阻上要消耗电功率,因而经济效益低,而且转速越慢,能耗越大。

随着电力电子的发展,出现了许多新的电枢电压控制法。

如:由交流电源供电,使用晶闸管整流器进行相控调压;脉宽调制(PWM)调压等。

调压调速法具有平滑度高、能耗低、精度高等优点,在工业生产中广泛使用,其中PWM应用更广泛。

脉宽调速利用一个固定的频率来控制电源的接通或断开,并通过改变一个周期内“接通”和“断开”时间的长短,即改变直流电机电枢上的电压的“占空比”来改变平均电.压的大小,从而控制电动机的转速,因此,PWM又被称为“开关驱动装置”。

如果电机始终接通电源是,电机转速最大为Vmax,占空比为D=t1/t,则电机的平均转速:Vd=Vmax*D,可见只要改变占空比D,就可以调整电机的速度。

平均转速Vd与占空比的函数曲线近似为直线。

基于单片机控制的直流电机调速系统设计

基于单片机控制的直流电机调速系统设计

基于单片机控制的直流电机调速系统设计一、引言直流电机在工业自动化领域中广泛应用,其调速系统的设计是实现自动控制的关键。

本文将介绍一种基于单片机控制的直流电机调速系统设计方案,主要包括电机原理、硬件设计、软件设计以及实验结果与分析等内容。

二、电机原理直流电机是一种将直流电能转换为机械能的装置,其原理基于电磁感应和安培定律。

电机由定子和转子两部分组成,定子上绕有恒定电流,产生磁场,而转子上带有电流,与定子的磁场互相作用,产生力矩使电机旋转。

三、硬件设计1.单片机选择在本设计中,选择了一款功能强大、性能稳定的单片机作为控制核心,例如使用ST C89C51单片机。

该单片机具有丰富的GP IO口和定时器/计数器等外设,适合进行电机控制。

2.电机驱动电路设计电机驱动电路主要包括功率电源、运放电路和驱动电路。

其中,功率电源为电机提供稳定的直流电源,运放电路用于信号放大和滤波,驱动电路则根据控制信号控制电机的转速。

3.速度测量电路设计为了实时监测电机的转速,需要设计速度测量电路。

常见的速度测量电路包括光电编码器、霍尔传感器等,通过测量转子上感应物体的变化来获得电机的转速信息。

四、软件设计1.程序框架软件设计的目标是实现对电机转速的控制和监测。

基于单片机的软件设计主要包括主程序的编写、中断服务程序的编写以及定时器的配置等。

2.控制算法常见的直流电机调速算法包括电压调速法、P WM调速法等。

根据实际需求选择合适的算法,并根据测量到的转速信号进行反馈控制,实现对电机转速的精确控制。

五、实验结果与分析设计完成后,进行实验验证。

通过设置不同的转速需求,观察电机的实际转速与设定转速的误差,并分析误差原因。

同时还可以测试电机在不同负载下的转速性能,以评估系统的稳定性和鲁棒性。

六、总结基于单片机控制的直流电机调速系统设计是实现自动控制的重要应用。

本文介绍了该系统的硬件设计和软件设计方案,并展示了实验结果。

通过系统实现电机转速的精确控制,可以广泛应用于工业自动化领域。

基于单片机的直流电机PWM调速控制系统的设计

基于单片机的直流电机PWM调速控制系统的设计

基于单片机的直流电机PWM调速控制系统的设计第一章:前言1.1前言:直流电机的定义:将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。

近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,需要满足生产过程自动化系统各种不同的特殊要求,从而对直流电机提出了较高的要求,改变电枢回路电阻调速、改变电压调速等技术已远远不能满足现代科技的要求,这是通过PWM方式控制直流电机调速的方法就应运而生。

采取传统的调速系统主要有以下的缺陷:模拟电路容易随时间飘移,会产生一些不必要的热损耗,以及对噪声敏感等。

而用PWM技术后,避免上述的缺点,实现了数字式控制模拟信号,可以大幅度减低成本和功耗。

并且PWM调速系统开关频率较高,仅靠电枢电感的滤波作用就可以获得平滑的直流电流,低速特性好;同时,开关频率高,快响应特性好,动态抗干扰能力强,可获很宽的频带;开关元件只需工作在开关状态,主电路损耗小,装置的效率高,具有节约空间、经济好等特点。

随着我国经济和文化事业的发展,在很多场合,都要求有直流电机PWM调速系统来进行调速,诸如汽车行业中的各种风扇、刮水器、喷水泵、熄火器、反视镜、宾馆中的自动门、自动门锁、自动窗帘、自动给水系统、柔巾机、导弹、火炮、人造卫星、宇宙飞船、舰艇、飞机、坦克、火箭、雷达、战车等场合。

1.2本设计任务:任务: 单片机为控制核心的直流电机PWM调速控制系统设计的主要内容以及技术参数:功能主要包括:1)直流电机的正转;2)直流电机的反转;3)直流电机的加速;4)直流电机的减速;5)直流电机的转速在数码管上显示;6)直流电机的启动;7)直流电机的停止;第二章:总体设计方案总体设计方案的硬件部分详细框图如图一所示。

示数码管显PWM单片机按键控制电机驱动基于单片机的直流电机PWM调速控制系统的设计键盘向单片机输入相应控制指令,由单片机通过P1.0与P1.1其中一口输出与转速相应的PWM脉冲,另一口输出低电平,经过信号放大、光耦传递,驱动H型桥式电动机控制电路,实现电动机转向与转速的控制。

基于单片机的无刷直流电动机控制系统研究 的文献综述2000字左右

基于单片机的无刷直流电动机控制系统研究 的文献综述2000字左右

基于单片机的无刷直流电动机控制系统研究的文献综述2000字左右研究无刷直流电动机控制系统是电气工程领域的一个重要课题,它涉及到控制理论、电机原理、嵌入式系统等多个学科领域。

以下是一个关于基于单片机的无刷直流电动机控制系统研究的文献综述,大约2000字左右:________________________________________文献综述:基于单片机的无刷直流电动机控制系统研究1. 引言无刷直流电动机(BLDC)以其高效率、低噪音和长寿命等优点在工业和家用电器中得到了广泛应用。

而基于单片机的无刷直流电动机控制系统,作为一种先进的电机控制技术,具有成本低、响应快、可靠性高等特点,受到了研究者们的广泛关注。

2. 无刷直流电动机的工作原理无刷直流电动机是一种将电能转换为机械能的装置,其工作原理基于电磁感应和电流的相互作用。

通过在电动机中的定子和转子上安装恰当的磁铁,配合适当的控制电路,可以实现对电机转速和转矩的精确控制。

3. 基于单片机的无刷直流电动机控制系统设计基于单片机的无刷直流电动机控制系统一般由三部分组成:传感器模块、控制算法和功率放大模块。

传感器模块用于获取电机的运行状态,包括转速、位置等信息;控制算法根据传感器获取的信息计算出适当的电机控制信号;功率放大模块将控制信号放大驱动电机。

4. 常用的控制算法常用的无刷直流电动机控制算法包括电枢电流控制、感应电动机模型控制、空间矢量调制控制等。

这些控制算法在实际应用中各有优缺点,研究者们通常根据具体的应用场景选择合适的算法。

5. 实验与应用基于单片机的无刷直流电动机控制系统已经在工业自动化、电动汽车、无人机等领域得到了广泛应用。

研究者们通过实验验证了该控制系统的稳定性、精度和可靠性,并不断改进和优化控制算法,以适应不同的应用需求。

6. 结论与展望基于单片机的无刷直流电动机控制系统是电机控制领域的一个重要研究方向,其在提高电机性能、降低能耗、推动电动化技术发展等方面具有重要意义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要本课程主要是设计一个基于单片机的直流电机 PWM 控制系统。

PWM 控制提高了调速范围,提高了调速精度,改善了快速性能、功率和功率因数。

系统在设计中被控对象采用 5V 的直流电机,以 MCS-51 单片机为控制核心,采用 LCD12864 液晶作为显示元件,进行软硬件的设计。

硬件电路由protel 设计制作,主要设计了液晶显示电路、键盘控制电路、复位电路、测速电路和驱动电路。

软件设计在 Keil 开发平台用 C 语言编写,程序采用模块化设计方案,包括液初始化程序、晶显示程序、键盘控制程序。

本系统 PWM 控制直流电机采用调压调速的方法,整体设计包括软件和硬件两个部分。

通过利用单片机产生 PWM 控制信号控制直流电机,详细介绍脉宽调制 ( PWM) 控制原理,直流电机的工作原理和数学模型以及用 H型桥电路基本原理设计的驱动电路。

通过硬件电路的模拟情况,说明系统运行正常,各个功能模块实现是可行的,控制精度比较高,能够满足系统的基本要求。

关键词:单片机;PWM;直流电机;L298N;LCD12864;目录一、设计任务 (1)二、设计方案 (1)三、系统硬件设计 (3)1、 STC52最小系统 (3)2、电机模块 (8)3、 L298N模块 (9)4、测速模块 (11)5、测压模块 (12)6、液晶模块 (13)7、按键模块 (15)8、灯光信号模块 (16)四、系统软件设计 (17)1、软件流程图 (17)2、 PWM程序设计 (18)3、测压程序设计 (18)4、测速程序设计 (19)5、液晶驱动程序设计 (20)6、菜单程序设计 (21)7、按键程序设计 (23)8、电机反电动势系数计算程序 (24)9、电机力矩系数计算程序 (25)10、逼近算法控制程序 (25)11、比例控制程序 (25)12、 PID控制程序 (26)五、直流调速系统动态数学模型的建立 (28)六、调速数据 (32)1、比例调速数据 (32)2、 PID调速数据 (33)3、逼近算法调速数据 (34)4、反电动势系数和电机力矩系数数据 (34)七、心得体会 (34)参考文献 (36)附录一硬件原理图 (37)附录二硬件PCB图 (38)附录三程序清单 (39)一、设计任务本课题设计主要的目的是为了能够准确及时的控制直流电动机的正转、反转、停止、加速和减速功能可以准确调节控制直流电机的转速。

同时,本设计可以自动测量计算直流电机的反电动势系数以及马达的力矩系数。

直流电机的转速控制分别采用的调速方案:PID控制调速。

本系统采取了上位机,人机交流界面更加人性化。

二、设计方案1、任务分析本设计要求中央控制芯片具有定时计数的功能,一定的程序存储空间,还要有足够的IO外接端口。

由于本设计以LCD12864作为人机交流的显示界面,所以要求中央控制芯片具有一定的电流驱动能力。

LCD、电机控制信号、LED指示灯、独立按钮,电压采集这些都需要占用大量IO接口,所以要求中央控制芯片要有足够多的外部接口以满足需要。

本设计要求能准确控制电机的转向以及转速,所以要求电机的控制芯片就有较强的调速控制功能以及转向控制功能。

本设计要求所采用的的直流电机转速具有一定的可调空间以及足够的灵敏度。

本设计涉及直流电机转速的采集,电机输出电压的测量,所以要求本系统具有测量电机转速和采集电压的功能。

2、方案流程图3、系统结构框图显示器A/D变换器单片机核心键盘和开关电平转换 H桥隔离和驱动电源测速马达马达一、系统硬件设计1、STC89C521、电源(1) VCC-芯片电源,接+5V,(2) VSS-接地端;注意:用万用表测试单片机引脚电流表一般为0V或者5V,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介0V-5V之间,其实这只是万用表反映没这么快而已,在某一瞬间单片机引脚电流不是保持在通常情况下0V或者5V的。

2、时钟:XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。

3、控制线:控制线共有4根(1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲①ALE功能:用来锁存PO口送出的低8位地址②PROG功能:片内有EPROM的芯片,在EPROG编程期间,此引脚输入编程脉冲。

(2)PSEN:外ROM读选通信号。

(3)RST/VPD:复位/备用电源。

① RST(Reset)功能:复位信号输入端。

② VPD功能:在VCC掉电情况下,接备用电源。

(4)EA/VPP:内外ROM 选择/片内EPROM编程电源。

①EA功能:内外ROM选择端。

②VPP功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源VPP。

4、I/O线89C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。

P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总路线)。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

STC89C52单片机的引脚如图1所示图1 STC89C52单片机引脚图(1)系统时钟电路本系统采用11.0592MKZ的外部石英晶振作为单片机的时钟脉冲输入。

电路图如图2所示。

图2 时钟电路(2)复位电路本系统采用的是上电复位方式。

如图3所示。

图3 复位电路2、电机模块直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。

它是能实现直流电能和机械能互相转换的电机。

当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。

本系统采用带M130直流电机。

其实物图如图5所示。

图5 电机3、L298N模块(1)ADC结构图如6所示采用7.5V可充电两节干电池对EnA供电图6 ADC的结构(2)引脚说明见表3-1:表3-1 L298N引脚说明表MW.15Name Function1;15 Sense A; Sense B 在这个引脚和低之间可以接感应电阻用于控制负载电流2;3 Out 1; Out 2 A桥的输出端口;流经这两个端子连接的负载电流在端子1被检测4 VS 用于驱动负载的功率输出电源电压。

在这个引脚和地之间必须接一个100nf的无极性电容5;7 Input 1; Input 2 A桥TTL输入端6;11 Enable A; EnableB TTL使能输入端:低电平使桥A或桥B无效8 GND 地9 VSS 逻辑模块的电源供应。

引脚与地间必须接一个100nF的电容10; 12 Input 3; Input 4 B桥TTL输入端13; 14 Out 3; Out 4 B桥的输出;流经这两个端子连接的负载电流在端子15被检测4、按键模块本系统设计了5个独立按键,低电平有效。

分别用作电机正转按键、电机反转按键、电机加速按键、电机减速按键,电机停止按键。

其电路原理图如图12所示。

图12 按键电路图5、液晶模块(1)概述带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×4行16×16点阵的汉字也可完成图形显示低电压低功耗是其又一显著特点。

由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

(2)基本特性(1)、低电源电压(VDD:+3.0--+5.5V)(2)、显示分辨率:128×64点(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)(4)、内置 128个16×8点阵字符(5)、2MHZ时钟频率(6)、显示方式:STN、半透、正显(7)、驱动方式:1/32DUTY,1/5BIAS(8)、视角方向:6点(9)、背光方式:侧部高亮白色LED,功耗仅为普通LED的1/56、光电测速模块光电测速传感器,包括传感器和码盘两部分二、系统软件设计1、软件流程图开始初始化串口连接函数按键动作函数上位机控制函数正反,加减控制液晶显示注释:初始化定时器,中断,串口中断,初始化12864,初始化PWM的值。

按键动作函数和上位机控制包括正、反、加减,停止函数。

液晶显示包括电流显示函数、转速显示函数。

2、测速程序设计#include <reg52.h>#include <intrins.h>#include"jianpan.h"#include"12864.h"#include"cesu.h"#include"uart.h"sbit INA=P1^0; //正转sbit INB=P1^1; //反转sbit ENA=P1^2; //控制通断unsigned char tt=0;unsigned int ttcs=0;unsigned char num=0;unsigned char p;bit ttflag=0;void add_dec(); //声明加减速函数(1)系统主程序void main(){init(); //初始化定时器,中断,串口中断main12864(); //初始化12864pwm=25; //初始PWM值设置25while(1){Uart_Main(); //串口主函数jianpan(); //按键函数kongzhi(); //正反,加减控制display_hanzi(); //显示汉字display_date(); //显示数据if(pwmflag==0) //正转{pos(0,0); //第一行第一例开始for(num=0;num<4;num++){//显示“前进”frontwrite_date(table_front[num]);delay12(5);}}if(pwmflag==1) //反转{pos(0,0);for(num=0;num<4;num++){write_date(table_back[num]); //显示后退delay12(1);}}}}(1)初始化函数程序void init(){TMOD=0x21; //串口中断;定时器0工作方式1 TH0=(65536-2000)/256; //2msTL0=(65536-2000)%256;TH1=0xfd; //初值 9600TL1=0xfd;/*******定时器0*********/EA=1;ET0=1; //允许C/T1申请中断TR0=0;/*****外部中断0*******/IT0 = 1;EX0 = 1;/*******串口中断配置***************/ES=1; //串行口中断允许TR1=1;SM0=0;SM1=1;//工作方式1;波特率可以变REN=1; //允许接收控制位}/******定时器0************/void timer0() interrupt 1{TH0=(65536-2000)/256; //2msTL0=(65536-2000)%256;tt++;ttcs++;if(tt>=50) tt=0; //T=100msif(pwm>=50) pwm=50;if(pwm<=0) pwm=0;if(pwmflag==0) //正转标志位{if(tt<=pwm){ENA=1;INA=1;INB=0; //Ton }else{ENA=0;INA=1;INB=1; //Toff }}if(pwmflag==1){if(tt<=pwm){ENA=1;INA=0;INB=1; //Ton }else{ENA=0;INA=1;INB=1; //Toff }}if(ttcs==250) //每当250ms算一次外部中断{EX0=0;ttcs=0;csnum2=csnum1*10/3;csnum1=0;EX0=1;}}/******外部中断0**********/void exint0() interrupt 0 //(location at 0003H){csnum1++;}(2)12864.h程序#ifndef _12864_H_#define _12864_H_void main12864();void init12864();void pos(unsigned char x,unsigned char y); void write_date(unsigned char date);void delay12(unsigned char z);extern unsigned char code table_front[]; extern unsigned char code table_stop[]; extern unsigned char code table_back[]; extern unsigned char code table_add[]; extern unsigned char code table_dec[]; extern unsigned char code table_i[]; extern unsigned char code table_speed[]; extern unsigned char tablenum[];#endif(3)Jianpan.h程序#ifndef _JIANPN_H_#define _JIANPAN_H_void jianpan();void delay(unsigned char d);/****外部用到的变量要加extern进行外部变量声明*************/extern unsigned char kn1flag; //按键1标志位extern unsigned char kn2flag; //按键2标志位extern unsigned char kn0flag; //按键2标志位extern bit kn2; //extern bit kn3;extern bit kn4;#endif(4)cesu.h程序#ifndef _CESU_H_#define _CESU_H_extern unsigned int csnum1;extern unsigned int csnum2;//extern unsigned int T0count;#endif(5)uart.h程序#ifndef _UART_H_#define _UART_H_extern unsigned char flag;extern unsigned char a;extern unsigned char sbufdate;extern unsigned char pwm;extern unsigned char pwmflag;void Uart_Main();#endif(6)按键控制子程序/********按键对应控制**************/void kongzhi(){if(kn0flag==1) //按下P1^7停止{kn0flag=0;ENA=0;TR0=0;csnum1=0;pwm=0;pos(0,0);for(num=0;num<16;num++){write_date(table_stop[num]);delay12(1);}}if(kn1flag==1) //按下P3^3正转{kn1flag=0;TR0=1;pwmflag=0;add_dec();}if(kn2flag==1) //按下P3^4反转{kn2flag=0;TR0=1;pwmflag=1;add_dec();}}(7)PWM加减速控制子程序void add_dec() //加减程序{if(kn3==1) //按下松开P3^5;PWM加2 {kn3=0;TR0=1;pwm=pwm+2;pos(0,4);for(num=0;num<4;num++){write_date(table_add[num]);delay12(1);}}if(kn4==1) //按下松开P3^6;pwm减2{kn4=0;TR0=1;pwm=pwm-2;pos(0,4);for(num=0;num<4;num++){write_date(table_dec[num]);delay12(1);}}}(8)速度,PWM,电流显示子程序/******显示速度,PWM,电流****/void display_date(){pos(1,2); //速度for(p=0;p<1;p++){write_date(':');write_date(tablenum[csnum2/1000]);write_date(tablenum[csnum2/100%10]);write_date(tablenum[csnum2/10%10]);write_date(tablenum[csnum2%10]);delay12(1);write_date('r');write_date('/');write_date('m');write_date('i');write_date('n');delay12(1);}pos(2,2); //初略计算电流for(p=0;p<1;p++){write_date(':');write_date(tablenum[pwm*189/100/100%10]);write_date(tablenum[pwm*189/100/10%10]);write_date(tablenum[pwm*189/100%10]); //[(pwm*163/10/50)/4*6/50/4%10]);delay12(1);write_date('m');write_date('A');delay12(1);}pos(3,0); //pwm Ufor(p=0;p<1;p++){write_date('p');write_date('w');write_date('m');write_date(' ');write_date(tablenum[pwm/100%10]);write_date(tablenum[pwm/10%10]);write_date(tablenum[pwm%10]);delay12(1);write_date(' ');write_date(' ');write_date('U');write_date(':');write_date(tablenum[(pwm*63/50)/10%10]); // 电压 u=ton/T *Udwrite_date('.');write_date(tablenum[(pwm*63/50)%10]);delay12(1);}}(9)汉字显示子程序void display_hanzi() //汉字{pos(1,0); //第二行第一列开始for(num=0;num<4;num++){write_date(table_speed[num]); //显示“速度”speeddelay12(1);}pos(2,0); //第三行第一例开始for(num=0;num<4;num++){write_date(table_i[num]); //显示“电流:”idelay12(1);}}3、液晶驱动程序设计LCD12864驱动除了集成基本的读写函数、空闲检测等基本函数外,本系统还字符输出、图形绘制、画点、画直线、画圆等方便于界面显示的功能函数,并且采取了多个函数实现参数化,这有利于在其他文件中进行调用,传入不同参数可以出现不同效果。

相关文档
最新文档