湖北民族学院秋单片机实验.docx
《湖北民族学院秋单片机实验.docx》由会员分享,可在线阅读,更多相关《湖北民族学院秋单片机实验.docx(28页珍藏版)》请在冰豆网上搜索。
湖北民族学院秋单片机实验
《单片机原理》
实验指导书
高林
湖北民族学院
2013年9月
实验系统概述
一、单片机仿真实验仪简介:
《单片机原理》课程实验采用由江苏启东达爱思计算机有限公司生产的596H+型单片机仿真教学实验仪器。
实验仪通过RS-232串口与微机(上位机)进行通信,可完成MCS-51系列8位单片机和MCS-196系列16位单片机的实验,功能较强大。
实验仪电路板采用模块化设计,使实验连线简捷明了,免去了学生调试实验线路的工作。
整个实验电路面板的硬件布局如图1.1所示:
图1.1实验电路面板硬件布局图
对所标注部件说明如下:
1.串行通信波特率选择开关。
其中左边一位用于做8251串行通信实验,右边两位为系统与PC机串行通信波特率选择位。
在PC机配置较低的场合或DOS操作系统下通常采用中间的9600bps常规波特率;而如果在windows环境或PC机能承受的情况下,选择右边的57600bps波特率较为适宜。
2.CPU选择开关。
可在通电或断电情况下改变当前的CPU,该开关包含三档,左、右两档均用来选择51系列单片机,而中间一挡用来选择196系列单片机,注意在实验之前要选择正确的单片机进行实验。
3.复位按钮。
一般用作程序执行过程中,按下该按钮后,程序停止运行,所有设备回复初始状态。
4.暂停按钮。
可以暂停当前程序的执行,以便查看单片机的运行状态。
打开实验仪电源开关,系统应显示闪动“P.”,处于待命状态;否则按下RESET键,如仍再不显示,应立即切断电源,检查后重新进行或向实验教师提问。
二、实验仿真软件介绍:
运行“MCS-51单片机实验系统”,会出现选择微机与实验仪进行串行通信的对话框,如图1.2所示:
图1.2选择通信端口对话框
在上图所示的对话框中,主要是进行通信端口的选择和波特率选择这两项设置。
由于上位机只有最多两个RS-232串行通信端口,因而端口选择只可能是串口1或串口2,其他并未用到。
而具体是串口1、2中的哪一个则由实验仪与上位机的通信连线有关。
波特率的选择相对简单,只要保证所选波特率与实验仪上的波特率选择开关一致即可。
打开实验仪电源后,点击“确定”,如果顺利进入仿真软件编程界面,表示实验仪与上位机能正常通信;若出现“仿真器没有连接”这样的提示信息,那就表示实验仪与上位机不能正常通信,这时就应该检查串行通信线是否连接好或波特率设置是否对应,如果仍然不能解决,则应立即向实验教师提问。
正常连接以后会进入“Dais-MCS51仿真开发系统”软件的界面,如图1.3所示:
图1.3Dais-MCS51仿真开发系统
该开发系统软件配合实验仪使用,能够完成从简单到复杂的MCS-51单片机相关的实验内容,是MCS-51单片机实践学习较好的入门工具,其使用过程概括如下:
1.点击工具条中“
”(新建)建立新的实验源程序编辑窗口,或点击“
”(打开),在打开对话框中选择要打开的源程序文件,也会进入源程序编辑窗口。
2.点击工具条中“
”,进行源文件的编译、连接、装载,在出现编译成功的对话框后点击“OK”框自动进入源文件调试状态。
3.在工具条中点击所需的运行方式:
“
”(单步)、“
”(宏单步)、“
”(连续运行)。
4.系统一旦进入运行状态后若需停止该程序的运行请点击“
”(复位)中止当前程序的运行。
三、KeilC51编程软件的使用说明:
1、启动KEILuVision2/uVision3集成开发环境。
2、打开工程,选择“Project”菜单下的“OptionsforTarget...”命令。
3、在弹出的对话框中点击选择“Debug”标签,选中对话框右边使用硬件驱动的“Use:
XXX”单选框,并在其下拉选择框中选择“DaisEmulatorDriver”。
调试技巧:
如需调试C51程序,建议选中下拉框右下方的“Gotillmain()”
(若是KEIL8.XX版本则为“Runtomain()”)复选框,将其打勾。
4、点击下拉框右边的“Settings”,如能打开达爱思仿真实验系统设置对话框。
如需改变达爱思设置,只需要在按驱动右边的“Settings”按钮在对话框中选择正确的串行口、波特率,并完成工作模式、RAM/ROM、P0/P2的设置。
5、还要在在弹出的“Options”对话框中点击选择“Output”标签,选中对话框中间创建HEX文件的“CreateHEXFile”复选框前打勾。
以便在编译过程中生成可执行的HEX文件,并且才有可能将该文件装载到实验箱存储器中等待运行。
6、KeilC51软件与实验箱的串行通信:
如果能够正常通信,则点击
(Start/StopDebugSession)后能正常进入软件调试(Debug)界面,如下图所示:
否则,则不能进入软件调试(Debug)界面,会弹出如下对话框:
则表明Keil软件与实验箱不能正常通信,需要解决串行通信存在的问题。
其主要问题主要在以下两个方面:
ⅰ串行通信线未接好,如接头松动等;
ⅱ串行通信设置不正确,如通信波特率设为57600bps而非9600.bps。
实验一 P1口霓虹灯实验(4学时)
一、实验目的⑴了解实验仿真系统的硬件结构,熟练使用实验仿真软件;⑵掌握MCS-51单片机P1口的基本结构和使用方法;
⑶学会用C51编写含分支和循环结构的程序。
二、实验预备知识⑴P1口为准双向口,每一位都可独立地定义为输出线或输入线。
⑵本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。
三、实验内容
(1)在实验箱上完成:
P1作为输出口,接八只发光二极管,编写程序,使发光二极管按照如下顺序点亮:
开始→从左往右循环点亮→从右往左循环点亮→从左往右逐个点亮→从右往左逐个熄灭→2个发光二极管分别从中间往两边循环点亮→2个发光二极管分别从两边往中间循环点亮→全部点亮→全部熄灭→开始。
(2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。
所用元器件:
单片机AT89C51、发光二极管LED-GREEN(RED、BLUE)、排阻或电阻RESPACK-8(RES)、8位缓冲器74LS244
参考仿真电路图:
四、程序框图
五、实验电路(只连图中粗实线)
六、实验步骤P1.O~P1.7用插针连至L1~L8,运行程序后,观察发光二极管闪亮移位情况。
七、思考
(1)在C51编程中用查表法实现相同的实验现象。
(利用数组编程)
(2)尝试用单片机内部定时器控制延时以代替软件延时程序实现本实验要求。
实验二时钟显示实验(4学时)
一、实验目的
(1)熟练掌握单片机定时器的编程技巧;
(2)掌握八段数码LED显示器的工作原理和编程方法。
二、实验内容
(1)在实验箱上完成:
编写程序,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示(左边2个数码管显示“时”,中间2个显示“分”,右边2个显示“秒”)。
(2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。
所用元器件:
单片机AT89C51、8位锁存器74LS273或74LS373、3-8译码器74LS138、排阻或电阻RESPACK-8(RES)、或非门74LS02、共阳极六合一数码管7SEG-MPX6-CA
参考仿真电路图:
三、程序框图
四、实验连线(无)
五、实验预备知识
1.数码显示电路:
①电路组成:
6个共阳极数码管、2个74LS273锁存器
②端口地址:
字型口(段码锁存器)——FFDCH
字位口(位码锁存器)——FFDDH
2.动态显示:
每次只有一个数码管显示其相应字符,并且从左往右反复快速扫描,利用人眼的“视觉滞留”效益实现“同时”显示不同字符的工作方式。
3.字型码表:
(共阳极)
0~9:
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90
六、思考
(1)电子钟走时精度和程序中那些常数有关?
(2)将数码显示也改为定时扫描方式该如何编程?
实验三 急救车与交通灯实验(4学时)
一、实验目的
(1)了解8255芯片的结构、工作方式及编程方法
(2)学习模拟十字路口交通控制的实现方法;
(3)熟练掌握外部中断技术的使用方法。
二、实验内容
(1)在实验箱上完成:
用8255的PA口、PB口的低四位做输出口,控制十二个发光二极管亮灭,模拟十字路口交通灯管理。
一般情况下正常显示,有急救车到达时,两个方向四个路口交通信号灯全红,以便让急救车通过。
设急救车通过路口时间为10秒,急救车通过后,交通恢复正常。
本实验用单次脉冲申请外部中断,表示有急救车通过。
(2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。
所用元器件:
单片机AT89C51、可编程并口芯片8255A、按键BUTTON、发光二极管LED-GREEN(RED、YELLOW)、8位锁存器74LS273或74LS373、3-8译码器74LS138、或非门74LS02、排阻或电阻RESPACK-8(RES)、8位缓冲器74LS244
参考仿真电路图:
三、程序框图
四、实验连线(只连图中粗实线)
五、实验步骤 ①8255PB3~PB0、PA7~PA0依次接发光二极管L1~L12。
②编写程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮南北路口的红灯亮,东西路口方向通车。
延时一段时间后东西路口的绿灯熄灭,黄灯开始闪耀。
闪耀若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪耀。
闪耀若干次后,再切换到东西路口方向,之后重复以上过程。
六、实验说明
中断服务程序的关键是:
①保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
②必须在中断程序中设定是否允许中断重入,即设置EX0位。
本例中使用了INT0中断(P3.2),一般中断程序进入时应保护PSW、ACC以及中断程序使用但非其专用的寄存器。
本例的中断程序保护了PSW、ACC等三个寄存器并且在退出前恢复了这三个寄存器。
另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。
本例中没有涉及这种情况。
中断信号由单脉冲按钮SP产生。
七、思考
(1)试编程解决中断返回以后不能回到中断之前状态的问题。
(2)将交通灯控制程序放在定时器T0中断服务子函数中完成,试编程实现。
实验四
(一)串并转换实验(2学时)
一、实验目的⑴掌握8031串行口方式0工作方式及编程方法。
⑵掌握利用串行口扩展并行I/O通道的方法。
二、实验内容
(1)在实验箱上完成:
利用8031串行口和串行输入并行输出移位寄存器74LS164,扩展一个8位输出通道,用于驱动一个共阳极数码显示器,在数码显示器上循环显示8031串行口输出的0~9这10个数字。
(2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。
所用元器件:
单片机AT89C51、串入并出移位寄存器74LS164、数码管7SEG-COM-CAT-GREEN(BLUE)
参考仿真电路图:
三、实验说明串行口工作在方式0时,可通过外接移位存储器实现串并行转换。
在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为晶振频率1/12。
由软件置位串行控制寄存器(SCON)的REN后才能启动串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。
待8位数据输完后,硬件将SCON寄存器的TI位置1,TI必须由软件清零。
共阳极数码管的0~9的显示码如下:
0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09
四、实验步骤⑴将串并单元DATA插孔接P3.0插孔。
⑵将串并单元CLK插孔接P3.1插孔。
⑶将串并单元CLR插孔接地址线A9下方CLR插孔。
上电时对164复位。
⑷执行程序⑸在串并单元数码管上循环显示0~9这10个数字。
五、实验电路(图中粗实线)
六、程序框图
实验四
(二) 单片机与PC机串行通信实验(2学时)
一、实验目的⑴掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。
⑵了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。
⑶了解PC机通信的基本要求。
二、实验内容
(1)在实验箱上实现:
利用8031单片机串行口,实现与PC机通信。
将“PC机发送程序”上的字符(0~F)显示到实验仪的数码管上。
(2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。
所用元器件:
单片机AT89C51、8位锁存器74LS273或74LS373、3-8译码器74LS138、排阻或电阻RESPACK-8(RES)、或非门74LS02、共阳极六合一数码管7SEG-MPX6-CA以上是“时钟显示实验”电路。
另外增加:
TTL和RS232电平转换芯片MAX232、RS232串口COMPIM、串口通信仿真器VIRTUALTERMINAL
参考仿真电路图:
(显示字符的ASCII码值)
三、实验电路及连线
实验时需将8032串行接收信号线P3.0(RXD)连到实验仪右上角RX0插孔;8031的P3.1(TXD)连到实验仪右上角TX0插孔上;使用通信电缆连接PC机与实验仪。
四、程序流程
五、实验步骤 注意:
进行本实验时请把通信选择开关拨至最左面一位。
(一)PC机发送,实验仪接收
(1)若在联机状态,请先装载程序代码至实验系统(生成HEX文件后,点击“start/stopdebugsession”按钮将程序装载到实验箱中);
(2)装载完毕后,点击“start/stopdebugsession”按钮,此时将退出Debug环境,并结束对实验箱串口的占用,将实验系统的通信选择开关拨至最左边(波特率2400bps)并按复位;
(3)开始运行程序,在实验系统键盘上按下[EXEC]键(实验箱键盘右上角);
(4)打开Dais软件工作目录(如:
C:
\Dais),找到并运行“PC发送程序”,选择与实验仪相连的串口(本实验使用的是默认波特率2400bps),单击“打开串口”按钮;
(5)从“PC发送程序”单击0~F按钮发送相关字符,相应的数字会显示在实验系统的数码管上。
(二)实验仪发送,PC机接收
(1)若在联机状态,请先装载程序代码至实验系统(生成HEX文件后,点击“start/stopdebugsession”按钮将程序装载到实验箱中);
(2)装载完毕后,点击“start/stopdebugsession”按钮,此时将退出Debug环境,并结束对实验箱串口的占用,将实验系统的通信选择开关拨至最左边(波特率2400bps)并按复位;
(3)打开Dais软件工作目录(如:
C:
\Dais),找到并运行“PC接收程序”,选择与实验仪相连的串口(本实验使用的是默认波特率2400bps),单击“打开串口”按钮;
(4)开始运行程序,在实验系统键盘上按下[EXEC]键(实验箱键盘右上角);
(5)将预先存放在存储器中的数字0~F通过单片机串口发出,“PC接收程序”会将接收到的字符显示在PC机屏幕上。
六、思考
(1)试分别使用查询和中断2中方式实现“PC机发送,实验仪接收”的功能。
(2)试完成“实验仪发送,PC机接收”部分的编程并实现该功能。
实验五单片机综合实验(4学时+开放)
实验要求
一、选题
1、每人选择一个题目完成。
2、每个题目即可在实验箱上仿真,也可在电脑上用KeilC51和Proteus仿真完成。
在实验箱上完成的,要依照实验电路要求连线;用PROTEUS上仿真的,实验内容参照要求进行,电路可参考实验要求自行设计连线完成。
3、规定上实验课时间必须来,开放时间自愿到实验室。
若开放时间来必须填写开放记录,也可在寝室或其他地方完成。
二、实验时间安排
18周,实验室没课时为开放时间。
三、实验过程
实验过程中按照要求连线,分模块完成。
程序存放在E/F盘中,且只能保存一天,最好自带U盘保存,否则电脑关机程序会丢。
四、实验报告格式(具体格式见实验材料最后两页)
1.实验内容
2.实验电路及功能说明
3.实验程序流程图
4.实验结果分析(包括实验现象、已实现功能、未实现功能、误差分析等)
5.每个人的实验体会(个人认识、收获及建议)
6.程序清单
五、实验完成及成绩评定(实验报告格式见资料最后两页)
19周周二前完成实验报告的撰写,上交源程序、PROTEUS仿真电路、WORD电子文档和纸质打印稿。
成绩评定:
1、实验完成情况(60%)
2、实验报告撰写(40%)
单片机综合实验项目
项目1模拟真实交通灯
内容:
用8255芯片的PA、PB口低四位做输出口,控制十二个发光二极管燃灭,模拟十字路口交通灯管理,并利用数码显示器进行倒计时显示(采用单片机内部定时器定时)。
通过外部中断能使交通灯暂停运行,并点亮4个红灯。
通过16*16点阵中的图形模拟控制行人过马路的人形“走”、“停”指示灯,可参考下图所示。
选做增加项目:
在交通灯开始之前可通过开关对红绿灯亮灭时间的初始值进行增、减设定或者交通灯暂停时加上乐曲报警。
电路:
(只连粗实线部分)
74LS138译码器电路(选做部分)
8255与发光二极管连线图
数码LED显示器电路(不需接线)
16×16LED点阵显示电路(选做部分)
要求:
交通灯亮灭过程同“8255控制交通灯实验”,倒计时显示只需两位数(0~99),用定时器定时进行倒计时,每秒钟减1。
在16*16点阵中显示的人形“走”、“停”标志可自定义,由专门软件可转换为相应显示代码,不需自己推理。
项目2多功能数字时钟
内容:
设计一个数字时钟,显示范围为00:
00:
00~23:
59:
59。
通过5个开关进行控制,其中开关K1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关K2用于切换修改时、分、秒数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定闹钟,闹钟同样可以设定初值,并且设定好后到时间通过实验箱音频放出一段乐曲作为闹铃。
选做增加项目:
还可增加秒表功能(精确到0.01s)或年月日设定功能。
电路:
(只连粗实线部分)
数码LED显示器电路(不需接线)
电子音响电路
要求:
开关K3进行加1调节时,当加至最大值(时为24,分和秒均为60)时要能正常归零。
开关K4进行减1调节时,当减至最小值00时,均能再回到从相应最大值(时为23,分、秒均为59)。
闹钟乐曲自定。
项目3电子时钟(LCD显示)
设计要求
以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:
●使用字符型LCD显示器显示当前时间。
●显示格式为“时时:
分分:
秒秒”。
●用4个功能键操作来设置当前时间,4个功能键接在P1.0~P1.3引脚上。
功能键K1~K4功能如下。
●K1—进入设置现在的时间。
●K2—设置小时。
●K3—设置分钟。
●K4—确认完成设置。
程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:
00:
00”,然后开始计时。
项目4秒表
设计要求
应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:
显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
项目5定时闹钟
设计要求
使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟。
定时闹钟的基本功能如下:
●显示格式为“时时:
分分”。
●由LED闪动来做秒计数表示。
●一旦时间到则发出声响,同时继电器启动,可以扩充控制家电的开启和关闭。
程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:
00”,按下操作键K1~K4动作如下:
(1)K1—设置现在的时间。
(2)K2—显示闹钟设置的时间。
(3)K3—设置闹铃的时间。
(4)K4—闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。
设置当前时间或闹铃时间如下。
(1)K1—时调整。
(2)K2—分调整。
(3)K3—设置完成。
(4)K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。
本题目的难点在于4个按键每个都具有两个功能。
项目6音乐倒数计数器
设计要求
利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
定时闹钟的基本功能如下。
●字符型LCD(16 2)显示器。
●显示格式为“TIME分分:
秒秒”。
用4个按键操作来设置当前想要倒计数的时间。
一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1~K4动作如下。
●K1—可调整倒计数的时间1~60分钟。
●K2—设置倒计数的时间为5分钟,显示“0500”。
●K3—设置倒计数的时间为10分钟,显示“1000”。
●K4—设置倒计数的时间为20分钟,显示“2000”。
复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键则在LCD上显示出设置画面。
此时,若:
a.按操作键K2—增加倒计数的时间1分钟。
b.按操作键K3—减少倒计数的时间1分钟。
c.按操作键K4—设置完成。
本题目难点是实现音乐的播放,可利用定时计数器,通过载入不同的计数初值,产生频率不同的方波,输入到蜂鸣器(SOUNER)中,使其发出频率不同的声音。
本设计中单片机晶振为1.0592MHz,通过计算各音阶频率,可得1、2、3、4、5、6、7共7个音应赋给定时器的初值为64580、64684、64777、64820、64898、64968、65030。
在此基础上,可将乐曲的简谱转化为单片机可以“识别”的“数组谱”,进一步加入对音长、休止符等的控制量后,可以实现音乐的播放。
项目7波形发生器设计
设计要求
设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器。
本题目中,方波信号是利用定时器中断产生的,每次中断时,将输出的信号按位取反即可。
其他波形可以通过单片机控制DAC来实现。
(1)三角波信号是将输出的二进制数字信号依次加1,达到0xff时依次减1,并实时将数字信号经D/A转换得到;
(2)锯齿波信号是将输出的二进制数字信号依次加1,达到0xff时置为0x00,并实时将数字信号经D/A转换得到的;
(3)梯形波是将输出的二进制数字信号依次加1,达到0xff时保持一段时间,然后依次减1直至0x00,并实时将数字信号经D/A转换得到的;
(4)正弦波是利用MATLAB将正弦曲线均匀取样后,得到等间隔时刻正弦波取样值,然后依次输出后经D/A转换得到。
项目8人行道电子指示屏的设计
设计要求
设计一个单片机控制的两个16×16点阵LED模块显示的人行道电子