武汉理工大学《计算机控制技术》课程设计说明书
机,OUT3和OUT4是一组,驱动另一个电机
EN1、EN2:高电平有效,EN1、EN2分别为 IN1和IN2、IN3和IN4的使能端。
IN1~ IN4:输入端,输入端电平和输出端电平是对应的。启用IN1和IN2是一组,IN3和IN4是一组。
SENSA、SENSB:分别为内部两个H桥的电流反馈脚,不用时可以接地。 了解了管脚的功能以后,可以知道不同的电平搭配可以控制不同的输出效果,从而控制电机的正反转和停止操作。具体的对应值如表3-3
表3-3 L298控制真值表
旋转方电机 式 正转 M1 反转 停止 正转 M2 反转 停止 控制端IN1 高 低 低 / / 低 控制端IN2 低 高 低 / / 低 控制端IN3 / / / 高 低 / 控制端IN4 / / / 低 高 / 在系统的电路中由于用不到SENSA,SENSB因此将它们都于GND相连,然后在VCC管脚加入4.5到7V的电压,用来驱动L298芯片,管脚VS接到了放大后的PWM波形上,它用来驱动电机运转,这里我们只需要电机正转即可,而且这里只驱动一台电机,因此,IN1接高电平,IN2接低电平,IN3和IN4没有用到,因此悬空,相对应的,OUT1和OUT2接电机,OUT3和OUT4悬空。
3.5 74LS373芯片介绍
74LS373为三态输出的八 D 透明锁存器,共有 54S373 和 74LS373 两种线路。74LS373 的输出端 Q0~Q7 可直接与总线相连。当三态允许控制端 OE 为
14
武汉理工大学《计算机控制技术》课程设计说明书
低电平时,Q0~Q7 为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,Q0~Q7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存允许端 LE 为高电平时,O 随数据 D 而变。当 LE 为低电平时,Q 被锁存在已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。在本次的系统中,OE端接地,LE端与8086CPU的ALE管脚相连,来达到地址锁存的目的。
74LS373管脚图如图3-5所示
图3-5 74LS373管脚图
D0~D7 数据输入端
OE 三态允许控制端(低电平有效) LE 锁存允许端 Q0-Q7为输出端
74LS373真值表如表3-4所示。
表3-4 74LS373真值表
Dn H L X X LE H H L X OE L L L H On H L Q0 高阻态 15
武汉理工大学《计算机控制技术》课程设计说明书
4 系统软件设计
这次编程的整体思路是先给定了8255的控制字,然后设置好8255的各个端口的地址值,程序首先进行的任务就是扫描按键开关是否有动作,是否被按下,然后通过按下不同的按键开关,从PA口输入不同的高低电平的组合,然后程序对PA口输入的数据进行判断,若和对应的键值相等则跳转到对应的子程序。因为这里有8个按键,因此有9个按键的状态,分别为:没有开关按下,和开关0~7分别按下。因此需要编写8段子程序。这里对于没有开关按下的情况,就循环扫描键盘开关即可。8个子程序对应8个按键按下的状态。其中有三个控制键:START键SET键和CLEAR键,他们分别完成的任务是开始运转,停止,和停止并将显示器清零。对于这三个程序的编写需要和其他子程序分开,这里的START,我就是让电动机全速的运转,并在显示上显示一个键值1,这里控制电机的PC口就输出一个全为1的PWM波,即让电机全速旋转。而对于SET,我就编写程序让PC口输出一个全0的排列,这样电动机就不再运转,并且在数码管显示器上显示一个键值2。而对于其他5个按键的编程则大同小异。以一个键值为7的键为例。要求再按下后,程序将PA口数据扫描进入寄存器,然后再执行相应子程序,在数码管上第一位显示数字,后三位显示转速。这里因为转速都是3位数,因此就空出一位来显示键值了,如例子中的键值为7,速度为500。因此就显示“7500”然后再在PC口输出相应的高低电平组合,这里500为额定转速,因此输出的是全1的组合,这里要注意了子程序执行一次以后,要重新检查键值是否改变,因此这里需要重新扫描键盘,输入PA口的数据,然后在输出PC口和PB口的数据,这里要注意了,由于PC口要产生一个高低电平的PWM波,因此,需要端口高低电平的不断循环,因此当前的输出值需要送入另一个寄存器,然后用AL来存放其他端口的信息,其他端口内容输出结束以后,再将寄存器的内容返回给AL。如果不这样做,那么PC口会一直输出同一个值,这样不能达到调速的目的。同时还要注意一点,在IN和OUT指令中只能用DX和AL寄存器,因此在读取不同端口的值的时候,这几个寄存器内的内容是随时变化的。因此,每当我要给PC口输出波形的时候,都要重新赋值给AL,这也是我使用其他寄存器的目的。下面给出具体的程序流程图和几段程序来具体分析题
16
武汉理工大学《计算机控制技术》课程设计说明书
目的要求是如何达到的。
程序流程图如图4-1 按键0 输出波 形 显示数 码 开始 8255送控制字,确定各口地址并锁存 否 扫描键盘,是否有键按下 是 按键1 按键2 按键3 按键4 按键5 按键6 按键7 输出波形 输出波形 输出波形 输出波形 输出波形 输出波形 输出波形 显示数码 显示数码 显示数码 显示数码 显示数码 显示数码 显示数码 键值是否改变 是 是 否 返回调用 图4-1 程序流程图
17
武汉理工大学《计算机控制技术》课程设计说明书
键盘扫描程序和子程序节选: 键盘扫描并且跳转程序: KEY:
MOV DX,A_PORT ;读取PA口的数据 IN AL,DX
MOV BH,AL ;将PA口数据送入寄存器BH CMP BH,0FFH ;比较PA口数据和给定键值,首先是均无按键按下 JE KEY ;跳转回去重新扫描 CMP BH,0FEH ;比较PA口数据是否和第一个按键按下是相同 JE ONE ;相同则跳转到ONE子程序 CMP BH,0FDH ;比较PA口数据是否和第二个按键按下是相同 JE TWO ;相同则跳转到TWO子程序 CMP BH,0FBH ;比较PA口数据是否和第三个按键按下是相同 JE THREE ;相同则跳转到THREE子程序 CMP BH,0F7H ;比较PA口数据是否和第四个按键按下是相同 JE FOUR ;相同则跳转到FOUR子程序 CMP BH,0EFH ;比较PA口数据是否和第五个按键按下是相同 JE FIVE ;相同则跳转到FIVE子程序 CMP BH,0DFH ;比较PA口数据是否和第六个按键按下是相同 JE SET ;相同则跳转到SET子程序 CMP BH,0BFH ;比较PA口数据是否和第七个按键按下是相同 JE BEGIN ;相同则跳转到BEGIN子程序 CMP BH,7FH ;比较PA口数据是否和第八个按键按下是相同 JE CLEAR ;相同则跳转到CLEAR子程序 ONE子程序举例: ONE:
MOV CX,0FFFFH
MOV AX,0FFFFH ;送PC口数据全为1的PWM波 D1: MOV DX,C_PORT;向PC口传输数据
18