APP下载

单片机课程设计实验项目设计

2016-03-10明鑫卢丹萍

广西教育·C版 2016年1期
关键词:实验课

明鑫 卢丹萍

【摘 要】针对单片机课程设计这门课程传统实验方式的不足之处,设计了一种新的实验项目;围绕“单片机系统设计方法”这一主线,从计算器系统电路的构成、仿真图的绘制、程序的编写、印制电路板的设计等方面对新项目的实施做了详细分析。

【关键词】单片机课程设计 计算器系统 实验课

【中图分类号】G 【文献标识码】A

【文章编号】0450-9889(2016)01C-0163-03

单片机课程设计作为单片机原理课程的延伸,是一门以学生动手实践为主的实验课。本课程在传统的教学中一般会以单片机实验箱作为操作的平台。教师设计一个综合的实验项目,学生在实验箱上完成线路的连接程序的调试运行等操作,之后学生完成设计报告。单片机实验箱内模块众多、接线杂乱,与实际应用不符,不利于学生理解和掌握单片机控制系统的设计过程及调试方法。因此在单片机课程设计中有必要引入一种新的实验形式。该实验项目作为单片机课程设计的一个综合实验内容,既要做到有别于单片机原理课程的验证性实验,又要做到理论联系实际,具有一定的实用价值,还要能够体现单片机系统开发的流程,激发学生的学习兴趣,增强学生的动手能力。

鉴于此,开发了一个“计算器的设计”项目作为单片机课程设计的教学内容。本项目的要求如下:设计一个简易计算器,能实现8位数之内的加减乘除运算,并要求学生按照单片机控制系统的开发流程,完成电路的仿真、程序的编写、电路图绘制、PCB板制作、焊接调试等工作。

一、计算器项目总体设计

为了实现计算器的功能,本系统应由单片机、输入模块、显示模块、声光提示模块和电源模块几部分构成,其组成框图如图1所示。

(一)控制器的选择

本项目中选取STC90C58RD+单片机作为控制器。STC90C58RD+与AT89C51完全兼容,可直接替换。前者具备高达1280Btye的SRAM,32K字节flash存储器,29K字节EEPROM,更高的可靠性及更低的功耗,使得它被越来越多的单片机开发者选用。

(二)显示模块的设计

单片机系统的输出显示部分,可以选用液晶屏或者数码管。液晶屏价格相对较贵,驱动程序编写较复杂,而数码管具有价格低廉、驱动电路简单、控制程序容易编写等特点。而且本设计要求完成8位数范围内的计算,因此使用8位数码管作为显示器件。

(三)输入模块的设计

按键作为单片机系统人机交互的输入部分,有独立式按键和行列式按键之分。独立式按键占用单片机的IO口资源较多,不选用。本计算器项目中,需要输入0-9的数字键以及代表各种运算操作的按键,需要按键数量多,因此选用行列式键盘。行列式键盘通过对行线和列线的电平状态的组合来判断哪个键被按下,可以用较少的IO口得到较多的按键。在本设计中采用4×4的行列式按键。

(四)声光提示模块的设计

本设计中需要在按键按下时发出“嘀”提示音,而且在运算结果溢出的时候发出声光提示。溢出选用最常用的蜂鸣器和发光二极管作为声光提示模块。

二、计算器项目的仿真

在电路实际制作之前的仿真是单片机系统开发过程中一个非常重要的环节,通过仿真能够验证设计方案是否可行。本设计是一个单片机系统,既有电路的仿真又有程序的仿真,因此选用Proteus软件进行系统仿真。

仿真软件Proteus是英国Lab Center Electronics公司研制的EDA软件。它不但和普通仿真软件一样能够仿真模拟电路,最大的特色是能够仿真单片机及外围器件,能进行代码调试。

学生熟练掌握本软件的使用,对完成单片机项目的设计开发有较大的促进作用。

(一)仿真电路设计

1.单片机最小系统仿真电路设计

单片机的最小系统指单片机工作的、由最少的电路构成的系统,包括晶振电路和复位电路。晶振X1和两个瓷片电容C1、C2构成了单片机的时钟电路。手动复位按键、电解电容C3和电阻R2构成单片机的上电复位和手动复位电路。

2.显示模块仿真电路设计

数码管的驱动由断码驱动和位选端驱动构成。单片机的P0口用于输出数码管的段码。由于P0口是标准的双向IO口,内部没有上拉电阻,因此P0口连了一个1K的排阻RP1。P2口的8个引脚用于控制8个数码管的位选端,分别经过Q2-Q9这8个三极管驱动8位数码管。

3.输入模块仿真电路设计

单片机的P1口连接一个4×4的行列式键盘。P1口的低4位作为行列式键盘的4条列线,高4位作为行列式键盘的4条行线。

4.声光提示模块仿真电路设计

声光提示电路由一个发光二极管和一个蜂鸣器构成。蜂鸣器由NPN型三极管Q1驱动。当系统上电时P3.6引脚为高电平,三极管截止,蜂鸣器不会误动作。当需要蜂鸣器发出声音时置P3.6引脚为低电平即可。发光二极管有P3.3引脚控制,低电平有效。

综上各个模块,此计算器系统完整的仿真电路如图2所示:

(二)计算器程序设计

计算器项目的控制程序在Keil C软件中完成。Keil 是一款针对51单片机内核的集成编译环境,具有很高的编译效率。

1.程序设计思路

本程序主要完成3方面的任务:扫描数码管、扫描按键、处理按键;因此编制了两个独立的函数Display( )和KeyBoard( )完成扫描数码管和扫描按键的功能。为了在按下不同的键值的时候完成不同的功能,使用了switch语句,这样程序的结构会比较清晰。

在主程序里面定义了以下几个变量:

unsigned char Key,InputCnt,LastOpt。

unsigned long Result,InputData。

变量Key用于暂存当前按下去的键值。

变量InputCnt用于存放输入数字的个数,当输入数字超过8个时就不能接收这个数字,并报警提示;

变量LastOpt用于存放前一次输入的运算类型。因为按下加、减、乘、除中某种运算的时候,计算器做的并不是当前的这种运算类型,而是前一次按下的运算类型。

变量Result用于存放运算的结果。由于计算器可以进行连续的多次运算,Result的值是会在每次运算之后改变的。

变量InputData用于保存输入的操作数,并作按下某种运算的按键后与Result的值进行相应的运算,把结果保存到Result里面。

2.主程序设计

程序的流程图如图3所示。

系统上电后首先进行系统初始化,对各个变量赋初值。然后调用按键函数,判断是否有键按下。若无按键按下则扫描数码管,接下来再次扫描按键。

若有按键按下,则会出现3种情况。第一种情况,按下的为数字键“0-9”,而且输入数字的位数InputCnt小于8的话,就把按下去的键值接收到变量InputData里面,更新一次显示缓冲区,让数码管显示输入的数字。如果InputCnt大于等于8,说明输入数字的位数已经达到最大不能再输入了,并发出报警提示;第二种情况,按下的键为“加、减、乘、除、等于”键,则根据LastOpt的取值把变量Result和InputData的值进行运算,并把结果存放到Result里面。同时更新一次显示缓冲区,让数码管显示运算的结果;第三种情况,按下的键为清零键“C”,则给各个变量重新赋初值,显示缓冲区清零,准备开始下一次计算。

3.子程序分析

在程序中调用了几个子函数,这几个子函数的逻辑关系如图4所示。

函数原型: void FillDispBuf(ulong a)

函数功能: 把ulong a这个数处理后存入显示缓冲区。若a没有超过8位十进制数的范围则把它拆分后直接存入显示缓冲区即全局数组DispBuf[8];若a超过这个范围则需要在数码管显示“Error”,因此需要把这几个字形的段码存入DispBuf[8]。

函数原型: uchar KeyBoard(void)

函数功能: 读取4×4行列式键盘的键值。若有按键按下则返回0- 15之间的某个键值,若无按键按下则返回21。

函数原型: void Display(void)

函数功能: 扫描8位数码管。全局数组uchar DispBuf[8]为显示缓冲区。本函数把数组DispBuf[8]里面的8个元素的数值在8个数码管上显示出来。

函数原型: void DelayMs(uint j)

函数功能: 延时N毫秒,参数 j 表示需要延时的时间为j毫秒。

在实验的过程中,只要把几个子函数的代码及相应功能告诉学生,学生就能在此基础上进行顶层代码的编写调试。如果学生时间充裕,也可自己编写以上几个子函数的代码。

三、计算器实物的制作及调试

本项目的设计内容在仿真软件中验证通过之后,就是实物电路的制作。电路图原理图和PCB图的设计在PROTEL99SE中完成。

本设计所需元件清单如表1所示。实验室为每个学生准备一套对应的元器件。

为了更好的让学生掌握单片机系统开发的流程,后续的实验有3种方式可以进行,每个学生可根据自己的实际情况选择。

A:学生可根据原理图和元件清单中的元器件,在万用板上自己焊接这个电路。直到电路调试成功,并下载程序运行。

B:学生可根据电路原理图绘制PCB电路板,并在实验中完成电路板的转印、腐蚀、钻孔等操作,然后焊接元器件并调试运行。

C:实验室通过专业的电路板工厂把“计算器项目”的PCB板加工出来。并且把此电路板及配套的元器件分发给学生焊接调试。统一生产出来的电路板及元器件套件如图5所示。

最终学生都能制作出一个调试成功的实物计算器。

通过对单片机课程设计新实验项目的实施,改变了本课程的教学组织形式,激发了学生的兴趣,增强了学生的动手能力。学生在完成“计算器设计”项目的过程中掌握了单片机系统的设计方法以及调试技巧。实践表明这样的方式收到了良好的效果,具有较大推广价值。

【参考文献】

[1]代芬,王卫星,邓小玲,等.单片机综合实验开发板设计[J].实验室研究与探索2010,29(8)

[2]林祥果.高职单片机课程设计与教学实践[J].宁波职业技术学院学报,2014,18(01)

[3]潘谈.基于STC89C58芯片的小型GPS船舶航迹仪的设计[J].船舶科学技术,20=14,36(12)

[4]袁芳,江伟,陈冬等.篮球比赛场地计时计分系统的设计[J].实验室研究与探索,2014,33(11)

[5]王海燕,杨艳华.Proteus和Keil软件在单片机实验教学中的应用[J].实验室研究与探索,201,31(5)

[6]包建华,张兴奎,丁启胜.模块化单片机实验系统的研制[J].电气电子教学学报,2010,32(6)

[7]丁春霞.基于51单片机的LCD数字钟设计与制作[J].中国科技信息,2013(18)

猜你喜欢

实验课
密林深处——“从写生到创作”的水墨实验课
有趣的实验
高中化学实验课常见气体的制备与实验设计
“自由”的实验课
上实验课
高中化学实验课改进和实践及其效果评价
在解析几何教学中引入数学实验课的理论探讨
关于病理学多媒体及实验课教学的实践与思考
提高微生物学实验课教学效果的探索与分析
刍议物理实验课的教学策略