C8051F020单片机完成16路信号源的输出

合集下载

C8051F020单片机初始化程序和编译步骤

C8051F020单片机初始化程序和编译步骤

C8051F020单片机初始化程序和编译步骤2011-02-15 12:20:06| 分类:默认分类| 标签:|字号大中小订阅C8051F020编程步骤一、编程步骤:1、看门狗设置2、系统初始化3、端口初始化4、对应功能初始化(如:串口,定时器,I2C,SPI,PCA,DAC/ADC,中断等等)5、功能函数或中断函数(如需要)6、包含的头文件7、项目说明二、对应功能初始化要点:1、Uart:(1)串口工作模式由SCON设定(2)定时器工作方式设定TMOD (3)波特率TH 载入值设定(4)启动TR1 (5)时钟基准CKCON (6)波特率加倍设定PCON(7)开中断使能TI2、Time:(1)工作方式设定TMOD (2)定时器时钟基准CKCON (3)启动/停止TCON设定TRn3、Interrupt:(1)中断允许IE (2)触发方式设定(上下沿,电平)(3)对应控制位允许设定,如ES串口允许C8051F020单片机初始化程序; $INCLUDE (C8051F020.inc) /C8051F020单片机功能强大,初始化也比较繁杂,为了便于初始化各功能模块,我们编了此程序可看着“说明”初始化。

ORG SYS_INIT;※▲◆●◎★☆△;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆;■-- <1> --电源管理; PCON ; POWER CONTROL;■-- <2> --系统时钟和振荡器; OSCXCN ; EXTERNAL OSCILLA TOR CONTROL; OSCICN ; INTERNAL OSCILLA TOR CONTROL;■-- <3> --复位及看门狗管理; RSTSRC ; RESET SOURCE; WDTCN ; W A TCHDOG TIMER CONTROL;■-- <4> --FLASH存储器编程和安全管理; FLSCL ; FLASH MEMORY TIMING PRESCALER; PSCTL ; PROGRAM STORE R/W CONTROL; FLACL ; FLASH ACESS LIMIT;■-- <5> --中断控制; IE ; INTERRUPT ENABLE; EIE1 ; EXTERNAL INTERRUPT ENABLE 1; EIE2 ; EXTERNAL INTERRUPT ENABLE 2; IP ; INTERRUPT PRIORITY; EIP1 ; EXTERNAL INTERRUPT PRIORITY REGISTER 1; EIP2 ; EXTERNAL INTERRUPT PRIORITY REGISTER 2; P3IF ; PORT 3 EXTERNAL INTERRUPT FLAGS;■-- <6> --端口IO初始化及交叉开关设置; XBR0 ; DIGITAL CROSSBAR CONFIGURA TION REGISTER 0; XBR1 ; DIGITAL CROSSBAR CONFIGURA TION REGISTER 1; XBR2 ; DIGITAL CROSSBAR CONFIGURA TION REGISTER 2; P0MDOUT ; PORT 0 OUTPUT MODE CONFIGURA TION; P1MDOUT ; PORT 1 OUTPUT MODE CONFIGURA TION; P2MDOUT ; PORT 2 OUTPUT MODE CONFIGURA TION; P3MDOUT ; PORT 3 OUTPUT MODE CONFIGURA TION; P74OUT ; PORTS 4 - 7 OUTPUT MODE;■-- <7> --外部RAM和片内XRAM; EMI0CN ; EXTERNAL MEMORY INTERFACE CONTROL; EMI0CF ; EXTERNAL MEMORY INTERFACE (EMIF) CONFIGURA TION ; EMI0TC ; EXTERNAL MEMORY;■-- <8> --定时器设置; TMOD ; TIMER MODE; TCON ; TIMER CONTROL; T2CON ; TIMER 2 CONTROL; T4CON ; TIMER 4 CONTROL; TMR3CN ; TIMER 3 CONTROL; TMR3RLL ; TIMER 3 RELOAD REGISTER - LOW BYTE; TMR3RLH ; TIMER 3 RELOAD REGISTER - HIGH BYTE; TMR3L ; TIMER 3 - LOW BYTE; TMR3H ; TIMER 3 - HIGH BYTE;■-- <9> --串行通讯; SCON0 ; SERIAL PORT 0 CONTROL; SCON1 ; SERIAL PORT 1 CONTROL; SBUF1 ; SERAIL PORT 1 DA TA; SADDR1 ; SERAIL PORT 1; PCON ; POWER CONTROL; RCAP2L ; TIMER 2 CAPTURE REGISTER - LOW BYTE; RCAP2H ; TIMER 2 CAPTURE REGISTER - HIGH BYTE; RCAP4L ; TIMER 4 CAPTURE REGISTER - LOW BYTE; RCAP4H ; TIMER 4 CAPTURE REGISTER - HIGH BYTE; SADDR0 ; SERIAL PORT 0 SLA VE ADDRESS;■-- <10> --可编程计数器阵列; PCA0CN ; PCA 0 COUNTER CONTROL; PCA0MD ; PCA 0 COUNTER MODE; PCA0CPM0 ; CONTROL REGISTER FOR PCA 0 MODULE 0; PCA0CPM1 ; CONTROL REGISTER FOR PCA 0 MODULE 1; PCA0CPM2 ; CONTROL REGISTER FOR PCA 0 MODULE 2; PCA0CPM3 ; CONTROL REGISTER FOR PCA 0 MODULE 3; PCA0CPM4 ; CONTROL REGISTER FOR PCA 0 MODULE 4;■-- <11> --SMBus通讯; SMB0CN ; SMBUS 0 CONTROL; SMB0CR ; SMBUS 0 CLOCK RA TE; SMB0STA; SMBUS 0 STA TUS; SMB0DA T ; SMBUS 0 DA TA; SMB0ADR ; SMBUS 0 SLA VE ADDRESS;■-- <12> --SPI总线通讯; SPI0CKR ; SERIAL PERIPHERAL INTERFACE 0 CLOCK RA TE CONTROL ; SPI0DA T ; SERIAL PERIPHERAL INTERFACE 0 DA TA; SPI0CFG ; SERIAL PERIPHERAL INTERFACE 0 CONFIGURA TION; SPI0CN ; SERIAL PERIPHERAL INTERFACE 0 CONTROL;-- <13> --ADC转换; AMX0CF ; ADC 0 MUX CONFIGURA TION; AMX0SL ; ADC 0 MUX CHANNEL SELECTION; ADC0CF ; ADC 0 CONFIGURA TION; ADC0CN ; ADC 0 CONTROL; ADC0L ; ADC 0 DA TA - LOW BYTE; ADC0H ; ADC 0 DA TA - HIGH BYTE; ADC1CF ; ADC 1 ANALOG MUX CONFIGURA TION; AMX1SL ; ADC 1 ANALOG MUX CHANNEL SELECT; ADC1CN ; ADC 1 CONTROL; ADC0GTL ; ADC 0 GREA TER-THAN REGISTER - LOW BYTE; ADC0GTH ; ADC 0 GREA TER-THAN REGISTER - HIGH BYTE; ADC0LTL ; ADC 0 LESS-THAN REGISTER - LOW BYTE; ADC0LTH ; ADC 0 LESS-THAN REGISTER - HIGH BYTE; REF0CN ; VOLTAGE REFERENCE 0 CONTROL; ADC1 ; ADC 1 DA TA;■-- <14> --DAC转换; PCA0L ; PCA 0 TIMER - LOW BYTE; PCA0H ; PCA 0 TIMER - HIGH BYTE; DAC0CN ; DAC 0 CONTROL; DAC1L ; DAC 1 REGISTER - LOW BYTE; DAC1H ; DAC 1 REGISTER - HIGH BYTE; DAC1CN ; DAC 1 CONTROL;■-- <15> --比较器设置; CPT0CN ; COMPARA TOR 0 CONTROL; CPT1CN ; COMPARA TOR 1 CONTROL; EMI0TC ; EMIF TIMING CONTROL;■-- <16> --时钟/电压基准设置; CKCON ; CLOCK CONTROL; SADEN1 ; SERIAL PORT 1 SLA VE ADDRESS MASK; SADEN0 ; SERIAL PORT 0 SLA VE ADDRESS MASK; P1MDIN ; PORT 1 INPUT MODE; PSW ; PROGRAM STA TUS WORD; B ; B REGISTER; WDTCN ; W A TCHDOG TIMER CONTROL;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆;;==================================================================== ; function: Init_CTS 定时器/计数器,中断和串行通讯初始化子程序; input: -----------------; output: -----------------; usage: -----------------;==================================================================== THS0 equ 0a8hTLS0 equ 09ah; THS1 equ 0fah;0feh;0fah;-4800;0f4h; TLS1 equ 0fah;0feh;0fah;-4800;0f4h;; THS2 equ 0ffh;0feh;0fah;-4800;0f4h; TLS2 equ 0b8h;0feh;0fah;-4800;0f4hInit_TCS: ;定时器/计数器,中断和串行通讯初始化子程序;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓; ◆◆◆8051内部控制寄存器◆◆◆;****************************************************************************** ******;|名称| 代号| 地址|位寻| B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|电源控制| PCON | 87H | NO |SMOD | -- | -- | -- | GF1 | GF0 | PD | IDL |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|计时控制| TCON | 88H | YE |TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|计时模式| TMOD | 89H | NO |1GA TE| 1C/T | 1M1 | 1M0 | 0GA TE| 0C/T | 0M1 | 0M0 | ;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|串行控制| SCON | 98H | YE |SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|中断允许| IE | A8H | YE |EA| -- | ET2 | ES | ET1 | EX1 | ET0 | EX0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|中断优先| IP| B8H | YE |-- | -- | PT2 | PS | PT1 | PX1 | PT0 | PX0 |;****************************************************************************** ******;时钟频率为:11.059200MHz;;机器周期为:12/fosc=1.085069μs;;CT0定时器设定延时为:2000μs;;CT0定时器工作于模式0;;CT0溢出处理采用中断方式;;CT0选择内部时钟;;CT0启动由TR0的0/1决定;;设定波特率为:4800bps;;串口0工作于方式1--T1定时器工作于方式2;;串口1工作于模式3--T2定时器用于波特率发生器4800bpsmov TH0, #THS0mov TL0, #TLS0; mov TH1, #THS1; mov TL1, #TLS1; mov TH2, #THS2; mov TL2, #TLS2;▲■-- <1> --电源管理;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓;87H---PCON-------电源控制寄存器;复位值: 00000000;位7-2:保留。

C8051F单片机

C8051F单片机

5、系统复位
复位电路将控制器置于一个预定的缺省状态。 1)CIP-51 停止程序执行 2) 特殊功能寄存器(SFR)被初始化为所定义的复位值 3)外部端口引脚被置于一个已知状态 4)中断和定时器被禁止。 5)所有的SFR 都被初始化为预定值 6)I/O 端口锁存器的复位值为0xFF,全部为逻辑‘1’,内部 弱上拉有效,使外部I/O 引脚处于高电平状态。 7) MCU 使用内部振荡器运行在2MHz 作为默认的系统时钟。 8) 看门狗定时器被使能,使用其最长的超时时间。
13
1、概述
4、可编程数字I/O •C8051F310有29个I/O引脚(3个8位口和一个5位口) •C8051F31x端口的工作情况与标准8051相似,但有一些 改进。每个端口引脚都可以被配置为模拟输入或数字I/O 。 •被选择作为数字I/O的引脚还可以被配置为推挽或漏极 开路输出。 •在标准8051中固定的“弱上拉”可以被总体禁止,为低 功耗应用提供了进一步节电的能力。
18
3、优先权交叉开关配置
也称为“交叉开关”,按优先权顺序将端口0 – 3 的 引脚分配给器件上的数字外设(UART、SMBus、 PCA、定时器等)。 端口引脚的分配顺序是从P0.0 开始,可以一直分配 到P3.7。为数字外设分配端口引脚的优先权顺序为 UART0具有最高优先权,而CNVSTR具有最低优先 权。 优先权交叉开关的配置是通过3个特殊功能寄存器 XBR0、XBR1、XBR2来实现的,对应使能位被设置 为逻辑‘1’时,交叉开关将端口引脚分配给外设。
◆16K 字节可在系统编程的FLASH 存储器
◆1280字节的片内RAM ◆可寻址64K字节地址空间的外部数据存储器接口
◆硬件实现的SPI、SMBus/ I2C 和两个UART 串行接口

C8051F020单片机

C8051F020单片机

C8051F020单片机C8051F020单片机简介单片机(Microcontroller Unit,缩写为MCU)是一种集成了中央处理器(CPU)、片内存储器(RAM和ROM)、输入/输出接口(I/O)、定时器/计数器和其他功能模块的微型计算机系统。

单片机被广泛应用于家电、汽车电子、医疗设备、电力系统等领域。

C8051F020单片机作为Silicon Labs开发的一款8位低功耗单片机,具有较高的性价比和广泛的应用领域。

本文将对C8051F020进行详细介绍。

一、C8051F020单片机的特点与功能C8051F020单片机具有以下特点和功能:1. 架构优势:C8051F020基于Silicon Labs的成熟8位CPU架构,具有高效的指令执行能力和较低的功耗。

2. 丰富的存储器:C8051F020拥有8KB的闪存(Flash)用于程序存储,可以在电源关闭后保持程序不丢失。

此外,它还配备了256字节的数据闪存(Data Flash)和256字节的电子可擦除可编程只读存储器(EPROM)。

3. 综合的外设:C8051F020单片机具有多个通用输入输出引脚(GPIO),可用于各种外设和传感器的连接。

此外,它还提供了模拟与数字转换器(ADC)、串行通信接口(UART、SPI、I2C)以及定时器/计数器等功能。

4. 低功耗设计:C8051F020采用了优化的低功耗设计,具有多种休眠模式和快速唤醒功能,可在长时间运行的场景下降低功耗。

5. 开发工具支持:Silicon Labs提供完善的开发工具套件,包括集成开发环境(IDE)、调试器和仿真器等,方便开发者进行软件开发和调试。

二、C8051F020单片机的应用领域C8051F020单片机广泛应用于以下领域:1. 家电控制:C8051F020可用于控制家电产品,如空调、洗衣机、冰箱等,通过外围电路与其他传感器和执行器进行交互。

2. 工业自动化:C8051F020提供了丰富的通用输入输出引脚和通信接口,可用于工业自动化控制系统,如PLC、工业机器人等。

基于单片机的伺服电机控制系统设计

基于单片机的伺服电机控制系统设计

• 146•基于单片机的伺服电机控制系统设计郴州职业技术学院 张玲玲当今社会,电动机在工农业生产、人们日常生活中起着十分重要的作用。

其中,步进电机是最常见的一种控制电机,在各领域中:如加工中心,打印机、自动化生产线等等场合都可以得到应用。

研究伺服电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。

本系统是基于80C51的伺服电机控制系统,在脉冲控制控制作用下控制电机运行于0-3000转/分钟,并实现正转与反转。

1 引言在自动控制系统中,伺服电动机作为执行元件,作用是把所收到的电信号转换成电动机轴上的角位移或角速度输出。

它有直流电机和交流电机之分。

其中交流伺服有更广的适用性。

交流伺服系统已成为当代高性能伺服系统的主要发展方向。

本文介绍如何使用C8051F060来控制交流伺服电机,使电机运行于0-3000转/分钟的任意转速。

2 系统设计图1所示是伺服电机控制系统,它以C8051F060为核心,同时还有显示电路、编码器、编码器处理电路、RS485通信电路、伺服电机驱动电路、伺服电机。

图1 伺服电机控制系统图3 电路及原理3.1 主芯片介绍C8051F060是Silicon Lab 公司出品的完全集成的混合信号片上系统型MCU 。

它使用了Cygnal 专利的高速、流水线结构以及与MCS-51指令集完全兼容的CIP251微处理器内核。

C8051F060具有P0-P7,共计8个端口,64个可以实际使用的IO 。

3.2 LED电路如图2所示,系统使用6个LED 数码管显示伺服电机的转速,LED 数码管采用MC14489芯片进行驱动,MC14489采用SPI 通信方式和CPU 进行通信,可以节省IO 口的使用。

3.3 编码器及处理电路系统采用多个BCD 拨码开关来设置系统运行参数。

BCD 拨码开关是十进制输入,BCD 码输出,又称为8421拨码开关。

每位BCD 拨码开关可输入1位10进制数。

每个BCD 拨码开关后面有5个接点,其中C 为输入控制线,另外4根是BCD 码输出信号线。

基于C8051F020的AD采集系统设计

基于C8051F020的AD采集系统设计

基于C8051F020的AD 采集系统设计刘 磊,郭振军,黄廷磊(桂林电子科技大学 桂林 541004)摘 要:本文介绍以C8051为核心的光电转换及A D 采集系统设计。

分析了在系统设计过程中出现的干扰信号、同一点的采集值范围分布太宽、A D 系统参数设置及转换过程中出现的问题,并给出了解决方法。

关键词:C8051F 020;A D 转换;光电池;前置放大器Design of AD conversion system based on C8051F020Liu Lei,Guo Zhenjun,H uang Tinglei(Guilin Univ er si ty of Electr onic T echnology ,Guilin 541004,China)Abstract:T his paper introduces t he design of phot oelect ric conversion and A D collect er syst em based on C8051,analyzes t he problems of t oo wide disturb signal,gathering value scope of identical spot distribution ,AD syst em parameter set and A/D conversion,t hen provided solut ion accordingly.Key words:C8051F020;AD conversion;electric eye sensor;pre -amplifier1 引 言光电技术就是利用电子技术的方法对光学信息进行检测控制、计算和显示,它的特点是检测灵敏度高,且精确、快捷。

目前,这项技术已普遍应用到工程技术和生产实践中,并发挥了巨大的作用[1]。

光电池是一种在光电检测系统中得到广泛应用的器件。

CPU新介绍--C8051F020单片微控制器

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的多路无线温度采集系统的设计方案

基于C8051F020的多路无线温度采集系统的设计方案

基于C8051F020的多路无线温度采集系统的设计方案随着科技的不断进步,在多数领域中有线连接的方式已经不能满足科技高速开展的要求,无线通信正进入到我们生活中的各个领域,它与有线连接方式相比,具有携带方便、使用灵活、不必考虑走线等优点。

在无线报警、工业数据采集、遥控、遥测射频IC 卡、手持PDA、无线图像传输、不停车收费、无线抄表等各个方面有着极其广泛的应用。

本文所介绍的测温系统也是无线通讯系统的应用之一。

它以SOC单片机C8051F020为中央控制器,以CC1000为无线传送模块和温度测量电路构成了多路无线温度采集系统。

将8路的温度数据进展采集,通过无线方式送给主机C8051F020进展处理。

调制解调由CC1000完成,系统采用频移键控调制〔FSK〕,载波频率为433MHz,带宽64kHz,数据采用差分曼彻斯特编码发送,空中发送数据速率可以根据需要设置。

在发送时控制器C8051F020单片机从用户接口接收采集命令,进展8路温度信号的采集,并将采集到的温度数据进展打包转换成数据帧传送给CC1000,控制CC1000进展数据发送。

在接收时,控制器C8051F020接收从CC1000传送过来的温度数据,进展简单处理后把这些数据传送给上位机进展详细的分析处理。

1 无线收发模块本设计的无线收发模块采用了ChipconComponent公司的高性能RF收发芯片CC1000,它是一种单片高频无线收发IC,电流损耗低,通信速率可调,最高可达72.8kbit/s,接收灵敏度为-109dB.m,发射信号功率在-20~10dB.m内可调,设计时电路简单,所用的外围器件较少,编码简单,改变电路和器件参数可以使其工作的频率范围在300~1000MHz内变化。

同时该器件内部集成了发射功率放大器、FSK调制/解调、低噪声接收放大器、混频器、压控振荡器、鉴相器等电路,是一款集成度极高的芯片,可直接与单片机进展通信。

该IC极适合嵌入到各种低功耗要求较高的测量或控制系统中,我们在该系统中选那么433MHz的频段。

基于C8051F020的PWM输出频率分析

基于C8051F020的PWM输出频率分析

基于C8051F020的PWM输出频率分析第24卷增刊数据采集与处理V01.24No?SZ009年10⽉JournalofDataAcquisition&Processingoct.2009引⽂章编号:1004—9037(2009)增刊⼀0229⼀04基于C8051F020的PWM输出频率分析黄慧1张庆武2殷兴辉1(1.河海⼤学计算机及信息⼯程学院,南京,210098;2.南京邮电⼤学通信与信息⼯程学院,南京,210003)摘要:基于C805lF020芯⽚,研究了PCA模块的PWM信号产⽣原理以及软件实现的⽅法,并通过实验⽅法针对PCA模块,提出了PwM输出频率与PCA计数器/定时器时基的关系公式,结合计算与实验观察,分析了在不同设定下输出波形的频率范围以及频率与占空⽐的准确性问题。

实验结果表明,基于C8051F020产⽣的PWM信号具有控制精度⾼,响应快的优点,适于⽇常⽣活、⼯业⽣产和科学研究领域对控制系统的需要。

关键词:C8051F020单⽚机;PWM;可编程计数阵列中图分类号:TP368⽂献标识码:A‘FrequencyRangeandAccuracyAnalysisOfC8051F020⼀BasedPWMoutput.H“⼝挖.g.H“i1,Z^⼝挖gQi⽵g训“2,YI以Xi咒l乎^“i1(1.CollegeofComputerandlnformationEngineering,HohaiUniversity,Nanjing,210098,China;2.CollegeofCommunicationandInformationEngineering,NanjingUniVersityofPosts&Telecommunications,Nanjing,210003,China)Abstract:Theprincipleforthepulsewidthmodulation(PWM)signalofPCAmoduleisstudiedandthemethodsofsoftwaredesignonC8051F020chiparepresented.Furthermore,therela—tionshipexpressionsbetweenthePWMoutputfrequencyandthePCAcounter/timerbasefofthePCAmodulearededucedbytheexperiment.Combinedwithcomputationalandexperimen—talobservation,therangesofthewaveformfrequencyindifferentsettingareanalyzed,aswellastheaccuracyofthefrequencyandthedutycycle.ExperimentalresultsshowthattheC8051F020—basedPWMsignalhastheadvantagesofhighprecisionandfastresponse.Thus'itissuitablefordailylife,industrialproductionandscientificresearchinthecontrolsystemfieId.Keywords;C8051F020MCU;pulsewidthmodulation(PWM);PCAC805lF系列单⽚机是集成的混合信号⽚上系统(SOC),具有与MCS⼀5l内核及指令集完全兼容的微控制器,除了具有标准8051的数字外设部件外,⽚内还集成了数据采集和控制系统中常⽤的模拟部件和其他数字外设及功能部件。

基于C8051F020单片机的16位A D转换器设计

基于C8051F020单片机的16位A D转换器设计

基于C8051F020单片机的16位A/D转换器设计1 引言本文给出了基于C8051F020单片机的16位A/D转换器设计思路及实现方法。

在设计中,充分利用了C8051F020单片机内部的高速计数器,本文给出的设计与常规的双积分ADC相比,具有转换速率高、可对双极性模拟电压进行转换等显著优点,且实现简单,运行稳定可靠。

2 A/D转换器硬件电路图1为A/D转换硬件电路。

图中,LM336为5V电压基准源,CD4052为2路四选一电子开关。

在正常转换过程中,Vin输入端的开关RY断开,输入待测电压信号(-5V~+5V),此信号经过运放OP07-1构成的电压跟随器后,输入到运放OP07-2的反相输入端,加入电压跟随器的目的是进行阻抗变换。

运放OP07-2构成加法器,其输出为:V OI=-(V I+V CP) (1)VCP为补偿电压,将双极性输入电压VI转换成单极性电压VO1,以实现与偏移二进制码对应的A/D转换,其值为输入电压VI的上限值。

若输入电压VI 取值范围为:-5V<VI<5V,则VCP=5V。

输出电压VO1的取值范围为-10V<VO1<0V。

3 A/D转换器程序流程及工作原理图2为A/D转换过程程序流程图:A/D转换开始前先将计数器清零。

在软件控制下,选通CD4052的2Y管脚,构成放电回路使积分电容C完全放电,然后开始A/D转换,转换操作分两步进行:第一步,选通CD4052的0X管脚,积分器对VO1进行固定时间T1的积分,积分结束时积分器的输出电压VO2为:(2)第二步,选通CD4052的1X管脚,积分器对参考电压VREF向相反方向积分,若积分器的输出电压到零时所经过的积分时间为T2,则有:(3)故得到:(4)上述三式中VREF为A/D 转换器的基准电压,由C8051F020片内的12位D/A转换器DAC0提供。

可见,T2与进行固定时间间隔积分的电压信号VO1成正比,令计数器在这段时间里对固定频率为fc (fc=1/TC)的时钟脉冲计数,计数值即为转换成的数字量,即(5)式中D为表示计数结果的数字量,即A/D转换值。

C8051F020单片机实验接线表

C8051F020单片机实验接线表

一、C8051F020单片机实验接线表(注:黑体部分已调试通过)3.8 WDT看门狗实验一、实验目的熟悉汇编语言编程,掌握C8051F020内部WDT的使用。

二、实验内容通过改变延时程序的延时值,使延时值分别小于和大于WDT设置的定时间隔,运行程序,观察P0.0控制的发光二极管L8的变化。

三、实验原理介绍MCU内部有一个使用系统时钟的可编程看门狗定时器(WDT)。

当看门狗定时器溢出时,WDT将强制CPU进入复位状态。

为了防止复位,必须在溢出发生前由使用软件重新触发WDT。

如果系统出现了软件/硬件错误,使使用软件不能重新触发WDT,则WDT将溢出并产生复位,这样可以防止系统失控。

WDT是一个使用系统时钟的21位定时器。

该定时器检测对其控制寄存器的两次写操作的时间间隔。

如果这个时间间隔超过了编程的极限值,将产生WDT复位。

可以根据需要用软件允许和禁止WDT,或根据需要将其设置为永久性允许状态。

可以通过看门狗定时器控制寄存器(WDTCN)控制看门狗的功能。

(1)允许/复位WDT看门狗定时器的允许和复位是通过向WDTCN寄存器写入0xA5来实现的。

用户的使用软件应周期性地向WDTCN写入0xA5,以防止看门狗定时器溢出。

每次系统复位都将允许并启动WDT。

(2)禁止WDT向WDTCN寄存器写入0xDE后再写入 0xAD将禁止WDT。

下面的代码说明禁止WDT的过程:CLR EA ;禁止所有中断MOV WDTCN,#0DEh ;禁止看门狗定时器MOV WDTCN,#0ADhSETB EA ;重新允许中断必须在4个时钟周期之内写0xDE和写0xAD,否则禁止操作将被忽略。

在这个过程期间应禁止中断,以避免两次写操作之间延时。

(3)锁定WDT向WDTCN写入0xFF将使禁止功能无效。

WDT一旦被锁定,在下一次复位之前禁止操作将被忽略,写0xFF并不允许或复位看门狗定时器。

如果使用程序想一直使用看门狗,则应在初始化代码中向WDTCN写入0Xff.(4)设置WDT定时间隔WDTCN.[2~0]控制看门狗的超时间隔。

C8051F020单片机

C8051F020单片机

Cygnal出的一种混合信号系统级单片机。

片内含CIP-51的CPU内核,它的指令系统与MCS-51完全兼容。

其中的C8051F020单片机含有64kB片内Flash程序存储器,4352B的RAM、8个I/O端口共64根I/O口线、一个12位A/D转换器和一个8位A/D转换器以及一个双12位D/A转换器、2个比较器、5个16位通用定时器、5个捕捉/比较模块的可编程计数/定时器阵列、看门狗定时器、VDD监视器和温度传感器等部分。

C8051F020单片机支持双时钟,其工作电压范围为2.7~3.6V(端口I/O,RST和JTAG引脚的耐压为5V)。

与以前的51系列单片机相比,C8051F020增添了许多功能,同时其可靠性和速度也有了很大提高。

C8051Fxxx 系列单片机是完全集成的混合信号系统级芯片,具有与8051 兼容的微控制器内核,与MCS-51 指令集完全兼容。

除了具有标准8052 的数字外设部件之外,片内还集成了数据采集和控制系统中常用的模拟部件和其它数字外设及功能部件。

参见表1.1 的产品选择指南可快速查看每个MCU 的特性。

表1.1 C8051Fxxx 产品选择指南MIPS(峰值)FLASH 存储器(字节)RAM(字节)外部存储器接口SMBus/12CSPIUART定时器(16 位)可编程计数器阵列内部振荡器精度(±%)数字端口I/OADC 分辨率(位)ADC 最大速度(ksps)ADC 输入电压基准温度传感器DAC 分辨率(位)DAC 输出(位)电压比较器备注:C8051F02X 系列单片机片内还集成有一个8 位,500ksps,8 输入(与P1 口复用)ADC。

— 2 —MCU 中的外设或功能部件包括模拟多路选择器、可编程增益放大器、ADC、DAC、电压比较器、电压基准、温度传感器、SMBus/ I2C、UART、SPI、可编程计数器/定时器阵列(PCA)、定时器、数字I/O 端口、电源监视器、看门狗定时器(WDT)和时钟振荡器等。

电机控制中的16位PWM在C8051单片机中的实现

电机控制中的16位PWM在C8051单片机中的实现

第06卷 第05期 中 国 水 运学 术 版Vol.6 No.05 2006年 05月 China Water Transport Academic Version May 2006收稿日期2006-5-3作者简介何曦光男1982 武汉理工大学 研究生430070 研究方向自动控制 微机测控及电子技术电机控制中的16位PWM 在 C8051单片机中的实现何曦光 阮祥发 赵 燕摘 要在有刷和无刷直流电机的控制中需要使用脉宽调制技术PWM 技术我们可以通过调节PWM 信号的占空比来实现调速因此PWM波发生器在直流电机的控制中是不可缺少的关键词PWM C8051 PCA 高速输出工作方式中图分类号TM301.2 文献标识码 A 文章编号1006-7973200605-0048-02一PCA 捕捉/比较模块的高速输出工作方式原理C8051单片机有PWM 功能该功能包含在一个称为可编程计数器阵列PCA 当中[2]可编程计数器阵列PCA 包含1个16位的定时器/计数器和5个捕捉/比较模块而每个捕捉/比较模块都有一个16位的模块寄存器8位的PCA0CPHn 和8位的PCA0CPLn 且每个捕捉/比较模块都有4种工作方式其中在高速输出工作方式中每当PCA 计数器PCA0L 和PCA0H 的值与该模块寄存器PCA0CPLn 和PCA0CPHn 中的常数值相等时就使CEXn 引脚上的逻辑电平发生一次变化取反同时触发一次中断使该模块的中断标志位CCFn 被置1如果响应这个中断CCFn 必须用软件清0利用高速输出工作方式的这个特点我们就可以实现16位的PWM 功能PCA 高速输出工作方式原理图如图1所示[1]二如何实现16位PWM根据高速输出工作方式的工作原理我们可以知道当条件匹配时在CEXn 引脚上会产生一次正跳变或一次负跳变同时触发一次中断如果在正跳变时将PWM 高电平计数值装入16位的模块寄存器PCA0CPLn 中和PCA0CPHn 中而在负跳变时将0000H 装入16位的模块寄存器PCA0CPLn 和PCA0CPHn 中在CEXn 引脚上我们可以得到16位的PWM 输出这一过程可由图2进一步说明[1]由上图可见假如初始时CEXn 引脚输出低电平而且PCA 定时器初值为0000H当匹配条件满足时CEXn 引脚变为高电平同时引发一次中断在中断服务子程序中将PWM 常数值装入模块寄存器PCA0CPn 中每一个PCA 时钟PCA定时器加1直到与模块寄存器PCA0CPn 中的PWM 常数相等时满足了匹配条件这时使CEXn 引脚输出变为低电平同时又会引发一次中断在中断服务子程序中将0000H 装入模块寄存器PCA0CPn 中此时PCA 定时器在每一个PCA 时钟到来时继续加1直到加到FFFFH 时再加1产生溢出PCA 的值变为0000H 这样又产生新的匹配条件使CEXn 引脚变为高电平同时引发一次中断这次在中断服务子程序中将PWM 常数值装入模块寄存器PCA0CPn 中这样循环下去就会在CEXn 引脚上输出16位的PWM波图1 PCA 的高速输出工作方式原理图图2 用高速输出方式实现16位PWM 原理这个16位的PWM波的占空比由下式决定=PWM/65536 2-1改变变量PWM的值就可以改变占空比如果取系统时钟的4分频作为PCA 时钟的话考虑到中断服务程序要花一定的时间假设没有别的中断则PWM的第05期 何曦光等电机控制中的16位PWM 在C8051单片机中的实现 49 最小值是7个PCA 时钟最大值是65529个PCA 时钟这样最小占空比为0.01068%最大占空比为99.9893%如果取系统时钟的12分频作为PCA 时钟的话PWM 的最小值是3个PCA 时钟这样最小占空比为0.0046%最大占空比为99.9954%PWM 波的频率等于PCA 时钟频率的65536分频下面是利用高速输出工作方式实现16位PWM 功能的初始化程序和中断服务子程序在这个程序中系统时钟使用内部振荡器16MHz 使用模块0其端口CEX0定向到P0.0PCA 时钟使用系统时钟4分频16位PWM 值存放到20H 21H中低8位在前其数据格式与PCA 时钟相同[1]三相关程序 初始化程序ABCMOV OSCICN#07H系统时钟使用内部振荡器16MHzMOV XBR0#08HCEX0定向到P0.0 MOV XBR2#40H 交叉开关允许ORL PRT0CF #01H 配置P0.0推挽输出 MOV PCA0MD#02H 禁止PCA 中断PCA 时钟使用系统时钟4分频MOV PCA0CPL020H 将PWM 的低8位送入PCA0CPL0MOV PCA0CPH021H将PWM 的高8位送入PCA0CPH0MOV PCA0CPM0#4DH 设为告诉输出工作方式ORL EIE 1#08H允许PCA 中断 SETB EA 允许中断 SETB CR 允许使用PCA中断服务子程序如下WXYJBC CCF0WXY 1是模块0中断跳向处理程序JBC CCF 1WXY3不是模块0中断退出 JBC CCF2WXY3 BC CCF3WXY3 JBC CCF4WXY3JBC CF WXY3WXY 1JNB P0.0WXY2 读P0.0当前状态 MOV PCA0CPL020H P0.0=1时 MOV PCA0CPH021HRETIWXY2MOV PCA0CPL0#00H P0.0=0时MOV PCA0CPH0#00HWXY3RETI四结束语我们还可以用上面相同的方法来获得n 位PWM 波其中8﹤n ﹤16使用n 位PWM 方式的好处是在满足应用要求的前提下可以获得比16位PWM 方式更高的频率在可以在适当地修改PWMH 和PWML 值后在占空比不变的情况下随意改变PWM的频率参考文献 [1] 王晓明电动机的单片机控制北京北京航空航天大学出版社2003[2] 何立民MCS-51系列单片机应用系统设计北京北京航空航天大学出版社1990[3]邓星钟周祖德机电传动控制武汉华中理工大学出版社1992[4] 臧英杰电气传动的脉宽调制控制技术北京机械工业出版社1997In electrical machinery control 16 PWM in C8051 monolithicintegrated circuit realityHe Xiguang Ruan Xiangfa Zhao YanAbstract In controlling the motor with brush and without brush,the PWM Technology is needed.Wecan regulate the pace of the motor by regulating the the empty-rate of the PWM signal.So the PWM wave generator is indispensable.Keyword PWM,C8051,PCA,High-speed outputting working style。

c8051f020端口配置说明

c8051f020端口配置说明

C8051F的每个I/O口引脚都可以被配置为推挽或漏极开路输出。

同时引入了数字交叉开关,允许将内部数字系统资源映射到P0、P1、P2和P3 的端口引脚。

通过设置交叉开关寄存器可将片内的计数器/定时器、串行总线、硬件中断、ADC转换启动输入、比较器输出以及微控制器内部的其他数字信号配置为出现在端口I/O引脚。

必须在访问这些外设的I/O之前配置和允许交叉开关。

注意的问题:1.低端口既能按位寻址,也可以按字节寻址;高端口只能按字节寻址。

2.没有被分配到的引脚作为一般的数字通用I/O口。

3.P1口还可以用作ADC1的模拟输入。

4.P0MDOUT~P3MDOUT用于控制I/O端口每一位的输出状态。

5.EMIF(外部存储器接口)是用于CPU与片外XRAM之间的数据传输通道,通过寄存器EMI0CF 和EMI0CN选择和管理端口实现数据的传输。

6.为了能访问片外存储器空间,必须设置EMI0CN寄存器的内容为片外存储器的空间页地址。

7.如果把外部存储器接口(EMIF)设置在高端口则首先要把EMI0CF的PRTSEL位设置为1,选择高端口,同时选择地址的复用或非复用方式,在把XBR的外部寄存器的EMIFLE位设置为0。

8.复用方式配置:在复用方式下,数据总线和地址总线的第8位共用相同的引脚(AD0~AD7)。

在该方式下,要用一个外部锁存器(如 74HC373或相同功能的锁存器)保持RAM地址的低8位。

外部锁存器由ALE(地址锁存使能)信号控制,ALE信号由外部存储器接口逻辑驱动。

9.在总线复用时,需要把地址数据复用端口配置为漏极开路。

10.ALE高/低脉宽占1个SYSCLK周期,地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期,EMIF工作在地址/数据复用方式,即:EMI0CF |= 0x2c;EMI0TC |= 0x2c;配置EMIF 的步骤是:先将EMIF选到低端口或高端口;然后选择复用方式或非复用方式;再选择存储器的模式(只用片内存储器、不带块选择的分片方式、带块选择的分片方式或只用片外存储器);然后设置EMI0TC;最后通过寄存器PnMDOUT和P74OUT选择所期望的相关端口的输出方式。

单片机实验报告求16个数的平均值

单片机实验报告求16个数的平均值

贵州大学计算机科学与技术学院计算机科学与技术系上机实验报告课程名称:单片机原理班级:实验日期:2013/11/22 姓名:学号:指导教师:实验序号:实验成绩:一、实验名称:求十六个数的平均数二、实验目的及要求1、熟悉单片机的指令,学习简单程序的编写和使用。

2、掌握和了解求16个数的平均值的编程原理和编程方法。

三、实验环境Windows XPKeil单片机编程软件Protues 仿真软件四、实验内容1、熟悉C8051在汇编软件Keil上的使用,2、求十六个数的平均数,并将结果通过实验箱上输出。

五、算法描述及实验步骤六、调试过程及实验结果将在keil软件中写的程序编译成.hex类型文件并在Protues仿真软件中运行的结果如下:DI和D5亮表示运行结果是17,这与16个数的(02H+04H+06H+08H+0AH+0CH+0EH+10H+12H+14H+16H+18H+1A H+1CH+1EH+20H)/10H=11H的结果计算一致,所以该实验正确。

七、总结通过是要进一步熟悉了之前对于51单片机的开发环境,巩固掌握了单片机开发语言的使用以及循环结构的设置及调用。

通过上机,将书本上学习到的知识运用到实际中,使自己的编程能力得到提高。

八、附录$nomod51$include(c8051f020.INC)ORG 0000HSJMP STARTSTART:MOV R0,#60HMOV A,#TABLP1:MOV R7,AMOVC A,@A+DPTR MOV @R0,AINC R0MOV A,R7INC ACJNE R0,#70H,LP1Mov R0,#60HMov A,@R0Mov R3,#0NEXT:MOV A,R2INC R0ADD A,@R0MOV R2,AMOV A,R3ADDC A,#00HMOV R3,ACJNE R0,#6FH,NEXT MOV R0,#04HMOV A,R2MOV R5,AMOV R6,#00H LOOP:CLR CMOV A,R3RRC AMOV R3,AMOV A,R5RRC AMOV R5,ARRC AMOV R6,ADJNZ R0,LOOPMOV A,R5MOV P3,ATAB: DB 02H,04H,06H,08H,0AH,0CH,0EH,10H,12H,14H,16H,18H,1AH,1CH,1E H,20HSJMP $END。

51单片机串口通信实现16 16点阵显示

51单片机串口通信实现16 16点阵显示

51单片机开发的点阵实验附录2中讲到Proteus调试单片机串口的方法附录1中讲到8*8点阵的显示原理以下程序有本人编写,请参考:用串口调试助手发送个16进制01是个笑脸;02是个哭脸。

可以用上图,基于proteus做仿真。

C51程序:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit le1=P1^0;sbit le2=P1^1;sbit le3=P1^2;sbit le4=P1^3;uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar code tac[8][8]={{0x00,0x00,0xf8,0x04,0x32,0x4a,0x02,0x02},{0x02,0x12,0x22,0xc2,0x04,0xf8,0x00,0x00},{0x00,0x00,0x1f,0x20,0x4c,0x52,0x40,0x40},{0x40,0x48,0x44,0x43,0x20,0x1f,0x00,0x00},//笑脸{0x00,0x00,0xf8,0x04,0x02,0x4a,0x32,0x02},{0x02,0x02,0xc2,0x22,0x04,0xf8,0x00,0x00},{0x00,0x00,0x1f,0x20,0x40,0x52,0x4c,0x40},{0x40,0x40,0x43,0x44,0x20,0x1f,0x00,0x00},//哭脸uchar a=0;int b=0,c=0,flag=0,i; void init()//初始化{TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;REN=1;EA=1;ES=1;}void delay(uint n) {uint i,j;for(i=n;i>0;i--)for(j=80;j>0;j--); }void display()//显示if(b==1)c=0;if(b==2)c=4;P1=0xff;P0=0x00;P2=0xff;le2=0;le4=0;for(i=0;i<8;i++) {P2=tab[i];P0=tac[0+c][i];delay(1);}P1=0xff;P0=0x00;P2=0xff;le1=0;le4=0;for(i=0;i<8;i++) {P2=tab[i];delay(1);}P1=0xff;P0=0x00;P2=0xff;le1=0;le3=0;for(i=0;i<8;i++) {P2=tab[i];P0=tac[2+c][i];delay(1);}P1=0xff;P0=0x00;P2=0xff;le2=0;le3=0;for(i=0;i<8;i++) {P2=tab[i];delay(1);}}void main(){init();while(1){if(flag==1){if(b==1||b==2)display();}}}void ser()interrupt 4//串口中断{RI=0;a=SBUF;if(a==0x01)b=1;if(a==0x02)b=2;flag=1;}附1:目前我会的有3种1.单片机+虚拟终端(作为串口输入设备)+串口2.单片机+虚拟终端(作为串口输入设备)+MAX232+串口3.单片机+串口+虚拟串口程序(virtual serial port)+串口调试助手4.单片机+MAX232+串口+虚拟串口程序(virtual serial port)+串口调试助手(这个不会,主要是不知道该怎么在Proteus中连线,理论上方法4和3的连线方法是没有太大差别的,我也不知道哪里设置不对,一直没弄成功,问题出在加入了MAX232后)方法1和2的区别不大,只是在串口和单片机中间多接个MAX232,因为是仿真软件,所以串口有和没有MAX232的仿真结果是一样的,就是细节上的设置不同方法1连线如下:方法2连线图如下:方法1和方法2的区别在PCT(虚拟终端输入串口的PCT计算机发送端)的一个设置参数不同,(当波特率改变的时候虚拟终端里面的波特率设置也要改变)方法1设置如下方法2设置如下不同的地方在PCT,串口这边的虚拟终端的RX/TX Polarity的设置不同,当在单片机和串口间没接入MAX232,该项设置为normal,当在其间接入了MAX232该项设置为inverted。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
个数字 I/O 引脚;具有 12 位 100kps 的 8 通道 ADC,带 PGA 和多路模拟开关 ; 具有 2 个 12 位 DAC,具有可编程数据更新方式;64K 可在系统编程的 FLASH 存储 器;4352 字节的片内 RAM;可寻址 64K 字节地址空间的数据存储器接口:2 个 UART 串行接口。基于以上优良特性,故选用该单片机。
二、系统方案论证
本系统有 DA 输出部分、AD 反馈部分、串口输出部分组成,系统框图下:
URAT输 出
电脑上 位机
DA
单片机
AD
多路模 拟开关
跟随输 入
采样保 持部分
滤波电 路
放大部 分
16选1开 关
16路信 号输入
输出
1.单片机部分
图 1.系统流程图
单片机选用 C8051F020,是完全集成的混合信号系统级 MCU 芯片,具有 64
图 14.放大输出电路
图 15.仿真波形
5.串行通信方式的选择与上位机的选择
单片机通过 URAT 发送数据至上位机长采用以下 2 种方法即通过蓝牙或 TTL 转串口线将单片机数据发送到电脑上位机。其中由于蓝牙使用较为方便, 故采用集成蓝牙模块。上位机需要直观显示单片机发出数据,故采用 Serial_Digital_Scope V2。
系统集成与应用 实验报告
2013/2014 学年第 2 学期
学生姓名:
*杰
学 号:
*
学 院:
仪器与电子学院
专 业:
电子科学与技术
题 目 : 用 C8051F020 单片机完成 16 路信号源的输出
指导教师: 焦新泉 2014 年 5 月 15 日
一、 设计任务与要求
用 C8051F020 单片机完成 16 路信号源的输出,并通过单片机内部 A/D 转换 器进行输出信号源的反馈采样,最后通过异步串行接口(UART)将采样结果输出。 利用 C8051 单片机将波形量化数据放置于内部 ROM,通过内部 D/A 产生信号以及 I/O 端口控制多路模拟开关,同时生成 16 路信号源,注意信号源调理电路中采 保部分的选值,并给出理论计算结果。反馈回采部分采用单片机的 12 位高精度 A/D 转换器,采样频率自定(要求给出理论计算值),并通过 UART 接口将采样值 送出,按 9600bps 的波特率发出(接收对象可以是计算机或其它)。
○4 UARTO 调用
任务要求中要通过 UART 接口将采样值送出,按 9600bps 的波特牢发出, 在这个子程序中采用定时器 1 来作为 UARTO 的定时根据波特率的值设定定时器 1 霞装值,公式如下所示
已知波特率为 9600,TIM 为定时器 1 时钟选择位(CKCON.4)TH1 为所求, 这样可以计算出需要定时的时问 THI -B8H,所以只要往相应的控制位写入数据 就能够实现以 9600bps 的波特率发送数据。 系统程序: #include <c805lf020. h>//SFR 声明 #include <stdio.h> /*-----------------------------------------------------------------
图 5 5V 转 3.3V 电路
图 6 5V 转 12V 电路
3.多路模拟开关部分
多路模拟开关采用 CD4067。CD4067 为 CMOS16 选 1 双向模拟开关,可用 于数字传输、信号分时处理、多路巡回监测电路中,与单片机 I/O 端口连接,能 很方便的实现生产测控。也可与其他 CMOS 电路连接成数控网络、多路分配器 等,设计出多种实用电路。CD4067 相当于一个单刀十六掷开关,具体接通哪一通 道,由输入地址码 ABCD 来决定。
6.系统软件设计
单片机 C8051F020 的管脚有 100 个,不是每一个都需要连接,我们只关心 我们需要的引脚输入输出的关系在该芯片中我们需要用到的是 DACO 作为波形 的输出口,AINO.O 作为 A/D 转换的输入口,XTAL1 和 XTAL2 作为振荡器的输 入端口,WR 作为 UARTO 的输出端给上位机发送数据,端口 P1.6 作为一个信号 灯的显示窗口接入一个发光二极管,这样就可以看到芯片什么时候是在干什么工 作的,P1.5 是给采样保持电路一个采样的信号,/RST 作为外接的一个复位信号,
图 4.C8051F020 电平转换电路
2.系统电源设计部分
系统中电源电路的稳定性具有重要作用,电源电路是系统正常运转的基本要 求。在该系统采用 12V 可充电锂电池进行供电。通过 LM-1117 芯片将 5V 转为 3.3V 使单片机可在 3.3V 电压下稳定工作。此外系统还需要通过 MC34063 芯片提供正 负 12V 的电源对采样保持电路以及放大电路进行供电。
0x0f, 0xf6, 0xcf, 0xd9, 0x0f, 0xa8, 0x0f, 0x64, 0x0f, 0x0e, 0x0e,
0xa7, 0x0e, 0x2f, 0x0d, 0xa8, 0x0d, 0x13, 0x0c, 0x72, 0x0b, 0xc5, 0x0b, 0x10, 0x0a, 0x53, 0x09, 0x90, 0x08, 0xc9, 0x08, 0x00, 0x07, 0x37, 0x06, 0x70, 0x05, 0xad, 0x04, 0xf0, 0x04, 0x3b, 0x03, 0x8e, 0x02, 0xed, 0x02, 0x58, 0x01, 0xdl, 0x01, 0x59, 0x00, 0xf2, 0x00, 0x9c, 0x00, 0x58, 0x00, 0x27, 0x00, 0x0a, 0x00, 0x00, 0xcc, 0x0a, 0x00, 0x27, 0x00, 0x58, 0x00, 0x9c, 0x00, 0xf2, 0x01, 0x59, 0x01, 0xdl, 0x02, 0x58, 0x02, 0xed, 0x03, 0x8e, 0x04, 0x3b, 0x04, 0xf0, 0x05, 0xad, 0x06, 0x70, 0x07, 0x37, }; /*---------------------------------------------------------------------
#define TRUE 1
#define FALSE 0 sbit LED = P1^6; sbit CON = Pl^5; sbit SWI = P3^7;
// LED=' 1'意为开 // CON=' 1' 意为采样信号打开 // SWI=' 0' 意为按压开关
unsigned char code SINE_TABLE[128]={0x08, 0x00, 0x08,
1.1 下载电路
C8051F020 单片机具有片内 JTAG 边界扫描和调试电路,通过 4 脚 JTAG 接 口并使用安装在最终应用系统中的产品器件就可以进行非侵入式全速的在系统 调试。
图 3.C8051F020 单片机下载电路
1.2 电平转换电路
通过 MAX232 芯片实现 232 电平与 TTL 电平的转换,以完成单片机与主机之 间的通信。
#define BAUDRATE 9600
//UART 波特率 bps
#define SANPLERATE0 63684 //ADCO 采样频率 IOOOHz
#define NUM_SAMPLES 2048 //ADCO 采样次数
#define SAMPLERATED 65248 //update rate of DAC in IOOHz
C805IF02X 的 16 位 SFR 定义 -----------------------------------------------------------------*/
sfr16 DP=0x82;//数据指针 sfr16 TMR3RL=0x92;//定时器 3 重装值 sfr16 TMR3=0x94;//定时器 3 计数器 sfr16 ADCO=0xbe;//ADCO 数据 sfr16 ADCOGT=0xc4;// ADCO 大于窗口 sfr16 ADCOLT=0xc6;// ADCO 小于窗口 sfr16 RCAP2=0xca;//定时器 2 捕捉/重装 sfr16 T2=0xcc;//定时器 2 sfr16 RCAP4=0xe4;//定时器 4 捕捉/重装 sfr16 T4=0xf4;//定时器 4 sfr16 DAC0=0xd2;// DACO 数据 sfr16 DAC1=0xd5;// DAC1 教据
/*---------------------------------------------------------------全局常量
---------------------------------------------------------------*/
#define SYSCLK 22118400 //系统 H 时钟频率 Hz
当单片机跑飞的时候可以手动复位最新工作 5.2 划分程序模块,编写程序流程图 系统软件由主程序,D/A 产生子程序,UARTO 子程序,晶体振荡子程序,交叉 开关和通用 IO 口子程序,定时器 1,3,4 子程序,和分别的溢出中段构成
○1 初始化:设定该芯片的看门狗电路启动,时钟使用 22.1184MHz 晶体为
图 10.仿真电路
仿真波形: 下图波形,蓝色为输入信号,频率为 1KHZ,其输出振幅很小,基本实现了滤
波器的功能。
图 11.仿真波形
图 12.幅频特性
图 13.相频特性
4.3 放大输出部分
本系统要求放大输出电压为 5V,而在输出前电压最大为 2.4V,故需要进行 放大。系统采用 LM324 运放进行反相放大,增益为 2.2,其放大电路如下图所示:
图 7 多路模拟开关电路
相关文档
最新文档