精品课程设计指导书3.docx
《精品课程设计指导书3.docx》由会员分享,可在线阅读,更多相关《精品课程设计指导书3.docx(65页珍藏版)》请在冰豆网上搜索。
![精品课程设计指导书3.docx](https://file1.bdocx.com/fileroot1/2023-2/6/2625331c-64a4-4c0a-9648-7a43da89d77c/2625331c-64a4-4c0a-9648-7a43da89d77c1.gif)
精品课程设计指导书3
课程设计指导书
课程名称:
单片机原理与接口技术
适用专业:
前言
课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不少的,是非常必要的。
但是,在多年的教学实践中,我们感到一方面学生掌握的理论知识和实践知识有限;另一方面课程设计的时间有限,一般不多于两周。
要想学生在规定时间内,运用自己有限的知识去独立完成一个单片机应用系统的全部设计、制作和调试是不现实的。
在两周的时间内,学生用绝大部分时间编写程序,就象陷入深谷中,反而不知整个系统的全貌。
实际上涉及编程的问题的不同,程序就不同,而一些通用程序如多字节算术运算、数制转换等均有参考资料可查。
因此,我们认为:
具体程序的编写能力不是课程设计培养的重点,对于每一个学生,不需要他完成全部程序的编写。
而应该让学生清楚地了解单片机应用系统的整个设计过程,培养学生设计单片机应用系统的初步能力。
基于以上认识,我们编写了这本《单片机原理及应用课程设计指导书》。
我们以市场占有率较高的启东计算机厂生产的DVCC系列单片机微机仿真实验系统为基础,首先,介绍设计单片机应用系统的完整设计步骤。
然后,以电脑时钟课题为例,详细地介绍总体设计、硬件设计、软件设计。
同时,收集了课程设计中常用的硬件和子程序资料供学生查阅。
最后,列出一部分供课程设计选用的设计课题。
编者
第一章课程设计(大型作业)的教学组织
一.性质与目的
当前,理工科高等院校许多专业的教学计划都安排有单片微机课程设计或大型作业。
所
谓大型作业,其工作量与内涵与课程设计相似,为了使学生能很好地通过这一教学环节得到
锻炼,达到预期效果,也一样要为每一课题编写设计任务书,事先下达给学生。
设计应重视
动手实验的内容,做到实验与设计两者并重;对于单片微机,则又应软、硬件结合和兼顾。
课程设计的选题,可选择已完成了的真实课题,经教师裁剪增删,在符合教学、符合学生水平、符合实验室条件的情形下,供学生试设计。
考虑到设计时间较短促、学生的独立工作能力还较差,且教师将同时指导整个班级,因此要学生完成的内容要精选,工作量不宜太大;学生可编组进行设计,但提倡个人有独到的见解,并应独立写出设计说明书。
本教学环节的目的,大体为:
(1)训练学生正确地应用单片微机,培养解决工业控制、工业检测等领域具体问题的初步能力。
(2)让学生通过所做课题,“解剖麻雀”,熟悉单片微机应用系统开发、研制的过程,软硬件设计的工作方法、工作内容、工作步骤。
(3)对学生进行基本技能训练,例如组成系统、编程、调试、查阅资料、绘图、编写说明书等;使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。
单片微机课程设计(大型作业)可利用DVCC型单片微机实验装置作为学生动手实践的基本装置。
但除此以外,结合每一课题,宜另制作足够数量的、配套的辅助性装置,以模拟工业应用实际情况,提高课题的真实性,扩大学生的实践内容和收获。
为了这一教学环节的正常开展,还应积累(或复印)一定数量的参考资料(例如芯片、元器件的手册,某些装置的使用说明,有关的期刊、参考书籍等)。
在课程设计教学中,应以自编为主体,充分发挥自己的自主性和创造精神。
教师的指导作用主要体现在工作方法,思维方法的引导。
为保证顺利完成设计院任务,应注意如下要求:
(1)认真阅读设计任务书,保质保量地完成任务书的规定的工作。
(2)在总体方面确定过程中,要求多想,多查资料,少问。
(3)程序设计时,先画框图再编程,无论是自上而下,还是自下而上,必须一步一步调试,做到可性好,主要语句一定要写注释。
(4)硬件图用A3绘制,必须符合国家有关标准的规定。
(5)说明书要求文字通顺,简炼。
不少于5000字(不算源程序)。
(6)设计的系统必须进行实验演示。
二.设计任务书
设计任务书需阐明:
课题的名称;课题的意义与概况;课题的具体要求与工作步骤;及进度安排;分组办法;各组应完成的任务与侧重;参考资料等情况。
设计任务书样例见附录一
除书面下达外,指导教师还须作详细说明,以期真正组织好这一教学环节。
为此,在初始阶段可安排一定时间的讲课。
讲课时还应向学生交待:
课程设计(大型作业)教学环节的性质、与毕业设计的区别;设计说明书的写法与要求;最后考核的办法与评分依据
伴随着课题的具体进展,教师应加强辅导与答疑。
课程设计宜挑选典型、成熟的课题。
因此,不必届届更新。
为了提高这一教学环节的教学质量,除设计任务书外,另可由有经验的教师编写好教学指导书,供指导教师参考,并注意逐届总结和修改完善。
三.成绩考核
本教学环节,只是对学生设计能力的初步训练,每一(或每组)学生完成的任务常不够完整,学生由做习题、回答思考题过渡到面对全面、复杂的课题,独立完成的比重也还不高。
所以,在最后适当留出一些时间组织相互交流,常可使学生扩大视野、增加收获,有很好的效果。
同时,也锻炼了学生正确、条理地讲述清楚技术问题的能力。
本教学环节单独进行成绩考核。
考核可以与上述的交流相结合,或再伴以适当提问;也可另外单独组织提问或笔试。
成绩的评定应兼顾到实验动手能力;也应考虑设计说明书的质量。
如时间与条件允许,应鼓励学生将自己的观点具体化,修改程序或重编程序,再通过调试,论证与完善自己的观点。
以这样的内容充实到设计说明书中,即使尚未及完整,也将使说明书生色不少。
在课程设计阶段,完成思考题这样的任务也可编组进行。
或由教师编组,或让思考相同题目、钻研相同内容、具有相同观点的学生自由聚合成组,或两者兼顾,教师可酌情引导与决定。
应提倡学生讨论、争论,培育良好的学术气氛,并组织好交流。
四、设计时间安排和设计步骤
占用的时间以2周左右为宜。
可以集中2周,也可分散为每周一天,连续十周(半
个学期)完成。
为了使安排紧凑,占用的时间勿超过两周;如教学计划十分饱满,则最短也不宜低于1周。
设计步骤建议如下:
1)系统工作原理:
叙述完成课题设计要求的工作原理
2)总体设计:
叙述软、硬件部分总体设计
3)硬件:
系统的组成,硬件的选用,芯片的特点、功能和编址
4)软件:
存储单元的分配,标志位的设置,由上自下的程序框图,子程序的设计及调试。
5)综合调试
6)整理设计说明书(设计说明书参考目录见附录二),准备答辩。
第二章
单片机应用系统的设计步骤
单片机的应用系统随着用途不同,它们的硬件和软件结构差别很大,但系统设计的方法和步骤基本上是相同的。
一般包括总体设计、硬件设计、软件设计、仿真调试、固化程序、应用系统独立运行等步骤。
课程设计由于时间安排、学生水平、实验条件等诸方面的限制,仅要求学生完成仿真调试即可。
一、总体设计
1、明确任务
根据课题的要求确定系统的工作原理。
如电脑时钟的工作原理为:
每百分之一秒对计数一次,满100次秒加一,秒满60次分加一……;并在数码管上显示时、分秒当前值。
如果需要还要提出相应的技术指标。
如电脑时钟要求显示的最小单位为秒,还是百分之一秒;温度测量系统要求测量多少路?
测量精度是多少;收银机计算金额的范围多大,最小单位是否计分;交通灯控制系统测量车流量的最大频率是多少等。
2、硬件和软件功能的划分
系统的硬件配置和软件设计是紧密地联系在一起的,且硬件和软件具有一定的互换性。
多用硬件完成一些功能,可以提高工作速度,但降低了系统的柔性。
若用软件替代某些硬件功能,可增加系统的柔性,但降低系统的工作速度。
因此,总体设计时,应综合考虑,合理划分硬件和软件的功能。
在课程设计中,应充分利用仿真系统的硬件资源。
如单个脉冲可以通过程序CPLP1.0得到,也可利用DVCC仿真系统的硬件资源获得。
二、硬件设计
根据总体设计要求,确定系统扩展与功能接口,设计出系统的电路原理图。
1、系统扩展
DVCC仿真系统的CPU是8031,因此,必须首先组成最小系统,即由8031、地址锁存器和程序存储器组成。
根据课题要求,在此基础上进行扩展。
包括程序存储器扩展、数据存储器扩展、I/O口扩展(8155、8255、74LS164)、定时器/计数器扩展(8253)和中断控制器扩展(8259)等。
如交通灯控制系统中要求控制四个方向的红、绿、黄灯共12个,因此,需扩展I/O口,可选用8255,也可利用串入并出移位寄存器74LS164扩展2个8位输出口的接口电路。
2、功能接口
所谓接口是CPU与外界的连接部件,以实现CPU与外部设备的最佳耦合和匹配。
包括键盘、显示、A/D转换、D/A转换和打印机等。
根据课题要求,选用外设,并选用合适的外围接口芯片。
3、系统的组成及统一编址
I/O端口是CPU与I/O设备直接通信的地址。
单片机系统对I/O端口是采用端口地址与存储器地址统一编址的方式,即存储器映射方式。
而编址技术又分线选法和译码法。
由于DVCC仿真系统的地址总线没有开放,如8155、8255、0809、0832等芯片地址均已定义,但学生在设计硬件时,仍应自行编址。
三、软件设计
一个优秀的的系统的软件应具有下列特点:
①软件结构清晰、简捷、流程合理。
②各功能程序实现模块化、子程序化。
这样,既便于调试、链接,又方便移植、修改。
③程序存储区、数据存储区分配合理。
④运行状态实现标志化管理。
各个功能程序运行状态、运行结果以及运行要求都设置状态标志(一般用位寻址区的位)以便查询,程序的转移、运行、控制都可以通过状态标志条件来控制。
⑤实现全面软件抗干扰设计。
(由于条件有限,课程设计中不考虑。
)
软件设计一般步骤如下:
1、系统定义
系统定义是在软件设计前,把软件承担的任务明确出来。
1.1、各种数据类型的定义。
是定点数还是浮点数;是有符号数还是无符号数;是十六进制数还是BCD码。
如果一个参数的变化范围有限,就可以用定点数来表示,以简化程序设计和加快运行速度。
当参数的变化范围太宽时,只好采用浮点数来表示,如智能电桥中被测对象的变化范围达10个数量级(l~l0000μ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,编程时用变量名,编译时只需在前面加HOUREQU24H即可(20H为分配给小时的存储单元的地址)。
2、软件结构设计
软件设计有两种方法:
一种是自上而下,逐步细化;另一种是自下而上,先设计出每一个具体的模块(子程序),然后再慢慢扩大,最后组成一个系统。
两种方法各有优缺点。
自上而下的方法在前期看不到什么具体效果,对于初学者来说,心中总是不踏实。
而自下而上的方法一开始就有结果,每设计并测试好一个模块,就能看到实际的效果,给人一步一个足印的感觉,能树立信心。
我们建议两种方法结合运用。
主程序采用自上而下的方法,将它分成若干个功能相对独立的较小的程序模块。
然后再采用自下而上的方法,设计一个模块,调试一个模块,加入主程序调试;再进行下一个模块设计和调试。
所以在这一步骤就是设计主程序的框架。
3、模块设计
3.1、建立入口条件和出口条件,明确模块功能
根据问题的定义,描述出各个输入变量的存放地址(入口条件)和各个输出变量的存放地址(出口条件)。
例如输入量是经A/D转换后的8个数字量,存入在以30H为首的数据块中,输出量是这8个数字量的平均值,存放在40H中。
为方便起见,用R0存放输入量数据块首地址,用R1存放输出量地址。
则入口条件为R0,出口条件为R1。
3.2、绘制程序框图
根据问题的定义,确定算法,并绘制程序框图。
注意必须确保程序框图的正确性。
比如在电脑时钟中,考虑输入“分”的数据的合理性,数据必须小于60,程序框图中就不能忽视等于60如何处理。
这是初学者常犯的错误。
3.3、编写程序
在确保程序框图的正确性的前提下,才能编写程序。
在编程时必须注意以下几点:
①一定要严格根据框图编程。
②一定要写注释。
③通过编译后,只表明语法没错,并不表明逻辑正确,一定要用不同的数据对模块进行测试。
完全符合预定结果,方可确认通过。
④将该模块加到主控模块进行测试,如果与预定结果不符,必须查找原因,进行修改、调试。
⑤必须注意随时保存调试通过的副本。
以便当新程序出现故障时,随时可返回前面的正确点重新开始。
4、编写设计说明书
设计说明书的格式见附录。
由于设计时间紧迫,读者不要在完成全部设计后再编写设计说明书。
而应在设计过程中逐步完成。
一开始不可能设计出满意的主程序框图。
因此,总体设计部分在完成全部设计任务后再写。
而硬件部分和软件部分可以在设计过程同步完成。
第三章
单片机课程设计示例(电脑时钟)
一、总体设计
1、明确任务
电脑时钟的任务要求为:
系统一运行就从00点00分00秒开始计时,并在数码管上显示时、分、秒当前值,而且,可以用键盘设置当前时间。
基本工作原理:
每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;六个数码管动态显示时、分、秒的当前值。
2、硬件和软件功能的划分
本课题要求实现的功能比较简单。
百分之一秒的控制由8031的定时器T0完成;百分之一秒寄存器的内容加一由T0中断完成;动态显示和键盘管理由8155完成。
二、硬件设计
根据总体设计要求,确定系统扩展与功能接口,设计出系统的电路原理图。
3、系统扩展
DVCC仿真系统的CPU是8031,因此,必须首先组成最小系统,即由8031、地址锁存器和程序存储器组成。
根据课题要求,在此基础上进行扩展。
地址锁存器选74LS373,程序程序器选2764(8K),尽管本系统程序不长,但考虑以后扩展方便,选用2764。
考虑闹时的蜂鸣器占用P1.0即可,一个定时器T0中断,数据存储空间宽裕,因此系统无需扩展。
4、功能接口
所谓接口是CPU与外界的连接部件,以实现CPU与外部设备的最佳耦合和匹配。
本课题只要求键盘和显示接口。
显示设备为6位数码管。
键盘要求0~9数字键,A~F为设置时间、确认和备用键共16个键。
有利用8031的串行口、利用可编程并行I/O扩展芯片8155或8255、显示/键盘专用芯片8279。
由于DVCC仿真系统的限制选用8155。
6个共阴极数码管时、分、秒自左至右各用两个。
为了保证数码管的亮度,必须保证输入电流的大小,因此,选用74LS244作为驱动放大器。
键盘定义如下:
0~9:
数字键;A键:
设置当前时间;E键:
确认键。
5、系统的组成及统一编址
I/O端口是CPU与I/O设备直接通信的地址。
单片机系统对I/O端口是采用端口地址与存储器地址统一编址的方式,即存储器映射方式。
编址技术分线选法和译码法。
由于涉及外围芯片很少,所以采用线选法。
系统简图如下:
由于是线选法,因此芯片地址不是唯一的。
而8155与外部数据存储器统一编址,可以与程序程序器重叠编址。
因此,我们取它们的地址如下:
2764:
0000H~1FFFH存储程序
8155:
命令/状态口7F80H
PA口7F81H输出扫描码(字选码)
PB口7F82H输出字形码
PC口7F83H接收回复码
定时器低8位7F84H没用
定时器高8位7F85H没用
RAM3F00H~3FFFH没用
工作方式为:
定时器不工作,禁止PA、PB中断,PC口为输入方式(方式0),PA口、PB口为输出方式。
因此,工作方式字为03H。
6、汇集各芯片及数码管的技术资料,绘制系统原理图。
将8031、74LS373、2764、8155、数码管(包括为保证其驱动电流而添加的驱动器74LS244)等资料汇集起来,熟悉各芯片的引脚的功能及连接方法,绘制系统原理图。
三、软件设计
1、系统定义
1.1、各种数据类型的定义。
时、分、秒采用BCD码,百分之一秒计数采用16进制。
1.2、定义和分配存储空间、定义标志位。
堆栈区安放在片内RAM的高端60H~7FH;
0区为工作寄存器;
1区为显示程序的工作寄存器;
当前时间的时、分、秒、百分之一秒存储器名为HOUR、MINI、SEC、CSEC,地址分别33H、32H、31H、30H;
显示缓存存储器名为LED5、LED4、LED3、LED2、LED1、LED0,地址为3FH、3EH、3DH、3CH、3BH、3AH;
为了调整走时的快慢,设置时间常数初值寄存器,变量名为SJH、SJL,地址为41H、40H。
存储单元列表如下:
存储内容
变量名
地址
备注
通用工作寄存器
R0~R7
00H~07H
0区
显示程序专用的工作寄存器
R0~R7
08H~0FH
1区
时间存储区
百分之一秒
CSEC
30H
16进制数
秒
SEC
31H
BCD码
分
MINI
32H
BCD码
小时
HOUR
33H
BCD码
显示存储区
秒
个位
LED0
3AH
BCD码
十位
LED1
3BH
BCD码
分
个位
LED2
3CH
BCD码
十位
LED3
3DH
BCD码
小时
个位
LED4
3EH
BCD码
十位
LED5
3FH
BCD码
时间常数初值寄存器
高八位
SJH
41H
16进制数
低八位
SJL
40H
16进制数
标志位
SETV
20H
堆栈区
60H~7FH
标志位设置如下:
均为“1”有效。
标志意义
有键按下
参数设置
变量名
F0
SET
地址
0D5H
00H
01H
02H
03H
04H
05H
其它位标志在设计过程中,根据需要再添加。
2、软件结构设计
程序总体执行过程是:
上电后系统自动从0时0分0秒开始自动计时,可以通过键盘设置当前时间。
设置方案自行决定。
方案一:
若按A键,小时位熄灭,按数字键在小时位输入小时值,按E键,分位熄灭,按数字键在分位输入分值,按E键,秒位熄灭,按数字键在秒位输入秒值,按E键开始从输入的值开始走时。
方案二:
输入2位数,按A键将2位数存入到小时寄存器HOUR;按B键将2位数存入到分寄存器MINI;按C键将2位数存入到秒寄存器SEC;按E键开始从输入的值开始走时。
无论采用哪一种方案,主程序的框图都如图所示。
另外还要加上中断服务程序。
3、
模块设计
根据主程序框图,定义如下几个模块:
初始化模块、显示时间模块、键扫描模块、数字键处理模块、命令键处理模块和中断处理模块。
为设计方便我们先完成上电后系统自动从0时0分0秒开始自动计时的功能。
这样程序主要由初始化模块、显示模块和中断服务模块组成,主程序框图就简化为右图:
3.1、初始化模块
功能:
完成变量初始化、8155初始化、定时器初始化和中断初始化。
其中变量初始化,由于显示存储区的变量的值是由时间存储区的时、分、秒拆字得来的。
因此,无需初始化,则初始化的框图如图所示。
根据框图写出如下程序:
(注意:
后面我们要经常对以下程序进行补充和修改,利用它对其它模块或子程序进行调试。
因此,要随时保存不同的版本。
为方便起见,以下程序我们称版本1.0)
LED5EQU3FH
LED4EQU3EH
LED3EQU3DH
LED2EQU3CH
LED1EQU3BH
LED0EQU3AH
HOUREQU33H
MINIEQU32H
SECEQU31H
CSECEQU30H
SETVEQU20H
SJHEQU41H
SJLEQU40H
ORG0000H
AJMPSTART
ORG000BH;T0中断入口地址
AJMPADD1;中断服务程序
ORG0030H
START:
MOVSP,#60H;置堆栈顶指针
MOVHOUR,#00H;时间存储区单元清零
MOVMINI,#00H
MOVSEC,#00H
MOVCSEC,#00H
MOVSETV,#00H;标志位置“0”
MOVSJH,#0C5H;时间常数
MOVSJL,#068H
MOVA,#03H;8155初始化,置工作方式
MOVDPTR,#0FF20H
MOVX@DPTR,A
MOVTMOD,#01H;置T0为定时器,工作方式1
MOVTH0,SJH
MOVTL0,SJL
SETBEA;中断初始化
SETBET0
SETBTR0
程序中的时间常数是从要求百分之一秒中断一次,即0.01s中断一次。
DVCC的晶振频率为6MHz,则机器周期为2μs。
设时间初值为X,工作方式1时定时器为16位,最大计数值为216=65536,则:
0.01=(65536-X)×2×10-6
解得X=50536D=0C568H
则TH0=SJH=0C5H,TL0=SJL=68H。
3.2显示程序模块
功能:
将时间存储区的时、分、秒中的内容在6个数码管上显示出来。
显示存储区的变量的值是由时间存储区的时、分、秒拆字得来的,因此,这个模块包括拆字子程序和显示子程序。
3.2.1、拆字子程序
拆字的过程如下:
显然这是一个循环程序,次数为3次,循环体为将一个字节压缩BCD码拆成两个单字节BCD码。
实现拆字的方法不同,则循环体的程序就不相同。
子程序名:
CZ
功能:
将将时间存储区的时、分、秒寄存器的压缩BCD码拆成单字节BCD码,存储到显示存储区中。
入口条件:
HOUR、MINI、SEC
出口条件:
LED5、LED4、LED3、LED2、LED1、LED0
程序框图如右:
程序清单如下:
CZ:
MOVR7,#03H
MOVR0,#SEC
MOVR1,#LED0
CZ1:
MOVA,@R0
ANLA,#0FH
MOV@R1,A;存个位
INCR1
MOVA,@R0
ANLA,#0F0H
SWAPA
MOV@R1,A;存十位
INCR0
INCR1
DJNZR7,CZ1
RET
用下列程序调试:
MOVHOUR,#12H
MOVMINI,#34H
MOVSEC,#