PIC单片机原理与应用实验指导书.docx
《PIC单片机原理与应用实验指导书.docx》由会员分享,可在线阅读,更多相关《PIC单片机原理与应用实验指导书.docx(44页珍藏版)》请在冰点文库上搜索。
PIC单片机原理与应用实验指导书
福州大学
《PIC单片机原理与应用》实验指导书
物理与信息工程学院
电子信息工程系廖一鹏
目录
实验前准备:
MPLAB及MPLAB-C18的使用
实验一:
建立工程项目实例
实验二:
流水灯
实验三:
按键扫描与LCD显示
实验四:
中断系统应用
实验五:
串行数据传输控制PWM
实验六:
A/D转换与IIC总线读写EEPROM
实验七:
看门狗实现自复位
综合实验一:
简易秒表设计
综合实验二:
LED亮度的远程控制
综合实验三:
可存储数字直流电压表设计
实验前准备:
MPLAB及MPLAB-C18的使用
一、软件安装
先在PC机上安装MPLAB-IDE软件,再安装MPLAB-C18和MPLAB-C18-upgrade软件。
二、MPLAB及MPLAB-C18的使用介绍
这里仅介绍常用的菜单,其余部分可查阅相关资料。
打开MPLABIDE软件,将会出现如图1.1所示的界面。
图1.1
1.File菜单
用鼠标点击File菜单,将会出现如图1.2所示的下拉菜单。
New(Ctrl+N):
新建文件,编写源程序时可在此写入。
Open(Ctrl+O):
打开文件。
Close:
关闭文件。
Save:
保存文件。
SaveAll:
保存所有文件。
Exit:
退出MPLAB软件。
OpenWorkspace:
打开工作平台。
SaveWorkspace:
保存工作平台。
SaveWorkspaceAs:
工作平台另存为
CloseWorkspace:
关闭工作平台。
Import:
导入。
Export:
导出。
图1.2
2.Edit菜单
用鼠标点击Edit菜单,将会出现如图1.3所示的界面。
图1.3
Undo(Ctrl+Z):
撤消上一步操作。
Redo(Ctrl+Y):
恢复上一步撤消操作。
Cut(Ctrl+X):
剪切。
Copy(Ctrl+C):
复制。
Paste(Ctrl+V):
粘贴。
Delete(Del):
删除。
SelectAll(Ctrl+A):
全选。
Find(Ctrl+F):
查找。
Replace(Ctrl+H):
替换。
3.View查看菜单
用鼠标点击View,将会出现如图1.4所示的菜单。
图1.4
Project:
工程。
点击该菜单,图1.4所示的工程区将隐藏或显示,图1.4中,工程区处于显示状态。
DisassemblyListing:
程序反汇编列表。
ProgramMemory:
程序存储器,显示经编译后,程序在程序存储器中的分布。
FileRegisters:
文件寄存器。
显示PIC单片机RAM的值。
如图1.5所示。
其中列为寄存器(RAM)低地址(0-F),行为高地址。
图1.5
EEPROM:
单片机中EEPROM存储器中存放的数据。
Watch:
查看指定寄存器的窗口。
如图1.6是一个例子。
图1.6
图1.6中,AddSFR(添加专用寄存器)右边的下拉菜单中列出了单片机内部的专用寄存器如TRISD、PORTD、ADRESL等。
AddSymbol(添加符号)右边的下拉菜单中列出了用户自定义的寄存器(RAM),本例中为data14、data16。
从AddSFR右边的下拉菜单中选择ADRESL并点出AddSFR,在AddSymbol右边的下拉菜单中选择data14、data16分别点击AddSymbol,如图所示,窗口将显示出ADRESL、data14、data16的地址(Address)和值(Value)。
4.Project工程
图1.7
用鼠标点击Project,将会出现如图1.7所示的菜单。
ProjectWizard:
工程向导。
将引导用户新建一个工程。
New:
新建工程。
Open:
打开工程。
Close:
关闭工程。
BuildAll(Ctrl+F10):
全部编译。
Make(F10):
编译。
BuildOptions:
编译选项。
SaveProject:
保存工程。
AddFilestoProject:
添加文件到工程。
RemoveFileFromProject:
从工程中移出文件。
SelectLanguageToolsuite:
选择(编译)语言工具位置。
如图1.8是选择MPLABC18Toolsuite的界面,用户可在Location下的Browse中选择安装的相应编译语言工具的路径,这里是MPLABC18工具的安装路径(默认安装)。
图1.8
SetLanguageToolLocations:
设置(编译)语言工具路径。
如图1.9是设置MPLABC18的界面。
图1.9
5.Debugger调试
点击Debugger,将会出现如图1.10所示的界面。
图1.10
SelectTool:
选择工具。
点击该菜单,将会弹出如图1.11所示的开发工具的选择界面,图中选择的是MPLABICD2仿真器。
图1.11
ClearMemory:
清存储器。
Run(F9):
运行程序。
Halt(F5):
程序暂停运行。
StepInto(F7):
单步运行。
StepOver(F8):
跳过运行。
StepOut:
跳出当前子程序。
Reset:
复位。
Breakpoints:
设置断点。
MPLABICD2SetupWizard:
ICD2仿真器设置向导。
该菜单将引导用户设置ICD2仿真器。
点击该菜单,将会出现如图1.12所示的界面。
图1.12
点出下一步,将会出现如图1.13所示的选项。
图1.13
在ComPort下的下拉菜单中可选择通信口,这里选择USB。
然后点出下一步。
图1.14
在如图1.14所示的选择目标电源选项中,选用默认选项“Targethasownpowersupply”,然后点击下一步。
图1.15
在使能ICD2自动连接选项中选择自动连接,如上图所示在行选项前打“√”,然后点击下一步。
图1.16
在图1.16所示的使能自动下载所需操作系统的选项前选择ICD2自动下载所需要的操作系统,即在上图所示中打上“√”。
然后点击下一步。
图1.17就是ICD2的设置状况。
图1.17
Program:
在调试状态下下载程序到单片机。
Connect:
连接ICD2。
DownloadICD2OperatingSystem:
下载ICD2操作系统。
Settings:
设置。
点击该菜单,将会出现如图1.18所示的界面。
该界面上共有7个页面,其中常用的是Power、Status、Communication、Program四个页面的选择。
图1.18
Power:
该页面如上图所示,共有三个电源显示:
TargetVdd、TargetVpp、MPLABICD2Vpp,TargetVdd为目标板的电源,此时由于仿真器未连接目标板,故显示值为0,正常情况下目标板若用5V供电,则将值应为5V左右。
TargetVpp、MPLABICD2Vpp为如图所示电压值。
Status:
该页面如图1.19所示。
ConnectStatus下显示Connected,表示ICD2已经连接好。
Automaticallyconnectatstartup(启动时自动连接ICD2)和Automaticallydownloadfirmwareifneeded(需要时自动连接硬件)均打“√”选上。
SelfTest组中,除TargetVdd(目标板电源)和MCLRVdd(复位电压)显示Low表示为低外,其余检测均正常。
图1.19
Program:
该页面有两个选项:
图1.20
AllowICD2toselectmemoriesandranges(ICD2选择存储器及范围)和Manuallyselectmemoriesandranges(手动选择存储器及范围。
此两个选项只能选择其一,如图1.20为Manuallyselectmemoriesandranges的选择界面,在Start和End右边的方框中,是选择PIC18F458的程序存储器的全部编程范围的选择(FullRanged)。
AllowICD2toselectmemoriesandranges是软件根据程序大小自动选择程序存储器的大小。
Communication:
该页面选择通信口,如图1.21所示选择的是USB接口。
图1.21
6.Programer烧写编程
将程序烧写到单片机,不用仿真器进行调试,可以执行烧写到单片机的程序。
点击该菜单将会弹出如图1.22所示的界面。
图1.22
该菜单与Debugger相同,只是Program是将程序下载到单片机后,断电,断开仿真器与目标板的连接,上电后,程序依然执行。
7.Configure配置
点击Configure,将会出现如图1.23所示的配置界面。
图1.23
SelectDevice:
点击该菜单,将会弹出如图1.24所示的“SelectDevice”界面。
图1.24
用户从如图1.25所示的Device下拉菜单中选择相应的单片机型号,这里选择的是PIC18F458。
ConfigurationBits:
配置位,选择该菜单,将弹出如图1.26所示的配置位选择界面。
这里介绍常用的选项。
图1.25
Oscillator:
振荡器选择。
振荡器有如图1.25所示的选择方式。
图1.26
HS-PLLEnabled方式:
带有4倍锁相环使能的高速晶体/陶瓷谐振器方式;
RC方式:
阻容振荡器方式;
HS方式:
高速晶体/陶瓷谐振器方式;
XT方式:
晶体/陶瓷谐振器方式;
LP方式:
低功耗晶体振荡器方式;
一般选择HS方式(振荡频率为外接晶振频率)、HS-PLLEnabled方式(振荡频率为外接晶振频率的4倍),选择HS-PLLEnabled方式时,必须在下面的Osc.SwitchEnable的菜单中选择Enabled,如图1.27所示。
图1.27
Osc.SwitchEnable:
4倍锁相环开关选择。
若在Oscillator菜单中选择了HS-PLLEnabled,则该选项为Enabled,否则为Disabled。
WatchdogTimer:
看门狗计数器。
在Debugger模式下,该选项为Disabled(如选为Enabled,在下载调试程序中,软件会提示该功能关闭),在Programmer模式下,可将看门狗打开,但在程序中用户应将看门狗计数器清0。
WatchdogPostscaller:
看门狗计数器预分频。
在此可选择看门狗的预分频系数设置。
看门狗复位时间=18ms×预分频系数。
LowVoltageProgram:
低电压编程。
不使用该功能时,选择Disabled。
在一般应用中,我们对配置选项的设置进行Oscillator和Osc.SwitchEnable、WatchdogTimer和WatchdogPostscaller选择外,其余选项均可设置为Disabled。
8.快捷菜单
图1.28是选择Programmer后快捷菜单对应图。
图1.28
图1.29是选择Debugger后快捷菜单分区对应图。
图1.29
实验一:
建立工程项目实例
一、实验要求
先在PC机上安装MPLAB-IDE软件和MPLAB-C18软件。
熟悉MPLAB-IDE和MPLAB-C18的开发环境,建立一工程项目实例,并编写好源程序,然后利用ICD2仿真器进行程序的烧写和仿真调试。
二、实验目的
1.熟悉MPLAB-IDE和MPLAB-C18的开发环境。
2.掌握MPLAB环境下工程项目的建立和源程序的编写。
3.掌握使用ICD2仿真器进行程序的烧写和仿真调试。
4.了解MPLAB环境下PIC单片机C语言编程的注意事项。
三、实验设备
PC机一台、MPLAB开发软件、ICD2仿真器、PIC18F**单片机开发板-APP0001。
四、实验线路及连线
PC机的USB接口与ICD2仿真器的USB接口通过USB连接线连接,ICD2仿真器的RJ45接口通过专用的下载线与开发板的CON2-ICD接口连接,然后给开发板和仿真器上电。
五、实验说明
1.在MPLAB软件环境下编写源文件
(1)新建源文件
打开MPLABIDE软件,选择File>New下拉菜单打开一个空白的编译窗口,如图1.30所示。
用户可在该编译窗口中编写C语言源程序。
下面是编写的一个C源文件(未保存),注:
该程序有错,在编译时再进行更正。
图1.30
#include
inta;
intb;
//***************************************
//*ProgramMain()*
//***************************************
voidmain(void)
{
inti;
a=2;
b=0;
for(i=0;i<=100;i++)
{
b=b+a*i;
}
while
(1);
}
(2)保存源文件
选择File菜单下的Save命令,将该文件保存在D:
\PIC18-Program\test1目录下,保存为test1.c。
图1.31是经过保存后的界面。
图1.31
2、生成新工程
生成新工程主要有两种途径:
利用MPLABIDE的ProjectWizard向导和直接新建工程。
下面一一予以介绍。
在创建新工程前,用户可以先生成C源文件,如前所编写的test1.c源文件,这样在创建工程时,就可以直接向工程中添加C源文件。
当然用户也可以在先新建工程后再编写C源文件,并添加到工程中。
我们两种方法都在使用,这里以先编写C源文件为例。
(1)利用MPLABIDE的ProjectWizard向导创建新工程
选择Project菜单下ProjectWizard,将弹出如图1.32所示界面。
图1.32
1)选择器件
在图1.32所示中点击下一步,将现出如图1.33所示的界面,在Device下的下拉菜单中选择PIC18F458,然后点击下一步。
图1.33
2)选择编译语言工具路径
在弹出的界面中进行如下选择(如图1.34所示):
图1.34
ActiveToolsuite:
在右边的下拉菜单中选择MicrochipC18Toolsuite,然后在ToolsuiteContents下面的两个选项:
MPLINKObjectLinker(mplink.exe)、MPLABC18CCompiler(mcc18.exe)下的Location下均用Browse选择C:
\mcc18\bin\mplink.exe和C:
\mcc18\bin\mcc18.exe。
若在MPLABIDE的Project菜单Set中已经设置了该软件的安装目录,则此项选择会自动显示出来而不用再设置。
点击下一步。
3)新建工程
在弹出的界面如图1.35中进行如下设置:
工程名ProjectName:
在ProjectName下面的窗口中设置新建的工程名test(用户也可命名为其它名字)。
工程目录ProjectDirectory:
通过Browse选择新建工程所在的目录,这里选择和源文件一样的目录D:
\PIC18\Program\test1。
如图所示。
然后点出下一步。
图1.35
4)添加已存在文件到工程中
在弹出的界面如图1.36中添加文件到工程:
双击18f452i.lkr,或单击18f452i.lkr然后选择Add>>按钮,18f452.lkr文件将会出现在右边的窗口中。
同样的方法让文件P18f452.lib、text1.c出现在右边的窗口中。
注:
18f452i.lkr在C:
\mcc18\lkr目录下,P18f452.lib在C:
\mcc18\lib目录下。
添加文件到工程后的结果如图1.36所示。
然后点出下一步。
图1.36
5)完成后将会出现图1.37所示界面,表示工程已经建立完成
图1.37
如上图中所示,点击完成,将会出现如图1.38界面,这是一个新建了工程并添加了源文件、头文件、链接文件和库文件的完整的工程。
图1.38
(2)直接新建工程
1)选择Project菜单下New…,将弹出如图1.39所示的NewProject界面。
图1.39
图1.40
在工程名ProjectName下面的窗口中设置新建的工程名test(用户也可命名为其它名字),对工程目录ProjectDirectory,可以通过Browse选择新建工程所在的目录,这里选择和源文件一样的目录D:
\PIC18\Program\test1。
如图1.39所示。
然后点击OK。
然后将会出现如图1.40所示的界面。
2)添加文件
在如图1.41所示中用鼠标左键选中SouceFiles,然后点击鼠标右键,在弹出的菜单中点击AddFiles。
图1.41
在图1.42所示中选择test1.c。
然后选择打开。
同样可将P18f452.lib添加到LibraryFiles,将18f452i.lkr添加到LinkerScripts。
添加这四个文件后的结果如图1.43所示,在图中双击文件,例如test1.c,四个文件的内容将会显示出来。
图1.42
图1.43
3)保存工程
在Project菜单下选择SaveProject,保存添加有源文件、头文件、库文件和链接文件的工程。
3、编译工程
建立工程并添加好源程序和头文件后,在Debugger模式下根据编译工具不同,编译工程常用的有三种方式:
None、Sim、仿真器(如ICD2、ICE2000、ICE4000)。
如果要调试,使用的是后两种。
这里主要介绍在ICD2仿真器下编译工程
(1)选择Debugger菜单下SelectTool,并选择MPLABICD2选项,此时必须将ICD2仿真器与目标板相连,如果是初次使用ICD2,仿真器将会下载操作系统,然后在Project菜单下选择Connect,如果ICD2与目标板已经通讯好,则在Project下的界面如图1.44所示。
图1.44
ICD2仿真器与目标板连接之后,界面如图1.45所示。
图1.45
如果ICD2未与目标板连接成功,检查目标板是否上电,仿真头与目标板连接是否可靠,然后再选择Connect进行连接。
(2)选择Project菜单下BuildAll,或按键Ctrl+F10,或选择
图标。
程序编译后如图1.46所示。
本程序由于有未定义的标识符a,故编译未通过,错误的修改在后面介绍。
图1.46
4、修改工程编译的语法错误
如果工程出现编译错误,则要对源文件进行修改,更正错误。
如果编译无错,则进行下一步调试操作。
注意:
编译无错误不表示程序没有错误。
将鼠标停留在编译后出现错误提示的行,如图中1.47的:
D:
\PIC18-Program\test1\test1.cError[1105]10:
symbol‘a’hasnotbeendefined.
图1.47
然后双击鼠标左键,鼠标将会停留在有编译错误的源文件的行,如图1.48所示。
图1.48
由于a是一个没有定义的标识符,故要对a进行定义。
在定义部分添加:
图1.49是经编译成功后的界面(注:
由于是Demo版,在编译时视程序大小,窗口输出显示时会有不同时间的延迟):
图1.49
5、程序调试
(1).程序调试有两种方式:
Sim和仿真器方式
1)Sim调试方式
选择Debugger菜单下SelectTool,并选择MPLABSIM选项,这时可以进行程序运行、单步执行等操作。
2)ICD2仿真器调试方式
选择Debugger菜单下SelectTool,并选择MPLABICD2(其他类型的仿真器类似操作)选项,并进行编译。
这一步操作见前面所述。
目标板配置。
由于是在ICD2仿真器下进行仿真调试,故必须有目标板并对其进行配置。
选择Configure菜单下SelectDevice选择PIC18F452器件(若是其它型号的芯片,请选用对应的芯片)。
选择Configure菜单下ConfigureBits,在该菜单中选择Oscillator选择为HS,Osc.SwitchEnable选择Disabled,WatchdogTime选择Disabled-ControlledbySWDTENbit(看门狗在调试模式下无效,只在烧写程序时才可以将看门狗打开),其余选项均选择Disabled,如图1.50配置。
图1.50
选择Debugger菜单下Program命令,将程序下载到目标板的PIC18F452单片机。
这时就可以对单片机进行运行、单步执行等操作。
(2).设置断点
将鼠标停留在需要设置断点的行(位置处),然后双击鼠标,如图1.51所示就会出现断点的标记,此时若又在该行双击鼠标,断点标记就会消失。
图1.51
在Debugger菜单下选择RUN(或F9)或点击
按键,运行程序,程序从开始运行到断点处就会停下来,下面是程序运行到上面所设置断点时的图。
图1.52
根据仿真器不同,同时设置的断点的数目也不同,ICD2一次只能设置一个断点(即设置多个断点只有当前的断点有效)。
(3).单步运行
在菜单上点击
,就可以使程序在当前程序位置向下执行一步。
此时光标将停留在程序运行后的当前位置。
图1.53是设置断点后运行一步的例子。
图1.53
6、烧写程序
用户将程序调试完成后,若要将程序烧写到单片机中,则要对单片机进行烧写操作。
(1)选择Programmer菜单下SetProgrammer菜单下的MPLABICD2。
(2)目标板配置。
同调试模式下的配置,这时可以将Watchdog打开并设置WatchdogPostscaler(预分频值),若打开了Watchdog,用户必须在程序中设置清Watchdog命令。
(3)编译工程(见前节所述)
(4)烧写程序
选择Programmer菜单下Program,图1.54是烧写成功后的界面。
图1.54
7、编写程序中应注意的问题
1.所编写的程序及建立的工程目录名必须是英文,不能在中文目录下编译。
若有中文目录,则MPLAB6.0以上版本的软件不会编译工程。
2.建议工程中所包含的源文件、头文件以及工程等均在同一个目录下,这样将在编译处理程序时会十分方便。
若不在同一目录下,也能编译和运行。
3.程序中符号均为英文(西文)符号(除注释内的外),请比较=(英文)和=(中文)、,(英文)和,(中文)、;(英文)和;(中文)等。
若在程序中出现了中文符号,程序将不能通过编译,对这一种错误不容易发现,所以在编写程序时应特别加以注意。
实验二:
流水灯
一、实验要求
编写程序实现用PIC18F**单片机的D口控制发光二极管循环右移位,实