C8051F020入门指导
C8051F021单片机实验指导
提要:实验项目1、单片机的IO编程实验1 IO开关量输入实验实验2 IO输出驱动继电器(或光电隔离器)实验实验3 IO输入/输出------半导体温度传感器DS18B20实验2、单片机的中断系统实验1 外部外部中断----脉冲计数实验3、单片机的定时器/计数器实验1 计数器实验实验2 秒时钟发生器实验4、单片机的串口特点和编程实验1 P C机串口通讯实验实验2 R S485通讯实验5、存储器实验1 RAM存储器读写实验6、PWM发生器实验1 PWM发生器(模拟)实验实验1 PWM发生器(内部)实验7、WDG看门狗实验1 外扩WDG(MAX813)实验实验2 WDG(内部)实验8、SPI总线实验1 SPI(模拟)实验-----TLC2543 AD转换实验实验2 SPI(模拟)实验-----TLV5616 DA转换实验9、I2C总线实验1 I2C(模拟)实验-----AT24C01读写实验实验2 I2C(内部)实验-----AT24C01读写实验10、综合实验实验1 HD7279LED数码管显示实验实验2 HD7279键盘实验实验3 外部中断---电机转速显示实验11、步进电机正反转实验12、TFT液晶显示彩色条纹实验13、16X16LED点阵显示汉字实验一、单片机的IO编程实验1 IO开关量输入实验目的:学习单片机读取IO引脚状态的的方法。
内容:编程读取IO引脚状态。
设备:EL-EMCU-I试验箱、EXP-C8051F021 CPU板。
编程:首先要把相关的引脚设置在IO的输入状态,然后写一个循环,不停地检测引脚的状态。
步骤:1、将CPU板正确安放在CPU接口插座上,2、连线:用导线将试验箱上MCU部分的IO1--- IO8分别连接到SWITCH 的8个拨码开关的K1---K8的输出端子K1---K8上,连接好仿真器。
3、试验箱上电,在PC机上打开Keil C环境,打开试验程序文件夹IO_INPUT 下的工程文件IO_INPUT.Uv2编译程序,上电,在函数main()的最后一句设置断点,进入调试状态,打开窗口Peripherals-->IO-Port-->P3,改变开关状态,运行程序到断点处,观察窗口的数值与开关的对应关系。
C8051F020学习笔记 串口通信
F020单片机的使用过程当中,有几个重点,一个是定时器和中断,一个是AD和DA,还有一个就是串口通信了。
由于当时设计的时候思想比较混乱,所以直接采用的MAX485作为通信芯片。
对于其具体的实现过程还不是十分的熟悉。
因此,做此专题专门针对与串口通信相关的寄存器做说明。
四,UART0UART0 是一个具有帧错误检测和地址识别硬件的增强型串行口。
UART0 可以工作在全双工异步方式或半双工同步方式,并且支持多处理器通信。
接收数据被暂存于一个保持寄存器中,这就允许UART0 在软件尚未读取前一个数据字节的情况下开始接收第二个输入数据字节。
一个接收覆盖位用于指示新的接收数据已被锁存到接收缓冲器而前一个接收数据尚未被读取。
对UART0 的控制和访问是通过相关的特殊功能寄存器即串行控制寄存器(SCON0)和串行数据缓冲器(SBUF0)来实现的。
一个SBUF0 地址可以访问发送寄存器和接收寄存器。
读操作将自动访问接收寄存器,而写操作自动访问发送寄存器。
UART0 可以工作在查询或中断方式。
UART0 有两个中断源:一个发送中断标志TI0(SCON0.1)(数据字节发送结束时置位)和一个接收中断标志RI0(SCON0.0)(接收完一个数据字节后置位)。
当CPU 转向中断服务程序时硬件不清除UART0 中断标志,中断标志必须用软件清除。
这就允许软件查询UART0 中断的原因(发送完成或接收完成)。
4.1UART0 工作方式UART0 提供四种工作方式(一种同步方式和三种异步方式),通过设置SCON0 寄存器中的配置位选择。
这四种方式提供不同的波特率和通信协议。
下面的表20.1 概述了这四种方式。
表20.1 UART0 工作方式方式同步性波特率时钟数据位起始/停止位0 同步SYSCLK/12 8 无1 异步定时器1 或定时器2 溢出8 一个起始位,一个停止位2 异步SYSCLK/32 或SYSCLK/64 9 一个起始位,一个停止位3 异步定时器1 或定时器2 溢出9 一个起始位,一个停止位方式0 的波特率是系统时钟频率/12。
C8051F020端口配置
C8051F020的端口配置C8051F系列单片机有4~8个输入输出端口,每个端口有8个引脚,这些端口有如下特点:1、这些引脚都可以用作通用I/O端口2、它的P0~P3口的每个管脚都通过独立编程还能作为特殊功能的输入或输出,即同一个引脚可以作为片上不同外围功能模块的信号输入输出端口。
3、端口可以通过软件设置改变引脚的输入输出状态配置。
如:弱上拉输入、推拉输出、开漏输出等。
根据端口特点,端口配置过程分为以下几步:1、配置交叉开关(功能选择开关)交叉开关寄存器共有四个分别是XBAR0、XBAR1、XBAR2、XBAR3。
通过对这四个寄存器进行配置,使IO引脚同单片机的数字和模拟片上外围设备进行连接。
2、配置外部存储器接口外部存储器接口(External Memory Interface,EMIF)用于CPU与片上和片外XRAM之间的数据传输通道,通过寄存器EMIOCF和EMIOCN选择和管理端口P0~P3或端口P4~P7实现数据传播。
配置这两个寄存器用以选择端口是否为复用方式(数据与地址线复用)、寄存器工作模式选择及外部存储器页选择。
3、配置IO端口的输入输出模式输入模式分为模拟量输入和数字量输入。
用寄存器PnMDIN配置n=0、1、2、3。
输出模式分为推拉(推挽)式和漏极开路式。
用寄存器PnMDOUT配置4、禁止模拟输入引脚的输出驱动配置模拟输入时P口并没有把输出驱动电路完全关闭,所以不管是哪种输入,推荐的做法是:将相应的输入口的输出模式配置成开漏,并将其输出寄存器置“1”,使其为高阻态,以减少串扰。
5、启动交叉开关单片机刚上电时,因为XBAR2的复位值为0,因而端口P0~P3的输出驱动器被禁止,在XBARE(XBAR2.6)位被设置为逻辑“1”之前,可防止对交叉开关(功能选择)寄存器和其他寄存器写入时,在端口引脚上产生争用。
正确配置交叉开关后,通过将XBARE设置为逻辑“1”,使功能选择开关有效。
C8051F020中Flash存储器的在线擦写方法
须是 C O D E 类型 下面是将 F l a s h 存储器中的数据拷贝
到存放于内部 R A M 的数组 a [ t ] 中的样例程序
void Flash_READ void
{ unsigned char code *pread;
/*程序存储器空间的指针
Flash 指向待读地址 */
pread=0x1000;
调用这些函数时的参数为 f r o m 表示所申请 I / O 端 口的起始地址 extent 为所要申请的从 from 开始的端口 数 name 为设备名 将会出现在 /proc/ioports 文件里 check_region 返回 0 表示 I/O 端口空闲 否则为正在被使 用 在申请了 I / O 端口之后 就可以用如下几个函数来
PSCTL=0X01;
/*禁止对Flash的擦除*/
pgen=&a[0];
/*将数组值写入Flash中*/
for(i=0;i<t;i++) { *pwrite++=*pgen++; } FLSCL=0X00; PSCTL=0X00; EA=1; }
/*禁止对Flash的写操作*/ /*开中断*/
EXPERIENCE EXCHANGE 经 验 交 流
C8051F020 中 Flash 存储器的在线擦写方法
哈尔滨工程大学 韩红芳 பைடு நூலகம்孙守昌
基于C8051f020的pwm电机控制
{ uint i; uint j; for (i=0;i<time;i++) { for(j=0;j<300;j++); }
} void pcaini() {
PCA0MD = 0x04; PCA0CPM0 = 0x42; PCA0CN = 0x40; } void t0ini() { TMOD=0x02; CKCON=0x08; TH0=TL0=0x00; TCON=0x10; } void pwmini()
基决定。
PCA 的8 位PWM 方式原理框图 2 实现方法: 由三个主要函数构成 1、全局初始化函数,void config() {
WDTCN=0xDE; WDTCN=0xAD; XBR0=0x08; XBR1=0x00; XBR2=0x40; P0MDOUT=0x00; OSCXCN=0x00; OSCICN=0x07; } 2、8 位脉宽调制初始化函数,void delay1ms(uint time)
基于 C8051f020 的电机控制 摘要:本作品利用 c8051f020 的可编程计数器阵列输出电机的 PWM 控 制信号,不再占用宝贵的 CPU 资源,对控制的准确性和快速性都能有 很大的提高, 关键词:c8051f020;PWM; 可编程计数器阵列
目前对电机的 PWM 信号控制大多数都占用宝贵的 CPU 资源,这样 对于准确性和快速性较高的场合想很好的完成由一定的困难,这一问 题可以利用,当设置输出 PWM 的频率和占空比参数后,cpu 课可以进 行其他的工作,pwm 信号的输出由 c8051f020 单片机的可编程计数器 阵列来完成,实现更优化的控制。 1 实现原理 c8051f020 可编程计数器阵列有 8 位脉宽调制器方式和 16 位脉宽 调制器方式两种。其中 8 位脉宽调制器方式可满足大多数情况下的 使用,可以独立地用于在对应的 CEXn 引脚产生脉宽调制(PWM)输出。 PWM 输出信号的频率取决于 PCA0 计数器/定时器的时基。使用模块的 捕捉/比较寄存器 PCA0CPLn 改变 PWM 输出信号的占空比。当 PCA0 计 数器/定时器的低字节(PCA0L)与 PCA0CPLn 中的值相等时,CEXn 的 输出被置‘1’。当 PCA0L 中的计数值溢出时,CEXn 输出被置为低电 平。当计数器/定时器的低字节 PCA0L 溢出时(从 0xFF 到 0x00), 保存在 PCA0CPHn 中的值被自动装入 PCA0CPLn,不需软件干预。置‘1’ PCA0CPMn 寄存器中的 ECOMn 和 PWMn 位将使能 8 位脉冲宽度调制器方 式。占空比 =(256-PCA0CPH0)/256,频率由 PCA0 计数器/定时器的时
C8051F020学习笔记-IO初始化
二,使用过程中,常常出现程序的IO口设置,包括设置为交叉开关,推挽方式等。
由于对这种设置方法不太了解,因此做一个专题。
//--------------------------------------------------------------------// I/O初始化程序//--------------------------------------------------------------------// 配置交叉开关和 GPIO 端口void xbar_init (void){XBR0 = 0x07; // 允许 I2C SPI和 UARTXBR1 = 0x00; //XBR2 = 0x40; // 允许交叉开关和弱上拉//PRT0CF |= 0xff; // 允许P0口的所有输出为弱上拉//P0MDOUT// 让交叉开关将这些引脚配置为输入//PRT1CF |= 0x40; // 允许 P1.6 (LED) 为弱上拉输出}(通过对比几个程序的I/O初始化,发现主要是对寄存器XBR0~2以及PRT(0~7)CF进行设置。
特将与IO口设置相关的寄存器做一个说明)2.1 GPIO口和数字外设口C8051F020/1/2/3 MCU 是高集成度的混合信号片上系统,有按8 位端口组织的64 个数字I/O 引脚。
低端口(P0、P1、P2 和P3)既可以按位寻址也可以按字节寻址。
高端口(P4、P5、P6 和P7)只能按字节寻址。
所有引脚都耐5V 电压,都可以被配置为漏极开路或推挽输出方式和弱上拉。
C8051F020/1/2/3 器件有大量的数字资源需要通过4 个低端I/O 端口P0、P1、P2 和P3 才能使用。
P0、P1、P2 和P3 中的每个引脚既可定义为通用的端口I/O(GPIO)引脚,又可以分配给一个数字外设或功能(例如:UART0 或/INT1),这种资源分配的灵活性是通过使用优先权交叉开关译码器实现的。
C8051F020概述
9
特殊功能寄存器
SFRs 提供了MCU 资源与外设的控制与数据交换
C8051F020的特殊功能寄存器比典型的8051多两倍左右
C8051F020 增加的SFRS提供了 访问配置并访问此MCU 的子系统的 功能.
这一特性容许它在增加新的功能后还保留了与MCS-51 指 令集兼容的特点。
以0X0或0X8结尾的特殊功能寄存器(例如: P0, TCON, P1, SCON, IE, 等.) 即可以按字节寻址也可以按位寻址
10
特殊功能寄存器
F8 F0 E8 E0
SPI0CN
B ADC0CN ACC
PCA0H
SCON1 PCA0L XBR0
PCA0CPH0
SBUF1 PCA0CPL0 XBR1
TL2 ADC0GTL ADC0CF
DAC1L
TH2 ADC0GTH P1MDIN P74OUT
DAC1H
DAC1CN
SMB0CR
SMB0ST A
SADEN0 OSCXCN SADDR0
ADC0LTL ADC0L FLSCL SADEN1
ADC0LTH ADC0H FLACL EMI0CN
B8
B0
A8 A0
8-bit SAR模拟—数字转换器 (ADC1) 端口1可以被配置为模拟输入 8通道输入多路复用器和可编程增益放大器 ADC 通过它的SFRS进行配置
15
数字—模拟转换器
2个 12-bit 数字—模拟 转换器:DAC0 和 DAC1
DAC通过 VREFD 输 入引脚提供参考电压 DACs 可以作为比较器 参考输入
同时端口1的引脚可以 用作ADC1的模拟输入
c8051F020实现函数发生器DAC
sfr16 T4 = 0xf4; // Timer4
sfr16 DAC0 = 0xd2; // DAC0 data
void Saw(void);
void Off(void);
void Help(void);
void Error(void);
//-----------------------------------------------------------------------------
// Global CONSTANTS
}Command_Table_Type; // then the the function located at
// function_ptr will be executed
typedef enum Waveform { // the different possible output
SQUARE, // waveforms
SINE,
TRIANGLE,
//
// Description:
// Example source code which outputs waveforms on DAC1. DAC1's output is
// scheduled to update at a rate determined by the constant
SAW,
OFF }Wavefo源自m; typedef union lng { // access a long variable as two
long Long; // 16-bit integer values
单片机C8051F020的初始化设置
单片机C8051F020的初始化设置单片机C8051F020的初始化设置在喧闹的世界中,能静下心来研究技术也是很有趣的事情。
好多年没作些具体的技术工作了,幸好领导给分配一个单片机任务。
现在把研究的技术写下来,与朋友们分享。
研究C8051F020编程不能离开初始化设置。
对于简单程序,读技术手册,将用到的I/O口,中断,串口,晶振等正确初试化后,已经成功一半了。
晶振需要初始化,C8051F020有内部晶振,精度不高,一般电路都使用外部晶振。
初始化晶振主要是OSCXCN和OSCICN两个寄存器的设置。
具体初始化代码可由Silicon的配置程序自动生成:void Oscillator_Init(){int i = 0;OSCXCN = 0x67;for (i = 0; i < 3000; i++);while ((OSCXCN & 0x80) == 0);OSCICN = 0x08;}上面程序包括了晶振初始化的全部过程:1、使能外部振荡器:OSCXCN = 0x67;2、等待至少1m钟,等待外部振荡器起稳:for (i = 0; i < 3000; i++);3、查询OSCXCN的第八位XTLVLD是否为1,1表明外部振荡器起稳:while ((OSCXCN & 0x80) == 0);4、关内部晶振,切换到外部晶振 OSCICN = 0x08;而同事们的设置是OSCICN= 0x88;应该是使用外部振荡器,但是内部振荡器也没关,这样MCU耗能高些。
串口0(UART0)也需要配置:void UART0_Init (void){SCON0 = 0x50; // SCON0: 模式1,可接收,8位串口TMOD = 0x20; // TMOD: 定时器1, 模式2, 8位自动重载TH1 = -(SYSCLK/BAUDRATE/16); // 设置定时器1TR1 = 1; // 开始定时CKCON |= 0x10; // 定时器用SYSCLK作基准时间PCON |= 0x80; // 禁止UART0波特率/2}SCON0是UART0控制寄存器,用来选择传输模式。
CPU新介绍--C8051F020单片微控制器
CPU新介绍--C8051F020单⽚微控制器第⼆章C8051F020单⽚微控制器2.1 C8051系列单⽚机简介C8051F020是美国Silicon Laboratories公司⽣产的ISP Flash微控制器。
C8051F020系列器件使⽤Silicon Labs的专利CIP-51微控制器内核。
CIP-51与MCS-51TM指令集完全兼容,可以使⽤标准803x/805x的汇编器和编译器进⾏软件开发。
CIP-51内核具有标准8052的所有外设部件,包括5个16位的计数器/定时器、两个全双⼯UART、256字节内部RAM、128字节特殊功能寄存器(SFR)地址空间及8/4个字节宽的I/O端⼝。
然⽽与传统的8051系列单⽚机相⽐,C8051F020具有许多其它的优点,如:1.速度提⾼CIP-51采⽤流⽔线结构,与标准的8051结构相⽐指令执⾏速度有很⼤的提⾼。
在⼀个标准的8051中,除MUL和DIV以外所有指令都需要12或24个系统时钟周期,最⼤系统时钟频率为12-24MHz。
⽽对于CIP-51内核,70%的指令的执⾏时间为1或2个系统时钟周期,只有4条指令的执⾏时间⼤于4个系统时钟周期。
因此,CIP-51⼯作在最⼤系统时钟频率25MHz时,它的峰值性能达到25MIPS。
2.JTAG技术C8051单⽚机内部预设了JTAG模块,它使得每⼀个单⽚机芯⽚都具有完整的在线调试功能,⽽不必使⽤复杂的仿真调试⼯具。
3.FLASH在线编程技术C8051系列的FLASH型单⽚机不但可以采⽤外部编程器进⾏烧写,⽤户还可以利⽤⾃⼰的程序修改FLASH的内容,⽽且不需要外加编程电压,可以⽅便地实现软件升级。
4.扩展的中断系统扩展的中断系统向CIP-51提供22个中断源(标准8051只有7个中断源),允许⼤量的模拟和数字外设中断微控制器。
⼀个中断驱动的系统需要较少的MCU⼲预,因⽽有更⾼的执⾏效率。
在设计⼀个多任务实时系统时,这些增加的中断源是⾮常有⽤的[12]。
c8051f020学习笔记时钟初始化
一,关于系统初始化程序,从现在的学习情况来看,基本上大部分的程序都用到时钟初始化.所以,把这部分内容作为第一个解决难题.。
/--------------------------------------------------------------------// 时钟初始化程序// 将器件配置为使用外部 CMOS 时钟//--------------------------------------------------------------------void sysclk_init (void){WDTCN = 0xde; // 禁止看门狗定时器WDTCN = 0xad;OSCXCN = 0x67;for (i=0; i < 256; i++) ; // XTLVLD 有效需要大于1ms左右的时间while (!(OSCXCN & 0x80)) ; // 等待外部振荡器起动OSCICN = 0x88; // 选择外部振荡器作为系统时钟// 禁止内部振荡器}1.1 看门狗定时器复位MCU 内部有一个使用系统时钟的可编程看门狗定时器(WDT)。
当看门狗定时器溢出时,WDT 将强制CPU 进入复位状态。
为了防止复位,必须在溢出发生前由应用软件重新触发WDT。
如果系统出现了软件/硬件错误,使应用软件不能重新触发WDT,则WDT 将溢出并产生复位,这可以防止系统失控。
1.2 使能/复位WDT向WDTCN寄存器写入0xA5将使能并复位看门狗定时器。
用户的应用软件应周期性地向WDTCN写入0xA5,以防止看门狗定时器溢出。
每次系统复位都将使能并启动WDT。
向WDTCN寄存器写入0xDE后再写入0xAD将禁止WDT。
所以,在前面的时钟初始化程序中,{WDTCN = 0xde; // 禁止看门狗定时器WDTCN = 0xad;}禁止WDT。
(具体寄存器参照C8051F02X.PDF第118页)1.3关于寄存器OSCXCN以及OSCICN关于OSCICN: (内部振荡器控制寄存器)MCU有一个内部振荡器和一个外部振荡器驱动电路,每个驱动电路都能产生系统时钟。
菜鸟用C8051F020 SPI读写SD卡FAT全攻略单片机
菜鸟用C8051F020 SPI读写SD卡FAT全攻略转自:/wandou16/249996/message.aspx#我从一个月前刚放暑假开始弄单片机读写SD卡,八月初完成FAT16,已经可以写入TXT文件,并可在windows上读出。
由于网上资料比较散,所以一开始走了不少弯路,现在写一篇总结,将我遇到的问题详细地列出来,希望能帮助和我一样的菜鸟们少走弯路。
文中说到的一些问题对高手而言只是常识性的,还请包涵。
第一步:搭电路我买了一小块蜂窝板和一个SD插槽,按照标准电路焊接上,由于用的是SPI模式,所以选电路图的时候要看好,SD卡上的引脚顺序不要看错,912345678,最后两根挨得很紧,焊接时不要连上了,相关引脚一定要按照要求接上47K的上拉电阻。
电路虽然简单,但一定要确保无误。
还有一点,SD卡座种类不一样,有位学长买的是弹簧式的,焊完以后刚开始初始化都能成功,放了几天突然不行了,检查各引脚都没问题,最后发现是卡座的问题,这样的硬件问题很难发现,还浪费时间,所以卡座还是直接买简单的好。
第二步:设置硬件SPI我用的是sililab的C8051F020,自带硬件SPI,如果不带可以用软件模拟,关于软件模拟SPI这块网上有很多现成的程序。
这一歩首先按照020手册写了一段程序,当然是将其设为主模式,这时候CONFIG (这个软件可以视窗化操作C8051F的大多数寄存器并自动生成代码)会分配4个引脚,CLK时钟位,MISO 和MOSI两个数据传输位,还有一个NSS位,这个脚用不上,不要将其当作CS片选位,CS位选一个普通IO既可。
所有从单片机上输出的引脚都设为推挽输出。
设置完成后最好弄个示波器看一下输出波形是否和你想象中的一样,这样就能确保你的SPI工作没问题了,这一步也是关键,SPI是底层通信的基础。
第三步:SD卡初始化这一步正式进入单片机调试SD部分,了解SD卡的时序后(后面我会上传这部分资料),网上众说纷纭,还有说要看完178页英文PDF,我都晕了,这个看完估计我都是专家了。
达达电子C8051F020、120最小系统使用说明及原理图
C8051F020、120最小系统使用说明C8051f020/C8051f120最小系统是我们达达电子工作室自主制作的,为了方便大家开发使用,排针都是单排引出,可以作为核心板插在你的板子上使用!特点:1、引出所有的IO口,ADC,DAC,CP端口!即所有的端口基本引出2、板上留有3V和5V的电源!方便使用!5V是用TL431基准设计的,相对稳定!3、端口是单排设计,间距标准方便你做实验整排引出IO 或者作为核心板层叠在你的板子上!方便设计,减少干扰!4、芯片所有的电源端口都加有滤波105和104电容增强其抗干扰的能力!5、电压基准上加有104电容!内部基准输出也加有104和4.7uF的滤波电容!使ADC和DAC更加稳定!此板子图片为:1、板子电源电路020和120芯片工作电压为3.3V,输入电压经过1117-3.3V稳压,输入电压支持5~9V,我们选择的是优质1117芯片。
输入电源测试可以高至12V,但是不建议大家长期使用,以免烧坏芯片!最后电源电压经过2R电阻和105、104电容滤波分别送入MCU得到A VCC和DVCC!以增强MCU工作电压的稳定性这个5V用TL431做的电流经过8050放大,最大可以支持200MA的电流,要使用此5V电压,系统的输入电压要高于6V。
注意:这边过大电流会击穿三极管导致电压高于5V使用的时候需要经常测试是不是5V,经过板子售后情况,建议大家还是少用5V的系统和c8051f的IO连接!最好加有限流电阻,以免经常烧坏MCU!2、板子上电源基准介绍按板子上的介绍,左边是TL431做的2.5V基准!使用的时候需要根据板子上的实际电压来恒定。
一般我们的2.5V误差不会很大,中间一列3个分辨是DAC基准VERFD,ADC0基准VREF0,ADC1的基准VREF1,右边的一列都是内部基准输出VREF,使用跳冒选择。
如需要VREFD使用外部基准2.5V就把跳冒跳在左面。
如果想使用芯片的内部基准就把跳冒跳在右边!3、板子MONEN跳冒的使用如图J8左边为GND中间为MONEN右边是VCC。
C8051F020实验指导书
单片机实验指导书目录第一章:实验设备简介 (1)1.1 系统实验设备的组成 (1)1.2 Silicon Labs C8051F 单片机开发工具简介 (1)1.3 DICE-C8051F嵌入式实验/开发系统简介 (3)第二章集成开发环境KEIL C软件使用指南 (7)2.1 KEIL C软件具体使用说明 (7)第三章实验指导 (19)3.1 C8051F 单片机I/O 口交叉开关设置 (19)3.2 数字I/O端口实验 (21)3.3 定时器实验 (23)3.4 外部中断实验 (25)3.5 键盘显示实验 (27)3.6 六位动态LED数码管显示实验 (29)3.7 RS3232串口通讯实验 (31)3.8 综合设计 (33)使用特别说明:(1) 每次实验前,请仔细阅读实验指导,连线完毕,检查无误后,方可打开电源。
即连线时必须在断电状态下。
(2) 程序运行过程中,不要关闭电源,如果要断电,必须停止运行程序,并且退出程序调试状态,否则会引起KEIL C软件非正常退出,甚至引起DICE-EC5仿真器工作异常。
(3) 如出现上述(2)的的误操作,引起DICE-EC5仿真器工作异常,可对DICE-EC5仿真器进行复位。
(在光盘中找到文件夹“USB Reset”中的“USB Debug Adapter Firmware Reset”文件,双击运行,在弹出的对话框中点击“Update firmware”按钮,在提示成功后,点击“OK”按钮,退出复位程序。
DICE-EC5仿真器即可正常工作。
在下一次调试、下载程序时会提示“Do you want to update serial adapter now? ”,点击“确定”即可。
第一章:实验设备简介1.1 系统实验设备的组成DICE-C8051F嵌入式实验/开发系统由C8051F020 CPU 板、DICE-EC5仿真器和系统实验板三部分组成,应用该设备可进行片上系统单片机较典型应用的实验,请参见以下介绍。
C8051F020 最小系统 实验指导手册
工程的建立及配置........................................................................................7 Configuration Wizard 2 的使用介绍............................................................9 液晶显示......................................................................................................15 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 液晶显示模块简介............................................................................15 硬件连接............................................................................................16 地址计算方法....................................................................................17 RA8835 底层驱动程序..................................................................... 18 程序示例............................................................................................19 综合程序示例....................................................................................21 行列扫描原理介绍............................................................................23 硬件连接............................................................................................23 软件流程图........................................................................................24 示例源程序........................................................................................25 示例工程............................................................................................26 硬件连接............................................................................................30 软件设计............................................................................................30 相关寄存器设置................................................................................31 程序示例............................................................................................34
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接到端口I/O引脚。
DAC为电压输出方式,有灵活的输出更新机制。这一机制允许 用软件写和定时器2、定时器3及定时器4的溢出信号更新DAC输出。
C8051F020/2的DAC之电压基准由专用的VREFD输入引脚提供,而
C8051F021/3的DAC之电压基准由器件内部的电压基准提供。DAC在 作为比较器的参考电压或为ADC差分输入提供偏移电压时非常有用。
1.9 比较器和DAC
C8051F020/1/2/3系列MCU内部有两个12位DAC和两个比较器。 MCU与每个比较器和DAC之间的数据和控制接口通过特殊功能寄存 器实现。MCU可以将任何一个DAC或比较器置于低功耗关断方式。 比较器的回差电压可以用软件编程。每个比较器都能在上升沿、下 降沿或在两个边沿都产生中断。这些中断能将MCU从休眠方式唤醒。比 较器的输出状态可以用软件查询。可通过设置交叉开关将比较器的输出
1.8 8 位模/数转换器
C8051F020有一个片内8位SAR ADC(ADC1),带有一个8通道输入多路 选择器和可编程增益放大器。该ADC工作在500ksps的最大采样速率时可提供 真正的8位精度,INL为±1LSB。有8个用于测量的输入端。ADC1完全由CIP51通过特殊功能寄存器控制。ADC0的电压基准可以在模拟电源电压(AV+) 和一个外部VREF引脚之间选择。
配置为两个单端输入或一个差分输入。
可编程增益放大器接在模拟多路选择器之后,增益可以用软件设置,从 0.5到16以2的整数次幂递增。 A/D转换有4种启动方式:软件命令、定时器2溢出、定时器3溢出和外部 信号输入。这种灵活性允许用软件事件、外部硬件信号或周期性的定时器 溢出信号触发转换。 转换结束由一个状态位指示,或者产生中断(如果中断被使能)。在转 换完成后,10或12位转换结果数据字被锁存到两个特殊功能寄存器中。这 些数据字可以用软件控制为左对齐或右对齐。
CIP-51 内核具有标准8052 的所有外设部件,包括:
5 个16 位的计数器/定时器、 两个全双工UART、256 字节内部RAM、 128 字节特殊功能寄存器(SFR)地址空间、 8/4 个字节宽的I/O 端口。
1.1.2 速度提高
CIP-51 采用流水线结构,与标准的8051 结构相比指 令执行速度有很大的提高。
2.1.1 交叉开关引脚分配
当交叉开关配置寄存器XBR0、XBR1 和XBR2 中外设的对应使能
位被设置为逻辑‘1’时,交叉开关将端口引脚分配给外设。
端口0–3中所有未被交叉开关分配的引脚都可以作为通用I/O (GPI/O)引脚,通过读或写相应的端口数据寄存器访问。 被交叉开关分配的那些端口引脚的输出状态受使用这些引脚 的数字外设的控制。 不管交叉开关是否将引脚分配给外设,读一个端口数据寄存器 (或端口位)将总是返回引脚本身的逻辑状态。
2、交叉开关配置
2.1 端口输入/输出
低端口(P0、P1、P2 和P3)既可以按位寻址也可以按字节寻址。 高端口(P4、P5、P6 和P7)只能按字节寻址。
所有引脚都耐5V 电压, 都可以被配置为漏极 开路或推挽输出方式 和弱上拉。
C8051F020/1/2/3 器件有大量的数字资源需要通过4 个 低端I/O 端口P0、P1、P2 和P3 才能使用。 P0、P1、P2 和P3 中的每个引脚既可定义为通用的 端口I/O(GPIO)引脚,又可以分配给一个数字外设或功 能(例如:UART0 或/INT1),如图17.2 所示。 系统设计者控制数字功能的引脚分配,只受可用引脚 数的限制。 这种资源分配的灵活性是通过使用优先权交叉开关译 码器实现的。 注意,不管引脚被分配给一个数字外设或是作为通用 I/O,总是可以通过读相应的数据寄存器得到端口I/O 引脚 的状态。端口1 的引脚可以用做ADC1 的模拟输入。
2.2 端口0 – 3 和优先权交叉开关译码器
1、优先权交叉开关译码器(“交叉开关”) 按优先权顺序将端口0–3的引脚分配给器件上的数字 外设(UART、SMBus、PCA、定时器等)。端口引脚的 分配顺序是从P0.0 开始,可以一直分配到P3.7。 2、优先权顺序 为数字外设分配端口引脚的优先权顺序列于图17.3, UART0 具有最高优先权,而CNVSTR 具有最低优先权。
在一个标准的8051 中,除MUL 和DIV 以外所有指令 都需要12 或24 个系统时钟周期,最大系统时钟频率为 12-24MHz。 而对于CIP-51 内核,70%的指令的执行时间为1 或2 个系统时钟周期,只有4 条指令的执行时间大于4 个系统 时钟周期。
1.1.3 增加的功能
扩展的中断系统向CIP-51 提供22 个中断源(标准8051 只有7 个中断源),允许大量的模拟和数字外设中断微控 制器。 MCU 可有多达7 个复位源:一个片内VDD 监视器、一 个看门狗定时器、一个时钟丢失检测器、一个由比较器0 提供的电压检测器、一个软件强制复位、CNVSTR 引脚 及/RST 引脚。 MCU 内部有一个独立运行的时钟发生器,在复位后被默 认为系统时钟。如果需要,时钟源可以在运行时切换到外 部振荡器,外部振荡器可以使用晶体、陶瓷谐振器、电容、 RC 或外部时钟源产生系统时钟。
生争用。
交叉开关寄存器被正确配置后,通过将XBARE(XBR2.6)设
在XBARE 被设置为逻辑‘1’之前,端口0-3 的输出驱动器被明
置为逻辑‘1’来使能交叉开关。
确禁止,以防止对交叉开关寄存器和其它寄存器写入时在端口引脚上产
被交叉开关分配给输入信号(例如RX0)的引脚所对应的输出驱动
器应被明确禁止;以保证端口数据寄存器和PnMDOUT 寄存器的值不影 响这些引脚的状态。
MCU 的程序存储器包含64K 字节的FLASH。该存储器 以512 字节为一个扇区,可以在系统编程,且不需特别的 外部编程电压。
1.3 JTAG 调试和边界扫描
C8051F020系列具有片内JTAG边界扫描和调试电路, 通过4脚JTAG接口并使用安装在最终应用系统中的产品器 件就可以进行非侵入式、全速的在系统调试。 该JTAG接口完全符合IEEE1149.1规范,为生产和测试 提供完全的边界扫描功能。 Silicon Labs的调试系统支持观察和修改存储器和寄 存器,支持断点、观察点、堆栈指示器和单步执行。
1.6 串行端口
C8051F020系列MCU内部有两个增强型全双工UART、
SPI总线和SMBus/I2C。 每种串行总线都完全用硬件实现,都能向CIP-51产生中 断,因此需要很少的CPU干预。 这些串行总线不“共享”定时器、中断或端口I/O等资源, 所以可以使用任何一个或全部同时使用。
ksps 的8 通道ADC,带PGA和模拟多路开关
������ 口
可寻址64K 字节地址空间的外部数据存储器接口 硬件实现的SPI、SMBus/ I2C 和两个UART 串行接
Hale Waihona Puke ������������
5 个通用的16 位定时器
具有5 个捕捉/比较模块的可编程计数器/定时器阵列
������
������ 高速、流水线结构的8051 兼容的CIP-51 内核(可达25MIPS)
������
������ ������ ������ ������ ������
全速、非侵入式的在系统调试接口(片内)
真正12 位(C8051F020/1)或10 位(C8051F022/3)、 100 真正8 位500 ksps 的ADC,带PGA 和8 通道模拟多路开关 两个12 位DAC,具有可编程数据更新方式 64K 字节可在系统编程的FLASH 存储器 4352(4096+256)字节的片内RAM
C8051F020/1/2/3
混合信号ISP FLASH 微控制器
1、概述 2、交叉开关配置 3、系统时钟源 4、系统复位 5、JTAG接口的在系统调试 6、单片机的初始化设置
1、概述
C8051F020器件是完全集成的混合信号系统级MCU 芯 片,具有64 个数字I/O 引脚(C8051F020/2)或32 个数字 I/O 引脚(C8051F021/3)。下面列出了一些主要特性:
2.1.2 配置端口引脚的输出方式
在XBARE(XBR2.6)被设置为逻辑‘1’之前,端口0-3 的输出 驱动器保持禁止状态。 每个端口引脚的输出方式都可被配置为漏极开路或推挽方式, 缺省状态为漏极开路。
1、推挽方式:
向端口数据寄存器中的相应位:
写逻辑‘0’将使端口引脚被驱动到GND,
写逻辑‘1’将使端口引脚被驱动到VDD。
1.7 12 位模/数转换器
C8051F020/1有一个片内12位SAR ADC(ADC0),一个9通道输入多路选择 开关和可编程增益放大器。该ADC工作在100ksps的最大采样速率时可提供真正 的12位精度,INL为±1LSB。
ADC完全由CIP-51通过特殊功能寄存器控制。有一个输入通道被连到内部 温度传感器,其它8个通道接外部输入。8个外部输入通道的每一对都可被
1.4 可编程数字I/O 和交叉开关
该系列MCU具有标准8051的端口(0、1、2和3)。在 F020/2中有4个附加的端口(4、5、6和7),因此共有64 个通用端口I/O。 每个端口I/O引脚都可以被配置为推挽或漏极开路输出。 数字交叉开关。
这是一个大的数字开关网络,允许将内部数字系统资源映射到P0、 P1、P2和P3的端口I/O引脚。 可通过设置交叉开关控制寄存器将片内的计数器/定时器、串行总线、 硬件中断、ADC转换启动输入、比较器输出以及微控制器内部的其它数 字信号配置为出现在端口I/O引脚。
片内看门狗定时器、VDD 监视器和温度传感器
1.1 CIP-51TM CPU
1.1.1 与8051 完全兼容
C8051F020 系列器件使用Silicon Labs 的专利CIP-51 微控制器内核。CIP-51 与MCS-51TM指令集完全兼容,可以 使用标准803x/805x 的汇编器和编译器进行软件开发。