您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页基于单片机的步进电机控制设计

基于单片机的步进电机控制设计

来源:纷纭教育
课 题 名

毕业设计

称 基于单片机的步进电机控制设计

摘 要

本论文主要介绍了基于单片机的步进电机控制的规则、硬件结构、软件代码的编写及工作原理、以及液晶模块128LCD的详细介绍以及指令集。模拟出单片机系统下的步进电机转速控制,具有任意转速选择、转动时间、正反转、加速和减速设置、系统低功耗、可实现在线调试等特点。本系统是以单片机为其控制核心,以有源晶振构成的电路作为时钟信号,通过键盘输入选择向单片机控制系统发出步进转动控制命令,控制系统接收命令后做出一系列必要的判断后,控电机的转速、转向等。本设计已通过了实验仿真,运行稳定,达到了基本的设计要求。

本设计要分为两大块:一块为硬件电路组成部分,一块为软件程序设计部分。在硬件电路里主要包括有源晶振部分、键盘输入控制部分、电机驱动电路及液晶显示部分等与单片机的接线设计;软件编程方面主要是子程序和主程序的编写,包括:初始化代码、液晶驱动代码、时间记录代码、表格数据代码等。

关键词:单片机;步进电机;128LCD;指令集

I

Abstract

This thesis is mainly introduce the Prepared and working principles about

regulation、structure of hardware、software code of stepping motor control based on MCU as well as detail information and instruction set on LCD Module 128LCD. This thesis also simulates that under the system of single-chip stepping motor speed control has the disadvantages of changing speed、time arbitrary、Positive and negative transfer、installation of accelerated and deceleration、low-power system and online debugging. Single-chip as core of control and the circuit made up by active crystal as clock signal, the stepper motor speed control system starts to making a series of necessary judgment and then control rotate speed and change direction when it receive the command of stepper transfer control from single-chip control system by keyboard. As run steady, this project has already passed the simulation and has achieved the basic purpose.

This project consists of two parties. One is hardware circuit and the other is software programming. In the part of hardware circuit is include active crystal、control system of keyboard input 、system of motor drive circuit and liquid crystal system. In the second part, Design of connection of single-chip、software prepared is the mainly prepared of Subroutine and Main program including initialization code 、liquid drive code 、the timing of recording code form data code[8].

Key words: MCU;stepper motor;128LCD;Instruction Set.

II

目 录

摘 要 ....................................................................................................................................................... I Abstract .................................................................................................................................................II 第1章 绪论 ...................................................................................................................................... 1

1.1 课题的来源 ...................................................................................................................... 1 1.2 课题研究的意义 ............................................................................................................ 1 1.3 课题国内研究现状 ...................................................................................................... 1 1.4 课题研究的目的和主要内容 ................................................................................. 2 第2章 步进电机方案设计与分析 ...................................................................................... 3

2.1 方案提出............................................................................................................................ 3

2.2 可行性分析 ...................................................................................................................... 4 2.3 主要器件选择 ................................................................................................................. 4 第3章 系统硬件设计 ................................................................................................................. 6

3.1 AMPIRE128*液晶屏介绍 ..................................................................................... 6 3.2 HD61202及其指令集介绍 ........................................................................................ 7 3.3 晶振、复位、驱动电路 ............................................................................................ 9 3.4 液晶显示屏与单片机接口电路 .......................................................................... 10 3.5 控键与单片机接口电路 .......................................................................................... 11 第4章 系统软件设计 ............................................................................................................... 13

4.1 电机流程图 .................................................................................................................... 13 4.2 液晶屏驱动代码设计 ............................................................................................... 14 4.3 固定字符显示代码 .................................................................................................... 18 4.4 中断子程序 .................................................................................................................... 19 4.5 汉字表 ............................................................................................................................... 19 4.6 字符表 ............................................................................................................................... 22 4.7 延时子程序 .................................................................................................................... 22 4.8 主函数程序 .................................................................................................................... 23 第5章 系统仿真.......................................................................................................................... 25

5.1 Keil2编译环境介绍 ................................................................................................ 25 5.2 Proteus 仿真平台 .................................................................................................... 26

III

5.3 建立工程项目 ............................................................................................................... 28 5.4 Proteus中原理图的绘制及文件的加载 ...................................................... 32 5.5 开机界面显示 ............................................................................................................... 32 5.6 控制界面显示 ............................................................................................................... 33 5.7 仿真结果分析及解决方法 .................................................................................... 33

6章 PCB板设计 .................................................................................................................... 34 6.1加载网络表及元件封装 ........................................................................................... 34 6.2 PCB板参数设置 ........................................................................................................... 36 6.3元件布局及布线设计 ................................................................................................ 38

结束语 ................................................................................................................................................. 40 参考文献 ............................................................................................................................................ 41 致 谢 ................................................................................................................................................. 42 附录Ⅰ 总体电路图 .................................................................................................................... 42

IV

第1章 绪论

1.1 课题的来源

步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。

步进电机广泛应用在生产实践的各个领域。它最大的应用是在数控机床的制造中,因为步进电机不需要A/D转换,能够直接将数字脉冲信号转化成为角位移,所以被认为是理想的数控机床的执行元件。早期的步进电机输出转矩比较小,无法满足需要,在使用中和液压扭矩放大器一同组成液压脉冲马达。随着步进电动机技术的发展,步进电动机已经能够单独在系统上进行使用,成为了不可替代的执行元件。比如步进电动机用作数控铣床进给伺服机构的驱动电动机,在这个应用中,步进电动机可以同时完成两个工作,其一是传递转矩,其二是传递信息。步进电机也可以作为数控蜗杆砂轮磨边机同步系统的驱动电动机。除了在数控机床上的应用,步进电机也可以并用在其他的机械上,比如作为自动送料机中的马达,作为通用的软盘驱动器的马达,也可以应用在打印机和绘图仪中。

步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。

1.2 课题研究的意义

对基于单片机控制的步进电机的转速控制进行设计:一方面是对所学知识的综合运用,可以更好地学习单片机的应用技术,另一方面步进电机可以发挥其结构简单、可靠性高和成本低的特点。使用恰当的时候,甚至可以和直流伺服电动机性能相媲美。

1.3 课题国内研究现状

上个世纪就出现了步进电动机,它是一种可以自由回转的电磁铁,动作原理和今天的反应式步进电动机没有什么区别,也是依靠气隙磁导的变化来产生电磁转矩。在本世纪初,由于资本主义列强争夺殖民地,造船工业发展很快,同时也使得步进电动机的技术得到了长足的进步。到了80年代后,由于廉价的微型计算机以多功能的姿态出现,步进电动机的控制方式更加灵活多样。原来的步进电机控制系统采用分立元

1

件或者集成电路组成的控制回路,不仅调试安装复杂,要消耗大量元器件,而且一旦定型之后,要改变控制方案就一定要重新设计电路。计算机则通过软件来控制步进电机,更好地挖掘出电动机的潜力。因此,用计算机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋势。步进电机和普通电动机不同之处是步进电机接受脉冲信号的控制。步进电机靠一种叫环形分配器的电子开关器件,通过功率放大器使励磁绕组按照顺序轮流接通直流电源。由于励磁绕组在空间中按一定的规律排列,轮流和直流电源接通后,就会在空间形成一种阶跃变化的旋转磁场,使转子步进式的转动,随着脉冲频率的增高,转速就会增大。步进电机的旋转同时与相数、分配数、转子齿轮数有关。

现在比较常用的步进电机包括反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。其中反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。现阶段,反应式步进电机获得最多的应用。

1.4 课题研究的目的和主要内容

本文针对步进电机控制的设计,首先介绍了选题的要求,之后详细叙述了软件和硬件的设计过程。

在时钟脉冲的作用下,各个按键都能按照事先设定好的规则进行控制。确定键能使界面从初始化显示切换到步进电机显示界面,0-9十个数字键用来设置转速,正转和反转控制电机的正反转向,加速和减速键用来控制转速,以十转为基本单位进行递加或递减,设置键可以设置转向、精确的转速、转动时间,当设置完成是可以用启动键启动。

硬件部分是由处理器(ATC51单片机),控制部分(式按键系统),显示部分(128LCD液晶显示模块)组成的,驱动部分(L298芯片);软件部分的主要内容是通过对步进电机的控制、驱动程序进行编写和调试以实现步进电机的功能。通过硬件和软件调试,并针对问题分析修改后,步进电机系统可以稳定运行。步进电机系统中各个部分之间通过数据的传送最终完成了整个步进电机的运行、显示和进行按键的功能。

最后论文对设计进行了总结,对设计中可以进一步改善的地方提出了建议。

2

第2章 步进电机方案设计与分析

2.1 方案提出

方案一:采用基本电路以及相关芯片对步进电机进行控制。本设计选用PMM8713四相步进电机的脉冲分配器、SI—7300A四相功率驱动器,组成四相步进电机的驱动电路,步进电机的控制框图如图2.2所示[5][4]:

图2.1 方案一框图

方案二:用单片机作为步进电机的核心控制器件,键盘调节转速、时间等,液晶显示当前状态。系统框图如图2.2所示[1][2]:

图2.2 方案二框图

相较之下用单片机控制的步进电机要比采用基本电路控制的步进电机要简单很多,在价格上单片机可能稍微高上少许,但用单片机后可以省下许多控制器件,这样看来反而便宜一些了。

另外,在大学中我们已经系统的学习了单片机,对单片机的应用编程比较熟悉。 考虑到以上因素,采用了第二套方案。以下将会对所选方案的可行性和主要芯片的选择做系统的介绍。

3

2.2 可行性分析

现如今,步进电机广泛应用在生产实践的各个领域,随着步进电动机技术的发展,步进电动机已经能够单独在系统上进行使用,成为了不可替代的执行元件。步进电机结构简单,但是这种简单也是相对的,步进电机本身的代码还是相当繁杂,它要执行一系列指令才能正确的完成一个简单的操作,才能按照设计者的意志工作。那么步进电机能否用单片机实现呢?答案是肯定的,现从以下几个方面加以说明。

首先,我们设计的这个电机是一个功能相对比较简单步进电机,不像其他的电机那样功能复杂,它只要控制电机的转速、转动时间及正反转即可,对于实现这样一个功能,程序不是太复杂,用一块单片机足以达到目的。其次,它的控件也比较少只有

10个数字键和6个控制功能键,这些控键在Proteus中用弹跳式按键代替即可。第

三,电机的显示相对比较小、画面简单,只有转向、转速、旋转时间等几个汉字,这些在一块稍大的液晶屏上就足以显示。第四,就编程语言方面来说,编写这样一个简单的步进电机不需要什么高级的语言,C语言或汇编语言就足以完成,C语言是一种通用型的语言,编程灵活、可读性强、移植性好;汇编语言是一种直接面向硬件的基础语言,最接近机器语言,执行速度快(本设计采用C语言编写)。由以上几点可知:用单片机设计步进电机在硬件和软件两个方面都是可行的。

2.3 主要器件选择 2.3.1 单片机的选择

单片机的种类有很多:通用型单片机按位数分有4位机,8位机,16位机和32位机等等。按厂家分种类就更多,我国目前最常用的单片机有如下几家:Intel 公司的(MCS51系列,MCS96系列);Atmel公司的(AT系列,MCS51内核);

Microchip公司的(PIC系列);Motorola公司的(68HCXX系列);Zilog公司的

(Z86系列);Philips公司的(87,80系列,MCS51内核);Siemens公司的(SAB80系列,MCS51内核);NEC公司的(78系列),每种单片机的都有不同,包括:I/O口个数、定时/计数器个数、数据/程序存取区大小、中断源个数、有无看门狗中断、有无A/D转化等等[1][2][9]。

基于本电机的设计只用到了不到20个I/O口;1个定时器断。所以选择了Atmel公司的ATC51单片机。其参数如下:

1、基于8051的全静态CMOS工艺控制器; 2、3级流水线指令执行架构;

4

3、32个I/O口; 4、2个定时/计数器; 5、6个中断源;

6、4K的闪存程序存储器; 7、128字节的片内数据存取器。

由以上参数可知ATC51单片机完全满足设计要求,且在成本上较其他类型的单片机有优势。

2.3.2 液晶屏的选择

液晶屏的种类也有很多,我们经常用到的液晶屏包括:AMPIRE128*;

LGM121BS1R;LM016L;LM020L;LM017L等等。

前两种为不带字库的汉字、图形点阵液晶屏,共行,128列,能显示4行8列32个16*16点阵汉字或4行16列个16*8点阵字符或者最大128*点阵图形。也有带字库的128,功能一样。

后几种则是带字库的字符点阵,不能显示图形。LM016L为能显示2行16列

32个字符的液晶屏;LM020L为能显示1行16列16个字符的液晶屏;LM017L

为能显示2行32列16个字符的液晶屏。

由以上介绍可知,AMPIRE128*液晶显示模块表示横向有128点,纵向有

点,可显示16*16中文字4行,每行8个字,很明显,这块液晶屏满足步进电机

设计的显示要求,大小也合适。如转速显示、时间显示等,完全满足设计要求。这块液晶和以上的很不一样,它基于T6963C内核,引脚更多,功能更复杂,指令集也更多(这些相关内容将在下一章具体介绍)[1][2][3]。

5

第3章 系统硬件设计

本部分内容包括介绍AMPIRE128*及其引脚功能;介绍T6963C指令集;晶振电路、复位电路的硬件设计;控件及按键电路设计,最后给出步进电机仿真的整体硬件电路图,接下来是具体的说明[1][5][6]。

3.1 AMPIRE128*液晶屏介绍

AMPIRE128*是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为

128×, 内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该

模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字。也可完成图形显示。低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块,其在Proteus中的元器件图形如下[6]:

图3.1 AMPIRE128*

6

各引脚的功能描叙如下表

表3.1 AMPIRE128*引脚功能表 引脚 引脚名称 序列 1 2 3 4 5 6 7 CS1 CS2 GND VCC V0 RS R\\W 片选择,1有效 片选择,1有效 地引脚,接地 功能不详,在电路连接时悬空 对比度调节,输入电压 -0 ~ -10V RS=1 时DATA为显示数据; RS=0 时DATA为指令数据 RW=1为读LCD内部数据;RW=0是写数据 到LCD RW=0、E↓时LCD对RS和数据DATA进行取样和执行; 8 E RW=1、RS=0、E↑时LCD输出数据到DATA 数据引脚,用于液晶屏与单片机之间的数据通信 复位引脚,低电平有效,起复位作用,器件内部集成了上拉电阻,正17 18 RST -Vout 常工作时此引脚接电源 负压输出(-10V) 引脚功能描述 9~16 D0~D7 3.2 HD61202及其指令集介绍 3.2.1 HD61202

HD61202及其兼容液晶显示控制驱动器,是一种带有驱动输出的图形液晶显示控制器。它可直接与8 位微处理器相联,可与HD61203配合,对液晶屏进行行列驱动。内藏× = 4096位显示RAM,RAM中每位数据对应LCD屏上一个点的亮、暗状态;HD61202及其兼容控制驱动器是列驱动器,具有路列驱动输出;读、写操作时序与68系列微处理器相符,因此它可直接与68系列微处理器接口相联;占空比为1/32--1/。该器件支持非常广泛的字符格式,液晶显示器允许通过编程设置选择不同的组合。它可以用于文字,图形和结合文本模式及其他各种属性的功能。

3.2.2 HD61202指令集

HD61202及其兼容控制驱动器的指令系统比较简单总共只有七种现在分别介

7

绍如下;

(1)显示开/关指令

R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 D 0 0 0 1 1 1 1 1 1 当DB0=1时,LCD显示RAM中的内容; 当DB0=0时,显示关闭。

(2)显示起始行(ROW)设置指令

R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 1 1 显示起始行(0—63) 该指令设置了对应液晶显示屏最上一行的显示RAM的行号,有规律的改变显示起始行,可以使LCD实现显示滚动效果。

(3)页(Page)设置指令

D/1 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 1 0 1 1 1 页号(0—7) 显示RAM共行,分8页,每页8行。

(4)列地址(Y Address)设置指令

D/1 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 1 1 显示列地址(0—63) 设置了页地址和列地址,就唯一确定了RAM中的一个单元,这样MPU就可以读、写指令,读出该单元中的内容或向该单元写进一个字节数据。

(5)读状态指令

D/1 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 B USY 0 ON/OFF REST 0 0 0 0 该指令用来查询HD61202及其控制驱动器的状态,各参量含义如下; BUSY: 内部在工作0,正常状态1; ON/OFF: 显示关闭0,显示打开1; REST: 复位状态0,正常状态1。

在BUSY和REST状态是,除读状态指令外,其他指令均不对HD61202及其兼容控制驱动器产生作用。

在对HD61202及其兼容控制驱动器操作之前,要查询BUSY状态,以确定是否队HD61202及其兼容控制驱动器进行操作。

(6)写数据指令

R/W D DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 写 数 据

8

(7)读数据指令

R/W D DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 读 显 示 数 据 读、写指令每执行一次读、写操作,列地址就自动增1。必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。

3.3 晶振、复位、驱动电路 3.3.1 晶振电路

单片机的晶振电路如图3.2所示,其中XTAL1和XTAL2分别为片内振荡电路的输入输出端。一般电容取20~47uF,本系统晶体的振荡频率为12MHz。晶振电路产生的振荡脉冲经过内部触发器进行二分频后,成为单片机的时钟脉冲信号,为单片机提供一个基本时钟信号。

C1XTAL130pFX1CRYSTALXTAL2C230pF 图3.2 晶振电路

3.3.2 复位电路

复位操作是单片机的基本操作,单片机在进入运行前和在运行过程中程序出错或操作失误使系统不能正常运行时,需要进行复位操作,复位操作后,程序将从0000H开始重新执行。

复位信号从单片机的RST引脚输入,复位操作有上电自动复位、按键电平复位和外部脉冲复位三种方式,本电路采用了按键电平复位,电路图如图3.3所示:

EAC3R21k220uFR11kRST 图3.3 复位电路

9

3.3.3 电机驱动电路

步进电动机是一种将电脉冲信号转换成角位移或线位移的精密执行元件,由于步进电机具有控制方便、体积小等特点,所以在数控系统、自动生产线、自动化仪表、绘图机和计算机外围设备中得到广泛应用。微电子学的迅速发展和微型计算机的普及与应用,为步进电动机的应用开辟了广阔前景,使得以往用硬件电路构成的庞大复杂的控制器得以用软件实现,既降低了硬件成本又提高了控制的灵活性,可靠性及多功能性。市场上有很多现成的步进电机控制机构,但价格都偏高。应用SGS公司推出的

L298芯片可方便的组成步进电机驱动器,并结合ATC51单片机进行控制,即可以

实现用相对便宜的价格组成一个性能不错的步进电机驱动电路。

9A5B7C10D12611115IN1IN2IN3IN4ENAENBVCC4VSOUT1OUT2OUT3OUT4GND8U32A13A213A314A4SENSASENSBL298 图3.4 电机驱动电路

3.4 液晶显示屏与单片机接口电路

液晶显示屏共有18个引脚,其中VCC、RST接电源,GND三脚接地,CS1、

CS2两脚分别接P2.4、P2.3,DB0~DB7分别与单片机P0.0~P0.7相连接,R\\W

与P2.1脚相连,RS与P2.0脚相连,E与P2.2脚相连,V0滑动变阻器,电如图见图3.5所示:

10

单片机与LCD接口RP1U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDP13902381337243635354634573368327918XTAL2LCD1AMPIRE128X9RST293031K1K2K3K4K5K6K7K812345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C5110A11B12C13D14151617VOPSENALEEA21RSRESPACK-822RW23E24S225S126272850%VO18P1771661551441331221111009E8RW7RS6V05P4G3S22S11-VoutRSTDB7DB6DB5DB4DB3DB2DB1DB0ER/WRSV0VCCGNDCS2CS1RV1V01k 图3.5 LCD与单片机接口

3.5 控键与单片机接口电路

本设计共有16个控件,分别是:0-9十个数字键用来设置转速,正转和反转键控制电机的正反转向,加速和减速键用来控制转速,以十转为基本单位进行递加或递减,设置键可以设置转向、精确的转速、转动时间,当设置完成是可以用启动键启动。

K1~K8分别与P1.0~P1.7相接,键盘如图3.6所示:

11

键盘接口U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDP13902381337243635354634573368327918XTAL2RP19RST293031PSENALEEA21RSRESPACK-822RW23E24S225S126272810A11B12C13D14151617K1K2K3K4K5K6K7K812345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C510K11234K25678K39正转反转加速K4减速K6K7设置K8启动K5 图3.6 键盘接口

12

第4章 系统软件设计

本部分主要介绍步进电机控制的软件部分设计,包括电机流程图、液晶屏驱动代码设计、初始化代码设计、电机时间代码设计、数据表格设计等几个方面,现就对这几个方面做具体分析。

4.1 电机流程图

4.1.1 液晶驱动程序调用规则流程图

本设计用到了液晶AMPIRE128*,势必用到驱动代码,包括读状态函数;写指令函数;读数据函数;写数据函数;自动读写函数;显示汉字、字符函数等等,现以流程图的形式给出其互相调用规则(A函数指向B函数,表示B调用了A)。

判断忙指令void Busy()写数据程序void Write_dat(unsigned char dat)写汉字程序void Han_Zi(bit m,unsigned char page,unsigned char row,unsigned char n)写指令程序void Write_com( unsigned char com)初始化程序void Init()清屏程序void Clear()写字符程序void Zi_Fu(bit m,unsigned char page,unsigned char row,unsigned char n)

图4.1 液晶驱动调用

4.1.2 主函数流程图

在主函数的运行过程中,程序会随着启动键的按下进入主循环而不断地扫描键盘,判断是否有键按下,再调用相关函数做相应的处理,同时一个定时器中断有条件开启,在中断到来时响应中断,执行相关的中断操作,流程图如下:

13

图4.2 主函数调用

4.2 液晶屏驱动代码设计 4.2.1 判断忙指令 void Busy() { DI=0; RW=1; do { DB=0xff;

14

E=1; DB&=0x80; E=0; }

while(DB!=0); }

4.2.2 写指令程序

void Write_com( unsigned char com) { Busy(); DI=0; RW=0; E=1; DB=com; E=0; }

4.2.3 写数据程序

void Write_dat(unsigned char dat) { Busy(); DI=1; RW=0; E=1; DB=dat; E=0; }

4.2.4 写汉字程序

void Han_Zi(bit m,unsigned char page,unsigned char row,unsigned char n) {

15

unsigned char i,j; if(m) { CS1=0; CS2=1; } else { CS1=1; CS2=0; }

for(j=0;j<2;j++) {

Write_com(page+0xb8+j); Write_com(row+0x40); for(i=0;i<16;i++) {

Write_dat(Tab1[n][16*j+i]); } } }

4.2.5 写字符程序

void Zi_Fu(bit m,unsigned char page,unsigned char row,unsigned char n) {

unsigned char i,j; if(m) { CS1=0; CS2=1; } else

16

{ CS1=1; CS2=0; }

for(j=0;j<2;j++) {

Write_com(page+0xb8+j); Write_com(row+0x40); for(i=0;i<8;i++) {

Write_dat(Tab2[n][8*j+i]); } } }

4.2.6 清屏程序 void Clear() {

unsigned char i,j; CS1=1; CS2=0; for(j=0;j<8;j++) {

Write_com(0xb8+j); Write_com(0x40); for(i=0;i<;i++) Write_dat(0); } CS1=0; CS2=1; for(j=0;j<8;j++) {

17

Write_com(0xb8+j); Write_com(0x40); for(i=0;i<;i++) Write_dat(0); } }

4.2.7 初始化程序 void Init() { CS1=1; CS2=0;

Write_com(0xc0);//设置起始行为第一行 Write_com(0x3f);//开显示关显示为0x3e CS1=0; CS2=1;

Write_com(0xc0); Write_com(0x3f); }

4.3 固定字符显示代码 Han_Zi(0,2,16,0); Han_Zi(0,2,32,1); Han_Zi(0,2,48,2); Han_Zi(1,2,0,3); Zi_Fu(1,2,16,11); Han_Zi(0,4,16,1); Han_Zi(0,4,32,6); Zi_Fu(0,4,48,11); Han_Zi(0,4,0,9); Zi_Fu(1,2,16,11); Han_Zi(0,6,16,0);

18

Han_Zi(0,6,32,1); Han_Zi(0,6,48,10); Han_Zi(1,6,0,11); Zi_Fu(1,2,16,11); Zi_Fu(1,6,16,11); Zi_Fu(1,4,32,0); Han_Zi(1,4,24,1); Zi_Fu(1,4,40,10); Han_Zi(1,4,48,12); Zi_Fu(0,4,56,1); Zi_Fu(1,4,0,5); Zi_Fu(1,4,8,0); 4.4 中断子程序

void t0() interrupt 1 using 0 {

TH0=15536/256; TL0=15536%256; b++; if(b==1) { b=0; a++; if(a==8)a=0; P3=Tab3[a]; } }

4.5 汉字表

unsigned char code Tab1[][32]={ //-- 旋 --0

0x08,0x08,0xF9,0x4E,0x48,0xCC,0x28,0x10,

19

0x2F,0x24,0xE4,0x24,0x24,0xA6,0x,0x00, 0x40,0x30,0x0F,0x20,0x40,0xBF,0x40,0x20, 0x1F,0x20,0x7F,0x84,0x86,0xC4,0x40,0x00, //-- 转 --1

0x08,0xC8,0xB8,0x8F,0xE8,0x88,0x40,0x48, 0xC8,0x7F,0x48,0x48,0x4C,0x68,0x40,0x00, 0x08,0x18,0x08,0x04,0xFF,0x04,0x00,0x02, 0x13,0x22,0x62,0x9A,0x06,0x02,0x00,0x00, //-- 方 --2

0x10,0x10,0x10,0x10,0x10,0xF1,0x92,0x96, 0x90,0x90,0x90,0xD0,0x90,0x18,0x10,0x00, 0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00, 0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00, //-- 向 --3

0x00,0xF8,0x08,0x08,0xCC,0x4A,0x49,0x48, 0x48,0x48,0xE8,0x48,0x08,0xFC,0x08,0x00, 0x00,0xFF,0x00,0x00,0x1F,0x08,0x08,0x08, 0x08,0x08,0x1F,0x40,0x80,0x7F,0x00,0x00, //-- 正 --4

0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE, 0x82,0x82,0x82,0xC2,0x83,0x02,0x00,0x00, 0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F, 0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00, //-- 反 --5

0x00,0x00,0xFC,0x24,0x24,0xE4,0x24,0x24, 0x24,0x22,0x22,0xA3,0x62,0x00,0x00,0x00, 0x40,0x30,0x0F,0x80,0x80,0x40,0x23,0x14, 0x08,0x14,0x22,0x21,0x40,0xC0,0x40,0x00, //-- 速 --6

0x40,0x42,0x44,0xCC,0x00,0xF4,0x94,0x94, 0x94,0xFF,0x94,0x94,0x94,0xF6,0x04,0x00,

20

0x00,0x40,0x20,0x1F,0x20,0x51,0x48,0x44, 0x42,0x7F,0x42,0x44,0x4C,0x61,0x20,0x00, //-- 度 --7

0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0xA5, 0xA6,0xA4,0xFC,0x24,0x34,0x26,0x04,0x00, 0x40,0x20,0x9F,0x80,0x42,0x42,0x26,0x2A, 0x12,0x2A,0x26,0x42,0x40,0xC0,0x40,0x00, //-- 分 --8

0x00,0x80,0x40,0x20,0x98,0x86,0x80,0x80, 0x83,0x8C,0x90,0x20,0xC0,0x80,0x80,0x00, 0x01,0x00,0x80,0x40,0x20,0x1F,0x00,0x40, 0x80,0x40,0x3F,0x00,0x00,0x01,0x00,0x00, //-- -> --9

0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, 0xD8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00, 0x00,0x00,0x07,0x07,0x07,0x07,0x07,0x07, 0x37,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00, //-- 时 --10

0x00,0xFC,0x84,0x84,0x84,0xFE,0x14,0x10, 0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x00, 0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00, 0x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00, //-- 间 --11

0x00,0xF8,0x01,0x02,0xF6,0x10,0x12,0x12, 0x12,0x12,0xFA,0x12,0x02,0xFF,0x02,0x00, 0x00,0xFF,0x00,0x00,0x3F,0x11,0x11,0x11, 0x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00, //-- 分 --

0x00,0x80,0x40,0x20,0x98,0x86,0x80,0x80, 0x83,0x8C,0x90,0x20,0xC0,0x80,0x80,0x00, 0x01,0x00,0x80,0x40,0x20,0x1F,0x00,0x40,

21

0x80,0x40,0x3F,0x00,0x00,0x01,0x00,0x00,}; 4.6 字符表

unsigned char code Tab2[][16]={

0xF0,0xF8,0x0C,0x04,0x04,0x0C,0xF8,0xF0, // -0- 0x0F,0x1F,0x30,0x20,0x20,0x30,0x1F,0x0F, 0x00,0x00,0x08,0xF8,0xFC,0x00,0x00,0x00, // -1- 0x00,0x00,0x20,0x3F,0x3F,0x20,0x00,0x00, 0x30,0x38,0x0C,0x04,0x04,0x0C,0xF8,0xF0, // -2- 0x20,0x30,0x38,0x2C,0x26,0x23,0x21,0x38, 0x10,0x18,0x0C,0x84,0x84,0xCC,0x78,0x30, // -3- 0x08,0x18,0x30,0x20,0x20,0x31,0x1F,0x0E, 0x00,0xC0,0x70,0x18,0xFC,0xFE,0x00,0x00, // -4- 0x07,0x05,0x04,0x24,0x3F,0x3F,0x24,0x04, 0xFC,0xFC,0xC4,0x44,0x44,0xC4,0x84,0x04, // -5- 0x08,0x18,0x30,0x20,0x20,0x30,0x1F,0x0F, 0xF0,0xF8,0x8C,0x44,0x44,0xCC,0x98,0x10, // -6- 0x0F,0x1F,0x30,0x20,0x20,0x30,0x1F,0x0F, 0x1C,0x0C,0x0C,0x0C,0xCC,0xEC,0x3C,0x1C, // -7- 0x00,0x00,0x3C,0x3F,0x03,0x00,0x00,0x00, 0x30,0x78,0xCC,0x84,0x84,0xCC,0x78,0x30, // -8- 0x0E,0x1F,0x31,0x20,0x20,0x31,0x1F,0x0E, 0xF0,0xF8,0x0C,0x04,0x04,0x0C,0xF8,0xF0, // -9- 0x08,0x19,0x33,0x22,0x22,0x33,0x1F,0x0F, 0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x00, // -/- 0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, // -:- 0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,}; 4.7 延时子程序 void delay10ms() {

22

unsigned char a,b,c; for(a=0;a<5;a++) for(b=0;b<3;b++) for(c=0;c<220;c++); }

4.8 主函数程序 void main() {

TH0=15536/256; TL0=15536%256; EA=TMOD=TR0=ET0=1; P3=Tab3[a]; P1=0xff; Init(); Clear(); while(1) {

for (j=0;j<=3;j++) {

P1=0xfe<>(8-j); if(P1_4==0) {

delay10ms(); if(P1_4==0) {

while(P1_4==0); Zi_Fu(1,4,32,4*j); } }

if(P1_5==0) {

23

delay10ms(); if(P1_5==0) {

while(P1_5==0); Zi_Fu(1,4,32,4*j+1); } }

} } }

if(P1_6==0) {

delay10ms(); if(P1_6==0) {

while(P1_6==0); Zi_Fu(1,4,32,4*j+2); } }

if(P1_7==0) {

delay10ms(); if(P1_7==0) { while(P1_7==0); Zi_Fu(1,4,32,4*j+3); } } 24

第5章 系统仿真

在仿真之前先介绍和仿关的C程序编译软件Keil C51 µVision2和在线仿真平台Proteus 7.2 SP6,接着介绍有关工程项目的建立及编译生成可执行文件(*.Hex)的具体过程。

5.1 Keil2编译环境介绍

Keil C51 µVision2集成开发环境是Keil Software,Inc/Keil Elektronik

GmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标

准的开发工具,可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。Keil C51集成开发环境的主要功能有以下几点:

(1)µVision2 for Windows:是一个集成开发环境,它将项目管理、源代码编辑和程序调试等组合在一个功能强大的环境中;

(2)C51国际际准化C交叉编译器:从C源代码产生可重定位的目标模块; (3)A51宏汇编器:从80C51汇编源代码产生可重定位的目标模块; (4)BL51链接器/定位器:组合由C51和A51产生的可重定位的目标模块,生成绝对目标模块;

(5)LIB51库管理器:从目标模块生成连接器可以使用的库文件;

(6)OH51目标文件至HEX格式的转换器,从绝对目标模块生成Intel Hex文件;

(7)RTX-51实时操作系统:简化了复杂的实时应用软件项目的设计。 µVision2支持所有的Keil 80C51的工具软件,包括C51编译器、宏汇编器、链接器器/定位器和目标文件至Hex格式转换器,µVision2可以自动完成编译、汇编、链接程序等操作。

µVision2的组成部分如下: (1)C51编译器和A51汇编器

由µVision2 IDE创建的源文件,可以被C51编译器或A51汇编器处理,生成可重定位的object文件。Keil C51编译器遵照ANSI C语言标准,支持C语言的所有标准特性。另外,还增加了几个可以直接支持80C51结构的特性。Keil C51宏

25

汇编器支持80C51及其派生系列的所有指令集。

(2)LIB51库管理器

LIB51库管理器可以从由汇编器和编译器创建的目标文件建立目标库。这些库是按规定格式排列的目标模块,可在以后被链接器所使用。当链接器处理一个库时,仅仅使用了库中程序使用了的目标模块而不是全部加以引用。

(3)BL51连接器/定位器

BL51链接器使用从库中提取出来的目标模块和有编译器、汇编器生成的目标模块,创建一个绝对地址目标模块。绝对地址目标文件或模块包括不可重定位的代码和数据。所有的代码和数据都被固定在具体的存储器单元中。

(4)µVision2软件调试器

µVision2软件调试器能十分理想地进行快速、可靠的程序调试。调试器包括一个高速模拟器,可以使用它模拟整个80C51系统,包括片上外围器件和外部硬件。当从器件数据库选择器件时,这个器件的属性会被自动配置。

(5)µVision2硬件调试器

µVision2调试器提供了几种在实际目标硬件上测试程序的方法。安装MON51目标监控器到目标系统,并通过Monitor-51接口下载程序;使用高级GDI接口,将µVision2调试器与多功能EDA软件Proteus相连接,通过µVision2的人机交互环境可实现仿真操作。

(6)RTX51实时操作系统

RTX51实时操作系统是针对80C51为控制器系列的一个多任务内核。RTX51实时内核简化了需要对实时事件进行反应的复杂应用的系统设计、编程和调试。这个内核完全集成在C51编译器中,使用非常简单。任务描述表和操作系统的一致性由

BL51链接/定位器自动进行控制。

此外,µVision2还具有极其强大的软件环境、友好的操作界面和简单快捷的操作方法,主要表现在以下几点:丰富的菜单栏;可以快速选择命令按钮的工具栏;一些源代码文件窗口;对话框窗口;直观明了的信息显示窗口。

5.2 Proteus 仿真平台

Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实

26

现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,您不需要别的,Proteus为您建立了完备的电子设计开发环境!尤其重要的是Proteus Lite可以完全免费,也可以花微不足道的费用注册达到更好的效果;功能最强的Proteus专业版也非常便宜,人人用得起,对高校还有更多优惠。

Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。

Proteus 产品系列也包含了我们性的VSM技术,用户可以对基于微控制器的设

计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、

RS232终端等动态外设模型来对设计进行交互仿真。

其功能模块:—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真;ARES PCB设计。

PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs甚至LCD显示CPU模型。

(1) 支持许多通用的微控制器,如PIC,AVR,HC11以及8051. 最新支持

ARM;

(2) 交互的装置模型包括: LED和LCD显示,RS232终端,通用键盘,I2C,

SPI器件;

(3) 强大的调试工具,包括寄存器和存储器,断点和单步模式; (4) IAR C-SPY 和Keil uVision2等开发工具的源层调试; (5) 应用特殊模型的DLL界面-提供有关元件库的全部文件;

(6) 最新版支持非常丰富仿真元件共7000多种,还有很多第三方模型。如MMC卡,以太网卡,ATA硬盘,麦克风,等等。

该软件的特点:①全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。 ②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI 调试器、键盘和LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。③目前支持的单片机类型有:68000系列、8051系列、AVR 系列、PIC12 系列、PIC16 系列、PIC18 系列、Z80 系列、HC11系列以及各种外围芯片。④支持大量的存储器

27

和外围芯片。总之,该软件是一款 集单片机和SPICE 分析于一身的仿真软件,功能极其强大,是其他任何一款软件不能相比的。 5.3 建立工程项目

(1) 建立一个新工程,单击Project菜单,在弹出的下拉菜单中选中New Project

选项,如下图:

图5.1 新建工程文件

(2) 然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程

文件的名字为C51,如下图所示,然后点击保存。

图5.2 工程文件保存

(3) 这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的

Atmel 的C51来说明,如下图所示,选择C51之后,右边栏是对这个单片机的

基本的说明,然后点击确定。

28

图5.3 选定单片机型号

(4) 完成上一步骤后,屏幕如下图所示:

图5.4 工程创建完成 写好了C文件则直接添加为文件,这一步可去掉。

(5) 在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项 ,如果已经

图5.5 添加C文件

29

新建文件后屏幕如下图所示:

图5.6 C文件添加完成

在建立目标文件之前,首先要将文件添加到组里去。具体操作如下:将鼠标箭头移至中间左边项目窗口中的“Source Group 1”前的图标上,再单击鼠标右键,在弹出的菜单项中选择“Add files to Group ‘Source Group 1’”。在弹出的对话框中选择刚才编辑保存好的源程序文件;需点“文件类型”右侧文本框中的倒三角,在弹出的下拉菜单中选“All files(*.*)”,然后再找到程序文件。点“Add”按钮,再在弹出的对话框中选择文件类型,如“Assembly language file”;再点“Close”按钮。若是C语言源程序文件“*.c”;或汇编语言的源程序文件“*.asm”,则点“文件类型”右侧文本框中的倒三角,在弹出的下拉菜单中选“c source file”或“asm

source file”,然后再找到程序文件。点“Add”按钮,再点“Close”按钮。此时按

钮建立目标“Build target”前的编译当前文件“Translate current file”按钮的颜色也变深了。而在中间左边项目窗口中的“Source Group 1”前多了一个“+”号。点击“+”号,可以看到在“Source Group 1”下面就有一个源程序文件图标,图示如下:

30

图5.7 keil中文件的添加

完成上述操作后方可进入建立目标文件。通常先点编译当前文件“Translate

current file”,再建立目标文件“Build target”;或直接点重建目标文件“Rebuild all target files”。即可生成我们需要的后缀名为HEX的十六进制文件。编译或汇编的

结果见如图所示,上面提示“0个错误、0个报警”。如果在编译、连接中出现错误,则可按照提示进行检查。这个文件就是我们要下载到单片机中的程序文件。

图5.8 Keil工程项目目标文件生成

31

5.4 Proteus中原理图的绘制及文件的加载

依照仿真电路在Proteus中绘图,如下图所示;

图5.9 Proteus中的步进电机控制原理图

双击单片机弹出对话框,在Clock Frequency栏中将晶振设置为24MHz,在

Program file栏中加载“步进电机.Hex”文件,再单击OK设置完成,图片如下:

图5.10 单片机文件加载及晶振设置

至此,仿真前的准备工作都已经全部完成,接下来正式进入仿真调试。

5.5 开机界面显示

点击仿真按钮,程序调用初始化函数,进入开机界面显示,图片如下:

32

图5.11 开机显示

5.6 控制界面显示

当进入开机界面显示后,数字和正、反转键无效,被锁定,当按下设置键后,按照其当前的状态设置开启相应的键,其他键锁定,如设置转速项时,数字键开启,正、反转键锁定。画面进入界面显示,步进电机仿真、旋转方向、转速、旋转时间开始记录数据,图片如下:

图5.12 控制界面显示

5.7 仿真结果分析及解决方法

通过以上给出的仿真结果分析可知,本设计中的各项功能够很好的实现。在时钟脉冲的作用下,各个按键都能按照事先设定好的规则进行控制。设置键能使界面从初始化显示切换到电机设置界面显示,确定设置功能项,包括转速、转向、时间等。在电机转动的同时程序会同时计时,直至设置时间完成。正、反转键用于控制转向,在程序运行过程中这个键任何时候都有效,当按下选关键后,电机转向立即按当前按键进行调整。

电机在主程序中设了按键去抖程序。既在实际当中由于偶然的原因键盘抖动而导

33

致引脚电平为低人后瞬间又恢复为高,或虽然只是按下按键一次然后放掉,结果在按键信号稳定前后,竟出现了一些不该存在的噪声,这些情况下按键是并没有真的被按下的,如果没有去抖动程序,系统会将其当做一次正确的按键操作去执行相应功能,这样就会引起电路的误动作。处理方法是:当扫描到有键按下时,软件演示10ms在判断改键时候仍是按键,若是这按键有效,同时喇叭发声,否则,把它当成是误操作处理。这样大大提高了程序的可靠性。

本电机是有一些不足之处,比如没有设置到时提示、没有按键发声,虽然代码几经修改也难免有不足之处,代码的优化程度可能是个问题,代码越多单片机执行速度就越慢,依靠提高晶振频率来提高速度是不能解决问题的实质的。当时我考虑外部扩展数据存储区,但那样一来不仅电路复杂,且程序长度和读写速度都受到影响,几经修改终于将数据区压缩到可接受范围,省去了外部数据存取器使电路变得更加简洁, 同时也降低控制器的成本。

第6章 PCB板设计

6.1加载网络表及元件封装 6.1.1加载网络表

在Proteus 7.4 Professional 中用ISIS 7.4 Professional 设计好电路原理图,并结合Keil C51进行软件编程和硬件的仿真调试,调试成功后,便可开始制作PCB。在ISIS 7.4 Professional 界面中单击Design Toolbar中的

34

图标或通过Tools菜

单的Netlist to ARES 命令打开ARES 7.4 Professional 窗口如图6.1所示。可以看到,在图6.1中左下角的元器件选择窗口中列出了从原理图加载过来的所有元器件。若原理图中的某些器件没有自动加载封装或者封装库中没有合适的封装,那么在加载网络表时就会弹出一个要求选择封装的对话框(如图6.2所示)。这时就需要根据具体的元件及其封装进行手动选择并加载。

图6.1 ARES 7.4 Professional 窗口

35

图6.2 选择封装的对话框

6.1.2元件封装

在画PCB之前要确定所有的元件是否都有现成的封装,如没有则需要自己画好保存后再进行下面的操作。

自建封装保存后,再到库中加载,就可以把自己制作的元件封装加载到PCB中了。

按照上面的方法把需要的元件封装都画好以后,再重新加载网络表,这样,就把所有的元件都加载到了PCB中。

6.2 PCB板参数设置 6.2.1电路板规划

在ARES7.4 Professional 窗口中选中2D画图工具栏的

图标,在底部的电

路层中选中Board Edge层,即可以单击鼠标左键拖画出PCB板的边框了。边框的大小就是PCB板的大小,所以在画边框时应根据实际,用测量工具小(如图6.3所示)。

36

来确定尺寸大

图6.3规划电路板方框图图

6.2.2设置电路板的相关参数

PCB板边框画好以后,就要设置电路板的相关参数。单击System中的Set Default Rules项,在弹出的对话框中设置规则参数,有焊盘间距、线与焊盘间距、

线与线间距等一些安全允许值如图6.4所示。然后在Tools中选中

(布

线规则)项,在弹出的对话框中单击Edit Strategies项,出现一个对话框。在左上

Strategy栏中分别选中POWER和SIGNAL,在下面的Pair1中选同一层。这样,

就完成了在单层板中布线的设置。到此,对一些主要的参数设置就完成了。别的系统参数设置,可以在System和Tools中去设置完成。

37

图6.4 设置规则参数

6.3元件布局及布线设计 6.3.1 元件布局

电路板的规则设计好以后,就可导入元件并布局。布局有自动布局和手动布局两种方式。若采用自动布局方式,只要在界面的菜单栏中选中

项,弹出对话框,单

击OK,就自动把元件布局于PCB板中了。而如果采用手动布局的方式,则在左下角的元件选择窗口中选中元件,在PCB板边框中适当位置单击左键,就可以把元件放入。

6.3.2元件调整

无论是自动布局还是手动布局,都需要对元件进行调整。主要是对元件的移动和翻转等操作。对元件的布局原则是:美观、便于布线、PCB板尽可能小,本人是在自动布局后,在进行手动的局部调整。

6.3.3 元件布线

38

同样,PCB的布线也是有自动布线和手动布线两种布线方式。一般,是先用自动布线,然后手工修改,也可以直接手工布线。布线规则的设置在上面已经描述,这里主要说明布线时用的导线的粗细设置以及焊盘大小的修改。首先,选中工具菜单栏中的

选项,在左下角的导线选择窗口中选中想要的导线粗细类型,也可以选择

DEFAULT(默认),再单击E按钮,在弹出的对话框中修改Width的值就可以了。

在布线的过程中,如果需要改变某一根线的大小,可以双击右键,选择Trace Style选项中的合适类型;要删除该线,则左键单击Delete。如果要删除整个布线,那么就选中所有的连线,左键单击工具菜单栏中的在布线完成之后进行。先选中工具菜单栏中的

图标即可。对于焊盘的修改,可以

选项,然后在选择窗口中选中

合适的焊盘,在需要改变的元件焊盘处单击鼠标左键即可。布线完成后的PCB板如图6.5所示[10]。

图6.5布线完成图

39

结束语

40

参考文献

41

致 谢 附录Ⅰ 总体电路图

42

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务