10610单片机实验指导书学生用书.docx
《10610单片机实验指导书学生用书.docx》由会员分享,可在线阅读,更多相关《10610单片机实验指导书学生用书.docx(33页珍藏版)》请在冰点文库上搜索。
10610单片机实验指导书学生用书
《单片机原理与设计》
实验指导书(学生用)
编写:
罗志会
三峡大学物理实验示范中心
2010年5月
目录
实验注意事项5
实验一开发环境与最小系统实验6
实验二程序调试与分析8
实验三中断程序的调试与设计12
实验四计时秒表的设计14
实验五串行口通信实验17
实验六IO口的扩展实验20
实验七LED数码管与液晶显示实验22
实验八D/A和A/D转换实验25
实验时间安排:
周四,2学时;分三组,每组20人,
地点:
理科楼L-2613
实验注意事项
一、实验素养和一般知识
1.实验前准备工作
(1)明确实验目的、熟悉实验内容、实验步骤、了解所用单片机实验开发系统及硬件的结构、仪器设备的性能。
(2)通过收集相关的资料,设计自己的实验项目,作好必要的准备,做到有的放矢。
(3)做好实验前的预习工作,设计硬件接口电路,编写好设计程序并通过编译检查。
2.进入实验室后
(1)熟悉所用的单片机实验开发系统及接口芯片,了解其外观、性能。
(2)通电瞬间,应注意仪器是否正常工作,不要只看开关,如有不正常现象,应立即断电找出原因。
(3)不允许自带光盘、软盘、闪存等存储媒质上机,违反者取消实验资格!
(指导教师允许情况除外)。
(4)故意或违规操作造成器件或仪器损坏,照价赔偿。
(AT89C51芯片赔偿10RMB,单片机开发板150RMB)
3.实验进行时
(1)正常情况下,按规定步骤进行,读取数据,并及时记录。
(2)各种操作要有目的进行,不可盲动与本次实验无关的器件。
(3)接线要简单、正确、明了,红、绿、蓝、黑引线遵照电路连接规范进行硬件接线,经老师复查后允许后才可通电。
(4)实验过程中,如有烧焦味、芯片不工作等异常现象,立即断电并向指导老师反映;实验演示完成,开发板要及时断电。
(5)实验完后,经老师确认,并把仪器、导线、工具清理、收拾完毕,仿真器归原位,将芯片交回老师查收,签到后方可离开实验室。
二、实验报告内容和要求
1.实验报告要用学校统一的纸张,进实验时交老师查阅。
2.实验报告内容包括实验目的、实验报告要求、实验思考、结果和分析等。
3.对实验中发现的问题应加以讨论,并提出自己的改进意见和要求等。
实验一开发环境与最小系统实验
一、实验目的和要求
1.熟悉89C51单片机KeilC实验开发环境,仪器的操作和使用。
2.Proteus仿真软件的基本操作。
3.掌握AT89C51最小系统概念及硬件搭接的方法。
二、实验设备
1.TPC-2003通用微机实验系统一套
2.AT89C51开发板与仿真器一套
3.TOP851通用编程器一台
4.PC机一套
5.VW_G集成调试环境软件一套
6.KeilC开发环境一套
三、实验内容
1、KeilC环境软件的使用(见KeilC中嵌入ASM.软件的操作过程)
由老师演示,学生按步骤操作,下载实现软硬件仿真。
关键操作提示:
1)、P工程—N新建工程—命名“XXX”—ATMEL(89C51)-确认
2)、F新建文件—编写汇编代码—F另存为---“XXX.ASM”
3)、单击选中“SourceGroup”—右击“增加文件到组‘SourceGroup1’”—文件类型“ASM源文件“—选中需添加文件ADD—关闭对话框。
4)、单击选中“Target1”--右击“目标Target1属性”—目标:
晶振频率11.0592;代码存储器大小:
紧凑的---输出:
生成HEX文件---调试:
U使用(设置COM1,38400,ok;其他所有选项打“√”).
2、KeilC平台下51仿真开发板的使用(读写单片机)
1)将仿真器紧固在开发板的DIP40插座上,缺口朝向手柄,锁紧仿真器。
2)将串口线公头接在PC的RS-232输出口,将随机所配的5V直流电源插头插到右侧电源插座上,电源指示灯亮;
3)运行“KeilC.exe”,初始化串口设置;
4)在主菜单中选择“文件”,装载.ASM的源文件;
(细节请阅读“如何把ASM文件导入KEIL中仿真”或KeilC编译环境软件用户手册)
5).将仿真器锁紧在开发板上,插上串口线和电源,按照“如何进行仿真操作”的视频,利用KeilC51软件环境,在线仿真调试“跑马灯”程序。
3、Proteus搭建单片机的最小系统。
1).根据最小系统的概念,利用Proteus设置单片机的最小系统。
2).利用单片机的P1引脚和LED(注意比较直接驱动和增强驱动的效果),在仿真平台上自己搭接“跑马灯”电路,如图1-1。
3).在Proteus软件中嵌入“.HEX”的源文件,运行仿真观察跑马灯的运行效果。
图1-1跑马灯电路
四、实验报告要求
1)什么是单片机的最小系统?
采用Proteus搭建AT89C51单片机最小系统的电路原理图!
2)简单描述运用KeilC软件与开发板联合仿真的过程。
五、参考程序
“跑马灯”的实验参考程序
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.熟悉89C51指令系统,程序的基本结构。
2.掌握VW、KeilC编译环境,汇编语言程序的设计、编译、调试。
二、实验设备
1.TPC-2003通用微机实验系统一套
2.AT89C51开发板与仿真器一套
3.PC机一套
4.VW_G集成调试环境软件一套
5.KeilC开发环境一套
三、实验内容
1、VW环境软件的使用
1).PC机上电正常工作后,在显示器的桌面上点击快捷图标“VW集成调试软件绿色版”,进入“伟福V系列:
软件模拟器”工作环境,并在跳出的对话框中选择“√好”,进入软件调试平台。
2).仿真器设置:
选菜单栏仿真器/仿真器设置,将跳出对话框中的“选择厂商”、“选择CPU”、“选择晶振频率”项目设置成:
Atmel、AT89C51、12000000后,选“√好”关闭对话框。
3).源文件的建立和打开:
(参照VW.PDF文档“快速入门”,P39~43)
(a)选菜单栏文件/新文件或者工具栏新文件,出现源文件编辑窗口,输入程序文本。
(b)选菜单栏文件/保存文件(或另存为),要求输入文件名,同时保存类型选*.ASM。
实验分为A、B、C三组,先在F盘下建“单片机学生实验”文件夹,再在该文件夹中建立“A组”、“B组”、“C组”共三个子文件夹,各组同学按组保存自己的文件。
文件名按下面要求写,如:
146XXXS1
学号文件名
保存路径为:
F:
\单片机学生实验\A组,然后单击保存即可。
(c)编译源文件,选菜单栏项目/编译,根据编译结果的错误提示,修正源程序,直至成功。
此时可以关闭“编译结果”和源文件编辑窗口。
(4)出现“当前模块:
142XXXS1”,同时打开菜单栏视图/调试、寄存器、存储空间,然后可以选主菜单/窗口或者工具栏/XX窗口;整理平台视野。
4).单步调试程序
打开菜单栏执行/跟踪,按照VW.PDF文档中的相应内容操作,注意熟悉F7(跟踪:
可以跟踪到函数或程序内部)、F8、断点设置等基本操作。
(a)“当前模块:
142XXXS1”中“小手光标”位置是PC指针所在,“寄存器”中显示当前各寄存器中的内容。
“数据存储区”中地址用右键显示地址,“输入数据”为十六进制XXXX,确认后调试。
(b)首先单步运行,选主菜单/调试/单步运行或者选工具栏单步运(F7)。
运行一个循环,观察相关的寄存器和存储区的变化。
注意利用SFR、DATA等更改程序中相关寄存器的值,调整程序执行的状态。
熟练WV程序调试界面。
有问题的地方及时和老师讨论。
(c)运用连续运行和设断点运行。
工具栏/为连续运行,在“当前模块”中鼠标出现“小手”时点击,“红色手”即为断点位置。
(d)记录下数据区xxxxH--XXXXH中,在执行程序前后的内容变化。
2.KeilC软件的使用
参考VW的操作过程,以教师演示为主
3.分析下列程序,熟练调试操作,解释程序实现的功能及程序结构类型(顺序结构、分支程序、循环程序、子程序、中断服务程序)。
训练程序一:
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是否也能得到同样的结果。
程序实现的功能及程序结构类型。
训练程序二:
ORG0100H
START:
MOVDPTR,#2000H
MOVR0,#64H
LOOP:
MOVXA,@DPTR
MOV20H,A;副本
JNBACC.7,NEXT;判断符号
MOVA,20H
CPLA
ORLA,#80H
INCA
MOVX@DPTR,A
NEXT:
INCDPTR
DJNZR0,LOOP
SJMP$
思考:
指出循环程序的初始化、循环体和控制变量的修改与循环次数的控制。
程序实现的功能及程序结构类型。
训练程序三:
ORG0030H
UBITP1.1;定义位符号地址
VBITP2.2
WBIT(20H).0
YBITP3.3
MOVC,U
ORLC,V
ANLC,/W
MOVY,C
END
说明:
MCS-51单片机有着优异的位逻辑功能,可以方便地实现各种复杂的逻辑运算。
这种用软件代替硬件的方法,可以大大简化甚至完全不用硬件,但比硬件要多花一些运算时间。
思考:
写出上述程序的逻辑表达式,在VW中预置U、V、W的值,观察位处理机的工作过程和程序运行结果。
训练程序四
ORG0030H
MOVR0,30H
SORT:
MOVA,R0
MOVR1,A
MOVR5,#0AH
CLRF0;互换标志位F0清零
DECR5
MOVA,@R1
LOOP:
MOVR3,A
INCR1
CLRC
MOVA,@R1;比较大小
SUBBA,R3;
JNCLOOP1;Cy=1,前小跳转
SETBF0;互换标志位F0置1
MOVA,R3
XCHA,@R1;两个数互换
DECR1
XCHA,@R1
INCR1
LOOP1:
MOVA,@R1
DJNZR5,LOOP
JBF0,SORT
END
思考:
请在30H中预置20H,同时在RAM地址的20H~29H中分别随意置10个整数,运行程序后观察RAM的20H~2FH中的数据排列!
分析上述程序的功能,画出程序流程框图。
四、实验报告要求
1、完成程序三各例程后面的思考问题;
2、按照教材上的程序注释格式,对各程序进行注释。
实验三中断程序的调试与设计
一、实验目的和要求
1.熟悉MCS-51中断的概念,中断系统的工作原理。
2.掌握中断程序的基本结构,设计技巧、编译调试方法。
3.基本中断电路的搭接、分析。
二、实验设备
1.AT89C51开发板与仿真器一套
2.PC机一套
3.VW_G集成调试环境软件一套
4.KeilC开发环境一套
三、实验内容
中断是单片机的核心功能之一。
中断应用的好坏,是一个人对单片机技术掌握深度的重要评判依据。
下面的实验题将有助于大家理解和巩固外中断的产生和消除,中断响应的过程、时间等,为后续实验打下基础。
1.如图2-1(参照课本P110图5-8),利用TPC-2003实验台上的资源或Proteus软件,搭建电平方式外部中断请求的实验装置,中断事件处理为对P1口灯依次点亮一次,并清除外中断,试编写程序在Proteus中运行调试。
(提示:
D触发器预置和清零端SD=0且RD=1时,Q置“1”端,即负脉冲有效;二者均为高电平时不影响工作;CP控制脉冲端上跳沿翻转,其它不变)
图2-1外中断控制电路
编程提示:
1).外中断INT0的初始化(设置中断申请方式、允许中断、中断优先级)
2).D触发器工作(如何使D触发器复位、允许再次申请中断)
3).中断响应动作(中断后LED有明显动作,如循环左移1位)
Proteus建模关键字提示:
1).集成8个电阻的排阻:
RESPACK-8
2).LED:
LED-BLUE
3).D触发器:
7474
4).开关按键:
BUTTON
142XXXS3学员的参考程序如下:
ORG0000H
AJMPMAIN
ORG0003H
AJMPW1;中断入口程序,跳转到中断服务子程序去
;****************主程序初始化相关寄存器的设置******************
ORG0050H
MAIN:
MOVSP,#30H
SETBP2.0;Sd端置“1”,使边沿触发器处于工作状态
(外中断设置、寄存器初始化)…
…………
………..
………..
………..
HERE:
AJMPHERE
;**********************外中断服务子程序*************************
W1:
(根据自己的理解补充完整程序,提示:
和边沿触发器配合完成清除中断申请,中断处理要求依次点亮P1口的LED灯)
………….
…………
………..
………..
RETI
END
四、实验报告要求
1、请完成实验2的程序,经上机调试后,在实验报告中画出程序流程图。
2、计算从低电平申请中断到P1.0灯点亮所需要的时间(单片机晶振12MHz)
实验四计时秒表的设计
一、实验目的和要求
1.熟悉MCS-51定时器计数器的工作原理,程序的基本结构及编译、调试。
。
2.利用MCS-51单片机设计秒表。
二、实验设备
1.AT89C51开发板与仿真器一套
2.PC机一套
3.VW_G集成调试环境软件一套
4.KeilC开发环境一套
三、实验内容
定时器/计数器在工业控制中有着广泛的应用,常和中断技术结合使用。
本实验要求大家利用所学的知识,设计简易的计时秒表,并通过软硬件仿真验证。
1.基于12MHz的时钟,结合中断和定时两章的知识,参考课本P133设计一个计时秒表,按单脉冲触发开始计时,再按单脉冲停止计时。
上述实验采用实验开发板和仿真器来完成,也可以直接在Proteus中仿真,如图4-1。
设计要求及思路:
1).利用T0设计“秒”时间单元,计算初值X,确定TMOD、TCON初值.
2).采用INT0*作为计时开始和计时结束信号的输入口。
3).如在主程序中对INT0*设置优先级,会有什么效果?
如何改进设计?
Proteus建模关键字提示:
1).LED数码显示器:
7SEG-COM-AN-XX
2).开关按键:
BUTTON
图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
MOVP1,A;显示相应的值
SETBP2.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.AT89C51开发板与仿真器一套
2.PC机一套
3.VW_G集成调试环境软件一套
4.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报错
LCALLSTAR
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机的接收程序)
;***********************B机等待接收******************************
............
.............
;***********************B机接收比较,正确显示08H****************
............
............
............
............
............
;***********************B机接收接收完毕,发应答信号****************
...........
CLOSE:
SJMP$
;******************B机接收错误的A机信号,进行错误处理****************
……………
……………
……………
AJMP