专 业:机械设计制造及其自动化 指导教师: 雷冀南 设计期限: 2013年04月14日 开始
2013年04月25日 结束
华北水利水电学院机械学院
课程名称:单片机应用基础 2014年4月
一、课程设计目的
《单片机应用基础》课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的就是配合本课程的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。
二、课程设计任务
根据给定的任务要求选择合适的单片机和其他电子元器件,进行系统硬件电路设计和软件编程,根据系统制作并调试系统电路板,使之实现任务要求。有关参数选择要求符合国家标准。具体设计内容如下:
1. 模拟步进电机、模拟交通灯模块、模拟键盘输入及显示模块。 2. 设计系统工作原理图,利用PROTEUS软件绘制系统工作原理图; 3. 系统控制程序设计、调试及实现: (1)根据要求,写出完整的程序流程图;
(2)将设计程序输入、汇编,排除语法错误,生成*.OBJ文件; (3)按所设计的原理图,在实验平台上连线,检查无误;
(4)将目标文件传送到实验系统,执行并运行调试该程序,最终实现控制要求 4. 写出设计说明书,说明书格式见附录,3000字左右 三、单片机应用系统的设计步骤
单片机的应用系统随着用途不同,它们的硬件和软件结构差别很大,但系统设计的方法和步骤基本上是相同的。一般包括总体设计、硬件设计、软件设计、仿真调试、固化程序、应用系立运行等步骤。
课程设计由于时间安排、学生水平、实验条件等诸方面的,仅要求学生完成仿真调试即可。 (一)总体设计 1、明确任务
根据课题的要求确定系统的工作原理。如电脑时钟的工作原理为:每百分之一秒对计数一次,满100次秒加一,秒满60次分加一……;并在数码管上显示时、分秒当前值。
如果需要还要提出相应的技术指标。如电脑时钟要求显示的最小单位为秒,还是百分之一秒;温度测量系统要求测量多少路?测量精度是多少;收银机计算金额的范围多大,最小
单位是否计分;交通灯控制系统测量车流量的最大频率是多少等。 2、 硬件和软件功能的划分
系统的硬件配置和软件设计是紧密地联系在一起的,且硬件和软件具有一定的互换性。多用硬件完成一些功能,可以提高工作速度,但降低了系统的柔性。若用软件替代某些硬件功能,可增加系统的柔性,但降低系统的工作速度。因此,总体设计时,应综合考虑,合理划分硬件和软件的功能。在课程设计中,应充分利用仿真系统的硬件资源。如单个脉冲可以通过程序CPL P1.0得到,也可利用实验仿真系统的硬件资源获得。 (二)硬件设计
根据总体设计要求,确定系统扩展与功能接口,设计出系统的电路原理图。 1、 系统扩展
实验仿真系统的CPU是8031,因此,必须首先组成最小系统,即由8031、地址锁存器和程序存储器组成。根据课题要求,在此基础上进行扩展。包括程序存储器扩展、数据存储器扩展、I/O口扩展(8155、8255、74LS1)、定时器/计数器扩展(8253)和中断控制器扩展(8259)等。如交通灯控制系统中要求控制四个方向的红、绿、黄灯共12个,因此,需扩展I/O口,可选用8255,也可利用串入并出移位寄存器74LS1扩展2个8位输出口的接口电路。 2、 功能接口
所谓接口是CPU与外界的连接部件,以实现CPU与外部设备的最佳耦合和匹配。包括键盘、显示、A/D转换、D/A转换和打印机等。根据课题要求,选用外设,并选用合适的外围接口芯片。
3、 系统的组成及统一编址
I/O端口是CPU与I/O设备直接通信的地址。单片机系统对I/O端口是采用端口地址与存储器地址统一编址的方式,即存储器映射方式。而编址技术又分线选法和译码法。由于实验仿真系统的地址总线没有开放,如8155、8255、0809、0832等芯片地址均已定义,但学生在设计硬件时,仍应自行编址。 (三)软件设计
一个优秀的的系统的软件应具有下列特点: ①软件结构清晰、简捷、流程合理。
②各功能程序实现模块化、子程序化。这样,既便于调试、链接,又方便移植、修改。 ③程序存储区、数据存储区分配合理。
④运行状态实现标志化管理。各个功能程序运行状态、运行结果以及运行要求都设置状态标志(一般用位寻址区的位)以便查询,程序的转移、运行、控制都可以通过状态标志条件来控制。
⑤实现全面软件抗干扰设计。(由于条件有限,课程设计中不考虑。)
软件设计一般步骤如下: 1、 系统定义
系统定义是在软件设计前,把软件承担的任务明确出来。
1.1、 各种数据类型的定义。是定点数还是浮点数;是有符号数还是无符号数;是十六进制数还是BCD码。
如果一个参数的变化范围有限,就可以用定点数来表示,以简化程序设计和加快运行速度。当参数的变化范围太宽时,只好采用浮点数来表示,如智能电桥中被测对象的变化范围达10个数量级(l~l0 000μF),定点数是无法胜任的。
若要求数据的正负之分,则考虑定义有符号数。
对于自然数列,为显示方便,可以采用BCD码,如电脑时钟的时、分、秒。 1.2、 合理定义和分配存储空间、定义标志位。
资源分配的主要工作是RAM资源的分配。片外RAM的容量要比片内RAM大,通常用来存放批量大的数据,如采样数据系列。主要考虑片内RAM的分配。系统上电复位时,自动定义0区为工作寄存器,1区为堆栈,并向2区、3区延伸。如果系统前台程序要用1区、2区作为工作寄存器,就应将堆栈空间重新规划,常将堆栈安放在片内RAM的高端,如60H~7FH。
在工作寄存器的8个单元中,R0和R1具有指针功能,是编程的重要角色,应充分发挥其作用,尽量避免用来做其他事情。
20H~2FH这16个字节具有位寻址功能,用来存放各种软件标志、逻辑变量、位输入信息、位输出信息副本、状态变量、逻辑运算的中间结果等。当这些项目全部安排好后,保留一两个字节备用,剩下的单元才可改作其他用途。
30H~7FH为一般通用寄存器,只能存入整字节信息。通常用来存放各种参数、指针、中间结果,或用作数据缓冲区。
RAM资源规划好后,应列出一张RAM资源的详细分配清单,作为编程依据。为了增加可读性,便于修改,一般对分配的存储单元取名。如保存当前时间的时、分、秒取HOUR、MINI、SEC,编程时用变量名,编译时只需在前面加HOUR EQU 24H即可(20H为分
配给小时的存储单元的地址)。 2、 软件结构设计
软件设计有两种方法:一种是自上而下,逐步细化;另一种是自下而上,先设计出每一个具体的模块(子程序),然后再慢慢扩大,最后组成一个系统。两种方法各有优缺点。自上而下的方法在前期看不到什么具体效果,对于初学者来说,心中总是不踏实。而自下而上的方法一开始就有结果,每设计并测试好一个模块,就能看到实际的效果,给人一步一个足印的感觉,能树立信心。我们建议两种方法结合运用。主程序采用自上而下的方法,将它分成若干个功能相对的较小的程序模块。然后再采用自下而上的方法,设计一个模块,调试一个模块,加入主程序调试;再进行下一个模块设计和调试。所以在这一步骤就是设计主程序的框架。 3、 模块设计
3.1、建立入口条件和出口条件,明确模块功能
根据问题的定义,描述出各个输入变量的存放地址(入口条件)和各个输出变量的存放地址(出口条件)。例如输入量是经A/D转换后的8个数字量,存入在以30H为首的数据块中,输出量是这8个数字量的平均值,存放在40H中。为方便起见,用R0存放输入量数据块首地址,用R1存放输出量地址。则入口条件为R0,出口条件为R1。
3.2、绘制程序框图
根据问题的定义,确定算法,并绘制程序框图。注意必须确保程序框图的正确性。比如在电脑时钟中,考虑输入“分”的数据的合理性,数据必须小于60,程序框图中就不能忽视等于60如何处理。这是初学者常犯的错误。
3.3、编写程序
在确保程序框图的正确性的前提下,才能编写程序。在编程时必须注意以下几点: ①一定要严格根据框图编程。 ②一定要写注释。
③通过编译后,只表明语法没错,并不表明逻辑正确,一定要用不同的数据对模块进行测试。完全符合预定结果,方可确认通过。
④将该模块加到主控模块进行测试,如果与预定结果不符,必须查找原因,进行修改、调试。
⑤必须注意随时保存调试通过的副本。以便当新程序出现故障时,随时可返回前面的正确点重新开始。
4、 编写设计说明书
设计说明书的格式见附录。
由于设计时间紧迫,要求学生尽量不要在完成全部设计后再编写设计说明书。而应在设计过程中逐步完成。一开始不可能设计出满意的主程序框图。因此,总体设计部分在完成全部设计任务后再写。而硬件部分和软件部分可以在设计过程同步完成。
四、步进电机控制系统设计
(一)步进电机工作原理
步进电机是工业过程控制及仪表中常用的控制元件之一,例如在机械装置中可以用丝杠把角度变为直线位移,也可以用步进电机带螺旋电位器,调节电压或电流,从而实现对执行机构的控制。步进电机可以直接接收数字信号,不必进行数模转换,用起来非常方便。步进电机还具有快速启停、精确步进和定位等特点,因而在数控机床、绘图仪、打印机以及光学仪器中得到广泛的应用。
步进电机实际上是一个数字/角度转换器,三相步进电机的结构原理如图所示。从图中可以看出,电机的定子上有六个等分磁极,A、A′、B、B′、C、C ′,相邻的两个磁极之间夹角为60°,相对的两个磁极组成一相(A-A′,B-B′,C-C′),当某一绕组有电流通过时,该绕组相应的两个磁极形成N极和S极,每个磁极上各有五个均匀分布矩形小齿,电机的转子上有40个矩形小齿均匀地分布的圆周上,相邻两个齿之间夹角为9°。
当某一相绕组通电时,对应的磁极就产生磁场,并与转子形成磁路,如果这时定子的小齿和转子的小齿没有对齐,则在磁场的作用下,转子将转动一定的角度,使转子和定子的齿相互对齐。由此可见,错齿是促使步进电机旋转的原因。
三相步进电机结构示意图
例如在三相三拍控制方式中,若A相通电,B、C相都不通电,在磁场作用下使转子齿和A相的定子齿对齐,我们以此作为初始状态。设与A相磁极中心线对齐的转子的齿为0号齿,由于B相磁极与A相磁极相差120°,不是9°的整数倍(120÷9=40/3),所以此时转
子齿没有与B相定子的齿对应,只是第13号小齿靠近B相磁极的中心线,与中心线相差3°,如果此时突然变为B相通电,A、C相不通电,则B相磁极迫使13号转子齿与之对齐,转子就转动3°,这样使电机转了一步。如果按照A→B→C的顺序轮流通电一周,则转子将动9°。
步进电机的运转是由脉冲信号控制的,传统方法是采用数字逻辑电路——环形脉冲分配器控制步进电机的步进。 下图为环形脉搏冲分配器的简化框图。
三相六拍环形脉搏冲分配器
①运转方向控制。如图所示,步进电机以三相六拍方式工作,若按A→AB→B→BC→C→CA→A次序通电为正转,则当按A→AC→C→CB→B→BA→A次序通电为反转。
②运转速度的控制。图中可以看出,当改变CP脉冲的周期时,ABC三相绕组高低电平的宽度将发生变化,这就导至通电和断电时速率发生了变化,使电机转速改变, 所以调节CP脉冲的周期就可以控制步进电机的运转速度。
③旋转的角度控制。因为每输入一个CP脉冲使步进电机三相绕组状态变化一次,并相应地旋转一个角度,所以步进电机旋转的角度由输入的CP脉冲数确定。 (二)利用P1口进行步进电机控制系统设计原理图
举例说明:20BY-0型4相步进电机,其工作电压为4.5V,在双四拍运行方式时,其步距角为18O ,相直流电阻为55Ω,最大静电流为80Ma。采用8031单片机控制步进电机的运转,按四相四拍方式在P1口输出控制代码,令其正转或反转。因此P1口输出代码的变化周期T控制了电机的运转速度:
n=60/T.N
式中:n —— 步进电机的转速(转/分);
N —— 步进电机旋转一周需输出的字节数; T —— 代码字节的输出变化周期。
设N=360°/ 18°=20,T=1.43ms,则步进电机的转速为2100转/分。 控制P1口输出的代码字节个数即控制了步进电机的旋转角度。
根据步进电机工作原理,使用8031的 P1.0-P1.3分别驱动步进电机A、B、C、D相,用软件控制P1口输出一脉冲序列,控制步进电机转速、方向、步距。同时为能观察步进电机旋转状态,在A、B、C、D相输出到状态指示灯。 开 始 清状态寄存器 置正转A相通电 步计数器R7置100步 延时计数器42H置200 (42)→ R6 调用延时1ms子程序 N (R6)-1=0? Y (32H)-1→32H 调用步进电机子程序 N (R7)-1=0? Y 步计数器R7置100步 (42)→ R6 步计数器R7置100步 (42)→ R6 调用延时1ms子程序 N (R6)-1=0? Y 调用延时1ms子程序 N (R6)-1=0? Y 调用步进电机子程序 N 调用步进电机子程序 (42H)+1 →42H N Y (R7)-1=0? Y (R7)-1=0? 步进电机控制主程序框图
返回 正反转步进子程序框图
(20H)→P1口 (A)0∽3 →(20H)0∽3 Y 根据(40H)查CTAB→A 0→40H N 正转? N 根据(40H)查FTAB→ A (40H) 〉3 (40H)+1→40H Y 开 始 控制原理图
(三)扩展8255的步进电机控制系统设计原理图
步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。切换是通过单片机输出脉冲信号来实现的。所以调节脉冲信号的频率便可以改变步进电机的转速,改变各相脉冲的先后顺序,可以改变电机的旋转方向。步进电机的转速应由慢到快逐步加速。电机驱动方式可以采用双四拍(AB→BC→CD→DA→AB) 方式,也可以采用单四拍(A→B→C→D→A)方式,或单、双八拍(A→AB→B→BC→C→CD→D→DA→A)方式。各种工作方式的时序图如下:(高电平有效)
双四拍方式 单四拍方式
单、双八拍工作方式
上图中示意的脉冲信号是高有效,但实际控制时公共端是接在VCC 上的,所以实际控制脉冲是低有效。8255 的PA 口输出的脉冲信号经(MC1413 或ULN2003A)倒相驱动后,向步进电机输出脉冲信号序列。8051 或80C196 单片机也可以通过P1 口输出脉冲信号控制步进电机的运转。
五、模拟键盘输入显示系统设计
(一)键盘工作原理
键盘是由若干按键组成的开关矩阵,是嵌入式控制系统的一种输入部件。键盘分两种:一种是式按键,另一种是矩阵式按键。如图所示。式按键用的比较少,可以直接与单片机的P1口某一位进行连接,通过判断这一位的状态知道是否有键输入。在应用中通常需要数量较多的按键,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
式键盘和4*4矩阵式键盘
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,行线通过电阻接正电源,并将列线所接的单片机的I/O口作为输出端,而行线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下 了。
(二)LED显示接口及原理
LED是发光二极管的英文缩写,LED显示器是由发光二极管构成的,它在单片机中的应用非常普遍。通常所说的LED显示器由7个发光二极管组成,其排列形状如图所示。此外,显示器中还有一个圆点型发光二极管以dp表示,用于小数点表示。通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。LED显示中的发光二极管共有两种连接方法:
共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不亮。
共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地。这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不亮。
控制数码管驱动级的控制电路有静态式和动态式两类: 静态驱动:它是指每个数码管都要用一个译码器译码驱动。
动态驱动:它是所的数码管使用一个专门的译码驱动器,使各位数码管逐个轮流显示,它的扫描速度极快,因此显示效果与静态驱动相同。
采用动态数码管显示,可以大幅度地降低硬件成本和电源的功耗,因为某一时刻只有一个数码管工作,就是所谓的分时显示,显示所需要的硬件电路可分时复用。
共阴极 共阳极 符号与引脚
如表1为共阳极与共阴极的代码表 表1 十六进制数字形代码表
字型 0 1 2 3 4 5 6 7 8 共阳极代码 C0H F9H A4H B0H 99H 92H 82H F8H 80H 共阴极代码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 字型 9 A B C D E F 灭 共阳极代码 90H 88H 83H C6H A1H 86H 8EH FFH 共阴极代码 6FH 77H 7CH 39H 5EH 79H 71H 00H (三)键盘输入与LED显示
设计中通过键盘输入到单片机中,由程序控制找到输入点,计算键码,调用显示模块,把输入的数值通过LED显示器显示出来。
(1) 判断键盘中有无键按下: 将全部行线P1.0到P1.3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
(2) 判断闭合键所在的位置: 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:将行线置为低电平,即在置行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。检测的方法是P1.4-P1.7输出全“1”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“0”,则无键闭合,否则有键闭合。
(3) 去除键抖动:当检测到有键按下后,延时一段时间再做下一步的检测判断。 (4) 识别:当确定键按下时,通过软件计算键码找到相对位置的数据调用显示模块把数字或字母显示出来。
六、系统工作原理图设计
根据总体设计要求,确定系统扩展与功能接口,设计出系统的电路原理图,并用PROTEUS软件绘制,然后进行模拟仿真。
PROTEUS软件详细使用说明请见相关参考资料。
七、系统仿真和调试
根据系统电路原理图,在Lab2000单片机仿真实验系统上正确连线,并使用WAVE软件进行软件仿真和硬件仿真,验证电机控制是否符合要求。
Lab2000单片机仿真实验系统和WAVE软件使用说明请见相关参考资料。
八、课程设计说明书
课程设计说明书要求字数不少于3000字,目录和格式请参考附录
机械制造教研室 2013年4月
附录: 课程设计说明书格式 封面
目录(以下内容仅供参考)
第一章 课程设计的目的和要求 …………………………………………………………………1
1.1课程设计的目的和要求 ………………………………………………………………1 1.2课程设计预备知识 …………………………………………………………………1 1.3课题设计的任务 ……………………………………………………………………2 第二章 总体设计
介绍对系统设计的总体认识及解决方案,并对采取的方案进行论证 第三章 硬件设计
介绍本系统所选用的各种芯片的功能、引脚、相应的命令控制字格式等,画出系统工作 原理图及实现方法 第四章 软件设计
介绍本系统的主要功能模块程序的框图,以及总体程序框图和设计思路 第五章 系统调试
介绍系统调试过程以及出现的问题、解决方法 第六章 结束语
简述课程设计的收获、体会以及对本教学环节的意见和建议 参考文献
附录 ………………………………………………………………………………………………30 正文 参考文献
附录1 系统工作原理图
附录2 各模块程序清单,并注释说明 附录3 ………
因篇幅问题不能全部显示,请点此查看更多更全内容