微机原理与接口技术.docx
《微机原理与接口技术.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术.docx(69页珍藏版)》请在冰点文库上搜索。
![微机原理与接口技术.docx](https://file1.bingdoc.com/fileroot1/2023-5/23/0e375ba6-a9f1-480b-864e-097cbcffb466/0e375ba6-a9f1-480b-864e-097cbcffb4661.gif)
微机原理与接口技术
微机原理与接口技术
课程设计报告
课程名称:
微机原理与接口技术
设计题目:
步进电机控制系统
院系:
机械与电子控制工程学院
班级:
机电0706班
设计者:
杨萌(07225022),
潘妩(07225013),
唐薇(07225018),
汪煜婷(07225019),
张美静(07225025),
指导教师:
朱力强
设计日期:
2009年7月2~2009年7月15日
一、课程设计任务书…………………………………………………2
二、步进电机控制系统………………………………………………3
(一)、项目要求及主要元件……………………………………3
(二)、基于单片机控制的步进电机……………………………4
(三)、硬件介绍…………………………………………………7
1.实验原理图…………………………………………………………7
2.MAX7219简介……………………………………………………9
3.TA8435H简介……………………………………………………12
4.4×4按键简介……………………………………………………13
5.数码管简介………………………………………………………14
6.电容简介…………………………………………………………16
7.电阻简介…………………………………………………………17
8.晶振简介…………………………………………………………18
(四)、硬件电路的焊接与调试…………………………………19
1.焊接注意事项及调试过程………………………………………19
2.硬件调试程序……………………………………………………20
(五)、软件设计思路……………………………………………23
(六)、程序流程图………………………………………………24
(七)、完整程序…………………………………………………30
1.子程序调试………………………………………………………30
2.软件调试过程及注意事项………………………………………35
3.完整程序…………………………………………………………36
4.程序实现功能汇总………………………………………………45
(八)、参考文献…………………………………………………45
机电学院《微机原理与接口技术》课程设计任务书
课程设计题目
步进电机控制系统
组员及分工
组长:
编写字型码、汇总程序、调试程序
组员:
焊接电路板、编写实验报告书、记录调试过程
查找资料、编写显示子程序、调试程序
查找资料、焊接电路板、调试程序
查找资料、编写按键子程序、调试
专业
机械工程及自动化(铁路机车车辆)
班级
日期
2009年7月2至2009年7月15日
工作计划安排
7月2日
领取工具箱与了解硬件电路和各部分元器件
7月3日
焊电路板与调试电路
7月4日~7月5日
检索相关文献、编写程序
7月6日
第一次实验室调试
7月8日
修改程序
7月9日
第二次实验室调试
7月10日
修改程序
7月11日~7月14日
实验报告编写
7月14日
第三次实验室调试
7月15日
演示与答辩
步进电机控制系统
课程设计项目要求:
扩展一块4X4键盘,显示器采用MAX7219
控制共阴极六位数码管,设计步进电机驱动电路。
控制系统能够实现:
1、用键盘输入步进电机正、反转的转速或正、反转的角度,
控制步进电机的启动、运行和停止。
2、显示器显示步进电机的给定正、反转的转速或角度;
控制步进电机按给定转速或角度旋转。
3、控制步进电机按给定转速或角度。
关键技术难点:
MAX7219、步进电机驱动芯片TA8435H
元器件清单:
序号
名称
数量
1
MAX7219
1
2
共阴极数码管
6
3
89C51
1
序号
名称
数量
1
电阻8.2K
1
2
电阻10K
1
3
排电阻5.1K*5
1
4
电解电容10UF
1
5
电解电容47UF/33UF
2
6
瓷片电容30P/33P
2
7
独石电容0.1UF
2
8
独石电容0.01UF
1
9
按钮开关
16
10
晶振11.0592
1
11
单排插针/座(3)
1
12
短路块
1
13
DIP40
2
14
DIP24
1
15
DIP24(窄)
1
16
电源线(红)
1
17
电源线(黑)
1
18
电路板支脚
4
19
步进电机驱动板
1
基于单片机的步进电机控制系统
摘要:
步进电机是一种将脉冲信号转换为相应角位移的执行元件,在工业控制领域应用广泛。
步进电机的结构步进驱动器接收到一个脉冲信号,就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的.可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度,从而达到调速的目的.步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制.现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。
永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。
混合式步进电机是指混合了永磁式和反应式的优点。
它又分为两相和五相:
两相步进角一般为1.8度而五相步进角一般为0.72度。
这种步进电机的应用最为广泛,也是本次实验所选用的步进电机。
本控制系统采用ATMEL公司MCS一51系列单片机AT89C51作为微处理器,单片机的作用是产生驱动步进电机的脉冲信号,并送给驱动电路,驱动电路根据控制信号工作,实现步进电机的转速与方向控制。
同时采用八段发光数码管,通过7219对按键进行实时显示。
关键词:
单片机、步进电机、控制、LED显示、4×4按键
基于单片机的步进电机控制系统
1.步进电机的控制
步进电机系统简介
步进电机是一种将脉冲信号转换为相应角位移的执行元件,在工业控制领域应用广泛。
它可以将数字信息直接转换成相应角位移或者或线性位移的控制驱动装置,具有快速启停、精确步进及直接接收数字量等特点,步进电机的控制系统主要实现三个基本功能:
1)脉冲信号输出;2)控制步进电机反向的转换;3)控制步进电机转动速度。
控制脉冲输出,也就是驱动脉冲。
步进电机的转动是通过脉冲来控制,驱动器给一个脉冲,步进电机就转一步,两个脉冲的间隔越短,也就是脉冲周期越小,步进电机转动就越快,所以改变驱动脉冲周期的长短就可以控制步进电机的速度。
1.2步进电机的单片机控制原理
基于单片机的步进电机控制系统由单片机I/O、驱动电路、步进电机、负载组成。
单片机的作用是产生驱动步进电机的脉冲信号,并送给驱动电路,驱动电路根据控制信号工作,实现步进电机的转速与方向控制。
具体实现过程需编程实现,通过改变单片机输出控制信号的循环次序,来完成步进电机转动方向的改变;通过改变单片机输出信号的频率,来完成步进电机速度的改变。
1.2.1脉冲的形成
实现对步进电机的控制,单片机应能输出有一定周期的控制脉冲。
先输出~个高电平,延时一段时间后,再输入一个低电平,然后再延时。
改变延时时间的长短,即可改变脉冲的周期,脉冲的周期由步进电机的工作频率确定。
1.2.2方向控制和速度控制
通过改变单片机输出控制信号的循环次序,来完成步进电机转动方向的改变。
步进电机工作方式为四相8拍,通电顺序为:
A-AB-B-BC-C-CD-D-DA.如果按照上述通电顺序,步进电机正转;反之,如果通电顺序相反,则步进电机反相转动.它们相应的代码列表80H、0AOH、20H、60H、40H、50H、10H、90H称为励磁表.在编制程序时,先将代码按照顺序放进存储器中,由单片机通过接口依次送出相应控制代码,即可控制步进电机转动
通过改变单片机输出信号的频率,来完成步进电机速度的切换。
2.串行口通信
本控制系统采用ATMEL公司MCS一51系列单片机AT89C51作为微处理器.AT89C51内部有4K的可编程EPROM、128字节的RAM(其中有l6个字节既可以作一般的RAM单元使用,又可对128位进行位操作)、21个特殊功能寄存器、2个16位的定时计数器以及一个全双工串行口,对外有4个端口、32条I/O线,它们都具有位寻址功能,使用非常方便.串行通信是使用一条数据线,将数据一位一位地依次传输的工作方式,每一位数据占据一个固定的时间长度。
使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。
串行通信可以分为同步通信和异步通信两类。
同步通信是按照软件识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式
MCS-51对串行口的控制是通过SCON实现的,也与电源控制寄存器PCON有关。
位地址
9F
9E
9D
9C
9B
9A
99
98
SCON
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
(1)SM0和SM1:
串行口方式控制位,用于设定串行口的工作方式。
SM0SM1
相应工作方式
说明
所用波特率
00
方式0
同步移位寄存器
01
方式1
10位异步收发
由定时器控制
10
方式2
11位异步收发
或
11
方式3
11位异步收发
由定时器控制
电源控制寄存器PCON各位
位地址
8E
8D
8C
8B
8A
89
88
87
PCON
SMOD
-
-
-
GF1
GF0
PD
IDL
MCS-51单片机串行口有四种发送工作方式,其中方式0每帧共发送8位数,其他工作方式下每帧发送均不为8位数或其倍数。
因此只能考虑使用方式0。
串行口工作于方式0时,通过RXD(P3.0)引脚发送/接收串行数据,通过TXD(P3.1)引脚发送移位时钟脉冲。
发送顺序为低位在前高位在后,与MAX7219的接收顺序相反。
从单片机时序上看,只需在发送前将显示数据和地址码的高低位顺序颠倒,利用串行方式0进行发送,每发送两次,就可向MAX7219输出一个要显示的数据或控制寄存器参数。
而在单片机与MAX7219的时序配合中,时钟脉冲的配合是非常关键的。
3.系统软件设计
通过标志位FLAG来判断电机的旋转方向,然后输出相应的控制脉冲个数;判断要求的脉冲信号是否输出完毕。
首先根据步进电机运行控制表来建立控制数组,该数组中存放电机转动时单片机端口的状态值。
以上述接口电路为例,数组中应存放OxBF,0XBB,0xB3,0xB7,0XBF电机正转时,数组正序调用;反转时,数组反序调用。
为了实现这一功能,可以定义一个指针变量指向数组地址,单片机就根据指针变量指向的内容在定时中断到来时进行控制输出。
整个系统的表现为:
系统上电,程序开始初始化,所有数码管显示为“0”,单片机等待按键信息;接着向单片机输入电机动作的方式和方向,对应的数码管开始闪烁,按下按键输入对应的数据;输完数据后,开始设定速度,按下速度设定键,数码管开始闪烁,输入速度值;当所有必要的数据输入完成后,按下确定键,步进电机开始按照预设方式开始运行。
实验电路原理图
主控CPU模块硬件电路
步进电机驱动模块硬件电路
键盘模块硬件电路
电源模块硬件电路
显示模块硬件电路
、
2.MAX7219简介
MAX7219显示驱动芯片是MAXIM公司生产的7段共阴极LED数码管的驱动芯片。
它集BCD译码器、多路扫描器、段驱动和位驱动电路于一体,内含8×8位双口静态SRAM,最多能驱动8个共阴极LED数码管或64位单独的发光二极管,可保存8位LED数据,可驱动多块LED进行动态显示,并可串联使用。
MAX7219具有典型的3线串行接口,采用3条I/O口线就能提供串行数据信号DIN、移位时钟信号CLK以及数据锁存信号LOAD。
命令与数据组成一个16位的字串,从DIN端串行输入,从DOUT端串行输出。
外围接口电路简单,使用方便。
只需一个外部电阻来设置所有LED的段电流,不仅可以克服常规的动态显示亮度不够、闪烁等缺点,而且大大简化硬件电路并减少软件的工作量,因此MAX7219芯片成为单片机应用系统中首选的LED显示接口电路。
MAX7219具有BCD译码模式和非译码模式。
如果仅显示一些连续数,当然可采用非译码模式,这时可做一个TAB表,依次存放数字的相应编码,通过使用查表指令即可实现。
但生产实际中往往要显示很多种数据,其它数据的显示采用BCD译码显示方式比较方便。
虽然一片MAX7219可以在不同的LED同时输出两种显示方式,但这样将大大增加软件编程的负担,为使程序简化,可将连续数和其它数据同时采用BCD译码模式显示。
引脚:
(1)DIN:
串行数据输入端口。
在时钟上升沿时数据被载入内部的16位寄存器。
(2)DIG0–DIG7:
八个数据驱动线路置显示器共阴极为低电平。
关闭时7219此管脚输出高电平。
(3)GND:
地线(4脚和9脚必须同时接地)
(4)LOAD:
载入数据。
连续数据的后16位在LOAD端的上升沿时被锁定。
(5)CLK:
时钟序列输入端。
最大速率为10MHz.在时钟的上升沿,数据移入内部移位寄存器。
下降沿时,数据从DOUT端输出。
(6)SEGA–SEGG/DP:
7段和小数点驱动,为显示器提供电流。
当一个段驱动关闭时,7219的此端呈低电平。
(7)ISET:
通过一个电阻连接到VDD来提高段电流。
(8)V+:
正极电压输入,+5V。
(9)DOUT:
串行数据输出端口,从DIN输入的数据16.5个时钟周期后在此端有效。
MAX7219的串行数据格式如下表所示。
其中:
D12~D15位不用;D8~D11为显示位和各种工作方式的控制寄存器地址位,可选择要显示的位、解码方式、显示亮度、扫描位数、停止方式、显示测试等;D0~D7为数据位,其形式与显示出的数字间的关系与解码方式有关。
表2中X可为16进制任意值,一般取为0。
每组16位数据中,首先接收的为最高有效位,最后接收的为最低有效位。
串行数据格式:
D15
D14
D13
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0
×
×
×
×
地址
MSB数据LSB
MAX7219的工作时序如下图所示。
数据由DIN引脚输入,最先输入的为最高位,在CLK的上升沿将数据位移入器件内的移位寄存器,LOAD引脚信号的上升沿将最后移入的16位数据锁存入相应的寄存器中,LOAD信号的上升沿必须与CLK的上升沿同时,或在其后。
从DIN输入的数据经过16.5个CLK脉冲后移到DOUT引脚上。
解码方式寄存器可设置各位数码管为解码显示方式,或非解码的数据位与显示段直接对应的显示方式。
亮度寄存器用于与外部电阻配合控制数码管的显示亮度。
扫描限制寄存器控制显示的位数。
停机寄存器控制显示器为停机或正常工作状态,停机状态下描振荡器停止工作,消隐所有显示位。
显示测试寄存器设置器件为正常工作或测试状态。
空操作寄存器用于多个MAX7219级连。
器件上电后所有控制寄存器复位。
解码方式寄存器的值为非解码方式,亮度寄存器的值设置为最小,扫描寄存器设置为仅显示1位,停机寄存器处于停机状态,显示消隐。
因此MAX7219必须经过初始化后才可正常工作。
寄存器
地址
十六进制编码
单片机串行
发送码
D15-D12
D11
D10
D9
D8
空操作
X
0
0
0
0
X0
0X
位0
X
0
0
0
1
X1
8X
位1
X
0
0
1
0
X2
4X
位2
X
0
0
1
1
X3
CX
位3
X
0
1
0
0
X4
2X
位4
X
0
1
0
1
X5
AX
位5
X
0
1
1
0
X6
6X
位6
X
0
1
1
1
X7
EX
位7
X
1
0
0
0
X8
1X
编码方式
X
1
0
0
1
X9
9X
亮度
X
1
0
1
0
XA
5X
扫描限制
X
1
0
1
1
XB
DX
停机
X
1
1
0
0
XC
3X
显示调试
X
1
1
1
1
XF
FX
当MAX7219控制显示时,需要对地址为09H的译码模式寄存器初始设置。
寄存器中的每一位对应一个数据。
逻辑高电平用来选择译码低电平取消译码。
当选择译码模式时,译码器只对数据的低四位进行译码(D3-D0),D4-D6为无效位。
D7位用来设置小数点,不受译码器的控制且为高电平。
但考虑到此方式下可显示的特殊字符有限,我们在程序设计时选用了非译码方式。
当选择不译码时,数据的八位与MAX7219的各段线上的信号一致。
下表列出了每个数字对应的段位码。
字符
DP
A
B
C
D
E
F
G
输入数据
0
0
1
1
1
1
1
1
0
7EH
1
0
0
1
1
0
0
0
0
30H
2
0
1
1
0
1
1
0
1
6DH
3
0
1
1
1
1
0
0
1
79H
4
0
0
1
1
0
0
1
1
33H
5
0
1
0
1
1
0
1
1
5BH
6
0
1
0
1
1
1
1
1
5FH
7
0
1
1
1
0
0
0
0
70H
8
0
1
1
1
1
1
1
1
7FH
9
0
1
1
1
1
0
1
1
7BH
.
1
0
0
0
0
0
0
0
80H
A
0
1
1
1
0
1
1
1
77H
r
0
1
0
0
0
1
1
0
46H
-
0
0
0
0
0
0
0
1
01H
3.TA8435H简介
TA8435H是东芝公司生产的单片正弦细分二相步进电机驱动专用芯片,TA8435H可以驱动二相步进电机,且电路简单,工作可靠。
该芯片还具有以下特点:
●工作电压范围宽(10V~40V);
●输出电流可达1.5A(平均)和2.5A(峰值);
●具有整步、半步、1/4细分、1/8细分运行方式可供选择;
●采用脉宽调制式斩波驱动方式;
●具有正/反转控制功能;
●带有复位和使能引脚;
●可选择使用单时钟输入或双时钟输入;
4.4X4键盘简介
0
1
2
3
4
5
6
7
8
9
+/-
A/r
Start
.
Stop
Reset
*+/-代表正反转;A代表设置转角/r代表设置转速;Start代表启动;Stop代表停止;Reset代表重置
行列式非编码键盘是一种把所有按键排列成行列矩阵的键盘。
在这种键盘中,每根行线(水平线)和列线(垂直线)的交叉处都接有一个按键,每当某个按键被按下时,与这个按键相连的行线和列线就会接通,否则是断开状态。
地址偏移量
键值
行首键值
列值
按键
00H
00H
00H
00H
0
01H
01H
00H
01H
1
02H
02H
00H
02H
2
03H
03H
00H
03H
3
04H
04H
04H
00H
4
05H
05H
04H
01H
5
06H
06H
04H
02H
6
07H
07H
04H
03H
7
08H
08H
08H
00H
8
09H
09H
08H
01H
9
0AH
0AH
08H
02H
+/-
0BH
0BH
08H
03H
A/r
0CH
0CH
0CH
00H
Start
0DH
0DH
0CH
01H
.
0EH
0EH
0CH
02H
Stop
0FH
0FH
0CH
03H
Reset
按键识别程序是由按键判断程序段、按键扫描程序段和求键值程序等三部分组成。
CPU监视键盘中是否有按键按下的原理很简单。
如图示,CPU只要把全“0”送到P30-P33口,就可以在列线上得到低电平,然后读取P14-P17上的行值就可判断是否有键按下。
若无键按下,则所读行值为0FH;若有键按下,则行值必因被按键的行列接通而不等于0FH。
若CPU发现有键按下,则获取被按键的行首键号和列值。
具体操作只需逐列对键盘扫描,即轮流使列线变为低电平,以读取和判断P14-P17上的行值。
若行值为0FH,则表明被按键不在本列;若行值不为0FH,则判断处于0状态的行即可得到列值。
键盘上所有按键的键值都存放在键值表,因此欲求被按键的键值必须先求出被按键键值在键值表中的地址偏移量。
被按键键值的地址偏移量实际上是被按键的键号,这个键号实际等于被按键所在行首键号与它的列值之和。
求取公式:
被按键的键号=行首键号+列值
之后利用查表指令求得被按键的键值。
5..数码管简介
数码管是一种半导体发光器件,其基本单元是发光二极管
5.1数码管的分类
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
5.2数码管的驱动方式
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类
5.2.1静态显示驱动
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5