《PIC单片机技术上机指导书》 2.docx
《《PIC单片机技术上机指导书》 2.docx》由会员分享,可在线阅读,更多相关《《PIC单片机技术上机指导书》 2.docx(19页珍藏版)》请在冰豆网上搜索。
《PIC单片机技术上机指导书》2
PIC单片机技术
上机指导书
电子信息与电气工程系
通信教研室
一、说明
《PIC单片机技术》课程上机实验学时为10~12课时。
上机实验采用开发板和Proteus仿真。
1.1开发实验板电路
注:
1.假设开发实验板上采用的PIC单片机型号为pic16f877a;
2.开发实验板上发光二极管接RB0~RB3。
1.2Proteus仿真
见后面“利用Proteus仿真PIC应用系统”
二、实验内容
实验一I/O实验
图1.1实验系统连接图
注:
图1.1中,PC机与在线调试器的连接也可以采用USB接口。
若采用USB接口,则ICD2_USB的驱动程序在C:
\ProgramFiles\MPLABIDE\Driver2000\ICD2_USB
C:
\ProgramFiles\MPLABIDE\DriverXP\ICD2_USB
C:
\ProgramFiles\Microchip\ICD2\Drivers目录下。
1.目的
1熟悉MPLABIDE开发环境,重点掌握MAPLABICD2的开发过程。
2学习项目的创建。
3掌握ICD2作为调试器(Debugger)的开发步骤。
4掌握ICD2作为编程器(Programmer)的开发步骤。
5学习应用程序的编写、调试、烧写。
6掌握子程序(延时子程序)的概念及其调用方法。
2.要求
①RB0~RB3的发光二极管按照下图闪烁。
3.操作步骤
(1)建立一个项目目录,如D:
\exp1。
选择MPLABIDE的主菜单Project\New,创建一个新的项目,对话框如下
(2)选择Project\SelectLanguageToolsuit,如图设置好路径。
(3)新建应用程序。
选择File/New,在打开的对话框中输入程序。
然后选择File/Save,保存到D:
\exp1目录下。
保存类型为*.asm
(4)将应用程序IO.asm添加到项目中。
说明:
步骤
(1)~(4)用于创建一个项目,并把应用程序添加到项目中。
(5)选择单片机芯片Configure\SelectDevice:
PIC16f877a;选择调试器Debugger\SelectTools\MPLABICD2。
进行配置位设置,如下
(6)选择Debugger\Settings,communication接口选择USB(或com1com2,根据实际连接选择)。
(7)选择Debugger\Connect连接到MPLABICD2。
(8)编译程序。
Project\BuildAll或者Make
(9)烧写程序。
Debugger\\Program,将调试代码下载到PIC单片机中。
(10)运行程序。
Debugger\Run全速运行
Debugger\Animate单步运行
(5)~(10)采用Debugger调试。
说明:
1.运行时,可以用View菜单下的各种视图,观测数据存储器(FileRegester)、程序存储器(Programmemory)、单片机引脚(SpecialFunctionRegister)的信号和数据的变化。
2.采用Programmer编程时,与Debugger类似。
不再说明。
实验二定时/计数器实验
1.目的
1了解PIC数据存储器的结构
2掌握PIC的定时器/计数器工作原理;
3掌握PIC接收键盘操作的处理方法,包括按键操作检测和去抖动的软件实现方法;
4掌握子程序的调用及应用
2.要求
通过RA4引脚检测按键S2的所按次数,并通过RB0~RB3以四位二进制显示计数值,当数值操作15时,又恢复到0重新计数。
3.参考程序
;**********************************************************
;*.检测引脚按键次数
;说明:
本实验以RA4作为按键输入(平时为高电平、按下为低电平),RB0~RB3作为
;输出显示
;**********************************************************
listp=16f877a;//芯片型号根据实际修改
include"p16f877a.inc"
RP0equ5
RP1equ6
delay1equ22h
delay2equ23h
aequ24h;存放按键次数
;*********************************************************
;主程序
org0x30
nop
callInitial
mainloop
callDelay
callDelay
btfssPORTA,4;测试开关是否被按下
callCheck
gotomainloop
;************************************************
;初始化子程序
Initial
bcfSTATUS,RP1
bsfSTATUS,RP0;选存储体1
clrfTRISB;输出
bcfSTATUS,RP1
bcfSTATUS,RP0;选存储体0
clrfPORTB
movlwB'00001111'
movwfPORTB
movlw0x00
movwfa
return
;************************************************
;键盘处理子程序
Check
incfa;
ifa==0fh
clrfa;a计数记满后重新计数
endif
movfa,0;a-->W
movwfPORTB
check1
btfssPORTA,4
gotocheck1;若RA4仍为低电平,继续检测
callDelay;若RA4为高电平,则说明按键断开,此时调用延时子程序,消除断开抖动影响
;为了保险起见,再测一次
btfssPORTA,4
gotocheck1
return
;************************************************
;延时子程序
Delay
movlw05Fh
movwfdelay1
clrfdelay2
Delayloop
decfszdelay2,1
gotoDelayloop
decfszdelay1,1
gotoDelayloop
return
;************************************************
end
实验三中断实验
1.目的
1掌握中断服务例程编写方法。
2了解中断的逻辑控制和中断处理过程
3掌握查询中断标志位来检测中断源的方法。
2.要求
中断信号源来自RB0/INT引脚上的外部中断,采用边沿触发,下降沿触发。
当RB0/INT引脚上来一个脉冲时,接RC2的扬声器要能够马上发出声音报警。
实验四A/D实验
1.目的
1了解A/D转换的应用;
2掌握PIC16F87X的A/D转换模块功能的实现方法;
2.要求
以RA0引脚作为模拟信号的输入通道用发光二极管来显示A/D转换的结果。
当RA0输入最小电压为0V时,发光二极管显示0000,当RA0输入最大电压为5V时,发光二极管显示1111;中间值依输入电压相应变化。
常见问题
1、问:
烧写过程出现如下
ICD0161:
Verifyfailed(MemType=Program,Address=0x30,ExpectedVal=0x186,ValRead=0x0)ICD0275:
Programmingfailed.答:
调试器和目标板没有连接好,可能是RJ45水晶头没接好。
实验五串行通信实验
1.目的
①学习Proteus软件;
②掌握采用Proteus仿真PIC16F87X的串行通信;
2.要求
单片机的数据存储器的21H~23H分别存放十进制数5、6、7,外接3个数码管。
通过74LS164串/并转换,采用SPI串行输出,实现21H~23H数据的静态显示。
利用Proteus仿真PIC应用系统
Caizhiming2008.4.25
第一篇开发详细步骤
一、在MAPLABIDE中的操作步骤。
(这部分内容和以前介绍的一样,只需要创建项目、保存程序、编译3个步骤,其它的步骤不需要。
)
1、创建一个新文件夹D:
\PICTEST
2、打开MAPLAB,在主菜单点击Project\New
在PICTEST目录创建项目01_LedTest(注:
该名称自己取),如上图。
3、点击主菜单File\New新建一个程序,并以porgram01命名(注:
该名称自己取),存放在PICTEST文件夹。
并如下图添加到项目01_LetTest中。
程序内容如下:
LISTp=16F877
#include"P16F877.INC"
delay1equ22h
delay2equ23h
ORG0
bankselTRISB;选择TRISB所在的体
bcfTRISB,0;RB0设置为输出
bankselPORTB;选择PORTB所在的体
loopbsfPORTB,0;RB0=1
callDelay;延时
bcfPORTB,0;RB0=0
callDelay;延时
gotoloop
;************************************************
;延时子程序
Delay
movlw0FFh
movwfdelay1
clrfdelay2
Delayloop
decfszdelay2,1
gotoDelayloop
decfszdelay1,1
gotoDelayloop
return
;************************************************
END
4、选择单片机型号
5、点击主菜单Project\BuildAll。
对程序进行编译,若通过则生成一个后缀为*.HEX的文件,该文件在Proteus仿真时要装入PIC单片机中。
二、Proteus中的操作步骤
1、打开Protesu7professional\ISI7professional,如下图。
点击P进行元器件选择。
输入关键字pic进行搜索,找到PIC16F877,并双击它添加到自己。
2、同理添加发光二极管LED_RED、电阻RES、按钮BUTTON、开关SWITCH
3、将元器件拖放到工作区。
选中PIC16F877,并将鼠标移到工作区在适当的位置单击左键即可。
同理拖放电阻、发光二极管。
4、添加接地GROUND。
如下图。
(注:
若电源,如+5V,要选择POWER)
元件之间的连线很简单,直接用鼠标左键选中引脚并连到另一个引脚即可。
5、保存Proteus的设计文件。
保存在PICTEST,名称为ProteusDesign01。
6、各个元件的参数设置。
(1)单片机设置
双击PIC单片机,如下图装入前面在MAPLABIDE中编译好的程序program01.hex。
也可修改其它参数,如时钟频率(即晶振频率)等。
(2)电阻设置。
双击电阻RES,由于该电阻做限流电阻,要改小点,改为100Ω。
(3)接地设置
注:
String,给该接地取一个名称。
7运行仿真。
点击如下图按键。
注:
观察芯片引脚颜色变化,红色代表高电平、蓝色代表低电平。
Proteus中单片机芯片默认已经添加电源与地,所以可以省略。
单片机外接晶振也可以省略。
第二篇Proteus常用器件中英文对照表
AND与门
BATTERY直流电源
BELL铃,钟
BUZZER蜂鸣器
CAP电容
CAPACITOR电容
CAPACITORPOL有极性电容
CRYSTAL晶振
DIODE二极管
DIODESCHOTTKY稳压二极管
DIODEVARACTOR变容二极管
DPY_3-SEG3段LED
DPY_7-SEG7段LED
DPY_7-SEG_DP7段LED(带小数点)
ELECTRO电解电容
INDUCTOR电感
INDUCTOR3可调电感
LAMP灯泡
LED发光二极管
METER仪表
MOTORAC交流电机
MOTORSERVO伺服电机
NAND与非门
NOR或非门
NOT非门
NPNNPN三极管
OPAMP运放
OR或门
PHOTO感光二极管
PNP三极管
NPNDARNPN三极管
POT滑线变阻器
RES1.2电阻
RES3.4可变电阻
SPEAKER扬声器
SW?
开关
SW-PB按钮
DPY_7-SEG_DP数码管
SW-PB开关