微处理器实验指导书前六个实验资料.docx
《微处理器实验指导书前六个实验资料.docx》由会员分享,可在线阅读,更多相关《微处理器实验指导书前六个实验资料.docx(48页珍藏版)》请在冰豆网上搜索。
微处理器实验指导书前六个实验资料
实验指导书
教学单位:
电子信息学院
课程名称:
微处理器实验
电子科技大学中山学院
2014年8月
第1章ZSC-1单片机实验箱简介1
1.1主要特点1
1.2系统组成1
1.3实验项目3
1.4技术性能4
1.5调试下载说明4
第2章KeilC51软件的使用5
2.1集成开发环境简介5
2.2工程(项目)的创建与处理5
2.3脱机运行8
第3章实验部分9
实验一集成开发环境的熟悉与程序设计练习9
实验二程序设计实验13
实验三并口输入/输出实验16
实验四中断与定时/计数器实验20
实验五串口实验23
实验六音乐门铃设计26
第1章ZSC-1单片机实验箱简介
1.1主要特点
ZSC-1单片机实验箱是由电子科技大学中山学院研发的单片机教学实验与应用开发平台,除满足单片机原理与接口技术等相关课程的实验教学需要外,还可用于课程设计、电子竞赛培训、创新训练、毕业设计等实践环节的项目开发。
该实验箱结构先进,外设丰富,通信能力强,扩展性好,能使学生快速熟悉单片机及常用外设的工作原理,掌握典型单片机系统的设计流程,提高应用开发能力,有效培养工程素质。
ZSC-1单片机实验箱的主要特点包括:
1、结构先进:
设置4个以不同单片机为核心的实验分区,每个单片机既可独立工作,控制分区内各种外设,也可通过串行总线与其它单片机通信,实现信息交换。
另设一个公用外设区,包括多种串行芯片/模块,由4个单片机通过串行总线分时访问。
2、外设丰富:
配置多种人机设备、传感器件、执行设备、通信设备、存储设备并支持外部扩展,其中TFTLCD、TTS语音合成器、ZigBee模块、陀螺仪/加速度传感器、非接触式RFID读卡器等新型外设均为标配,提高了实验项目的交互性和趣味性。
3、外部通信能力强:
提供RS232、RS485、USB、红外等多种通信接口,4个单片机均可利用这些接口与PC机等设备进行通信,实现程序下载、数据上传等功能。
4、扩展性好:
单片机多个并行及串行IO口通过排针引出,用于外部扩展设备的连接。
5、可靠性高:
每个实验区设有独立的电源开关和稳压电路,确保一个实验区的断电或故障不会影响其它实验区的正常工作。
6、实验项目丰富:
支持不少于50个基础性、综合性和设计性实验项目。
7、开发效率高:
提供设备驱动API、二级BootLoader、上位IAP编程软件,大幅提高单片机系统开发效率。
1.2系统组成
ZSC-1实验箱由4个实验分区、公用外设区、外部通信区、串行总线、电源电路组成,如图1-1所示。
每个实验分区包括一个单片机以及多种由单片机直接控制的外设,公用外设区包括多种可由4个单片机分时共享的串行芯片/模块,外部通信区提供RS232、RS485、USB、红外等多种通信接口,串行总线用于各实验分区、公用外设区、外部通信区之间的通信。
图1-1ZSC-1实验箱的总体结构
表1-1为4个实验分区以及公用外设区的外设清单。
1#与2#实验分区均采用80C51内核的STC12C5A60S2单片机(只是封装不同),且配置外设较多。
3#实验分区采用AVR内核的ATmega32,4#实验分区采用基于80C51内核并内置IEEE802.15.4无线收发器的CC2530。
表1-1ZSC-1实验箱外设清单
1#实验分区
(STC12C5A60S2)
人机设备
发光二极管
无源蜂鸣器
独立按键
行列键盘
LED数码管
LED点阵管
16*2字符LCD显示器
执行设备
直流电机
步进电机
传感器
DS18B20温度传感器
电位器
2#实验分区
(STC12C5A60S2)
人机设备
发光二极管
无源蜂鸣器
独立按键
传感器
DHT11温湿度传感器
电位器
通信设备
nRF24L01+射频收发器
存储设备
8MB串行Flash存储器
RC522RFID读卡器
3#实验分区
(ATmega32)
人机设备
发光二极管
无源蜂鸣器
独立按键
传感器
电位器
4#实验分区
(CC2530)
人机设备
发光二极管
无源蜂鸣器
独立按键
传感器
电位器
公用外设区
异步串行外设
MzTH24TFTLCD显示器
SYN6288TTS语音合成器
I2C外设
AT24C64串行EEPROM
PCF8563T实时钟
PCF8591串行AD/DA
MPU6050陀螺仪/加速度传感器
图1-2为ZSC-1实验箱的PCB布局图。
各功能分区、主要元器件、1#单片机引脚、扩展排针引脚的名称均有丝印标注,1个总电源开关和4个分电源开关集中安排在位于上方的电源区,程序下载口(RS232/USB)设在左上方外部通信区。
图1-2ZSC-1实验箱PCB布局图
1.3实验项目
一、基础性实验
1、并口实验;2、串口实验;3、定时/计数器实验;4、外部中断实验;5、A/D转换实验;6、D/A转换实验;7、看门狗实验。
二、综合性实验
1、数码管显示实验;2、行列键盘扫描实验;3、直流电机实验;4、步进电机实验;5、字符型LCD显示实验;6、LED点阵显示实验;7、TFTLCD显示实验;8、TTS语音实验;9、I2C接口实验;10、SPI接口实验;11、RS485实验;12、无线数传实验;13、红外通信实验;14、多机通信实验;15、RFID实验;16、陀螺仪与加速度传感器实验
三、设计性实验
1、多功能电子钟设计;2、音乐门铃设计;3、数字温度计设计;4、温湿度测试仪设计;5、数字记录仪设计;6、交通灯设计;7、门禁系统设计;8、多通道遥控系统设计;9、信号发生器设计;10、数字频率计设计;11、电子密码锁设计;12、简易游艺机设计;13、ZigBee无线传感器网络设计;14、小型物联网设计;15、高速公路自动收费系统设计;16、智能小区管理系统设计;17、倒车避障系统设计
1.4技术性能
电气参数:
输入电压AC220V±10%50Hz,输出功率<20W
机械参数:
采用铝合金箱体,外形尺寸400mm×280mm×120mm
使用环境:
温度-10℃~+40℃,相对湿度<85%,海拔<4000m
1.5调试下载说明
用USB电缆连接实验箱和PC机,运行PC机上的STC_ISP.exe,进行程序下载。
具体步骤如下:
1、在STC_ISP主界面选择MCU型号为STC12C5A60S2,打开实验中生成的HEX格式程序文件,选择相应串口,设置最高波特率为38400bps;
2、将实验箱电源电路中的总电源开关拨到左侧位置,使主电源接通,将MCU1电源开关拨到下方位置,使1#单片机断电;
3、点击STC_ISP主界面中的下载按钮,约等待5s,待系统提示“请给MCU上电”时再将MCU1电源开关拨到上方位置,使1#单片机通电,开始下载程序,数秒后下载结束,写入单片机Flash存储器中的程序自动开始运行。
第2章KeilC51软件的使用
KeilC51集成开发环境是基于80C51内核的微处理器软件开发平台,用户可以在集成开发环境下学习编写、调试单片机程序。
通过学习,实验用户可以掌握运用单片机进行项目开发的过程、步骤和方法,积累一定的调试方法、技巧。
2.1集成开发环境简介
安装KeilC51软件后,点击桌面KeilC51快捷图标即可进入如图2.1所示的集成开发环境,各种调试工具、命令菜单都集成在此开发环境中。
以下列出的是常用菜单项的主要功能及对应的快捷键,工具栏上有常用菜单命令对应的工具按钮。
图2.1操作界面
2.2工程(项目)的创建与处理
2.2.1创建一个KeilC51工程(项目)
在KeilC51集成开发环境下使用Project(工程,也叫项目)来管理程序包含的所有文件模块,包括源程序(C程序,汇编程序)文件、头文件甚至说明性的技术文档。
对于刚刚使用KeilC51的用户来讲,一般可以按照下面的步骤来创建一个KeilC51工程(项目)。
1、双击桌面的KeilC51快捷图标,进入KeilC51集成开发环境。
2、执行Project菜单中的NewProject命令,新建一个工程。
在工程保存对话框中为工程取一个名字(这里以LedFlash.µV3为例),工程名应能反映其功能且名字不宜太长(最好不超过8个西文字符),每个工程最好单独建一个目录(文件夹)。
3、接下来会立即弹出一个器件选择窗口。
器件选择的目的是告诉最终使用的51芯片是哪一家公司的哪一种型号。
因为不同型号的51芯片其内部资源不完全相同,可以根据所选器件进行SFR的预定义,在软硬件仿真过程中可提供相应的外设浮动窗口等。
4、到现在用户已经建立了一个空的工程项目,并为工程选择好了目标器件,但是这个工程里没有任何程序文件。
下面先用KeilC51集成开发环境自带的编辑器创建一个源程序文件。
执行File菜单中的New命令,会出现名为Text1的新文件窗口(如果多次执行New命令则会出现Text2,Text3…等多个新文件窗口)。
在此窗口中输入自己的源程序并保存为LedFlash.asm。
以下是LedFlash.asm源程序清单:
MAIN:
XRL
P1,#0FFH
;使P1口翻转
ACALL
DELAY
SJMP
MAIN
DELAY:
MOV
R2,#5
DELAY2:
MOV
R3,#100
DELAY3:
MOV
R4,#100
DJNZ
R4,$
DJNZ
R3,DELAY3
DJNZ
R2,DELAY2
RET
END
5、接下来再把LedFlash.asm源程序文件添加到LedFlash.µV3工程中。
在工程管理窗口内,展开Target1,用鼠标右键单击SourceGroup1,执行快捷菜单中的AddfilestoGroup‘SourceGroup1’命令,出现“添加源程序文件”窗口,找到并选择LedFlash.asm并单击Add按钮即可把已经编好的源程序文件LedFlash.asm添加到工程中。
可以将多个文件加到工程中(对LedFlash.µV3只需要LedFlash.asm一个源程序文件就够了),添加完以后,按Close结束。
2.2.2程序文件的编译(汇编)、连接
1、工程选项的设置:
用鼠标右键单击Target1,执行快捷菜单中的OptionsforTarget‘Target1’命令,出现如图2.2所示的工程选项设置窗口,该窗口包含多组选项。
一般情况下只需设置部分组中的部分选项。
点击Output标签,选中其中的“CreateHexFile”,系统将在编译(汇编)、连接进制程序)。
图2.2KeilC51工程选项设置窗口
还可根据需要对其它选项进行相应的设置。
最后选“确定”退出。
2、程序的编译(汇编)、连接
接下来就可以对程序进行编译(汇编)、连接处理了。
执行Project菜单中的BuildTarget或RebuildAllTargetFiles命令可对程序进行编译(汇编)、连接、生成HEX文件等一系列连续操作,可以在Build输出窗口看到处理过程的相关信息。
如果有错误发生,用户可根据系统提示修改程序中的语法错误或环境设置方面存在的问题,直到完全正确(0Error(s),0Warning(s))为止。
到这里,一个没有语法错误的工程项目算是完成了。
但是,是否完全符合设计要求、是否含有潜在的BUG(逻辑错误),还是不敢肯定的。
一个符合要求的、好的工程项目(系统、文件或程序)是要经得起考验的。
它往往还需要经软件模拟、硬件仿真、现场系统调试等反复修改、更新的过程。
3、Debug调试模式的设置:
从图2.3可以看出,µVision3的两种工作模式分别是:
UseSimulator(软件模拟)和Use(硬件仿真)。
在实验中选择使用软件模拟方式。
图2.3Debug调试模式设置
软件模拟工作方式选择其中UseSimlator选项,将µVision3调试器设置成软件模拟仿真,它只能对程序的语法及其结构做一般性的分析,与硬件没有联系。
在此模式下不需要实际的目标硬件就可以模拟80C51微控制器的很多功能,在准备硬件之前就可以测试您的应用程序,这是很有用的。
在纯软件模拟工作方式下,用户程序仍定位于0000H,源程序的起始定位也不需变。
当然,因为是软件模拟调试,程序中对外设的访问就无法观察运行效果,如灯亮、电机转等。
但是KeilC51集成开发环境也提供了一个外设窗口来模拟外设动作,对于简单的应用程序基本上也够用了。
在调试过程中可交替采用连续、断点、单步(stepinto)、宏单步(stepover)、到光标所在行等运行方式,还可以复位CPU,重新开始程序的调试。
∙断点
巧妙的设置一些断点,能够更好帮助用户分析程序的运行机制、程序中变量的变化状况,提高工作效率。
µVision3可以用几种不同的方法定义断点,即使在程序代码编译前,您也可以在编辑源程序的时候设置ExecutionBreaks,设断点前要从View菜单中选中FileToolbar选项,让主窗口的顶部出现FileToolbar工具栏。
断点可以用以下的方法定义和修改:
1.用FileToolbar按纽。
在Editor或Disassembly窗口中的代码行点击断点按钮即可在该设置断点。
2.用快捷菜单的断点命令。
在Editor或Disassembly窗口中的代码行点击鼠标右键在打开的快捷菜单中选择Insert/RemoveBreakpoint命令也同样可以在该行设置断点。
3.在OutputWindow-Command输入框,可以使用Breakset、Breakkill、BreakEnable、Breaklist、Breakpoint命令来设置断点。
如果已经在某行设置了断点,再次在此行设置断点将取消该断点,断点设置成功后,会在该行的行首出现红颜色的断点标志。
∙复位CPU
用Debug菜单或工具栏的ResetCPU命令。
在不改变程序的情况下,若想使程序重新开始运行,这时执行此命令即可,执行此命令后程序指针返回到0000H地址单元,另外,一些内部特殊功能寄存器在复位期间也将重新赋值,例如A将变为00H,DPTR为0000H,SP为07H,I/O口变为0FFH。
∙单步跟踪(F11)
用Debug工具栏的Step或快捷命令StepInto命令按钮可以单步跟踪程序,每执行一次此命令,程序将运行一条指令(以指令为基本执行单元),当前的指令用黄色箭头标出,每执行一步箭头都会移动,已执行过的语句呈现绿色。
单步跟踪在C语言环境调试下最小的运行单位是一条C语句,如果一条C语句只对应一条汇编指令,则单步跟踪一次可以运行C语句对应一条汇编指令;如果一条C语句对应多条汇编指令,则一次单步跟踪要运行完对应的所有汇编指令。
在汇编语言调试下,可以跟踪到每一个汇编指令的执行。
∙单步运行(F10)
用Debug工具栏的StepOver或快捷命令StepOver按钮即可实现单步运行程序,此时单步运行命令将把函数和函数调用当作一个实体来看待,因此单步运行是以语句(这一条语句不管是单一命令行还是函数调用)为基本执行单元。
∙执行返回(Ctrl+F11)
在用单步跟踪命令跟踪到了子函数或子程序内部时,可以使用Debug菜单栏中的StepOutofCurrentFunction或快捷命令按钮StepOut即可实现程序的PC指针返回到调用此子程序或函数的下一条语句。
∙执行到光标所在命令行(Ctrl+F10)
用工具栏或快捷菜单命令RuntolCursorLine即可执行此命令,使程序执行到光标所在行,但不包括此行,其实质是把当前光标所在的行当作临时断点。
∙全速运行(F5)
用Debug工具栏的Go快捷命令Run命令按钮即可实现全速运行程序,当然若程序中已经设置断点,程序将执行到断点处,并等待调试指令。
∙按钮可以启动/停止调试(Crtl+F5)
2.3脱机运行
经过在KeilC51集成开发环境下的软件模拟、或是实验仪联机进行的硬件仿真,用户程序中的错误和不足已基本上得到了纠正。
但在实际的工作环境中它是否仍然符合用户的要求呢?
还需要将调试好的程序下载到样机并“脱机运行”才可以确定(单片机实验系统脱离主机,独立运行)。
在下载程序前首先需要确定KeilC51软件的编译环境:
1、点击菜单栏上的Project项,在弹出的下拉式菜单中选择Optionfortarget‘target1’命令,在Output选项中选中CreateHexFile,即表示在编译连接后自动生成目标文件(*.HEX),点击确定命令按钮加以确认。
2、用Build或Rebuild命令重新编译连接程序,生成所需的HEX文件。
3、按照1.5的方法将HEX文件下载到实验箱中。
第3章实验部分
实验一集成开发环境的熟悉与指令练习
实验名称:
集成开发环境的熟悉与指令练习学时安排:
4学时
实验类别:
验证性实验要求:
必做
一、实验目的和任务
1熟悉KeilC51集成开发环境的使用方法;
2熟悉KeilC51集成开发环境仿真条件下调试功能的使用;
3学会程序存储器、寄存器、片上存储器、片外存储器内容的查看和修改。
二、实验原理介绍
Keil集成开发环境为我们提供了强大的学习、调试和开发工具。
我们可以利用这套工具在计算机上直接进行汇编语言的编辑、连接和调试。
在程序调试时,可以通过查看相关寄存器和存储器内容来判断程序的执行是否正确,通过修改相关寄存器和存储器的内容来改变程序,再执行,来修改和验证程序。
三、实验设备
PC机一台
四、实验内容和步骤
1、编写程序,完成内存中两个字节内容的交换。
1)建立工程文件。
双击桌面的Keil快捷图标,进入Keil集成开发环境。
点击工具栏的Project选项,在弹出的下拉菜单中选择NewProject命令,建立一个新的工程,为工程取一个名字,并选择将要使用的器件的型号(ATMEL公司的AT89C51CPU)。
注意:
由于实验箱MCU1所用的STC单片机是新发展的芯片,一般情况下载Keil设备库没有STC系列单片机,在编译STC系列单片机应用程序时,可选其他厂家的51或52系列单片机。
2)编写程序,加入到刚才建立工程文件中。
在File下采用New命令,建立新文件,送入程序内容,并保存为ASM类型文件。
在ProjectWindows窗口内,选中SourceGroup1后点击鼠标右键,在弹出的快捷菜单中选择AddfilestoGroup“SourceGroup1”(向工程中添加源程序文件)命令,选择刚才创建单击Add命令即可把源程序文件添加到项目中。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H;SP=?
MOVR0,#30H;R0=?
MOVR1,#40H;R1=?
MOV@R0,#55H;(30H)=?
MOV@R1,#0AAH;(40H)=?
MOVA,@R1;A=?
XCHA,@R0;A=?
(30H)=?
XCHA,@R1;A=?
(40H)=?
;下面是另一种方法
MOV@R0,#33H;(30H)=?
MOV@R1,#44H;(40H)=?
MOVA,@R0;A=?
PUSHACC;SP=?
(61H)=?
MOVA,@R1;A=?
PUSHACC;SP=?
(62H)=?
NOP
POPACC;SP=?
A=?
MOV@R0,A;(30H)=?
POPACC;SP=?
A=?
MOV@R1,A;(40H)=?
NOP
SJMP$
END
3)选择Project下的Rebuildalltargetfiles对工程文件进行汇编和连接,如果出错,系统会提示出错并指出出错地方和出错类型,请按照提示返回程序进行修改,直到系统提示0warnings,0errors,表明程序没有语法错误,成功完成了汇编过程,就可以进行动态调试了。
4)选择Project下的Optionsfortarget‘Target1’进行动态调试的参数设置,点击debug,再点击UseSimulator,最后点击完成。
5)对程序进行动态调试,学会查看和修改相关寄存器(左边的register窗)、内部和外部存储器的内容。
常用的工具条上的命令有开始/暂停动态调试
,单步执行
或
,执行到光标处
等。
查看存储器内容的方式是在存储区(View/memory窗)的地址栏内写上要查看的初始地址就可以了。
比如看内部存储器用D:
0000H,程序存储器用C:
0000H,外部存储器用X:
0000H。
将每行程序执行后的结果写到该行程序的注释部分。
2、编写一个数据填充和数据块搬移程序。
仿照实验内容和步骤1的过程,建立、编辑、汇编、连接和动态调试程序,查看和验证数据区的内容是否正确。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR0,#30H;R0指向30H单元
MOVR2,#16;R2作循环计数器
NEXT1:
MOV@R0,#'*';填充当前单元
INCR0;指针下移一个单元
DJNZR2,NEXT1;未填完16个单元,继续
;以下程序将30H开始的16个字节内容送到100H开始的外部存储器中
MOVR1,#30H
MOVDPTR,#0100H
MOVR3,#10H
NEXT2:
MOVA,@R1
MOVX@DPTR,A
INCR1
INCDPTR
DJNZR3,NEXT2
SJMP$
END
3、编写一个多字节的算术运算程序。
仿照实验内容和步骤1的过程,建立、编辑、汇编、连接和动态调试程序,将运行结果写到程序的注释部分。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVR1,#12H
MOVR0,#34H;R1R0=?
MOVR2,#21H
MOVR3,#0EFH;R3R2=?
;下面是加法运算
MOVA,R0
ADDA,R2;低8位相加
MOVR4,A;
MOVA,R1
ADDCA,R3;高8位相加
MOVR5,A
MOVA,#0
ADDCA,#0
MOVR6,A;R6存放进位R6R5R4=?
NOP
;以下是乘法运算
NOP
MOVA,R0
MOVB,R2
MULAB
MOVR4,A
MOVR5,B
MOVA,R1
MOVB,R2
MU