找不到文档

请联系客服

一、找不到需要的文档,请联系客服

各种述职自查等报告、工作学习计划总结、表扬信

思想汇报、心得体会、申请报告、发言稿、新闻稿

活动策划方案、演讲稿、推荐信、保证书、读后感

合同协议、倡议书、等各种条据书信

二、微信客服

欢迎收藏本站,按 Ctrl+D 即可将本站加入收藏夹。
祈祷工作报告网qdbeian.com > 免费论文 > 其他论文

利用ADuC834构成二次仪表系统_工科论文十篇

2022-04-12

利用ADuC834构成二次仪表系统_工科论文十篇

论文大全】导语,眼前所欣赏的此篇共有36512文字,由俞东建细心修正,上传在祈祷工作报告网!模块是一个设计术语,是指对词条中部分内容进行格式化整理的模板。例如歌手类词条中的“音乐作品”模块,电视剧类词条的“分集剧情”模块。利用ADuC834构成二次仪表系统_工科论文十篇假如你对这类文章想说点什么,可以和大家一起探讨!

利用ADuC834构成二次仪表系统_工科论文 篇一

摘要:介绍了一种利用ADuC834单片机设计的智能二次仪表,给出了该仪表的硬件和软件设计方法,同时各部分地介绍了ADuC834的应用方法。

关键词:ADuC834 二次仪表 智能仪器

ADuC834是一种真正意义上的完整的数据采集系统芯片。这种崭新的微处理转换器和先进的混合处理工艺显著提高了数据采集系统的性能,并大幅度减少了应用系统的开发时间和成本。ADuC834是美国模拟器件(AD)公司最新投入市场的一款微处理转换器产品,它集成了双路Σ-Δ型ADC、温度传感器、增益可程控放大器(PGA)、8位51MCU、62k的可编程程序EEPROM、4k的数据Flash Memory、2304字节的片内RAM、12位DAC以及定器、I2C兼容的SPI和标准的串行I/O等。由此可见,ADuC834本身就是一个内嵌MCU的高性能数据采集系统,利用它可以极方便地构成各种二次仪表系统。

1 ADuC834芯片介绍

ADuC834内部集成了两路的Σ-ΔADC,其中主通道ADC为24位,辅助通道ADC的16位。两个的ADC通道由于使用了数字滤波,因而可以实现宽动范围的低频测量,非常适用于称重仪、张力应变仪、压力转换器和温度测量等方面的应用。其中主通道的AD输入范围在±20mV~±2.56V之间分为8档,使用时可任选一档。由于使用了Σ-Δ转换技术,因此可以实现高达24位无丢失码性能,且辅助通道还可以作为温度传感器使用。

ADuC834利用32kHz晶振来驱动片内锁相环(PLL)以产生内部所需要的工作频率,它的微控制器内核与8051兼容。片内设备包括一个与SPI和I2C兼容的串行端口、多路数字输入/输出端口、看门狗定时器、电源监视器以及时间间隔计数器。同时片内还提供了62kB闪速/电擦除程序存储器以及2304字节的片内RAM。

ADuC834本身能提供程序串行下载,所以可以直接下载调试程序,非常方便于程序的开发和设计。因此,利用ADuC834可以非常简单地制作各种复杂的二次仪表。

2 二次仪表的硬件电路设计

本系统设计主要针对两路传器进行采样,然后进行数据处理和相应的数据显示,同时要求有复杂菜单设计。由于数据处理过程中要用到浮点乘除运算,同时要求有菜单设置,因此,利用ADuC834的62k程序存储空间可以进行各种复杂的运算和处理,而不需要外扩程序存储器。图1是其硬件设计原理图。

本系统利用ADuC834的P3口构成3×4键盘,并通过P0、P2口和7HC138译码器来构成10个数码管动态显示屏,然后利用ADuC834的P1.0、P1.1和74HC164构成8个发光LED的显示,同时利用ADuC834的串口SPI功能进行软件调试。

2.1 数码管的动态显示

利用ADuC834的P2口的P2.0~P2.4,并通过74HC138译码可以得到8个地址选通,而P2.5和P2.6则用于构成剩下的2个选通,同时把P0口作为显示的数据接口。

用程序可选择ADuC834定时器T2的自装入方式,并可将其定时为2ms,同时可采用动态方式刷新数码管的显示缓冲区,以实现动态显示。

2.2 键盘控制电路

由ADuC834的P3口的P3.0~P3.6可以构成键盘控制电路,其原理图如图2所示。

由图2可以看出,该键盘有3行4列共12个键,使用7个I/O作为控制线,其中采用P3.0、P3.1、P3.2作为行扫描线,采用P3.3~P3.6作为列加复线来构成矩阵键盘。运行中,当有键按下时,程序并不立即进行按键处理程序,只有在按键按下又松开的时刻才进入程序处理,因为这样可防止按键的连击和抖动。

2.3 发光LED设计

由于本系统要求有8种状态显示,故需要使用8个发光LED来表示当前程序运行的不同状态。而这可利用P1.0、P1.1和74HC164控制8个发光数码管来进行显示。

3 二次仪表的软件程序设计

3.1 数据采集程序

进行AD采集时,可选择ADuC834的内部参考电压(注意此时内部参考电压是Vref=1.25V,所以ADC通道输入范围都缩小一半),并通过写寄存器AD0CON的RN2、RN1和RN0来选择不同的输入范围道替换,以实现对两个通道输入电压的AD采样。其初始采集程序如下:

EADC=0; /禁止ADC中断/

ADCMODE=0x20; /启动主ADC/

tempfloat=flash_read(2); /读取输入通道选择配置/

temp=(uchar)(tempfloat-10001); /采用24位的ADC,使用内部参考电压,选择AIN1、AIN2输入,选择双极性编码,

ANGE=+-TEMP/

EADC=1; /允许ADC采样中断/

ADCMODE=0x23; /进行连续采样/

……

下面是ADC中断服务子程序,其中ADC的中断号为6

void adc_int(void) interrupt 6

{

EADC=0;

RDY0=0;

……

EADC=1;

}

3.2 用户闪速/电擦除数据寄存器的编程

ADuC834的用户闪速/电擦除数据存储器的容量为4kB,利用这些EEPROM可以进行系统配置信息的存储。具体程序如下:

sfr EDARL=0xe6;

xx define F_READ 0x01 /读取页/

# define F_WRITE 0x02 /写入页/

# define F_VERIFY 0x04 /检测页/

xx define F_ERASE 0x05 /擦除页/

xx define_F_ERASEALL 0x06 /全部擦除/

float flash_read(unsigned char f_add) /从地址f_add读取浮点数据/

{

float idata f_data=0;

float idata ph;

uchar idata puc;

pf=&f_data;

puc=(uchar idata )pf;

EDARL=f_add;

ECON=0x01;

puc=EDATA1;

++puc;

puc=EDATA2;

++puc;

puc=EDATA3;

++puc;

puc=EDATA4;

return f_data;

}

unsigned char flash_write(unsigned char f_add,float f_data)

/写浮点数据f_data到地址f_add/

{

float idata pf;

uchar idata puc;

uchar idata temp;

pf=&f_data;

puc=(uchar idata )pf;

EDARL=f-add;

ECON=0x05; /首先擦除/

EDARL=f_add;

EDATA1=(puc++);

EDATA2=(puc++);

EDATA3=(puc++);

EDATA4=(puc);

ECON=0x02; /写数据/

ECON=0x04; /检测数据

temp=ECON;

if(temp= =0)return TRUE;

else return FLASE;

}

4 结论

本文所描述的二次仪表的软硬件设计具有采集速度快、精度高、系统体积小的特点,特别适用于需要进行复杂运算且要求采集精度较高、体积较小的系统中。在实际的设计开发中,使用ADuC834可在很大程序上缩短开发时间并降低成本。另外,笔者设计的这款二次仪表在实际应用中也取得了很好的使用效果。

colspan="

基于TLC4502和MAx111的数据采集系统自校准技术_工科论文 篇二

摘要:介绍了数据采集系统中的自校准技术,并以TLC4502和MAx111为例介绍了自校准功能模块中运算放大器和A/D转换器的工作原理及使用方法,最后给出了相应的应用实例。

关键词:自校准技术;A/D转换;TLC4502;MAx111

1 引言

零点温度漂移和时间漂移往往会对微弱的放大及A/D转换过程产生重要影响,从而引起数据采集精度的降低。因此,为了提高精度,多采用高精度的基准源、匹配电阻以及低漂移运算放大器,但这样同时也会使产品成本升高,且线路复杂,功耗高。本文讨论的自校准技术能很好地解决时漂和温漂问题,并进一步提高A/D转换的精度,而且硬件简单,因此适用范围很广。

2 数据采集系统的一般组成

数据采集系统一般由模拟输入、放大器、A/D转换器以及MCU组成,如图1所示。该系统的自校准精度主要取决于放大器和A/D转换器。

2.1 校准放大器

放大器的放大倍数准确与否以及时漂、温漂等问题都会严重影响数据采集的精度,因而对放大器进行校准是十分必要的。现在已经有一些带自校准功能的放大器。选用这些器件无疑会大大简化系统设计。下面以美国TI公司的自校准放大器TLC4502为例进行说明。TLC4502内有两个自校准运放通道,其通道的原理图如图2所示。

通电后,上电复位电路开始工作,通过控制逻辑电路启动自校准过程。首先激活RC振荡器以提供逐次逼近算法的时钟,同时断开K1、K4,并接通K2、K3。此时,运算放大器输入端短路,输出为失调电压,该电压经K3到片内并通过A/D转换器转换后,存入寄存器SAR内,然后再通过片内D/A转换器转换后送到运算放大器内进行失调对消。经过若干个时钟周期后,失调电压逐次逼近零点,此时控制逻辑电路自动断开K2和K3,并接通K1和K4,校准过程即告结束。经校准后,运算放大器的失调电压的误差为零,因此,就可以像一般的运算放大器一样使用了。

只要不断电,校准后的失调调零信息就可一直保存在逐次逼近寄存器SAR中。为了进一步降低功耗及防止宽带噪声引起的干扰,校准完成后,放大器芯片会自动关闭片内RC振荡器。整个校准过程约 300ms。当TLC4502应用在长期不间断采集的场合时,可通过CPU来控制其定期切断,然后再接通运算放大器电源进行自校准,这样可消除时间漂移引起的误差。

2.2 A/D的自校准原理

下面以两通道A/D转换器件为例来对自校准过程进行说明。自校准过程可分为四步(见图3):

(1) A/D调零:A/D转换器的两个输入端短接后接到参考电压负端。

(2) A/D增益校准:A/D转换器的两个输入端分别接至参考电压的正负端。

(3) 通道1(或2)调零校准:A/D转换器的两个输入端短接后接输入的负端。

(4) 通道1(或2)正常进行A/D转换:A/D转换器的两个输入端分别接至输入的正负端。

其实前三步是完成自校准过程,最后一步是由自校准过程转到正常工作状态。对于普通的A/D转换器件,要完成自校准过程需要扩展电路,图3中的S1、S2、S3的功能可以由模拟开关来实现。不过,采用带自校准功能模块的A/D转换器无疑将更方便、更简洁。美国MAXIM公司的MAX110/111就是采用了内部自动校准技术的A/D转换器件。下面就对MAX111的使用进行介绍。

MAX111片内有2个模拟量输入通道,A/D转换的分辨率可达到14位二进制数 并可用命令字设定为14位、13位或12位。该芯片的自校准功能是通过 3个校准命令字分别对片内A/D转换器进行调零校准、对通道增益参照基准电压进行校准、对2个模拟通道调零校准来实现的,通过这三方面的校准可消除由时漂和温漂引起的误差,因而可以达到很高的精度。

MAX111的命令字字长为16位 由CPU按SPI或QSPI串行通信协议传送给MAX111芯片,命令字格式见表1。表1中,CONV4、CONV3、CONV2 、CONV1为转换时间控制位;DV4、DV2用于设定对时钟的分频数,以把时钟频率分频为超采样频率;PDX=1时,关闭RC振荡器;PD=1时,关闭模拟电路部分电源,芯片处于省电模式。NO-OP、CHS、CAL、NUL四位用于校准和A/D转换, 这四位逻辑电平与MAX111内部操作的对应关系如表2所列。

表1 MAx111的命令字格式

15141312111098NO-OPNUNUCONV4CONV3CONV2CONV1DV476543210DV2NUNUCHSCALNULPDxPD

表2 控制字与内部功能的对应关系表

CALNULCHSNO-OPMAx111内部操作0001选择通道1作为A/D转换输入(见图3d)0011选择通道2作为A/D转换输入(见图3d)0101通道1调零校准(见图3c)0111通道2调零校准(见图3c)11 1A/D调零(见图3a)10 1A/D增益校准(见图3b) 0禁止A/D转换

MAX111的自校准过程要经过三步,其方法是向控制寄存器送控制字。

第一步:D15~D0=1000,000X,X00X,1100,即CAL=1,NUL=1,通过把内部ADC输入端短接至REF-可完成一次偏置校正变换将其变换结果存入零寄存器之后,D12~D9可重新选择。

第二步:D15~D0=1000000XX00X1000,即CAL=1,NUL=0,把零寄存器的内部作为起始值可完成一次增益校准变换,其结果存入校准寄存器。

第三步:D15~D0=1000,000X,XX00,X100,即CAL=0,NUL=1,把内部ADC输入按照选择通道完成一次零偏置变换。

3 应用电路举例

根据前面的介绍和,笔者以51单片机作为CPU,利用TLC4502和MAX111设计出一个可自校准的数据采集系统。其原理图如图4所示。

4 结束语

采用自校准技术的数据采集系统能够很好地克服由温漂、时漂引起的误差,从而大大提高数据采集的精度,因此,该方法特别适合需要实时数据采集的应用场合。

colspan="2" align='right' class="Article_tdbgall">

ATMEL单片闪存MP3解码芯片应用_工科论文 篇三

随着技术的不断进步和市场对MP3播放器新的要求,MP3解决方案也不断推陈出新。特别是最近一年,各家IC公司以眼花缭乱之势推出了从多片到单片SOC的新方案。

ATMEL在上述形势下,于20xx年率先推出了带即插即用U盘功能的单芯片闪存MP3解码器芯片。TLG公司在ATMEL协助下,已成功开发了多款性价比极优的畅销机型。

AT89C51SND1具有以下功能:

MP3硬件解码器

-单独的MP3解码器

-支持48,44.1, 32, 24, 22.05, 16KHz采样频率

-左右声道的音量控制(软件使用31级)

-重低音、中音、高音均衡控制(31级)

-重低环绕声效果

-辅助数据输出

-“CRC错误”和“MPEG帧同步”指示

具有适应市场上不同的DAC的可编程的音频输出接口

-兼容PCM格式

-兼容I2S格式

基于8位C51 MCU核(最大时钟频率20MHz)

内置2304字节RAM

64K字节FLASH程序空间

-FLASH: AT89C51SND1C

-ROM: AT83C51SND1C

4K字节引导闪存(T89C51SND1)

-在系统编程:通过USB,UART和其他存储卡

USB Rev1.1控制器

-“Full speed”数据传输

内置锁相环

-提供MP3,音频时钟

-USB时钟

兼容MultiMediaCard (MMC)卡接口

兼容Atmel DataFlash SPI接口

兼容IDE/ATAPI(硬盘)接口

通道10位AD转换器,8KHz(8位真有效值)

-电池电压监视

-软件控制的录音

超过44个可用的通用I/O口:

-4位可中断的键盘口,可组成4xn矩阵键盘

-软件编程的Smartmedia接口

两个标准的16位的定时/记数器

硬件看门狗

带有波特率发生器的标准通用异步串口

主从I2C控制器

主从SPI控制器

电源管理模块

-上位复位

-软件可编程MCU时钟

-空闲、掉电模式

工作范围:

-在25C, 3V, 10%, 典型操作时消耗电流25mA

-工作温度范围-40C - +85C

典型应用

·MP3播放器

·PDA,数码相机,MP3移动电话

·汽车多媒体MP3

·家庭多媒体MP3

ATMEL单片闪存MP3解码芯片的优点

·集成USB,MMC的嵌入式C51非常小的系统软件功能齐全带USB功能的MP3播放器仅需15K字节固件代码。

·有44通用I/O口的嵌入式C51NAND Flash, SSFDC, I2C, SPI和IDE多种扩展功能接口容易适应多种应用场合(Flash/CD/HDD播放器,汽车/旅行/组合音响...)。

·硬件MP3解码器和硬件接口控制器非常低的工作电流:25mA@(128Kbps,48KHz采样率,16MHz时钟C51 x1模式,3V, 25C)。

·可以通过USB进行固件升级的flash版本通过网页下载音乐和固件系统引导或者用户特殊引导的E2PROM。

·低成本的掩模ROM版本:64K 80C51 + MP3解码器 + USB!

·提供廉价的开发工具和不需要软件授权费用。

·提供绝大部分的程序C51代码,给用户充分发挥的空间。

·内置2304字节的RAM,方便用户增加复杂的功能。

·内置程序存储器和多种固件加密方式,保护用户独有创新的知识版权。

·需要很少的器件SND1,DC-DC,音频DAC和存储器,可以做到很小的空间内,适应现代MP3的纤小而功能全面的要求。

ATMEL单片闪存MP3解码芯片典型应用的硬件结构

我们使用ATMEL单片闪存MP3解码芯片设计一个市场上最流行的MP3播放器,具有中文LCD显示,即插即用而且可以当U盘使用,内置128M字节NAND闪存,使用一节AAA(7号)电池,有录音、复读和电池电量指示。

硬件框图略(详见《单片机天地》20xx.10)

1.AAA电池通过DC-DC电路从1.5V转换到3V提供给MCU、DAC、耳机放大器、LCD模块、NAND闪存、录音前置放大器等电路电源。

2.MCU在通过键盘和LCD液晶显示屏和用户进行交流,接收用户的指令并从LCD液晶显示屏中将用户指令执行的结果显示出来。如:a用户按播放键要求播放MP3音乐时,MCU读NAND闪存的数据。如果有MP3歌曲在闪存上,MCU读MP3文件,并且将MP3的歌名显示在LCD液晶显示屏上;如果没有MP3歌曲在闪存上,MCU显示没有的歌曲的信息在LCD液晶显示屏上,如果还有别的问题也显示在LCD液晶显示屏上。

3.如果用户把MP3播放器连接到电脑(包括使用MICROSOFT WINDOWS、UNIT、LINUx、MAC OS)中,MCU识别到用户读写NAND闪存要求时,根据电脑的指令对NAND闪存进行读写,并且及时将状态显示在LCD液晶显示屏上。

4.当用户进行录音时,MCU将麦克风和麦克风前置放大电路的电源打开,将其他无关的电路电源切断,防止对录音产生干扰,经过放大的麦克风声音经过MCU集成的A/D转换器将模拟转换成数字,然后MCU将该数字存储到HAND闪存上,MCU按照一定的频率周而复始的重复上述过程,直到用户要求录音停止或HAND闪存用完。

5.当用户要求播放MP3音乐时,如果有MP3歌曲在闪存上,MCU将一段的MP3歌曲的数字数据从HAND闪存读到MCU集成的MP3解码器中,并且根据MP3数据的格式和用户的要求设置好MP3解码器的参数,MP3数据通过MP3解码器解码后变成WAV格式的数字,该按照用户设定的外部A/D转换器格式通过音频接口输出的外部A/D转换器,外部A/d转换器将WAV格式的数字转换为人耳朵可以接受的模拟并且通过耳机放大器放大后送到耳机。

ATMEL单片闪存MP3解码芯片典型应用的固件(Firmware)结构图略(详见《单片机天地》20xx.10)

由于系统管理的接口、器件和任务都比较复杂,整个固件系统是复杂的。但是掌握一定的方法消化并运用固件是不困难的。

固件从任务调度的角度来说,分为:

a disp_task.c负责显示任务,定时的更新显示状态。

kbd_task.c负责接收用户的按键请求。

u_task.c负责接收电脑通过USB口发来的命令和数据。

mem_task.c负责存储器的管理工作。

mode_task.c负责模式转换的分配工作,主要是song_task,voice_task,tool_task之间的转换:

song_task.c负责MP3播放工作,voice_task.c负责录音的录和放工作,tool_task.c负责常用工具的管理工作。

各个任务之间是一种协作式多任务方式工作的,每个任务接收系统发出的调度数据,处理相应的工作,如果工作的条件(I/O资源、时间等)满足,就执行相应的工作,否则释放MCU的控制权,等待下次MCU的控制权。

ATMEL单片闪存MP3解码芯片典型应用的软件结构

由于ATMEL单片闪存MP3解码芯片是即插即用的U盘,只有WIN98下需要驱动程序,ATMEL免费提供编译好的版本和用户可修改的版本WIN98驱动程序。

ATMEL单片闪存MP3解码芯片开发平台:

开发板:DVK-04 kit

仿真器:CEIBO FE-51SND

固件(Firmware)编译器:Keil C51 V7.0+

固件(

用单片机实现SRAM工艺FPGA的加密应用_工科论文 篇四

摘要:首先对采用SRAM工艺的FPGA的保密性和加密方法进行原理,然后提出一种实用的采用单片机产生长伪随机码实现加密的方法,并详细介绍具体的电路和程序。

关键词:静态随机存储器(SRAM) 现场可编程门阵列(FPGA) 加密

在现代电子系统设计中,由于可编程逻辑器件的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。由于大规模高密度可编程逻辑器件多采用SRAM工艺,要求每次上电,对FPGA器件进行重配置,这就使得可以通过监视配置的位数据流,进行克隆设计。因此,在关键、核心设备中,必须采用加密技术保护设计者的知识产权。

1 基于SRAM工艺FPGA的保密性问题

通常,采用SRAM工艺的FPGA芯片的的配置方法主要有三种:由计算机通过下载电缆配置、用专用配置芯片(如Altera公司的EPCx系列芯片)配置、采用存储器加微控制器的方法配置。第一种方法适合调试设计时要用,第二种和第三种在实际产品中使用较多。第二种方法的优点在于电路非常简单,体积较小,适用于不需要频繁升级的产品;第三种方法的优点在于成本较低,升级性能好。

以上几种方法在系统加电时,都需要将配置的比特流数据按照确定的时序写入SRAM工艺的FPGA。因此,采用一定的电路对配置FPGA的数据引脚进行采样,即可得到配置数据流信息。利用记录下来的配置数据可对另一块FPGA芯片进行配置,就实现了对FPGA内部设计电路的克隆。典型的克隆方法见图1。

2 对SRAM工艺FPGA进行有效加密的方法

由于SRAM工艺的FPGA上电时的配置数据是可以被复制的,因此单独的一块FPGA芯片是无法实现有效加密的。FPGA芯片供应商对位数据流的定义是不公开的,因此无法通过外部的配置数据流信息推测内部电路。也就是说,通过对FPGA配置引脚的数据进行采样可得到配置信息。但也不能知道内部电路结构。如果在配置完成后使FPGA处于非工作状态,利用另外一块保密性较强的CPU产生验证信息与FPGA进行通信,仅在验证成功的情况下使能FPGA正常工作,则能有效地对设计进行加密。具体电路结构见图2。

系统加电时,由单片机对SRAM工艺的FPGA进行配置。配置完成时,FPGA内部功能块的使能端为低,不能正常工作。此时,单片机判断到配置完成后,将ASET置为高电平,使能FPGA内的伪码发生电路工作;同时,单片机产生一个伪码验证信息,在FPGA中将两路伪码进行比较,两者完全匹配时,FPGA内部电路正常工作,否则不能正常工作。加密电路主要利用了配置完成后处于空闲状态的单片机和FPGA内部分逻辑单元,没有增加硬件成本。

由上述讨论可知,系统的加密能力主要由CPU的加密能力决定。这就要求CPU的加密算法要足够复杂,使得对验证信息的捕获与识别足够困难。最常见的加密算法就是产生两个伪随机序列发生器:一个位于SRAM工艺的FPGA内;另一个位于CPU内。当两者匹配时,通过验斑点。对PN码有两点要求:一方面,要求伪随机序列的长度足够长,使得要捕获整个序列不太可能;另一方面,伪随机序列的线性复杂度要足够高,使推测伪随机序列的结构不易实现。

通常采用的伪随机码发生器的反馈电路如图3所示。实际中,可采用级数较高的线性反馈移位寄存器来产生伪随机码。如采用40级线性移位寄存器产生的最大序列的周期为2 40=10 12。若将所有伪随机码截获并存储,就需要1000Gb的存储空间;若码速率为50Kbps,捕获时间将长达5555小时;当增加移位寄存器的级数时,所需的存储空间和捕获时间都会呈指数增长,以至于难以实现。采用较为简单的线性反馈电路被推测出反馈结构的可能性较大,因此实际的系统中,除了级数要较多之外,往往通过对多个线性移位寄存器产生的伪码进行特定运算产生长码,以增加所产生伪码的线性复杂度。

3 FPGA内的校验工作电路

在此采用40级线性反馈移位寄存器来产生伪随机码,特征多项式为20000012000005(八进制表示)。其移位寄存器表示形式为:Bin=B23 xOR B21xORB2xORB0

FPGA内工作电路见图4。

在上电之后,单片机将图4中的电路配置在FPGA中。配置完成后,单片机发送的ASET由低电平跳变为高电平,使得FPGA内的PN码产生电路开始工作,并于CPU发送过来的PN码进行比较。比较结果一致就使能USER_DESIGN模块正常工作。其中PLL_BITSYS模块用来发生VERIFY_PN的位同步时钟,采用微分锁相原理实现。各种参考资料都有较多介绍,在此不再详述。

COMPARE_PN模块完成对单片机发送的伪随机码和PNMA_PRODUCER模块产生的伪随机码的比较:当两路相同,输出1,不同时输出0;若两路伪码完全匹配,则恒定输出1,使USER_DESIGN电路正常工作,否则,输出为类似于伪码的,使USER_DESIGN电路不能正常工作。

4 FPGA内的伪随机码产生电路

PNMA_PRODUCER模块和来产生伪随机码,采用移位寄存器实现,具体电路见图5。

LPM_SHIFTREG为移位寄存器模块。移位寄存器ASET端为异步置位端,高电平有效,即ASET为高时,将初值85置入移位寄存器内,LPMSHIFTREG模块的“DIRECTION”设置为“RIGHT”即移位方向为右移。Q表示40位移位寄存器的各个状态,SHIFTIN为串行输入,SHIFTIN为Q0、Q2、Q21、Q23四个状态异或运算的结果。

图4

系统加电时,单片机将ASET置为低电平,经过一个非门,变成高电平使移位寄存器处于置位状态。在配置完成后,单片机将ASET置为高电平,经非门使移位寄存器正常工作。

利用移位寄存器电路产生伪随机码的电路非常简单,反馈逻辑也便于修改。

5 单片机验证伪码的程序

在位寻址区(20H~2FH)定义了字节变量WORD1、WORD2、WORD3、WORD4、WORD5,用来存储移位寄存器的40个状态。其中Q0对应WORD1.0,Q1对应WORD1.1……Q39对应WORD5.7。同时,在位寻址区定义了WORD6、WORD7、WORD8、WORD9,用来进行后面的反馈逻辑计算。

单片机一上电,首先将ASET脚清零,同时,也将PNMA脚清零,将初值55H作为移位寄存器的初始状态,接着完成FPGA的上电配置工作。配置完成后,单片机检测来自FPGA的外部中断CONFDONE。如果配置完成,CONFDONE为高电;否则,为低电平。在检测到CONFDONE为高电平,即配置完成后,单片机将ASET脚置为1,使能FPGA内的伪码发生电路工作,单片机产生伪随机码的流程。配置完成后,首先将Q0输出到PNMA引脚,接着计算反馈逻辑输入,将参与反馈运算的几个状态运算结果存在中间变量MID_VARY中。然后,对各个状态进行右移,为了提高运算效率,使用了带进位C的字节循环右移指令。移位完成后,将MID_VARY存入Q39,再将新的Q0输出到PNMA引脚,程序循环执行产生伪随机码。

单片机核心源程序如下:

CLR ASET ;单片机上电后将ASET位清0

CLR PNMA

MOV WORD1,xx55h

MOV WORD2,xx0

MOV WORD3,xx0

MOV WORD4,xx0

MOV WORD5,xx0;将55H作为移位寄存器的初值PEIZHI:

…… ;进行FPGA的配置工作

JB CONFDONE,PNPRODUCE;根据CONFDONE判断配置是否完成

LJMP PEIZHI ;否则继续配置

PNPRODUCE:SETB ASET ;配置完成后,将ASET脚置1

xMQLOOP:MOV C,Q0

MOV PNMA,C ;将Q0输出到PNMA引脚,作为PN码

MOV C,Q0

MOV WORD6.0,C ;用WORD6单元的0位来存Q0的状态

MOV C,Q2

MOV WORD7.0,C ;用WORD7单元的0位来存Q2的状态

MOV C,Q21

MOV WORD8.0,C ;用WORD8单元的0位来存Q21的状态

MOV C,Q23

MOV WORD9.0,C ;用WORD9单元的0位来存Q23的状态

MOV ACC,WORD6

xRL A,WORD7

xRL A,WORD8

单片机系统中的汉字显示_工科论文 篇五

摘要:需要显示的汉字较多时,单片机系统中的汉字编码非常繁琐。本文介绍一种直接利用PC机的汉字内码作为单片机系统的汉字编码,以简化系统的设计。

关键词:单片机 液晶显示器 29F040 汉字显示

引言

在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字。通常的汉字显示方式是先根据所需要的汉字提取汉字点阵(如16×16点阵),将点阵文件存入ROM,形成新的汉字编码;而在使用时刚需要先根据新的汉字编码组成语句,再由MCU根据新编码提取相应的点阵进行汉字显示。在这种显示方式中,如果使用的流字数量较大或语句较多时,利用汉字的新编码组成语句将是一件十分繁琐而枯燥的工作。针对这种情况,本文提出了一种十分简单的方式——直接利用PC机的汉字内码作为单片机系统的编码。下面以8031单片机系统为例阐述如下:

一、硬件组成

本系统中采用香港精电公司的内置T6963控制器[1]的240128T点阵图形液晶显示器。该显示器1行为240点,能容纳16×16点阵的汉字15个,总列数为128点,能显示8行汉字。为了使用MCU操作可使用1片512KB的存储器(如本系统中的29F040)用来存储全部的国标16×16点阵汉辽、8×16的ASCII码点阵数据以及汉字语句编码数据。为了降低成本和减小体积,对于速度要求不是很高的场合也可采用大容量的串行数据存储器,如AT45DB041B。具体的硬件控制电路如图1所示(与汉字显示无关的电路略)。

由于29F040的容量为512KB,而5031微控制器只能管理64KB的数据间,所以可将29F040分成16页,每页32KB,占单片机系统数据空间的8000H~0FFFFH(剩余32KB为单片机系统的其他存储器和外设)。页码由单片机的P1.0~P1.3选择。液晶显示器的地址为7FF8H~7FF9H。

二、汉字显示原理及软件设计

UCDOS软件中的文件HZK16和文件ASC16分别为16×16的国标汉字点阵文件和8×16的ASCII码点阵文件,以二进制格式存储。在文件HZK16中,按汉字区位码从小到大依次存有国标区位码表中的所有汉字,每个汉字占用32个字节,每个区为94个汉字。在文件ASC16中按ASCII码从小到大依次存有8×16的ASCII码点阵,每个ASCII码占用16个字节。

在PC机的文本文件中,汉字是以机内码的形式存储的,每个汉字占用两个字节:第一个字节为区码,为了与ASCII码区别,范围从十六进制的0A1H开始(小于80H的为ASCII码字符),对应区位码中区码的第一区;第二个字节为位码,范围也是从0A1H开始,对应某区中的第一个位码。这样,将汉字机内码减去0A0AH就得该汉字的区位码。

例如汉字“房”的机内码为十六进制的“B7BF”,其中“B7”表示区码,“BF”表示位码。所以“房”的区位码为0B7BFH-0A0A0H=171FH。将区码和位码分别转换为十进制得汉字“房”的区位码为“2331”,即“房”的点阵位于第23区的第31个字的位置,相当于在文件HZK16中的位置为第32×[(23-1) ×94+(31-1)]=67136B以后的32个字节为“房”的显示点阵。

在本单片机系统中,起始地址的高4位为页号,送P1口,低15位为数据区地址,送指针DPTR。利用“MOVx”指令连续取32个字节送LCD的相应位置,就能实现正确的汉字显示。

ASCII码的显示与汉字的显示基本原理相同。在文件ASC16中不存在机内码的问题,其显示点阵直接按ASCII码从小到大依次排列,只是每个ASCII码在文本文件中只占1个字节且小于80H,而且ASCII码为8×16点阵,所以在ASCII16文件中,每个ASCII码的点阵也只占16个字节。

首先提取16×16的国标汉字点阵和8×16的ASCII码点阵(如UCDOS软件中的HZK16和ASC16)并将其直接写入29F040。其中HZK16(共256KB)点0~7页。为了便于编程,ASC16虽然只有4KB,也单独占用第8页。其余剩下的空间用来存储汉字语句的编码。

由于240×128点阵的LED显示器每个只能显示15个汉字(16×16点阵汉字),即30个字节。所以可将需要显示的语句按30个字节为1行进行编写,不足30个字符的则补空格。在PC机上进行录入时,每行30个字符再加上回车键和换行符,实占32个字符。所录入的语句以纯文本形式存盘,再将该文本文件以二进制的形式写入29F040的第9页。那么,以后根据需要显示的语句行号便可以进行正确的显示。此,作者推出荐使用DOS版本的WPS软件的“编辑非文收文件”功能,它能清楚地显示每行是否有30个字符。

根据以上原则,显示1行汉字的具体程序框图如图2所示。

为方便读者,将已经在实际应用中中通过的汇编子程序列出如下(关于LCD控制器T6963的用户法请见参考文献1)。

LCDCOM EQU 7FF9H

LCDDAT EQU 7FF8H

;显示1行汉字子程序

;汉字语句位置编号DPTR;行号:R6 PRHZ:MOV 24H,DPH

MOV 25H,DPL

PUSH DPH

PUSH DPL

MOV A,DPH ;计算页号

RR A

RR A

ADD A,xx9;从第9区开始存放每行字符的机内码

ORL A,xx0F0H

MOV P1,A

LCALL RL245 ;行号乘以32(每行32个字符)

SETB 24H,7 ;数据地址位于8000H~0FFFFH

MOV DPH,24H

MOV DPL,25H

MOV R0,xx0E0H

MOV R7,xx30 ;连续取出30个字符至0E0H内部数据存储器

PRHZ3:MOVx A,@DPTR

MOV @R0,A

INC R0

INC DPTR

DJNZ R7,PRHZ3

MOV 1DH,xx30 ;显示0E0H后的一行字符(共30个)

MOV R5,xx0 ;当前列R5

MOV R0,xx0E0H

MOV A,xx7FH ;是否为ASCII码?

CLR C

SUBB A,@R0

JC DPHZ1

MOV 26H,@R0

INC R0

MOV 24H,R6 ;ASCII码显示

MOV 25H,R5

LCALL PRASCII

SJMP PRHZ4

DPHZ1:MOV 24H,@R0 ;是汉字则将机内码送24H25H

INC R0

MOV 25H,@R0

INC R0

MOV A,25H

CLR C

SUBB A,xx0A1H ;机内码转换为二进制的区码和位码

MOV 25H,A

MOV A,24H

CLR C

SUBB A,xx0A1H

LCALLDPONHZ ;显示1个汉字

DEC 1DH

INC R5

PRHZ4:INC R5

DJNZ 1DH,PRHZ5

POP DPL

POP DPH

RET

PR0:MOV DPTR,xxLCDCOM ;读状态

MOVx A,@DPTR

RET

PR01:LCALLPR0 ;读、写一数据前

JNB ACC.0,PR01

JNB ACC.1,PR01

RET

PR02:LCALL PR0 ;连续读前

JNB ACC.2,PR02

RET

PR03:LCALL PR0 ;连续写前

JNB ACC.3,PR02

RET

PR1:LCALL PR01 ;双字节参数R2,R3

MOV A,R2

LCALL PR14

多CPU单片机系统设计在社区安防系统中的应用_工科论文 篇六

摘要:本文较为详细地介绍基于多CPU的单片机系统设计思想,并给出它在社区安全防范系统中的应用。

关键词:多CPU 安全防范 系统设计

概述

随着人们生活水平的提高和科学技术的发展,安全防范的问题引起了越来越多的关注。人们在承受现代文明所带来的高效率、快节奏压力的同时,都希望能拥有一个安全、舒适的家庭环境。因此,越来越多的安防产品应运而生,尤其是蓬勃发展的现代化社区物业管理,通过监控网络把家庭和社区值班室紧密地联系起来,给人们的生活带来了极大的方便。但是,有些社区监控网络并不能完全履行其职责,存在一定的安全隐患。主要原因是目前大多数的监控节点都是采用1个CPU完成所有的功能,包括扫描各传输器模块状态、信息处理、数据显示、、与上位机通信等等。这无疑给此CPU带来了很大的压力:一旦出现故障,使得此单片机不能正常工作,则该监控节点将完全瘫痪,信息将得不到有效的处理。另外,在一些实时性要求较高的多任务系统中,单CPU结构也将显得力不从心。那么,能否找到一种既简单又经济的解决办法,把目前服务器中较为流行的多CPU并行处理的设计思想融入到社区监控网络中来呢?答案是肯定的。随着单片机技术的发展,单片机的价格在不断下降,其价格甚至比一些常用的接口芯片还要低,这就使多CPU的单片机系统的成本大大降低。此外,由于采用多CPU的设计思想,将使系统在并行处理和实时采集数据方面具有明显的优势,能极大地提高系统的稳定性和可靠性。尤其是对一些功能稍微复杂一点的系统,多CPU系统设计方法将更能显示出它的优越性。那么,如何实现多CPU的单片机系统设计呢?本文将在这方面进行一些有益的探索。

一、多CPU系统的设计原理

顾名思义,多CPU系统就是在1个系统中含有多个CPU。每个CPU地处理1个或少量的事务,然后通信某种方法,控制数据的合理流动,以完成设计要求的系统。其典型结构如图1所示。

从图1中可以看到,多CPU系统中一个非常重要的问题,是如何解决好各CPU之间数据的合理流动问题,以下是几种常用的方法。

1.利用双口RAM实现CPU之间的通信

双口RAM是一种高速的并行传输芯片,是实现CPU之间通信的一种简便有效的方法。常用的CMOS双口RAM有IDT7132、IDT7142等型号。IDT7132和6116类似,都是CMOS静态RAM,存储容量均为2KB。不同点在于IDT7132有两套I/O口,并有一套竞争裁决电路。因此,IDT7132内部的2KB存储器可以通过左右两边的任一组I/O口进行全异步的存储器读写操作,能方便地实现CPU之间的数据交换。采用双口RAM实现多CPU系统的示意图如图2所示。

利用这种方法可以实现数据的高速传输。CPU对IDT7132的读写时间小于120ns,通常为几十ns。当工作电源为+5V时,其读写的最大功耗为325mW,而在维持工作时最大功耗仅为5mW。另外,由于双口RAM是一种通用芯片,因此,它在选择与CPU接口时具有较大的灵活性。不过这种方法也会增加电路设计的难度和成本。

2.利用共享内存的方法实现CPU之间的通信

这种方法与前面的方法类似。所不同的是,前一种方法是利用双口RAM的一套竞争裁决电路实现对RAM的访问,而这里是利用不同的时序实现共享内存的。LON网络中的Neuron节点芯片设计都是采用这种方法的,其典型结构如图3所示。

在Neuron芯片中,每个CPU最小周期等于3个系统周期;每个系统时钟周期等于2个输入钟周期;3个CPU的最小周期分别间隔1个系统钟周期。这样,每个CPU在1个指令周期内部能访问存储区和ALU一次。系统对3个CPU采用了管道技术,在不影响性能的情况下降低硬件的需求。3个CPU可并行工作,不会造成耗时中断和上下文切换。

利用这种方法也能够实现CPU之间数据的高速传输,但是,它必须制成专用芯片,把CPU和RAM等元件封装在一起。因此,这种方法比较适合于特定的工业场合。

3.利用总线的方法实现CPU之间的通信

随着总线技术的发展,使得多主多从的单片机系统设计变得越来越简单。设计者只须通过接口芯片就可以将CPU挂到总线上去,实现CPU之间的通信,其典型的结构如图4所示。

这种方法具有结构简单、设计灵活、经济实惠的特点。在系统数据量不大,速度要求不是很高的情况下,应该是一种很好的选择方法。值得一提的是,在这种方法中,I2C总线以其结构简单、设计灵活、易于扩展和开发周期短的特点,越来越受到设计者的青睐。尤其目前很多单片机都带有I2C接口,不用接口芯片就中以把CPU直接挂到总线上,使得电路设计更加简单、经济。本文的多CPU系统也是基于I2C总线的一种安防系统。

二、基于多CPU下的社区安防系统的设计方法

1.系统的拓扑结构

系统的拓扑图如图5所示。该系统实际上是一个3级分布式测控系统。第1级由1台安装在社会值班室的PC机组成,是整个系统的核心部分。它主要负责向各家庭数据终端(HDT)发出各种命令,接收返回信息,并进行数据库管理和报表统计等工作。第2级由安装在各家庭的家庭数据终端组成,相当于1个监控节点。它主要负责接收PC机发来的命令和向PC机发送各检测模块的检测信息,并进行显示、、存储等信息的处理。第3级由安装在家庭各房间的各种模块组成,包括烟感、红外等模块,水表、电表等数字模块和家电控制的控制模块。它主要负责检测和控制各控制对象的状态。

2.家庭数据终端(HDT)的功能

家庭数据终端是安装在家庭内部的1个监控节点,主要执行以下任务:(1)接收PC机发来的命令;(2)信息显示;(3)键盘扫描;(4)声光;(5)生成家庭状态字节,并向PC机发送各种状态信息;(6)信息储存,即“黑匣子”功能;(7)扫描各传感器模块状态。另外,HDT还应个有可添加扩展模块的功能。这些功能当然可以用1个CPU实现,但将给CPU带来较大的工作量,降低了系统的安全性和可靠性。因此,我们采用多CPU的思想进行系统的设计。

根据HDT的功能特点,将任务分成3个部分,分别由3个CPU来完成。各CPU之间采用I2C总线进行通信,其结构如图6所示。CPU-1专门用于与PC机的通信,包括:(1)接收PC机发来的命令,并传送给其他CPU;(2)生成家庭状态字节,向PC机返回信息;(3)进行声光。CPU-2专门用于与第3级各模块的通信,包括:(1)扫描各传感器模块的状态,并及时通知其他CPU;(2)接收其他CPU传送过来的命令,对有关控制对象进行操作;(3)向AT24C64中存储记录,包括类型和时间,实现“黑匣子”功能。CPU-3专门用于信息显示和键盘扫描,包括:(1)接收PCF8583的数据,显示时间;(2)接收CPU-2传送来的信息,显示类型或故障位置;(3)扫描键盘,并向其他CPU发送命令,完成布防、撤防、修改等操作功能。在3个CPU之间,采用I2C总线进行连接;CPU选用Philips公司生产的P87LPC76x芯片。P87LPC76x芯片是一种20脚封装的单片机,适合于许多要求高集成、低成本的场合,具有较高的性能价格比,是Philips小型封装系列中的一员。它在提供很多新特征的同时,提供了I2C总线的通信接口。另外,它还提供了3个寄存器和中断控制位以实现对I2C总线的操作,因此,可以很容易地利用它的I2C接口实现多CPU的设计思想。

结束语

随着单片机技术的迅速发展,封装小、功能强、价格低的单片机越来越多地被开发出来。单片机所执行的功能也会越来越专一,越来越简单。这将为多CPU系统的设计提供一个坚实的基础,也必然会提高系统的安全性和可靠性。

colspan="2" align='right' class="Article_tdbgall">

C8051F与80C51系列单片机的不同初始化_工科论文 篇七

摘要:C8051F系列单片机是Cygnal公司出品的高速单片机,它与80C51系列单片机指令集兼容,但比后者增加了许多资源,从而为嵌入式系统的开发提供了极大的方便。文中介绍了这两者在结构上的差异以及编程时应注意的问题,并给出了它们较完整的初始化程序。

关键词:特殊功能寄存器SDR;先权交叉开关译码器;交叉开关控制寄存器

1 引言

近30年来,世界各主要电子元器件生产厂商纷纷推出自己各具特色的单片机产品。而在百花齐放的单片机家族中,80C5l系列一直扮演着重要的角色。该单片机在教学、科研等领域已经成为入门单片机并成为单片机应用的首选,该产品以其易读性好、扩展能力强而著称,从而成为广大从事单片机开发者最熟悉、最具代表的机型。但人们往往在熟悉80C51单片机之后又选择别的系列单片机开发产品,这是因为80C51具有运算速度慢、功耗大、内部资源少等不足,所以限制了其使用范围。Cygnal公司推出的C805lF系列单片机既弥补了80C51系列的不足,又与MCS—5l指令集兼容。C805lFxxx系列单片机是完全集成的混合系统级芯片,具有与8051指令集完全兼容的CIP-51内核。它在单片内集成了构成一个单片机数据采集或控制系统所需要的几乎所有模拟和数字外设及其它功能部件。这些外设或功能部件包括:ADC、可编程增益放大器、DAC、电压比较器、电压基准、温度传感器、SMBus/I2C、UART、SPI、定时器、可编程计数器/定时器阵列(PCA)、内部振荡器、看门狗定时器及电源监视器等。这些外设部件的高集成度为设计小体积、低功耗、高可靠性、高性能的单片机应用系统提供了很大的方便,同时也可以使整体系统的成本大大降低。

熟悉MCS—51系列单片机的工程技术人员可以很容易地掌握C8051Fxxx的应用技术并进行软件移植。但不能将8051的程序直接应用于C8051F单片机中,因为这两种系列的单片机内部资源存在较大的差异,因此,完全照搬、移植是行不通的,必须经过“改良”(主要是初始化控制字的改写)才能正确运行。本文以C8051Fxxx系列单片机中资源最丰富、功能最多、运算速度最快(达到100MIPS)的C8051F12X系列为例,介绍其与80C51的主要不同之处以及开发时应注意的问题,同时给出了其完整的、且经过运行验证的源程序。

图1

2 结构差异

C8051F12X单片机与8051单片机在结构上的最大区别有四点:外引脚采用交叉开关配置;系统时钟源多样且控制灵活;内部特殊功能寄存器SFR种类数量增多;具有基于JTAG接口的在系统调试功能。下面主要介绍前三部分内容。

2.1 可编程数字I/O和交叉开关

可编程数字I/O和交叉开关是一个大的数字开关网络,它允许将内部数字系统资源分配给端口I/O引脚。与具有标准复用数字I/O的微控制器不同,这种结构支持所有的功能组合。可通过设置交叉开关控制寄存器(XBR2、XBR1和XBR0)将片内的计数器/定时器、串行总线、硬件中断、ADC转换启动输入、比较器输出以及微控制器内部的其它数字配置为在端口I/O引脚出现,这就使用户可以根据自己的特定应用选择通用端口I/O和需数字资源的组合。而不同于8051单片机的引脚基本是固定分配的。C8051F系列通过优先权交叉开关译码器来控制数字开关网络,优先权交叉开关译码器的值由交叉开关控制寄存器(XBR2、XBR1和XBR0)来配置,如图1所示。优先权交叉开关译码器按优先权顺序从P0.0开始,可以一直分配到P3.7,它为数字外设所分配的端口引脚的优先顺序是按系统默认的顺序,即:串行通信UART0具有最高优先级,TX0和RX0分别被分配到P0.0和P0.1 串行通信SPI具有次高优先级,详细的端口引脚的优先分配顺序表请参考有关资料。如果不选择某个资源,则优先顺序表中的下一个功能将填充这个位置。图2所示是三个交叉开关控制寄存器(XBR2、XBR1和XBR0)中各位的含义,它们的复位值均为00000000。

当交叉开关配置寄存器XBR2、XBR1和XBR0中外设的对应位被设置成逻辑1时,交叉开关将端口引脚分配给外设;如果一个数字外设的允许位未被设置成逻辑1,则其端口不能通过引脚访问。未被设置的交叉开关分配端口可当作标准连续的I/O口使用。在系统复位后,默认的寄存器XBR2、XBR1和XBR0的值均为零,即所有I/O引脚被强迫成输入口(带上拉),且不与内部资源连通。这样,没有输出的系统显然无意义,所以,无论如何都应置XBR2的第6位为1,使交叉开关允许以便引出输出。

2.2 系统时钟源

C8051F12X的系统时钟可以取自内部振荡电路、外部振荡电路(包括晶振,RC振荡,陶瓷谐振电路)和锁相环PLL电路,锁相环PLL电路的输入源可选择来自内部振荡电路,也可以选择外部振荡电路,通过PLL的倍频作用可以提高时钟频率。C8051F12X系统内的振荡电路如图3所示。要产生所需的系统时钟,通常要设置8个寄存器:OSCXIN、OSCICN、OSCICL、CLKSEL、PLLOCN、PLLOFLT、PLL0DIV、PLL0MUL,其中后4个是有关PLL的寄存器。

2.3 特殊功能寄存器SFR结构

与MCS—51的SFR不同的是,C8051F12X的SFR由图4所示的多页组成,共有5页,页号为0、1、2、3、15。各个SFR分布在不同的页里,像XBR0、XBR1、XBR2、OSCXIN、OSCICN、LLOCN、PLLOFLT等定位在15页里,定时器有关的寄存器TCON、TMOD、TH、TL等定位在0页里。在读写各个SFR之前,必须先切换到相应的页,可使用“MOV SFRPAGE,#页号”指令来进行切换。各个SFR所在哪些页,请查看相关的资料。

3 应用举例

该例中要用的引出脚有一个串行异步通信UART和一个外中断INT0。按照系统默认的优先顺序,P0口被内部资源引出而占用,其中P0.0为UART通信的RX端, P0.1为UART通信的TX端,P0.3为外中断INT0输入引脚,其它端口为通用I/O口。P1口为具有上拉电阻的输入口,P2口为通用推挽的输出口,P3口也是通用推挽输出口。具体如下:

$include(c8051f120.inc)

ORG 00H

JMP RESET ;程序入口

ORG 03H

JMP EX_INT ;外中断INT0入口

ORG 0BH

JMP TIME_0 ;定时器0中断入口

ORG 100H

RESETMOV, WDTCN,#0DEH 禁止看门狗

MOV WDTCN,#0ADH

MOV SFRPAGE, #0FH ;取特殊功能寄存器的15页

MOV OSCXCN,#01100111B ;外用时钟源选择晶体,频率范围在30MHz以下

ORL PLL0CN,#00000111B ;用外部晶振作为PLL的源

MOV PLL0DIV,#00000001B ;PLL的输入除系数1(复位后默认)

MOV PLL0MUL,#00000010B ;PLL的倍频系数为2(25MHz晶振)

MOV PLL0FLT,#00010001B ;PLL的滤波参数(复位后默认为00110001B)

MOV R4,#0 ;延迟一会儿,使晶振稳定

NNOP1:MOV R5,#0

DJNZ R5,$

DJNZ R4,NNOP1

MOV CLKSEL,#00000010B ;系统时钟源用晶振再经锁相环PLL二倍频,产生50MHz的时钟

ANL OSCICN,#01111111B ;允许外部振荡,禁止内部振荡

MOV XBR2;#

一种基于单片机控制的数字视频混合器_工科论文 篇八

摘要:介绍一种基于AT89C8252单片机的数字视频混合器的硬件构成和软件设计。实际应用表明,该数字视频混合器操作方式简单灵活、可靠性高,有较好的市场价值。

关键词:AT89C8252单片机 视频混合器

近几年,数字电视技术发展很快,数字视频混合器可以将两路或多数数字视频按照一定的算法混合成一路或多路数字视频。作为数字视频的基本处理单元,该混合器在数字电视节目的编辑制作和播控传输系统中具有举足轻重的作用。

本文介绍的基于单片机控制的数字视频键控混合器具有以下特点:内含两级串联的键控混合器,可以在主中键两入两路附加数字,如时钟台标或各种字幕标识;可以远程遥控,也可现场按键控制;可以随时更新和保存系统配置,改变系统功能和技术参数;该系统稳定可靠,对掉电、死机等异常现象有自复位能力。

整个系统包括硬件和软件两部分,硬件包括数字混合部分和单片机控制部分。

图1 数字混合硬件框图

1 数字混合部分

输入的数字有背景、键控和填充,输出三路数字和一路模拟。数字混合部分的硬件框图如力1。

串行数字视频输入处理器GS9020A专门设计来接收SMPTE 259M的串行数字。它具有错误检测和处理能力,保证了串行数据的完整性;可以直接与GS9035A或者GS9025A连接,提供8位并行口和I2C串行口与外部微处理器通信。本系统通过I2C总线读取、配置GS9020A状态。

TMS2081是数字视频处理器,以GBR、YCB、CR或者彩色序列格式,按比例混合数字视频。α通道控制下,按M=(α)V1+(1-α)V2(0≤α≤1)完成同时淡出及淡入功能。TMS2081提供微处理器I/O口。

错误检测和处理协处理器GS9021根据SMPTERP-165执行错误检测和处理,可与GS9002、GS9022或者GS9032串行数字编码器接口,产生行同步、场消隐和场序列。提供8位并行口和I2C串行口与外部微处理器通信。本系统通过I2C读取、配置GS9021状态。

CMOS芯片SAA7121是数字视频编码器,将数字亮度和色差同时编码成CVBS和S-视频模拟,也支持NTSC-M、PAL B/G和子标准。输入可以是YCBCR(CCIR 656)或者MPEG解码数据;对Y、C和CVBS有三个数据转换器。基本编码函数由副载波生成、彩色调制和同步内插组成。SAA7121提供I2C总线接口,可按主动方式或从动方式工作。本系统通过I2C接口配置SAA7121。

2 单片机控制部分

基于单片机的控制电路如图2所示。其完成如下功能:与PC串行通信,传输命令和数据;通过8位并行接口读写TMC2801;通过I2C总线读写SAA7121、GS9020A和GS9021;保存、更新系统配置数据;键控功能,按键完成显示或不显示附加数字。

2.1 AT89S8252单片机

AT89S8252是ATMEL公司的8位CMOS单片机,与MCS-51系列兼容。主要特片:8K字节的FLASH程序存储器(ROM),2K字节的片内EEPROM,256字节的内部数据存储器(RAM),三个16位的定时/计数器,提供SPI串行接口和看门狗定时器。

选用AT89S8252的原因是:片内EEPROM可以保存数据且掉电不丢失;看门狗具有掉电、死机等异常现象自复位能力,可以提高混合器的稳定性;与MCS-51系列兼容。

2.2 通信接口

通信接口提供RS-485标准,接口电路主要由MAx488(RS-485接收发送器)构成。RS-485标准不仅与RS-232兼容,而且适合远距离传输数据。

图2 单片机控制电路

3 软件设计

根据单片机控制功能的要求,软件有主程序和串口中断子程序两部分,主程序流程图如图3所示。编程侧重点是:混合器初始化;键控功能;对PC命令的判断和执行;更新系统配置及对数据的保存。

3.1 访问EEPROM和看门狗设置

AT89S8252有看门狗和EEPROM控制寄存器WMCON。

;写一字节

SETB WMCON.3 ;访问EEPROM使能

SETB WMCON.4 ;写EEPROM使能

MOVx @DPTR,A ;写一字节,寻址范围0000H~07FFH

JNB WMCON.1$ ;WMCON.1,准备下一次访问

CLR WMCON.4

CLR WMCON.3 ;MOVx指令可以访问外部数据存储器

从EEPROM读字节与写过程相似。

WMCON.0是看门狗使能位,WMCON.1是看门狗复位位(单片机复位后为1),WMCON.5~7可以设定看门狗的时钟周期(16~2048ms)。如果在看门狗的时钟周期内,没有设置看门狗复位位或者没有关闭看门狗,内部复位会复位单片机。

3.2 与PC串行通信

PC与单片机通信的数据格式有三种:命令长度+命令号;命令长度+命令号+读数据字节数N+首地址+校验和;命令长度+命令号+写数字字节数N+首地址+数据1+…+数据N+校验和。命令长度、命令号、读u20889写数据字节数N、首地址和数据n(1≤n≤N)都是一字节,用16进制表示。命令长度整个命令格式字节数。校验和=命令号+读数据字节数N+首地址,或者校验和=命令中+写数据字节数N+首地址+数据1+…+数据N。例如:显示附加数字1并且1号LED亮,PC发送0x02 0x01;读1号TMC2081的00~03控制存储器,PC发送0x5 0xB 0x4 0x0 0xF;写0x0 0x21 0x1D 0x0到SAA7121的27~2A存储器,PC发送0x9 0xC 0x4 0x27 0x0 0x21 0x1D 0x0 0x13。

图3 主程序流程图

在单片机的串口中断子程序中,根据接收到的命令长度判断是否接收到一个完整的命令格式。如果接收到一个完整命令格式就设置标志位FLG1(如图3)根据这个标志位进入主程序中处理PC命令的程序,由接收到的命令号识别各种PC发送命令。例如,1号命令是显示附加数字1并且点亮1号LED,0xC号命令是写SAA7121存储器等。依据接收到的校验和,可以判断接收PC数据的正确性,防止对混合器的错误操作。

用VB6.0设计软件,读写PC的串行口。本文波特率为9600bps,单片机的定时器/计数器2(T2)设定在波特率发生器的工作方式。

3.3 访问TMC2081

TMC2081提供微处理器I/O口,包括读/写控制R/W、片选CS、寄存器选择控制A、数据I/O口D[7:0]。通过微处理器I/O口可以访问TMC2081的内部控制存储器,完成对芯片的配置。读写时序如图4。

参数tPWLCS、tSA、tSD、tHD、tPWHCS、tHA、tDOM的最短要求时间都是ns级。用AT89S8252软件编程可以模拟该端口的读写时序配置TMC2081。

本系统用到两片TMC2081,标记为TMC2081_0和TMC2081_1。AT89S8252的P3.6连TMC2081_0/1的R/W,P2.3连TMC2081_0的CS,P2.4连TMC2081_1的CS,P2[2:0]连TMC2081_0/1的A[2:0],P0[7:0]连TMC2081_0/1的D[7:0](如图2)。读写TMC2081_0的A通道存储器的程序如下:

MC2081_0 EQU P2.3

TMC2081_1 EQU P2.4

R_NW EQU P3.6

MOV A,xx00H

LCALL WADDRTMC2081_0 ;选中A通道控制寄存器

MOV A,xx01H

LCALL WDATMC2081_0 ;写01到A通道控制寄存器

MOV A,xx00H

LCALL WADDRTMC2081_0 ;选中A通道控制寄存器

LCALL RDATMC2081_0 ;读A通道控制寄存器的内容

WADDRTMC2081_0:写控制寄存器地址

SETB TMC2081_1

SETB TMC2081_0

SETB R_NW

CLR R_NW

ORL P2,xx00000111B

CLR TMC2081_0

SETB R_NW

MOV P0,A

SETB TMC2081_0

RET

WDATMC2081_0: 写数据到控制寄存器

SETB TMC2081_1

SETB TMC2081_0

SETB R_NW

CLR R_NW

ANL P2,xx11111101B

低功耗MSP430单片机在3V与5V混合系统中的逻辑接口技术_工科论文 篇九

摘要:低功耗MSP430单片机与传统的LSTTL、HCMOS和CMOS接口技术,特别阐述了3V器件具有5V容限的特点,介绍两种电平移位器。

关键词:单片机 接口电路 微机硬件

MSP430超低功耗微处理器是TI公司推出的一种新型单片机。它具有16位精简指令结构,内含12位快速ADC/Slope ADC,内含60K字节FLASH ROM,2K字节RAM,片内资源丰富,有ADC、PWM、若干TIME、串行口、WATCHDOG、比较器、模拟,有多种省电模式,功耗特别小,一颗电池可工作10年。开发简单,仿真器价格低廉,不需昂贵的编程器。

MSP430其特点有:1.8V~3.6V低电压供电;高效16位RISC CPU可以确保任务的快速执行,缩短了工作时间,大多数指令可以在一个时钟周期里完成;6微秒的快速启动时间可以延长待机时间并使启动更加迅速,降低了电池的功耗。MSP430产品系列可以提供多种存储器选择,简化了各类应用中MSP430的设计;ESD保护,抗干扰力特强。与其它微控制器相比,带Flash的微控制器可以将功耗降低为原来1/5,既缩小了线路板空间又降低了系统成本。

MSP430具有如此多的优点,可以预测在今后会有广泛的应用。但是目前仍有许多5V电池的逻辑器件和数字器件在使用,因此在许多设计中3V(含3.3V)逻辑系统和5V逻辑系统共存,而且不同的电源电压在同一电路板中混用。随着更低电压标准的引进,不同电源电压逻辑器件间的接口问题会在很长一段时间内存在。本文讨论MSP430与单片机中最常用的LSTTL电路、CMOS电路及计算机HCMOS电路的3V和5V系统中逻辑器件间的接口方法。理解这些方法可避免不同电压的逻辑器件接口时出现问题,保证所设计的电路数据传输的可靠性。

1 逻辑电平不同,接口时出现的问题

在混合电压系统中,不同电源电压的逻辑器件相互接口时会存在三个主要问题:第一是加到输入和输出引脚上的最大允许电压的限制问题;第二是两个电源间电流的互串问题;第三是必须满足的输入转换门限电平问题。器件对加到输入脚或输出脚的电压通常是有限制的。这些引脚有二极管或分离元件接到Vcc。如果接入的电压过高,电流将会通过二极管或分离元件流向电源。例如3V器件的输入端接上5V,则5V电源将会向3V电源充电,持续的电流将会损坏二极管和电路元件。在等待或掉电方式时,3V电源降落到0V,大电流将流到地,这使总线上的高电平电压被下拉到地。这些情况将引起数据丢失和元件损坏。必须注意的:不管是在3V的工作状态或是0V的等状态都不允许电流直接流向Vcc。另外用5V的器件来驱动3V的器件有很多不同情况,各种电路间的转换电平也存在不同情况。驱动器必须满足接收器的输入转换电平,并要有足够的容限保证不损坏电路元件。

2 可用5V容限输入的3V逻辑器件

3V的逻辑器件可以有5V输入容限的器件有LVC、LVT、ALVT、LCx、LVx、LPT和FCT3等系列。此外,还有不带总线保持输入的飞利浦ALVC也是5V容限。

2.1 ESD保护电路

3V器件可以有5V的输入容限。一般数字电路的输入端都有一个静电放电(ESD)保护电路。如图1(a)所示,传统的CMOS电路通过接地的二极管D1、D2对负向高电压限幅实现保护,正向高是则由二极管D3箝位。这种电路为了防止电流流向Vcc电源,最大输入电压被限制在Vcc+0.5V。对Vcc为3V的器件来说,当输入端直接与大多数5V器件输出端接口时允许的输入电压太低大多数3V系统加到输入端的电压可达3.6V以上。有些3V系统可以使用两个MOS场效应管或晶体管T1、T2代替二极管D1、D2,如图1(b)所示。T1、T2的作用相当于快速剂纳二极管对高电压限幅。由于去掉了接到Vcc的二极管D3,因此最大输入电压不受Vcc的限制。典型情况下,这种电路的击穿电压在7~10V之间,因此可以适合任何5V系统的输入电压。

由上述可知,改进后具有ESD保护电路的3V系统的输入端可以与5V系统的输出端接口。

2.2 总线保护电路

总线保护电路就是有一个MOS场效应管用作上拉或下拉器件,在输入端浮空(高阻)的情况下保护输入端处于最后有效的逻辑电平。图2(a)中的电路为一LVC器件总线保护电路,采取改进措施而使其输入端具有5V的容限。其基本原理如下:P沟道MOS场效应管具有一个内在的寄生二极管,它连接在漏极和衬底之间,通常源极与衬底是连在一起的,这就限制了输入电压不能高于Vcc+0.5V。现在的措施是用常闭接点S1将源极与衬底相连,当输入端电压比Vcc高0.5V时,比较器使S2闭合,S1断开,输入端电流不会通过二极管流向Vcc而使输入具有5V的容限。图2(b)是LVT和LAVT器件总线保持电路的例子。这种电路用了一个串联的肖特基二极管D,消除了从输入到Vcc的电流通路,从而可以承受5V输入电压。对于3V的总体保持LVC、LVT和ALVT系列器件可以承受5V的输入电压。但对于3V的ALVC、VCx等系列器件则不能,它们的输入电压被限制在Vcc+0.5V。

图3是用于3V CMOS器件输出电路的简化形式。当输出端电压高于Vcc+0.5V(二极管压降)时,P沟道MOS场效应管的内部二极管会形成一条从输出端到Vcc的电流通路。这种电路在与5V器件相接时需要加保护电路。

图4是一种带保护电路的CMOS器件输出电路。当输出端电压高于Vcc时,比较器使S1开路,S2闭合,电流通路消失。这样在三态方式时就能与5V器件相接。

2.3 biCMOS输出电路

LVT和ALVT器件的biCMOS输出电路如图5所示。它用双极NPN晶体管和CMOS场效应管来获得输出电压摆幅达到电源电压的要求。电流不会通过NPN双极晶体管回流到Vcc,但在P沟道MOS场效应管中的内在二极管仍然会形成一条从输出端到Vcc的电流通路(为了简化,图5中没有画出该二极管)。因此这种电路不能接高于Vcc的电压。

对图5电路所加的保护电路如图6所示。增加了反向偏置的肖特基二极管,用以防止电流从输出端流到Vcc。图6中的输出端与5V驱动器共用一条总线。在三态方式时,电路可以得到保护。当出现总线争夺即两个驱动器都以高电平驱动总线时,比较器将P沟道MOS场效应管断开。当3V器件处于等待方式而3V电源为0时,比较器和肖特基二极管可以起保护作用。

3 接口电路的有关参数

了解了3V器件为什么具有5V容限后,在MSP430与LSTTL、HCMOS、CMOS电路实现相互联接之间,要先了解各种电路和器件的参数,如表1所示。

表1 各种电路和器件参数

        参数

电路电源电压范围输入电平输出电平V(V)VIH(V)VIL(V)VOH(V)VOL(V)LSTTL4.5~5.520.82.70.4CMOS3~18(取Vcc=5)3.51.54.50.5HCMOS2~63.515.20.4MSP4301.83.60.8Vcc0.2VccVcc-0.60.6ALVT系列3.3或2.51.70.82.00.2~0.55LVC系列1.65~5.50.7Vcc0.3Vcc2.7~5.50.1~0.55

4 接口实现

不同电源电压的逻辑器件相互接口时存在的主要问题是逻辑电平的配合问题,就是前级电路输出的电平要满足后级电路对输入电平的要求。此外还有负载电流的配合问题,即前级电路的输出电流应大于后级电路对输入电流的要求,同时不应造成器件损坏。还有就是在高速或有严重干扰的场合,必须考虑接口对系统和抗干扰性能带来的不良影响。这里主要讨论逻辑电平的配合问题。因为对于负载电流配合问题只是一个带负载能力。而抗干扰问题则用本文中提到的方法都可以忽略。

4.1 LSTTL-MSP430

如表1所示,LSTTL电路的高电平输出电压VOH约为2.7V,MSP430的高电平输入约为0.8VCC,LSTTL电路的低电平输出电压VOL约为0.4V,MSP430的低电平输入电压VIL的0.2VCC。如果0.8Vcc小于2.7V且0.2Vcc大于0.4V时,不存在逻辑电平的配合问题,可以直接连接。如果0.8Vcc大于2.7V或0.2Vcc小于0.4V时,就出现了逻辑电平的配合问题。为了增大LSTTL电路的输出高电平,利用TI公司的LVC系列。从表1中可以看到LVC系列产品的高电平输出电压和低电平输出电压都符合要求。

4.2 CMOS-MS

C8051Fxxx单片机FLASH程序的自动升级_工科论文 篇十

作者Email:  wolfman6353@sina.com

引言:

 C8051Fxxx系列高速SOC单片机是由美国Cygnal公司开发的完全集成的混合系统级芯片,具有与8051兼容的微处理器内核,内部集成FLASH程序存储器,具有在系统重新编程能力,以C8051F020为例,内部集成64K的FLASH程序存储器。在系统控制软件的开发调试阶段,可用集成开发环境来下载及测试系统,但当将C8051F020目标系统集成到产品后,则由于操作系统及软硬件接口不一样等等原因,不能在最终产品中用集成开发环境来下载FLASH程序,故产品到了用户处之后,如要再进行FLASH程序的更新,则必须更换相应的集成电路印刷板,造成很多麻烦及不可靠因素。笔者通过实验,在用户操作界面的PC机及C8051F020的单片机控制系统之间,通过串行口进行C8051F020单片机控制程序的自动升级及程序加密,从而使用户只要从互联网上下载控制程序,即可实现单片机程序的自动升级。以下以64KBFLASH RAM为例简要介绍单片机目标程序的准备及自动升级的制作过程。

1)系统简介及自动升级的实现方法

PC机(80486/Dx2以上)  具有1.44吋软驱及串行口。单片机控制系统(具有串行口及内置的FLASH程序区)。PC与C8051Fxxx之间通过九针串行接口线相连。设置传送速率为115200BIT/S。

C8051F020单片机的FLASH RAM分为用户程序区(0000H~0FDFDH),厂家保留及加密区(0FDFEH~0FFFFH)两部分。现将用户程序区(0000H~0FDFDH)的0000H~0DFFFH部分用于装载用户程序,而0E000H~0FDFDH部分作为引导程序区,引导程序区在升级时不能改变,它用于与用户操作界面的PC机部分进行程序接收及装载等工作。

在控制程序区0000H~0DFFFH中,做一握手程序块,在上电时,用于和用户操作界面PC机部分进行握手,当接收到PC机部分要进行软件升级的命令时,程序跳至引导程序区,执行如下流程:

->发送准备升级字节到PC机

->删除FLASH程序区

->发送开始下载命令到PC机

->接收且放到相应地址

->加密

为了达到自动升级的目的,需要在用户界面的PC机引导时,自动检测PC机外设,软盘控制器,一旦检索到软盘中有升级文件及其索引文件,且其版本比现有的单片机控制程序的版本高,则开始执行PC机中的下载程序。

2)删除0000H~ODFFFH的FLASH程序区

C8051Fxxx系列单片机将FLASH程序区按512字节为一页(PAGE)来组织,在删除控制程序区0000H~ODFFFH时,首先屏蔽掉所有中断,使能程序删除位PSEE(PSCTL.1),同时使能PSWE(PSCTL.0)MOVx指令指向FALSH程序区。应用MOVx指令在每一页的任意一地址写0FFH,则将该页的所有字节都置为0FFH,从而实现了该页的删除。依此操作可删除所有的程序页。删除部分程序如下:

//删除0000H’ODFFFH的FLASH程序区

DEL_NExT_PAGE:    

CLR EA 

MOV A,FLSCL

ANL A,xx0FEH

ORL A,xx01H

MOV FLSCL,A

MOV A,PSCTL

ANL A,xx0FCH

ORL A,xx03H

MOV PSCTL,A;xx03H  //使能页删除及页写操作

MOV A,xx0FFH

MOVx @DPTR,A    //将该页全填充为0FFH

INC DPH

INC DPH     //调节页指针

MOV A,PSCTL

ANL A,xx0FDH

MOV PSCTL,A;xx03H

MOV A,DPH

CJNE A,xx0E0H,DEL01_NExT_PAGE

DEL01_NExT_PAGE:

JC DEL_NExT_PAGE

3)从PC中接收FLASH字节

以下程序用于从PC机中接收程序并放到相应的FLASH地址。在此仅使能PSWE(PSCTL.0)位,使MOVx指令指向FALSH程序区。

MOV DPTR,xx0000H

MOV FLSCL,xx01H

MOV PSCTL,xx01H;

RECEIVE_NExT_DOWNLOAD_CHAR:

MOV FLSCL,xx01H

MOV PSCTL,xx01H;

JNB RI,$

CLR RI

MOV A,SBUF0

MOVx @DPTR,A

INC DPTR

MOV A,DPH

CJNE A,xx0E0H,RECEIVE_NExT_DOWNLOAD_CHAR

MOV FLSCL,xx01H //FLASH 写使能

MOV PSCTL,xx01H

MOV DPTR,xx0FDFEH

CLR A

MOVx @DPTR,A

MOV DPTR,xx0FDFFH

MOVx @DPTR,A

MOV PSCTL,xx00H

MOV FLSCL,xx00H

CYCLE_FOREVER:SJMP CYCLE_FOREVER;死循环

RET

4)FLASH程序的准备

为了更快地得到—下载到C8051F020的FLASH程序,先在CYGNAL IDE开发环境中,将做好的控制程序编泽,链按,然后用厂家提供的串行适配器将PC与目标板连接起来,传送FLASH程序到目标系统中去。接下来用“UPLOAD MEMORY T0 PILE…”(如图示)功能将0000H~OEOOOH的FLASH代码程序上载到硬盘存储器中,再将此ASCII文件转化为16进制的HE文件,注意将其十的0DH,0AH等回车换行字节取消,最后生成的HEx文件即可被直接下载到FLASH的0000H~0DFFFH的相应地址中。此HEx文件即可发送至用户处,用于升级用户的单片机FLASH程序。

5)C程序的准备

//发送FLASH程序文件到单片机中去

BOOL SendFileToFlash()

{

unsigned  char ch;

FILE fp;

long int flen,wi=0;

int i,j;

if ((fp = fopen("flashwl","rb"))==NULL)

{

 return FALSE;

}

//初使化串口,且与单片机系统握手

InitialCommuClass();

//发送数据

for (wi=0,j=0;wi

{

 if (feof(fp)!=0)//到达文件结束

  break;

 fread(&ch,sizeof(unsigned char),1,fp);

for (;;)

  if (SendAByte(ch)==TRUE)

break;

 Printf("%ld bytes is tranitted!n",wi); }

fclose(fp);

for (;;)

{

 Printf("All bytes is tranitted!n");

}

}

//转换上载文件为可下载的HEx目标文件

BOOL ConvertFileToFlash()

{

unsigned  char ch,ru;

FILE fp,fpw;

long int flen,wi=0;

int i,j;

if ((fp = fopen("SOURCEC","rb"))==NULL)

{

 return FALSE;

}

if ((fpw = fopen("HExOBJECT","wb"))==NULL)

{

 return FALSE;

}

for (wi=0,j=0;;wi++)

{

 if (feof(fp)!=0)

  break;

 ru=0;

 fread(&ch,sizeof(unsigned char),1,fp);

 if ((ch>=0x30) && (ch<=0x39))

  ru+=(ch-0x30)16;

 else if ((ch>=0x61) && (ch<=0x66))

  ru+=((ch-0x61)+0x0a)16;

fread(&ch,sizeof(unsigned char),1,fp);

 if ((ch>=0x30) && (ch<=0x39))

  ru+=ch-0x30;

 else if ((ch>=0x61) && (ch<=0x66))

  ru+=(ch-0x61)+0x0a;

 fwrite(&ru,sizeof(unsigned char),1,fpw);

 fread(&ch,sizeof(unsigned char),1,fp);/0x0d/

 fread(&ch,sizeof(unsigned char),1,fp);/0x0d/

 fread(&ch,sizeof(unsigned char),1,fp);/0x0a/

 j++;

 if (j==255)

 {

  j=0;

  fread(&ch,sizeof(unsigned char),1,fp);

fread(&ch,sizeof(unsigned char),1,fp);

  fread(&ch,sizeof(unsigned char),1,fp);

  fread(&ch,sizeof(unsigned char),1,fp);

fread(&ch,sizeof(unsigned char),1,fp);

  continue;

 }

}

fclose(fp);fclose(fpw);

}

结束语

以上所介绍的FLASH自动升级程序的PC部分在VC6.0及TC2.0中开发,并与805lFxxx系列的单片机联机成功,并最后用于在用户处的单片机FLASH程序升级。

colspan="2" align='right' class="Article_tdbgall">

《利用ADuC834构成二次仪表系统_工科论文十篇.docx》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

看了利用ADuC834构成二次仪表系统_工科论文十篇的人,还看了:

生态环境保护中大数据技术的运用探讨的论文怎么写及范文

【生态环境保护中大数据技术的运用探讨的论文 第一篇】标题:生态环境保护中大数据技术的运用探讨摘要:本文以生态环境保护为中心,探讨了大数据技术在该领域的运用。首先介绍了大数据技术的基本概念和特点,分析了生态环境保护中所面临的挑战和问题,接着阐述了大数据技术在生态环境保护中的应用方式,如环境监测、数据分

就业指导的论文怎么写及范文

【就业指导的论文 第一篇】就业指导论文范文引言:就业是大多数人关注的重要话题,尤其是在现代社会,就业形势愈发复杂和竞争激烈。因此,就业指导成为了大学生在准备就业时所需要的重要资源和帮助。本文将结合实际案例,探讨如何进行有效的就业指导。正文:一、就业市场的分析:在开始就业指导之前,了解就业市场的现状和

服务质量论文怎么写及范文

【服务质量论文 第一篇】标题:服务质量的重要性及提升方法摘要:本文阐述了服务质量在企业发展中的重要性,并提出了提升服务质量的方法。通过分析现有研究成果和实践经验,本文总结了提升服务质量的几个关键因素,包括培训员工、建立有效的沟通渠道、关注客户需求、持续改进等。通过优化服务流程和建立监测机制,可进一步

饮食与健康论文怎么写及范文

【饮食与健康论文 第一篇】标题:饮食与健康——追求身体健康的重要路径摘要:本文探讨了饮食与健康的紧密关系,并提出了一些实用的建议,以帮助人们养成健康的饮食习惯。结合科学研究和实际案例,本文阐述了均衡营养、适度控制卡路里摄入量以及选择优质食材的重要性。通过改善饮食结构,每个人都能够更好地迈向健康的生活

论文写作基础的三要素范文

【论文写作基础的三要素 第一篇】论文写作是一种重要的学术活动,它需要学者们通过研究和分析来表达自己的观点和发现。然而,一篇好的论文并不仅仅是内容的展示,还需要符合一定的规范和要求。以下将介绍论文写作基础的三个要素:结构、语言和论证。首先,一个好的论文需要有清晰的结构。正如一座建筑物需要有坚实的基础一

最新文章

热点推荐