1、1 主控模块 主控模块是用 AT89C52 单片机芯片来控制。AT89C52 是八位单片机,采 用 FLASHROM 技术,晶振时钟为 12MHz。AT89C52 是标准的 40 引脚双列 直插式集成电路单片机, 有 4 个八位并行双向 I/O 端口, 分别记作 P0、 P1、P2、P3.第 31 引脚需要接高电平是单片机选择内部程序存储器; P0 口的第 39 引脚接运行(停止)按钮;38 引脚接正转指示灯;37 引 脚接反转指示灯;36 引脚接加速按钮及加速闪烁灯;35 引脚接减速按 钮及减速闪烁灯;34 引脚接正转按钮;33 引脚接反转按钮;引脚 12 接正反转中断电路的与门;引脚 13
2、 接加减速按钮;引脚 9 接手动复位 电路,引脚 18 和 19 接上一个 12MHz 的晶振为单片机提供时钟信号; 引脚 40 为电源端 VCC,接+5V 的电源,第二十引脚为接地端 VSS。芯片 图如图(1)所示: 图(1) 2 按键模块、指示灯模块和与门电路 按键模块有五个按钮:运行(停止)按钮、正转按钮、反转按钮、加 速按钮和减速按钮。他们分别控制电动机的运行(停止,指示灯 D1 运 行亮) 、正转(正转时指示灯 D2 亮) 、反转(反转时指示灯 D3 亮) 、加 速 (按一下加速灯 D4 闪一下) 和减速 (按一下按钮减速灯 D5 闪一下) , 并分别与 AT89C52 芯片的 P0
3、.0(引脚 39) 、P0.5(引脚 34) 、P0.6(引 脚 33) 、P0.3(引脚 36) 、P0.4(引脚 35)相连接另 P0.1(引脚 38) P0.2(引脚 37)分别与正反转指示灯相连。同时通过上拉电阻 (排阻) 接 12V 高电平,另一端都接地。当按下一个键时,使对应的引脚处产 生低电平。同时对应与门连线产生低电平,经过与门逻辑运算后在第 12 或 13 引脚处产生低电平,引起一次中断。 下图(2)所示为按键模块、指示灯模块和与门电路: 图(2) 3 驱动模块、显示电动机旋转速度档数模块 单片机的驱动电路主要是用 ULN2004A 芯片来驱动,ULN2004A 芯片、驱 动
4、电路和显示电动机旋转速度档数的模块图如图(3)所示 图(3) ULN2004A芯片是一个7路反相器, 即第1到7引脚输入端为低电平时, 对应输出端第 16 到 10 引脚输出为高电平,反之亦然。第 9 引脚 COM 提供工作电压, 本设计中引脚 4、 5、 6、 7 分别与 AT89C52 芯片的 P2.0、 P2.1、P2.2、P2.3 口相连接,规定正转为顺时针方向的转动引脚 13、 12、11、10 连接到 A、B、C、D 上如图(3)所示,电动机中间引脚直 接与 12V 电压相接,目的是驱动电动机,使其正常工作。显示电动机 旋转状态模块如图(3)所示。 第四章 软件设计 按双四拍驱动的
5、程序见附录:双四拍程序。 程序设计流程图双四拍见附录:双四拍程序流程图 中断程序流程图见附录:中断程序流程图。 第五章 系统调试 1 调试程序 打开 WAVE6000,新建一个文件,并命名 NONAME12.ASM 保存,在此 文件中输入已编的程序,调试后正确,并生成 HEX 文件。 2 Proteus 仿真 打开 Proteus 软件,画附录总电路图所示电路,并保存。双击 AT89C52 芯片,添加“.HEX”文件,点击确认。 按下 Proteus 软件上的开始按钮后,电机不转动,指示运行(停止)的 灯(D1)不亮。如图(5)所示。 图(5) 当把 RUN 键按下并保持按下状态,按下正转(Z
6、)或反转(F)时数码显示 管上显示速度档(最大 1 档最小 5 档)各个灯的状态也有变化 双四拍正转速度档为 2 时如图(6) : 图(6) 双四拍反转速度档为 3 时如图(7) 图(7) 当按下加速或减速按钮时,电机做相应的加速或减速转动相应的指示灯(加 速 D4 减速 D5)闪一下,但是加速到一定程度(速度档为 1) ,不能再加速,减 速到一定程度(速度档为 5) ,不能再减速。按下停止按钮,电机停止转动。 附录附录:双四拍程序流程图双四拍程序流程图 Y Y N N N Y N N Y Y N Y N Y N N Y Y N N Y 开始 定义初始化 并置延时标志 运行 (P0.0=0)? D1 灯灭待机 Z(P0.5=0)? 停 (P0.0=1) ? 反转 (P0.6=0) ? 设置 P2 口 P2=0fch,0f6h,f3,0f9h 分别调用延时程序 反转 (P0.6=0) ? 停止 (P0.0=1) ? F(P0.6=0)? 停 (P0.0=1) ? 正转 (P0.5=0) ? 设置 P2 口 P2=0fch,0f9h,0f3h,