0951单片机实验指导书.docx
《0951单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《0951单片机实验指导书.docx(31页珍藏版)》请在冰豆网上搜索。
0951单片机实验指导书
《单片机原理及应用》
实验指导书(学生用)
罗志会吴正平
三峡大学物理实验示范中心
2009年3月
实验注意事项
1)开发环境与最小系统实验2课时
(熟悉编译软件,最小系统的硬件搭接)
2)程序设计与调试2课时
(辅助指令记忆,简单程序调试、设计模版)
3)中断系统2课时
(外中断0的产生和清除)
4)定时器/计数器2课时
(计时秒表设计)
5)串行通讯2课时
(双机串行通讯)
6)I/O口的扩展2课时
(P0口通过74LS273、74LS244扩展)
7)显示实验2课时
(LED显示,LCD显示)
8)AD/DA实验2课时
(数/模转换器DAC0832、ADC0809)
双周实验时间:
4、6、8、10、12、14、16、18周
星期二:
56节、78节、下午18:
30~20:
30
分三组,每组20人,
地点:
理科楼L-2613
实验注意事项
一、实验素养和一般知识
1.实验前准备工作
(1)明确实验目的、熟悉实验内容、实验步骤、了解所用单片机实验开发系统及硬件的结构、仪器设备的性能。
(2)通过收集相关的资料,设计自己的实验项目,作好必要的准备,做到有的放矢。
(3)做好实验前的预习工作,设计硬件接口电路,编写好设计程序并通过编译检查。
2.进入实验室后
(1)熟悉所用的单片机实验开发系统及接口芯片,了解其外观、性能。
(2)通电瞬间,应注意仪器是否正常工作,不要只看开关,如有不正常现象,应立即断电找出原因。
(3)不允许自带光盘、软盘、闪存等存储媒质上机,违反者取消实验资格!
(指导教师允许情况除外)。
(4)故意或违规操作造成器件或仪器损坏,照价赔偿。
(AT89C51芯片赔偿10RMB)
3.实验进行时
(1)正常情况下,按规定步骤进行,读取数据,并及时记录。
(2)各种操作要有目的进行,不可盲动与本次实验无关的器件。
(3)接线要简单、正确、明了,红、绿、蓝、黑引线遵照电路连接规范进行硬件接线,经老师复查后允许后才可通电。
(4)实验过程中,如有烧焦味、芯片不工作等异常现象,立即断电并向指导老师反映。
(5)实验完后,经老师确认,并把仪器、导线、工具清理、收拾完毕,仿真器归原位,将芯片交回老师查收,签到后方可离开实验室。
二、实验报告内容和要求
1.实验报告要用学校统一的纸,进实验时交老师查阅。
2.实验内容应包括,是实验目的、原理、硬件接口电路图、程序流程图及清单、结果和分析以等。
3.对实验中发现的问题应加以讨论,并提出自己的改进意见和要求等。
实验1VW开发环境与最小系统实验
一、实验目的和要求
1.熟悉MCS-51单片机的VW、KeilC实验开发环境,仪器的操作和使用。
2.掌握AT89C51最小系统概念及硬件搭接的方法。
二、实验设备
1.TPC-2003通用微机实验系统一套
2.AT89C51开发板与仿真器一套
3.TOP851通用编程器一台
4.PC机一套
5.VW_G集成调试环境软件一套
6.KeilC开发环境一套
三、实验内容
1)、实验开发系统软、硬件的使用
TPC-2003实验台的使用
1.开电脑机前,将主机ISA数据线与实验台插接好,检查实验台上电开关是否处于“关”状态,再开启主机电源。
2.主机自检完成后,打开实验台电源+5V(+/-12必须断开),主机板上的2位LED显示器出现提示符“88”,表明系统正常。
否则应立即关掉电源!
!
!
3.关实验台电源,按预先设计的实验线路接好线后,检查无误,在指导教师允许下才可通电。
实验台主机板通电后,不允许在上面放置任何物品,特别是金属物!
(因集成芯片或线路引起短路损坏设备)。
4.将写入程序代码的AT89C51芯片(代码擦写运用TOP851专用程序)按标示的方向插入DIP40的通用插座,利用实验台的资源,按照最单片机小系统的设计要求搭接电路(电源时钟、RST、EA*)。
5.用示波器检测ALE脚与XTAL1脚的信号情况,判断芯片是否正常工作。
(细节请查阅TPC-2003实验台用户手册)
51仿真开发板的使用(读写单片机)
1.将仿真器紧固在开发板的DIP40插座上,缺口朝向手柄,锁紧仿真器。
2.将串口线公头接在PC的RS-232输出口,将随机所配的5V直流电源插头插到右侧电源插座上,电源指示灯亮;
3.运行“KeilC.exe”,初始化串口设置;
4.在主菜单中选择“文件”,装载.ASM的源文件;
(细节请阅读“如何把ASM文件导入KEIL中仿真”或KeilC编译环境软件用户手册)
VW环境软件的使用
1.PC机上电正常工作后,在显示器的桌面上点击快捷图标“VW集成调试软件绿色版”,进入“伟福V系列:
软件模拟器”工作环境,并在跳出的对话框中选择“√好”,进入软件调试平台。
2.仿真器设置:
选菜单栏仿真器/仿真器设置,将跳出对话框中的“选择厂商”、“选择CPU”、“选择晶振频率”项目设置成:
Atmel、AT89C51、12000000后,选“√好”关闭对话框。
3.源文件的建立和打开:
(参照VW.PDF文档“快速入门”,P39~43)
(1)选菜单栏文件/新文件或者工具栏新文件,出现源文件编辑窗口,输入程序文本。
(2)选菜单栏文件/保存文件(或另存为),要求输入文件名,同时保存类型选*.ASM。
实验分为A、B、C三组,先在F盘下建“单片机学生实验”文件夹,再在该文件夹中建立“A组”、“B组”、“C组”共三个子文件夹,各组同学按组保存自己的文件。
文件名按下面要求写,如:
146XXXS1
学号文件名
保存路径为:
F:
\单片机学生实验\A组,然后单击保存即可。
(3)编译源文件,选菜单栏项目/编译,根据编译结果的错误提示,修正源程序,直至成功。
此时可以关闭“编译结果”和源文件编辑窗口。
(4)出现“当前模块:
142XXXS1”,同时打开菜单栏视图/调试、寄存器、存储空间,然后可以选主菜单/窗口或者工具栏/XX窗口;整理平台视野。
KeilC环境软件的使用(见KeilC中嵌入ASM.软件的操作过程)
由老师演示,学生按步骤操作即可。
2)、搭建单片机的最小系统。
1.熟悉TPC-2003实验台的硬件资源(RST、时钟脉冲输出、DIP40通用插座、LED电路等),关闭实验台的电源开关。
2.根据最小系统的概念,利用AT89C51芯片搭接单片机的最小系统,上电时用示波器检查AT89C51芯片及外围电路工作是否正常。
3.利用单片机的P1引脚和LED(注意比较直接驱动和增强驱动的效果),在实验台上自己搭接“跑马灯”电路,如图1-1。
4按TOP851的操作步骤,利用TOP851编程器将“跑马灯”程序的二进制代码烧写进AT89C51芯片的FlashROM中。
5.合上电源,单片机上电,完成“跑马灯程序”(单片机对LED循环点亮)。
6.将仿真器锁紧在开发板上,插上串口线和电源,按照“如何进行仿真操作”的视频,利用KeilC51软件环境,在线仿真调试“跑马灯”程序。
图1-1跑马灯电路
四、实验报告要求
1)什么是单片机的最小系统?
画出在TOP-2003实验平台上搭建AT89C51单片机最小系统的简单原理图!
2)简单描述运用KeilC软件仿真的过程
3)为什么AT89C51的单片机外时钟要从XTAL1引入,而XTAL2悬空?
如果接晶振形成振荡时钟,与MCS-51接法上有无差别?
五、参考程序
“跑马灯”的实验参考程序
142XXXS1学员的参考程序如下:
ORG0090H
MOVP1,#00H;送P1口
MOVA,#01H;L1发光二极管点亮
LO33:
MOVP1,A
LCALLSE19;延时
RLA;左位移
SJMPLO33;循环
ORG07A0H
SE19:
MOVR6,#0A0H
LO36:
MOVR7,#0FFH
LO35:
NOP
NOP
DJNZR7,LO35;
DJNZR6,LO36;延时
RET
END
实验二程序调试与分析
一、实验目的和要求
1.熟悉MCS-51指令系统,程序的基本结构。
2.掌握汇编语言程序的设计、编译、调试。
二、实验设备
1.TPC-2003通用微机实验系统一套
2.AT89C51开发板与仿真器一套
3.PC机一套
4.VW_G集成调试环境软件一套
5.KeilC开发环境一套
三、实验内容
1.单步调试程序
打开菜单栏执行/跟踪,按照VW.PDF文档中的相应内容操作,注意熟悉F7(跟踪:
可以跟踪到函数或程序内部)、F8、断点设置等基本操作。
(1)“当前模块:
142XXXS1”中“小手光标”位置是PC指针所在,“寄存器”中显示当前各寄存器中的内容。
“数据存储区”中地址用右键显示地址,“输入数据”为十六进制XXXX,确认后调试。
(2)首先单步运行,选主菜单/调试/单步运行或者选工具栏单步运(F7)。
运行一个循环,观察相关的寄存器和存储区的变化。
注意利用SFR、DATA等更改程序中相关寄存器的值,调整程序执行的状态。
熟练WV程序调试界面。
有问题的地方及时和老师讨论。
(3)运用连续运行和设断点运行。
工具栏/为连续运行,在“当前模块”中鼠标出现“小手”时点击,“红色手”即为断点位置。
(4)记录下数据区xxxxH--XXXXH中,在执行程序前后的内容变化。
2.分析下列程序,熟练调试操作,解释程序实现的功能及程序结构类型(顺序结构、分支程序、循环程序、子程序、中断服务程序)。
训练程序一:
ORG1000H
START:
MOVDPTR,#2000H
MOVA,20H
MOVCA,@DPTR+A
MOV21H,A
SJMP$
TABLEEQU2000H
TABLEDB00H,01H,04H,09H,10H,19H
END
调试方法(以下程序自己设计调试方法):
1)把断点设在程序的第四行,观察累加器A的值是否为查表的结果;
2)观察程序SJMP$的执行情况;
3)思考:
分析程序出现的问题,如果把伪指令TABLEEQU2000H换成ORG2000H是否也能得到同样的结果。
程序实现的功能及程序结构类型。
训练程序二:
ORG1000H
START:
MOVDPTR,#2000H
MOVR0,#64H
LOOP:
MOVXA,@DPTR
MOV20H,A;副本
JNBACC.7,NEXT;判断符号
MOVA,20H
CPLA
INCA
MOVX@DPTR,A
NEXT:
INCDPTR
DJNZR0,LOOP
SJMP$
思考:
指出循环程序的初始化、循环体和控制变量的修改与循环次数的控制。
程序实现的功能及程序结构类型。
训练程序三:
ORG0013H
START:
MOVC,P2.2
ORLC,TF0
ANLC,P1.1
MOVF0,C;暂存F0
MOVC,IE1
ORLC,/25H
ANLC,F0
ANLC,/26H
MOVP1.3,C
SJMP$
END
说明:
MCS-51单片机有着优异的位逻辑功能,可以方便地实现各种复杂的逻辑运算。
这种用软件代替硬件的方法,可以大大简化甚至完全不用硬件,但比硬件要多花一些运算时间。
思考:
分析调试中出现的问题,观察位处理机的工作过程
训练程序四
MULTB:
MOVR0,#23H
MOVR7,#04H
LOOP:
MOV@R0,#00H;清零
DJNZR7,LOOP
ACALLBMUL
SJMP$
BMUL:
MOVA,R2
MOVB,R4
MULAB;低位乘
ACALLRADD
MOVA,R2
MOVB,R5
MULAB;交叉乘
DECR0
ACALLRADD
MOVA,R4
MOVB,R3
MULAB;交叉乘
DECR0
DECR0
ACALLRADD
MOVA,R5
MOVB,R3
MULAB;高字节乘
DECR0
ACALLRADD
RET
RADD:
ADDA,@R0
MOV@R0,A
MOVA,B
INCR0
ADDCA,@R0
MOV@R0,A
INCR0
MOVA,@R0
ADDCA,#00H;加进位
MOV@R0,A
RET
END
本程序未对BMUL和RADD的有关寄存器内容作堆栈保护,因为主子程序(包括BMUL与RADD)所共同使用的寄存器被用作为数据参数的传递单元。
思考:
分析上述程序,画出程序流程框图。
程序实现的功能及程序结构类型。
四、实验报告要求
1、完成各例程后面的思考问题;
2、按照教材上的程序注释格式,对各程序进行注释。
实验三中断程序的调试与设计
一、实验目的和要求
1.熟悉MCS-51中断的概念,中断系统的工作原理。
2.掌握中断程序的基本结构,设计技巧、编译调试方法。
3.基本中断电路的搭接、分析。
二、实验设备
1.TPC-2003通用微机实验系统一套
2.AT89C51开发板与仿真器一套
3.PC机一套
4.VW_G集成调试环境软件一套
5.KeilC开发环境一套
三、实验内容
中断是单片机的核心功能之一。
中断应用的好坏,是一个人对单片机技术掌握深度的重要评判依据。
下面的实验题将有助于大家理解和巩固外中断的产生和消除,中断响应的过程、时间等,为后续实验打下基础。
1.如图2-1(参照课本P110图5-8),利用TPC-2003实验台上的资源或Proteus软件,搭建电平方式外部中断请求的实验装置,中断事件处理为对P1口灯依次点亮一次,试编写程序。
(提示:
D触发器预置和清零端SD=0且RD=1时,Q置“1”端,即负脉冲有效;二者均为高电平时不影响工作;CP控制脉冲端上跳沿翻转,其它不变))
图2-1外中断控制电路
142XXXS3学员的参考程序如下:
ORG0000H
AJMPMAIN
ORG0003H
AJMPW1;中断入口程序,跳转到中断服务子程序去
;****************主程序初始化相关寄存器的设置******************
ORG0050H
MAIN:
MOVSP,#30H
CLRP2.0;Sd端清“0“
…
…
…
HERE:
AJMPHERE
;**********************外中断服务子程序*************************
W1:
(根据自己的理解补充完整程序,提示:
和边沿触发器配合完成清除中断申请,依次点亮P1口的LED灯)
…..
…..
…..
…..
…..
…..
…..
…..
RETI
END
四、实验报告要求
1、请完成实验2的程序,经上机调试后,在实验报告中画出程序流程图。
2、计算从低电平申请中断到P1.0灯点亮所需要的时间(单片机晶振12MHz)
实验四计时秒表的设计
一、实验目的和要求
1.熟悉MCS-51定时器计数器的工作原理,程序的基本结构及编译、调试。
。
2.利用MCS-51单片机设计秒表。
二、实验设备
1.TPC-2003通用微机实验系统一套
2.AT89C51开发板与仿真器一套
3.PC机一套
4.VW_G集成调试环境软件一套
5.KeilC开发环境一套
三、实验内容
定时器/计数器在工业控制中有着广泛的应用,常常和中断技术结合使用。
本实验要求大家利用所学的知识,设计简易的计时秒表,并通过软硬件仿真验证。
1.基于12MHz的时钟,结合中断和定时两章的知识,参考课本P133设计一个计时秒表,按单脉冲触发开始计时,再按单脉冲停止计时。
上述实验采用实验开发板和仿真器来完成,也可以直接在Proteus中仿真,如图4-1。
设计要求及思路:
1).利用T0设计“秒”时间单元,计算初值X,确定TMOD、TCON初值.
2).采用INT0*作为计时开始和计时结束信号的输入口。
3).如在主程序中对INT0*设置优先级,会有什么效果?
如何改进设计?
图4-1Proteus中的计时秒表电路
142XXXS4学员的参考程序如下:
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT00;外中断入口程序
ORG000BH
AJMPIT0P;定时器1中断入口程序
ORG0100H
MAIN:
MOVSP,#30H
CLRF0;设定启动标志
MOV20H,#XXH;预置中断次数
CLRA
(根据自己的理解补充完整程序,对定时器、外中断进行初始化)
…..
…..
…..
…..
HERE:
LCALLSTAR
AJMPHERE
;**********************外中断0的服务子程序**************************
INT00:
JBF0,OVER;是否停止?
SETBTR0;启动秒表
CLRA;启动初始化,清A和相关寄存器
MOVR0,A
SETBF0;F0置1,再次外中断时则跳转到停止程序
CLOSE:
RETI
OVER:
CLRTR0
CLRF0
MOVR0,#00H;清R0
AJMPCLOSE
;**********************定时器中断服务子程序**************************
IT0P:
MOVTL0,#XXH;中断后计数器重新赋初值
MOVTH0,#XXH
DJNZ20H,RETURN
MOV20H,#XXH;1秒后重新赋值
INCA
ADDA,#00
DAA
RETURN:
RETI
;******************单个数码管的“秒”显示子程序************************
STAR:
MOVDPTR,#NUMTAB;启始地址
MOVR0,A;A中数据保存
MOVCA,@A+DPTR
MOVP0,A;显示相应的值
CLRP2.0;个位显示
MOVA,R0;保留A中的原始信息
RET
;段数码管各划的数字排列表
NUMTAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;对应代码
;0123456789;显示内容
END
四、实验报告要求
1、实验2中,作为INT0*计时开始和计时结束信号的识别方法还有哪些?
举例说明。
2、如果要计时秒表精确到0.01秒,如何改进设计程序?
实验五串行口通信实验
一、实验目的和要求
1.熟悉MCS-51串行通信的工作原理,程序的基本结构及调试。
。
2.实现两片AT81C51之间的数据传输。
二、实验设备
1.TPC-2003通用微机实验系统一套
2.AT89C51开发板与仿真器一套
3.PC机一套
4.VW_G集成调试环境软件一套
5.KeilC开发环境一套
三、实验内容
串行通信是单片机的重要功能之一,在自动控制领域有广泛的应用。
本次实验要求大家了解串行通信程序编写的方法,分析程序算法,并在VW环境中观察串行发送、接收的过程。
1.基于11.0592MHz的开发板,参考教材的程序,设计AT89C51芯片A机、芯片B机之间互为应答的串行通信程序,用以测试硬件线路传输的质量。
具体过程如下:
A机将信息#0AAH传递给B机,由B机收并检验,B机确认正确后,将#08H在LED数码管显示,同时传回#0BBH给A机。
A机将接收的信息与#0BBH比较,相同则显示#08H出来,否则重发#0AAH并显示“01H”报错(查询方式编写程序)。
如图5-1:
图5-1双机串行通信电路图
142XXXS5学员参考程序如下(程序设计基于11.0592MHz时钟):
A、发射机程序:
ORG0000H
AJMPASTART
ORG0030H
ASTART:
MOVR0,#00H
CLREA
MOVTMOD,#20H;设T1为定时模式2
MOVTL1,#0E8H;基于11.0592MHz时钟,波特率1.2kb/s
MOVTH1,#0E8H
MOVPCON,#00H;波特率不加倍
SETBTR1
MOVSCON,#50H;串口工作方式1,允许接受
;***********************A机开始发送********************************
ATT1:
MOVSBUF,#0AAH;发联络信号AA
AWAIT1:
JBCTI,ARR1
SJMPAWAIT1
;***********************A机发送完毕,等待B机应答*****************
ARR1:
CLRTI
JBCRI,ARR2;等待B机回答
SJMPARR1
;******************A机接收完毕B机的应答信号,进行处理****************
ARR2:
CLRRI
MOVA,SBUF
CJNEA,#0BBH,ERR
MOVR0,#08H
LCALLSTAR
SJMP$
ERR:
MOVR0,#01H;如收到的应答信息不是#0BBH,输出#01H报错
AJMPATT1;B机未准备好或通信线路故障,继续联络
STAR:
MOVDPTR,#NUMTAB;启始地址
MOVA,R0;R0中数据输出显示
MOVCA,@A+DPTR
MOVP1,A;显示相应的值
CLRP2.0;个位显示
RET
;段数码管各划的数字排列表
NUMTAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;显示内容的对应代码
;0123456789;显示内容
END
B、接收机程序:
ORG0000H
AJMPBSTART
ORG0030H
BSTART:
MOVR0,#00H
CLREA
MOVTMOD,#20H;设T1为定时模式2
MOVTL1,#0E8H;基于11.0592MHz时钟,波特率1.2kb/s
MOVTH1,#0E8H
MOVPCON,#00H;波特率不加倍
SETBTR1
MOVSCON,#50H;串口工作方式1,允许接受
(根据自己的理解补充完整B机的接收程序)
………
………
………
………
………
………
………
………
STAR:
MOVDPTR,#NUMTAB;启始地址
MOVA,R0;R0中数据输出显示
MOVCA,@A+DPTR
MOVP1,A;显示相应的值
CLRP2.0;个位显示
RET
NUMTAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
四、实验报告要求
1、将实验2的程序改为中断工作方式,并予以调试。
(如何实现通用微机与单片机之间的串口通信,查查资料,不作硬性要求!
)
实验六IO口的扩展实验
一、实验目的和要求
1.了解单片机I/O接口扩展的方法。
2.熟悉简单IO扩展电路的设计
二、实验设备
1.TPC-2003通用微机实验系统一套
2.AT89C51开发板与仿真器一套
3.PC机一套
4.VW_G集成调试环境软件一套
5.KeilC开发环境一套
6.74LS273、74LS244各一片
三、实验内容
在MCS-51单片机应用系统中,采用TTL电路、CMOS电路锁存器或三态门电路也可以构成各种类型的简单输入输出口,通常都是通过P0口扩展。
利用74LS273和74LS244,将P0口扩展成简单的输入、输出口的电路如下图,74LS273输出端接8个LED发光二极管,以显示8个按钮开关状态,某位低电平时二极管发光。
74LS244是缓冲驱动器,扩展输入口,接8个按钮开关。
1、I/O数据输出编程
MOVA,#data;数据→A
MOVDPTR,#0FEFFH