C8051F020实验指导书.docx
《C8051F020实验指导书.docx》由会员分享,可在线阅读,更多相关《C8051F020实验指导书.docx(34页珍藏版)》请在冰豆网上搜索。
C8051F020实验指导书
单片机实验指导书
使用特别说明:
(1)每次实验前,请仔细阅读实验指导,连线完毕,检查无误后,方可打开电源。
即连线时必须在断电状态下。
(2)程序运行过程中,不要关闭电源,如果要断电,必须停止运行程序,并且退出程序调试状态,否则会引起KEILC软件非正常退出,甚至引起DICE-EC5仿真器工作异常。
(3)如出现上述
(2)的的误操作,引起DICE-EC5仿真器工作异常,可对DICE-EC5仿真器进行复位。
(在光盘中找到文件夹“USBReset”中的“USBDebugAdapterFirmwareReset”文件,双击运行,在弹出的对话框中点击“Updatefirmware”按钮,在提示成功后,点击“OK”按钮,退出复位程序。
DICE-EC5仿真器即可正常工作。
在下一次调试、下载程序时会提示“Doyouwanttoupdateserialadapternow?
”,点击“确定”即可。
第一章:
实验设备简介
1、1系统实验设备的组成
DICE-C8051F嵌入式实验/开发系统由C8051F020CPU板、DICE-EC5仿真器与系统实验板三部分组成,应用该设备可进行片上系统单片机较典型应用的实验,请参见以下介绍。
1、2SiliconLabsC8051F单片机开发工具简介
1、2、1开发工具概述
SiliconLabs的开发工具实质上就就是计算机IDE调试环境软件及计算机USB到C8051F
单片机JTAG口的协议转换器(DICE-EC5)的组合。
SiliconLabsC8051F系列所有的单片机片内均设计有调试电路,该调试电路通过边界扫描方式获取单片机片内信息,通过4线的JTAG接口与开发工具连接以便于进行对单片机在片编程调试。
DICE-C8051F嵌入式实验/开发系统中的C8051F020CPU板上的单片机为C8051F系列中的F020。
仿真器(DICE-EC5)一端与计算机相连,另一端与C8051F单片机JTAG口相连,应用Keil的uVision2调试环境就可以进行非侵入式、全速的在系统编程(ISP)与调试。
SiliconLabs开发工具支持观察与修改存储器与寄存器支持断点、观察点、堆栈指示器、
单步、运行与停止命令。
调试时不需要额外的目标RAM、程序存储器、定时器或通信通道,并且所有的模拟与数字外设都正常工作。
1、2、2开发工具主要技术指标
●支持的目标系统:
所有C8051Fxxx系列单片机。
●系统时钟:
最大可达25Mhz。
●通过USB接口与PC机连接。
●支持汇编语言与C51源代码级调试。
●工具支持(KeilC)。
●
1、2、3IDE软件运行环境
要求PC机能够运行开发工具软件并能与串行适配器通信。
对PC机有如下系统要求:
●Windows95/98/Me/NT/2000/XP操作系统
●32MbRAM
●40Mb自由硬盘空间
●空闲的USB口
1、2、4开发工具与PC机硬件连接
在系统编程与调试环境如图下所示。
硬件连接及软件安装:
●将USB串行电缆的一端与教学机的DICE-EC5仿真器USB接口连接;
●连接USB串行电缆的另一端到PC;
●给目标系统上电;
●插入CD并运行“SETUP、EXE”,将IDE软件安装到您的PC机;
●在PC机的开始菜单的“程序”项中选择keiluVision2图标,运行IDE软件。
1、3DICE-C8051F嵌入式实验/开发系统简介
1、3、1C8051F020CPU板概述
C8051F020CPU板就是为了便于安装而设计的;C8051F020CPU板就是将C8051F020
的所有引脚(100个引脚)引到四个双排针;该四组双排针可与不同用户设计的应用系统
连接,如在该教学系统上将与系统实验板连接。
说明:
C8051F020CPU板就是将C8051F020的所有引脚(100个引脚)引到四个双排针,分别为JX1、JX2、JX3、JX4,四个双排针的内圈100个排针(内圈每个引脚注明引脚含义)与C8051F020芯片的对应引脚连接。
而四个双排针的外圈100个排针(外圈标有引脚号)部分引脚悬空,而大部分引脚已经与实验仪上的实验模块连接。
(具体连接请瞧硬件连接原理图)。
因此,本实验/开发系统大部分实验模块只要将其相应引脚的短路块插好,即可实现与C8051F020单片机系统的连接。
而一部分独立实验模块,必须通过导线与C8051F020单片机连接,连接前把要用到的引脚上的短路块拔掉,然后用导线将内圈对应引脚与外部模块连接。
实验完毕后再把相应的短路块插好。
1、3、2C8051F020片上系统单片机片内资源
①、模拟外设
(1)逐次逼近型8路12位ADC0
转换速率最大100ksps
可编程增益放大器PGA
温度传感器
(2)8路8位ADC1输入与P1口复用
转换速率500ksps
可编程增益放大器PGA
(3)两个12位DAC
(4)两个模拟电压比较器
(5)电压基准内部提供2、43V
外部基准可输入
(6)精确的VDD监视器
②、高速8051微控制器内核
流水线式指令结构速度可达25MIPS
22个矢量中断源
③、存储器
片内4352字节数据RAM
64KBFlash程序存储器可作非易失性存储
外部可扩展的64KB数据存储器接口
④、数字外设
8个8位的端口I/O
I2C、SPI、2个增强型UART串口
可编程的16位计数器/定时器阵列(PCA)
5个通用16位计数器/定时器
专用的瞧门狗WDT
更详细资料可参见SiliconLabsC8051F02xdatasheet
1、3、3DICE-C8051F嵌入式实验/开发系统硬件组成
(1)CPU板:
CPU核心模块采用C8051F020芯片,该芯片就是C8051F系列单片机中功能最为其全的一款;
(2)片内:
64KFLASH,4KXRAM
片外扩展:
256KFLASH,32KXRAM
(3)CPU板C8051F020芯片I/0引脚全部引出,可以与用户外部电路连接;
(4)实验系统带有JTAG接口,并配有DICE-EC3型USB高速通讯仿真器,通过4脚的JTAG接口可以进行非侵入式、全速的在线系统调试、仿真;
(5)4*4阵列式键盘;
(6)8位逻辑电平开关输出、8位LED逻辑电平显示;
(7)6位动态八段LED数码管;
(8)2路单脉冲信号发生电路与1路8MHZ时钟发生电路;
(9)时钟分频电路;
(10)模拟量发生器电路与逻辑笔电路;
(11)8*8LED点阵及驱动电路;
(12)128*64LCD液晶显示屏;
(13)蜂鸣器电路;
(14)直流电机测速电路;
(15)四相步进电机及驱动电路;
(16)继电器电路及接口;
(17)双通道RS-232接口;
(18)SPI接口,LED数码管显示;
(19)IIC接口,接24C01串行EEPROM;
(20)IIC接口,PCF8563日历时钟;
(21)8路12位AD,2路12位DA接口;
(22)D12USB从机通信;
(23)SL811USB主机通信;
(24)RTL801910M以太网通信;
1、3、4DICE-C8051F嵌入式实验/开发系统地址及初始化说明
●地址分配如下:
0x0000-0x7fff,数据存储器SRAM地十范围
0x8000-0x87ff,D12_CS片选
0x8800-0x8fff,SL811_CS片选
0x9000-0x97ff,RTL8019_CS片选
0x9800-0x9fff,LCD_CS片选
0xA000-0xA7ff,保留
0xA800-0xAfff,保留
0xB000-0xB7ff,保留
0xB800-0xBfff,保留
0xc000-0xffff(x16),Flash,片选地址由P4低4位端口确定
●系统初始化:
C8051F020CPU板使用外部22、1184M晶振,系统初始化后应用外部22、1184M晶振,如果不进行系统初始化,系统将使用内部晶振,默认值为2M,也可以通过设置OSCICN寄存器改变内部晶振的大小(可选值为2M、4M、8M、16M)。
●端口初始化:
我们根据c8051F020CPU板及实验系统设计方案,配置交叉开关,为UART0、SPI、SMBus、UART1、CEX0、CP0、T0、T1、INT0、INT1、INT2与INT3分配端口引脚。
另外,我们将外部存储器接口配置为复用方式并使用高端口。
配置步骤如下:
(1)按CP0E=1,ECI0E=0,PCA0ME=001,UART0EN=1,SPI0EN=1,SMB0EN=1设置XBR0=0x8f;
(2)按SYSCKE=0,T2EXE=0,T2E=0,INT1E=1,T1E=1,INT0E=1,T0E=1,CPI1E=0设置XBR1=0x1e;
(3)按WEAKPUD=0,XBARE=1,位5为0用T4EXE=0,T4E=0,UART1E=1,EMIFLE=0,CNVSTE=0设置XBR2=0x44
(4)将外部存储器接口配置为复用方式,并使用高端口,有PRTSEL=1,EMD2=0。
(5)将作为数字输入的端口1引脚配置为数字输入方式,设置P1MDIN为0xFF。
(6)通过设置P0MDOUT=0x34、P1MDOUT=0xfd、P2MDOUT=0xf0、P3MDOUT=0xff,将低端口输出方式设置为推挽方式。
设置高端口输出方式P74OUT=0xf7;总线输出方式应考虑工作频率与驱动能力,在高速与高驱动时总线应设置为推挽方式,在低速与低驱动时漏极开路也可满足要求,但稳定性不高。
(7)设置外部存储器配置EMI0CF=0x2d;设置外部存储器时序控制EMI0TC=0x9e;如果LCD不能正常显示可以使EMI0CF=0x2f,EMI0TC=0xff设置为最大值;也可以减小外部晶振或使用内部晶振。
第二章集成开发环境KEILC软件使用指南
2.1KEILC软件具体使用说明
KeilC安装:
见、、\tools\KeilC51v751a_Full\安装说明、txt;
安装完成后,如果要使用DICE-EC5仿真器来仿真C8051F系统单片机,
还需要安装驱动程序:
进入“Keil驱动-V2、21”,点击“SiC8051F_uv2”,直至安装完毕。
进入 Keil C51 后,屏幕如下图所示。
几秒钟后出现编辑界
启动Keil C51时的屏幕
进入Keil C51后的编辑界面
简单程序的调试:
学习程序设计语言、学习某种程序软件,最好的方法就是直接操作实践。
下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法与基本的调试技巧。
1)建立一个新工程
单击Project菜单,在弹出的下拉菜单中选中New Project选项
2)然后选择您要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51。
如下图所示,然后点击保存、
3)这时会弹出一个对话框,要求您选择单片机的型号,您可以根据您使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还就是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏就是对这个单片机的基本的说明,然后点击确定、
(注意:
我们实验系统使用的单片机为SiliconLaboratories公司的C8051F020芯片)。
4)完成上一步骤后,屏幕如下图所示
到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。
5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项
新建文件后屏幕如下图所示
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
注意,如果用C语言编写程序,则扩展名为(、c);如果用汇编语言编写程序,则扩展名必须为
(、asm)。
然后,单击“保存”
6)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,弹出如下菜单
然后单击“Add Group ‘Source Group 1’” 屏幕如下图所示
选中Test、c,然后单击“Add ”屏幕好下图所示
“Source Group 1”文件夹中多了一个子项“Text1、c”了不?
子项的多少与所增加的源程序的多少相同 。
7)现在,请输入如下的C语言源程序:
#include //包含文件
#include
void main(void) //主函数
{
SCON=0x52;
TMOD=0x20;
TH1=0xf3;
TR1=1; //此行及以上3行为PRINTF函数所必须
printf(“Hello I am KEIL、 \n”); //打印程序执行的信息
printf(“I will be your friend、\n”);
while
(1);
}
在输入上述程序时,读者已经瞧到了事先保存待编辑的文件的好处了吧,即Keil c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。
程序输入完毕后,如下图所示:
8)在上图中,单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),
屏幕如下所示 :
9)调试程序:
在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“Serial Windows #1”选项,就可以瞧到程序运行后的结果,其结果如下图所示
至此,我们在Keil C51上做了一个完整工程的全过程。
但这只就是纯软件的开发过程,如何使用程序下载器瞧一瞧程序运行的结果呢?
下一节我们将介绍KeilC软件与DICE-EC3仿真器的配置说明。
2.2KEILC软件与DICE-EC5仿真器配置说明
1.本配置就是针对本公司的仿真开发工具DICE-EC5的配置方法;
2.KeilC软件配置如下:
打开Keil软件,新建一工程,选择SiliconLaboratories公司的C8051F020作为CPU(根据实际CPU):
(1)选择配置如下图:
(2)显示如下图:
(3)OUTPUT选项配置:
(4)A51汇编选项:
(5)DEBUG选项:
点击”Settings”按钮,弹出以下对话框,选择USBDebugAdapter1、2、0、0
此时必须确定DICE-EC5仿真器与PC处于联机状态!
!
!
点击确定,完成设置。
第三章实验指导
3、1C8051F单片机I/O口交叉开关设置
优先权交叉开关译码器,或称为“交叉开关”,按优先权顺序将端口0–3的引脚分配给器件上的数字外设(UART、SMBus、PCA、定时器等)。
端口引脚的分配顺序就是从P0、0开始,可以一直分配到P3、7。
UART0有最高优先权,而CNVSTR具有最低优先权。
为数字外设分配端口引脚的优先权顺序列于下图。
当交叉开关配置寄存器XBR0、XBR1与XBR2中外设的对应允许位被设置为逻辑‘1’时,交叉开关将端口引脚分配给外设,相关的特殊功能寄存器的定义见数据手册或相关书籍。
交叉开关引脚分配示例:
在本例中,我们将配置交叉开关,为UART0、SMBus、UART1、/INT0与/INT1分配端口引脚(共8个引脚)。
另外,我们将外部存储器接口配置为复用方式并使用低端口。
我们还将P1、2、P1、3与P1、4配置为模拟输入,以便用ADC1测量加在这些引脚上的电压。
配置步骤如下:
(1)按UART0EN=1、SMB0EN=1、INT0E=1、INT1E=1与EMIFLE=1设置XBR0、XBR1与XBR2,则有:
XBR0=0x05,XBR1=0x14,XBR2=0x02。
(2)将外部存储器接口配置为复用方式并使用低端口,有:
PRTSEL=0,EMD2=0。
(3)将作为模拟输入的端口1引脚配置为模拟输入方式:
设置P1MDIN为0xE3(P1、4、P1、3与P1、2为模拟输入,所以它们的对应P1MDIN被设置为逻辑‘0’)。
(4)设置XBARE=1以允许交叉开关:
XBR2=0x42。
●UART0有最高优先权,所以P0、0被分配给TX0,P0、1被分配给RX0。
●SMBus的优先权次之,所以P0、2被分配给SDA,P0、3被分配给SCL。
●接下来就是UART1,所以P0、4被分配给TX1。
由于外部存储器接口选在低端口(EMIFLE=1),所以交叉开关跳过P0、6(/RD)与P0、7(/WR)。
又因为外部存储器接口被配置为复用方式,所以交叉开关也跳过P0、5(ALE)。
下一个未被跳过的引脚P1、0被分配给RX1。
●接下来就是/INT0,被分配到引脚P1、1。
●将P1MDIN设置为0xE3,使P1、2、P1、3与P1、4被配置为模拟输入,导致交叉开关跳过这些引脚。
●下面优先权高的就是/INT1,所以下一个未跳过的引脚P1、5被分配给/INT1。
●在执行对片外操作的MOVX指令期间,外部存储器接口将驱动端口2与端口3。
(5)我们将UART0的TX引脚(TX0,P0、0)、UART1的TX引脚(TX1,P0、4)、ALE、/RD、/WR(P0、[7:
3])的输出设置为推挽方式,通过设置P0MDOUT=0xF1来实现。
(6)我们通过设置P2MDOUT=0xFF与P3MDOUT=0xFF将EMIF端口(P2、P3)的输出方式配置为推挽方式。
我们通过设置P1MDOUT=0x00(配置输出为漏极开路)与P1=0xFF(逻辑‘1’选择高阻态)禁止3个模拟输入引脚的输出驱动器。
3、2数字I/O端口实验
一、实验目的掌握C8051F020I/0的使用,学习延时子程序的编写。
二、实验内容
P1口输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
三、实验原理介绍
C8051F020有8位端口组织的64个数字I/O引脚。
低端口(P0、P1、P2、P3)既可以按位寻址,也可以按字节寻址。
高端口(P4、P5、P6、P7)只能按字节寻址。
所有引脚都耐5V电压,都可以被配置为漏极开路或推挽输出方式与弱上拉。
C8051F020器件有大量的数字资源需要通过4个低端I/O端口P0,P1,P2,P3才能使用。
但本实验中主要介绍的I/O口主要作为通用的端口I/O(GPIO)引脚来使用。
每个端口引脚的输出方式都可被配置为漏极开始或推挽方式,缺省状态为漏极开路。
在推挽方式,向端口数据寄存器中的相应位写逻辑0将使端口引脚被驱动到GND,写逻辑1将使端口引脚被驱动到VDD。
在漏极开路方式,向端口数据寄存器中的相应位写逻辑0将使端口引脚被驱动到GND,写逻辑1将使端口引脚处于高阻状态。
当系统中不同器件的端口引脚有共享连接,即多个输出连接到同一个物理线时(例如SMBus连接中的SDA信号),使用漏极开路方式可以防止不同器件之间的争用。
I/O端口的输出方式由PnMOUT寄存器中的对应位决定。
本实验中我们用P1口驱动发光二极管点亮,因此必须将P1口定义为推挽方式。
四、电路原理图
五、实验程序框图
六、实验步骤
程序功能:
由P1口驱动发光二极管循环点亮。
P1、0~P1、7接L1~L8(JP14)
3、3定时器实验
一、实验目的掌握C8051F020内部定时器/计数器的应用。
二、实验内容
本文件就是LED灯闪烁实验程序;使用定时器0定时1秒,LED灯每隔1秒亮1秒;使用外部22、1184MHz晶振。
三、实验原理介绍
C8051F020内部有5个计数器/定时器T0,T1,T2,T3与T4。
这些计数器/定时器都就是16位,其中T0、T1、T2与标准8051中的计数器/定时器兼容。
T3、T4可用于ADC、SMBus或作为通用定时器使用,T4还可用作C8051F02x中第二串口(UART1)的波特率发生器。
这些计数器/定时器可以用于测量时间间隔,对外部事件计数或产生周期性的中断请求。
定时器0与定时器1几乎完全相同,有4种工作方式。
定时器2增加了一些时器0与定时器1中所没有的功能。
定就是器3与定时器2类似,但没有捕捉与波特率发生器方式。
定时器4与定时器2完全相同,可用作UART1的波特率发生器。
下表所列为定时器的工作方式:
定时器0与定时器1
定时器2
定时器3
定时器4
13位计数器/定时器
自动重装载的16位计数器/定时器
自动重装载的16位计数器/定时器
自动重装载的16位计数器/定时器
16位计数器/定时器
带捕捉的16位计数器/定时器
带捕捉的16位计数器/定时器
自动重装载的8位计数器/定时器
UART(0)的波特率发生器
UART1的波特率发生器
两个8位计数器/定时器(仅限于定时器0)
本实验中使定时器0工作在方式1(TMOD=0x01),TIM0定时器时钟为系统时钟的1/12(CKCON=0x00)。
具体寄存器定义请参照教科书。
四、实验程序框图
(注:
实验时不需要液晶显示)
五、实验步骤
确认P3、5口与引脚49上插有短路块,则发光二极管L1与P3、5已连。
调入程序、装载、运行,观察发光二极管就是否每隔1秒亮1次。
3、4外部中断实验
一、实验目的熟悉C8051F020外部中断6/7的使用。
二、实验内容
此程序测试C8051F020的中断6、7,可在相应的两个中断中设断点观察,当单脉冲按钮按下之后,进入中断处理时P4、4控制蜂鸣器鸣叫一声,发光二极管也同时闪烁一次。
三、实验原理介绍
CIP-51包含一个扩展的中断系统,支持22个中断源,每个中断源有两个优先级。
中断源在片内外设与外部输入之间的分配随器件的不同而变化。
每个中断源可以在一个SFR中有一个或多个中断标志。
当一个外设或外部源满足有效的中断条件时,相应的中断标志被置为逻辑1。
如果中断