微控制器范文10篇

时间:2023-03-18 00:11:26

微控制器

微控制器范文篇1

关键词:微控制器无线发射器无线数据传输

1概述

tfPIC12C509AF是Microchip公司推出的单片集成内嵌射频无线数据发射器的8位CMOS微控制器。芯片具有高性能的RISC中央处理器,33条12位字长的指令,8位字长的数据;内置4MHzRC振荡器,运行速度1μs指令周期;7个特殊功能的硬件寄存器,2级硬件堆栈,直接、间接和相对寻址方式;1024×12bit可编程EPROM,41字节数据RAM;在线串行编程(In-CircuitSerialProgrammingTM,ICSPTM),内部RC振荡器的频率可编程校准(独立于发射器的石英晶体振荡器基准),8位可编程定时器/计数器;上电复位,看门狗定时器,低功耗睡眠模式,可编程编码保护,5个通用I/O等功能;工作电压2.5~5.5V,低拉耗睡眠模式电流0.2~4μA。内嵌的UHFASK/FSK发射器,射频频率范围为310~480MHz,可调节的输出功率+2~12dbm,ASK数据发射速率0~40Kbps,FSK数据发射速率0~20Kbps,PLL锁相,集成的晶体振荡器和VCO电路仅需少量的外部元件。

可用于遥控无键入口(RKE)发射器、车库门开门器、遥测(轮胎压力,水、电、气表、贵重物品跟踪)、无线安防系统、无线电遥控等领域。

2引脚排列及功能

rfPIC2C509AF采用20脚SSOP封装,各引脚功能如下。

1(VDD):逻辑电路和I/O端品/石英振荡器输入/外部时钟输入(GPIO仅在内部RC模式,在其它振荡器模式下为OSC1)。当GPIO时TTL输入,在外部RC振荡器模式时ST输入。

3(GP4/OSC2):双向I/O端品、石英晶体振荡器输出。在石英晶体振荡器模式连接晶振或谐振器。

4(GP3/MCLR/VPP):输入端口/用户清除(复位)输入/编程电压输入。当构成MCLR时,此脚是低电平有效,实现器件复位。在设备进入正常的运行和编程模式时,MCLR、VPP上的电压不能超过VDD,并且能够通过软件编程改变引脚状态来唤醒睡眠状态。

5(XTAL):发射器晶振,连接到考比慈(COPITTS)型晶体振荡器上。

6(RFENIN):发射器和时钟输出使能,内部下拉。

7(CLKOUT):时钟输出。

8(PS/DATAASK):功率选择和ASK数据输入。

9(VDDRF):发射器正电压端。

10(ANT1):差分功率放大器的输出端连接到天线,集电极开路输出。

11(ANT2):差分功率放大器的输出端连接到天线,集电极开路输出。

12(VSSRF):发射器接地参考端。

13(NC):空脚。

14(LF):连接外部回路滤波器。VCO转换输入和充电泵输出的共用点。

15(DATAFSK):FSK的数据输入。

16(FSKOUT):FSK晶振的输出。

17(GP2/T0CKI):双向I/O端口,能构成T0CKI。

18(GP1):双向I/O端口/串口编程时钟,能通过软件编程改变引脚状态来唤醒睡眠状态。这个缓冲器在串口编程模式下为施密特触发器输入。

19(GP0):双向I/O端口/串口编程数据,能通过软件编程改变引脚状态来唤醒睡眠状态。这个缓冲器在串口编程模式下为施密特触发器输入。

20(VSS):逻辑电路和I/O脚的参考地。

3基本结构和特性

rfPIC12C509AF内部结构包括一个完整的8位CMOS微控制器电路和发射器电路,以下介绍发射器电路。发射器电路方框图如图1所示。

发射器是一个完整的集成UHFASK/FSK发射电路,由石英晶体振荡器、锁相环电路(PLL)、集电极开路的输出功率可变放大器PA(PowerAmplifier)和模式控制逻辑(modecontrollogic)所组成。外接元件有旁路电容、晶振和PLL回路滤波器,能实现ASK和FSK的操作。

引脚VDDRF和VSSRF分别是发射器电路的电源供给端和接地端。这些电源脚与微控制器的电源供给脚VDD和VSS是相互独立的。

发射器的石英晶体振荡器是一个考比慈振荡器,提供PLL的基准频率,并且与PIC微控制器的振荡器是相互独立的。XTAL脚上接外部振荡器或AC模拟基准信号。发射频率是由晶振频率确定的,公式如下:

ftransmit=fXTAL×32

考虑到发射频率的灵活选择,最终晶振频率可能不是标准值。晶振频率最小值为9.65~15MHz,负载电容10~15pF,并联电容7pF,等价串联阻抗60Ω。

rfPIC12C509AF晶体振荡器实现ASK操作电路如图2所示。电容器C1取值22~1000pF。

rfPIC12C509AF晶体振荡器实现FSK操作电路如图3所示。电容C1和C2通过拖动晶振来实现FSK调制。当DATAFSK=1时,FSKOUT为高阻抗,只有C1对晶振起使用,发射频率为fMAX;当DATAFSK=0时,FSKOUT与VSSRF接地,电容C1和C2并联,发射频率为fMIN。选择一组理想的C1和C2值为确定中心频率和频率偏差。电容C1确定fMAX而电容C1和C2的并联值确定fMIN。

C1取值22~1000pF,C2取值47~1000pF。

发射器中心频率(fc):fc=(fMAX+fMIN)/2

发射器频率偏差:Δf=(fMAX-fMIN)/2

石英晶体振荡器有1个四分频(Divideby4)电路,此电路通过时钟输出(CLKOUT)引脚输出时钟。CLKOUT时钟输出信号可作为微控制器的输入或其它电路的稳定基准频率。注意千万不要将CLKOUT信号连接到PIC微控制器的OSC1输入端,因为PIC微控制器没有时钟信号就不能工作,此时发射器的振荡器也不能工作。这时PIC微控制器需要从外部引入时钟或经过内部RC振荡器产生时钟。当应用中需要稳定的基准频率时,可将CLKOUT脚连接到GP2/T0CKI输入上,并且使用TIMER0模块。为了使干扰信号习尽可能小,应对CLKOUT有速率限制。CLKOUT的电压幅值由在CLKOUT脚上的充电电容决定(2VPP,5pF)。

锁相环电路(PLL)由相频检波器(phasefrequencydetector)、充电泵(chargepump)、压控振荡器VCO(VoltageControlledOscillator)和固定的32分频器(fixeddivideby32)组成。引脚LF连接1个外部回路滤波器。这个回路滤波器控制PLL的动态范围和起始锁定时间。

PLL的输出给功率入大器(PA)。集电极开路输出的不同值可直接驱动闭环天线(ANT1、ANT2)或经过1个阻抗匹配网络或平衡-不平衡变换器改变成单端口输出。引脚ANT1和ANT2为集电极开路输出,必须通过负载上拉到VDDRF。

PA的差动输出应该匹配1个1kΩ的负载电阻。当匹配不合理时会导致过度的干扰和谐波辐射。发射输出功率可以通过改变PS/DATAASK脚的电压调节成+2~-12dBm中的6个等分值。

在FSK的操作中,PS/DATAASK脚只能作为功率选择脚(PS)使用。1个20μA的内部电流源输出电流流入PS/DATAASK脚,通过电阻R2产生一个电压降,作为功率控制电压(VPS)控制发射输出功率。VPS控制PA的偏置电流,高的发射功率需要较大的偏置电流。

为了实现ASK操作,PA/DATAASK脚的功能是控制功率放大器PA导通或关断。分压网络上的R1和R2是为了确定VPS,以达到选择发射器输出功率的目的。假如要得到最大发射器输出功率,可以把引脚GP0和PA/DATAASK直接连接起来。

逻辑控制模引式脚RFENIN控制着发射器的操作。当RFENIN=1时,发射器和CLKOUT在工作模式;当RFENIN=0时,发射器和CLKOUT进入待机模式。在待机模式时,发射机产生很小的电流。REFNIN脚在内部有1个下拉电阻。

4应用电路

微控制器范文篇2

关键词:微控制器点对点协议GPRS互联网

引言

微控制器以其体积小、功耗低、使用方便等特点,广泛应用于各种工业、民用的嵌入式系统中;而随着互联网(Internet)的兴起与普及,使微控制器通过互联网传送数据就变得非常有意义。目前使微控制器上网的解决方案一般有两种:一种是采用微控制器驱动网卡,通过以太网连接Internet;另一种是使微控制器直接驱动调制解调器(MODEM)通过电话线向ISP拨号上网。这两种方案的缺点在于都要使用有线的网络,无法应用于在边远地区或可移动系统中。

针对这一问题,本文提出一种基于GPRS的微控制器上网的解决方案,即在微控制器中实现PPP协议,并通过驱动GPRS模块经过GPRS无线网连接到Internet实现上网。这种方案的优点在于:①覆盖面广,适用于广大偏远地区;②无线上网,适用于可移动目标;③使用廉价的微控制器实现简单、成本低;④安装简便,维护方便。

1GPRS技术及其特点

GPRS(GeneralPacketRadioService)是通用分组无线业务的简称,是在GSM基础上发展起来的一种分组交换的数据承载和传输方式。与原有的GSM比较,GPRS在数据业务的承载和支持上具有非常明显的优势:通过多个GSM时隙的复用,支持的数据传输速率更高,理论峰值达115kb/s;不同的网络用户共享同一组GPRS信道,但只有当某一个用户需要发送或接收数据时才会占用信道资源。这样,通过多用户的业务复用,更有效地利用无线网络信道资源,特别适合突发性、频繁的小流量数据传输,很好地适应数据业务的突发性特点;GPRS计费方式更加灵活,可以支持按数据流量来进行计费;与无线应用协议(WAP)技术不同,GPRS能够随时为用户提供透明的IP通道,可直接访问Internet中的所有站点和资源;采用信道复用技术,每一个GPRS用户都能够实现永远在线;另外,GPRS还能支持在进行数据传输的同时进行语音通话等等,而且相对于短消息等其它无线数据通信业务,GPRS的价格优势比较明显。目前,我国移动推出的GPRS上网业务最高每千字节也只有3分钱,而且用户可以根据自己的需要,以月租、包月等多种形式进一步降低GPRS通信的费用。

因此使用GPRS实现远程数据的传送是非常经济实用的,特别是对于不易架设有线网络的边远地区和可移动装置。

2硬件连接和GPRS模块设置

通过GPRS网进行数据传输一般需要使用GPRS模块。目前,GPRS模块一般是指带有GPRS功能的GSM模块,可以利用GPRS网进行数据通信。其中比较流行的有法国Wave公司的WISMO系列和西门子公司的S系列等等。WAVECOM的WISMO模块接口简单、使用方便且功能非常强大,它与微控制器、SIM卡、电源之间的连接如图1所示。

其中GPRS模块与微控制器间是通过串行口进行通信的,通信速率最快可以达到115200b/s。模块与控制器间的通信协议是AT命令集,其中大部分命令是符合协议“ATcommandsetforGSMMobileEquipment(ME)(GSM07.07version6.4.0Release1997)”的,但也有一些是Wavecom自己定义的AT命令。除了串口发送(TX)、串口接收(RX)之外,微控制器与GPRS模块之间还有一些硬件握手信号,如DTR、CTS、DCD等。为了简化微控制器的控制,硬件设计时没有使用全部的硬件握手信号,而只使用数据载波检测(DataCarrierDetect,DCD)和终端准备(DataTerminalReady,DTR)信号。DCD信号可以检测GPRS模块是处于数据传送状态还是处于AT命令传送状态。DTR信号用来通知GPRS模块传送工作已经结束。

硬件连接完成后,在进行GPRS上网操作之前,首先要对GPRS模块进行一定的设置。主要的设置工作有:①设置通信波特率,可以使用AT+IPR=38400命令,把波特率设为38400b/s或其它合适的波特率,默认的通信速度为9600b/s。②设置接入网关,通过AT+CGDCONT=1,“IP”,“CMNET”命令设置GPRS接入网关为移动梦网。③设置移动终端的类别,通过AT+CGCLASS=“B”设置移动终端的类别为B类,即同时监控多种业务;但只能运行一种业务,即在同一时间只能使用GPRS上网,或者使用GSM的语音通信。④测试GPRS服务是否开通,使用AT+CGACT=1,1命令激活GPRS功能。如果返回OK,则GPRS连接成功;如果返回ERROR,则意味着GPRS失败。这时应检查一下SIM卡的GPRS业务是否已经开通,GPRS模块天线是否安装正确等问题。

图2软件层次结构

中国移动在GPRS与Internet网中间建立了许多相当于ISP的网关支持节点(GGSN),以连接GPRS网与外部的Internet网。GPRS模块可以通过拨“*99***1#”登录到GGSN上动态分配到Internet网的IP地址。其间GPRS模块与网关的通信要符合点对点协议(PointtoPointProtocol,PPP),其中身份验证时用户名、密码都为空。使用PPP协议登录上之后,就可以通过GGSN接上Internet了。

3软件整体结构

3.1软件层次结构

程序中的所有代码都是由C语言编写的,并采用分层的结构,从底到上分别为:串口驱动层、GPRS模块驱动层、PPP协议层、IP协议层、UDP协议层与应用层。上层函数的实现需要应用到底层函数,而底层函数的任务就是为上层函数提供服务,最终完成应用层任务——传送数据。各层的主要函数如图2所示。

3.2驱动程序编写

首先是串行口驱动层。它实现打开串口(OpenComm)、关闭串口(CloseComm)、读串口数据(ReadComm)、写串口数据(WriteComm)等函数。例如WriteComm函数向串口发送一个字节的数据,而transmit函数向串口发送一个字符串的数据:

voidWriteComm(charc){

ES=0;

SBUF=c;

while(TI==0);

TI=0;

ES=1;

}

voidtransmit(char*data){

Delay(250);

while(*data){

WriteComm(*data++);

}

}

然后,在这些串口函数的基础上编写GPRS模块的驱动函数。微控制器通过串行口控制GPRS模块,进行拨号、设置等操作。控制的方法是采用AT命令。在控制GPRS模块拨打移动梦网GGSN的登录号码“*99***1#”之后,GPRS模块就转入在线模式(On-Line)。此时微控制器向串行口发送的所有数据都透明地传送给了GGSN,同样GGSN的回答也传回单片机的串行口。当数据传送完成后,微控制器需要通知GPRS模块结束会话,并从在线模式转回普通的命令模式,这可以通过置高DTR线完成。同时,如果线路由于异常断开,CD线会回复到平常的低电平,所以处于在线模式下也要不断检测CD线是否处于高电平。根据这些操作,可以编写GPRS驱动函数:初始化GPRS模块函数(GPRSInit)、拨号函数(GPRSDial)、断开连接函数(GPRSHangup)、检测是否处于在线状态函数(GPRSOnline)。其中,GPRS的拨号和挂断代码如下:

BYTEGPRSDial(void){

signedchardelayCount=80;

transmit("ATV0");//要求返回数字表示的回答

if(!Waitfor("0",30)){//等待OK回答

return-1;

}

DTR_ON;

transmit("ATD*99***1#");//拨GGSN的号码

GPRSBuffFlush();//清空buffer

//等待回答

while((!GPRSBuffNotEmpty())&&(--delayCount>0)){

Delay(250);

}

if(delayCount){

returnGPRSGetch();//返回回答的数字

}

return-1;//没有返回,错误

}

voidGPRSHangup(void){

DTR_ON;//置高DTR

Delay(40);//保持一定时间

DTR_OFF;//完成连接的断开

}

这些底层的驱动函数将会使上层协议的编写很方便,更重要的是,它为我们提供了一个驱动抽象层。当底层硬件做出改动的时候,只需要对底层的驱动函数进行改动,而上层函数的代码不变。

4PPP协议的实现

由于移动梦网的GGSN与GPRS模块通信时遵循PPP协议,所以要在微控制器中也实现一部分PPP协议才能与之对话。GPRS模块在拨号后首先要与GPRS网关进行通信链路的协商,即协商点到点的各种链路参数配置。协商过程遵守LCP(LinkControlProtocol)、PAP(PasswordAuthenticationProtocol)和IPCP(InternetProtocolControlProtocol)等协议。其中LCP协议用于建立、构造、测试链路连接;PAP协议用于处理密码验证部分;IPCP协议用于设置网络协议环境,并分配IP地址。协商机制用有限状态机的模型来实现。一旦协商完成,链路已经创建,IP地址已经分配就可以按照协商的标准进行IP报文的传输了。根据应用的不同,IP报文中可以携带UDP报文,也可以是TCP或ICMP报文。本系统正是采用UDP报文传送数据信息的。数据传输完成之后,微控制器会向GGSN发送LCP的断开连接报文,以终止网络连接。

PPP协议的帧结构如图3(左)所示。微控制器的串口中断接收程序首先以包起始和结束符来判断是否有完整的PPP包,并对PPP包的内容进行校验,以确定数据包的完整性和正确性。然后,在主循环中进入PPP报文解析模块,解析过程如图3(右)所示。

5登录GGSN的过程

系统的一个难点是微控制器登陆GPRS网关(GGSN)并与网关通过LCP、PAP、IPCP协议进行协商的过程。LCP、PAP与IPCP协议的帧结构大同小异,最常用的为请求(REQ)、同意(ACK)和拒绝(NAK)三种帧。微控制器与GGSN各为一方进行协商,任何一方都可以发送REQ帧请求某方面的配制,另一方觉得配置不能接受会回应NAK帧,如果可以则回应ACK帧。为了节省资源,我们只处理这三种数据帧,其它链路问题都由微控制器在程序控制下自己重新拨号解决。

协商过程大致描述如下:在拨号成功连接后,GGSN首先会返回一个PAPREQ数据帧。我们发送一个空LCPREQ帧,以强迫进行协议协商阶段。随后,GGSN发送LCP设置帧,我们拒绝所有的设置并请求验证模式。GGSN选择CHAP或PAP方式验证,我们只接受PAP方式。然后,进行PAP验证用户名和密码过程,在GPRS中用户名与密码都为空,如果成功,GGSN会返回IPCP报文分配动态IP地址。此时,就完成了与GGSN的协商过程。协商过程的状态转换如图4所示。

协商完成后进入IP数据报通信阶段。此时,微控制器向GGSN发送的所有包含IP报文的PPP报文都会被传送给Internet网中相应的IP地址;而远端所有向微控制器IP地址发送的报文也都会经GPRS网传送到微控制器上,从而完成微控制器与远程主机通过互联网的数据传输。

注:PPP报文解析程序和协商过程程序见本刊网站。

微控制器范文篇3

【关键词】微控制器;实践教学;教学方法

1引言

随着时代的发展,新技术、新产品层出不穷。“微控制器应用与实践”课程作为自动化专业核心课程,其实践教学也在不断地发展与创新。“微控制器应用与实践”课程是一门理论性和实践性都很强的课程,其对培养学生的理解能力及分析问题与解决问题的能力,具有十分重要的作用。通过对本课程的学习,使学生掌握从事本专业工作的高素质劳动者和专门人才必备的基本知识和基本技能,为今后进一步学习本专业知识和从事本专业工作打下必要的基础。在教学过程中应按照项目进行备课,备课中需要明确讲授的内容、学生预习的要求并提出该项目整体安排,明确各模块训练的时间、内容等,可以以小组形式进行学习,明确分组安排及小组讨论的要求。在教学过程以学生为主体设计教学结构,同时营造民主、和谐的教学氛围,提高学生参与度和学习的积极性,达到增强学生学习信心与成就感的目的。在本门课程的实践教学过程中贯穿思政教育,弘扬社会主义核心价值观。

2设置合理的实践教学内容,构建实践教学体系

本课程在实践教学中把重点放在各技能知识点上,结合本专业的特点,教学遵循学以致用的原则,采用项目教学法并结合生产生活实际,使每一教学内容有具体的目的和明确的任务,强调教学内容与岗位实际、专业课程的紧密联系,通过师生共同参与,共同努力,达成教学目标。在实践教学过程中要提前做好准备工作,包括如下内容:设计好教学实施计划、准备好实践载体、规定学时和实践过程管理办法及考核等一系列教学文件,从而保证实践教学的质量与进度,形成了完善的教学体系。

2.1设置合理的教学内容

微控制器课程以往比较注重理论教学,这就使传统的教学计划中理论教学占比例较大,占到总课时的60%以上,而实践教学占总课时的40%不到。过多强调理论的重要性,而忽视了本课程和授课对象的特点。再者以往的实践教学手段过于单一,往往实践教学只是作为理论教学的补充,有时实践教学载体也过于简单,学生仅仅是机械的接线或记录实验结果,虽然完成了实验,但学生对相关原理和方法根本不理解、不关心,不利于学生的分析问题能力和创新能力的培养,客观上造成了重理论、轻实践,重知识、轻能力的现象,导致学生实践与理论脱节、技能与知识分离,学生没有真正的学到本领,也不适应社会发展和人才培养要求的。针对以上情况,进行了微控制器课程的改革。摒弃一部分过时的和过于偏重理论的内容,增加比较先进的知识和技能,另外也要紧跟最新的发展趋势,开发企业案例,增加设施,不断提升实践性教学条件。紧密结合生活实际,提高学生学习兴趣,在课程中开发实物制作,设计组装和调试智能数字钟。突出“综合运用”和“创新性”,强化针对学生实践性动手能力的培养,提高学生的综合应用能力。改革实践教学的方法,环环相扣,体现实用性和可操作性,提高教学效果、丰富教学内容。

2.2设置合理的实践教学时间

微控制器课程的建设以项目为核心,从实际应用出发,重在结合理论与实践,设置理论教学与实践教学学时各占总学时的50%。通过理论教学,学习微控制器的基本原理,为实践环节提供理论基础,反过来通过实践教学设计组装和调试智能数字钟不仅提高了学生的学习兴趣和动手能力,更丰富巩固了相关的理论知识,学生往往在实践操作完成后才能真正的理解理论知识。

2.3实践过程管理及考核

实践时教师需要进行实时分析和指导,对实践过程中普遍存在的问题进行必要的统一讲解。实践考核采用过程考核的形式,分四次打分,分别是数字钟电路原理图设计打分、数字钟电路程序设计打分,数字钟元器件焊接、组装过程打分、数字钟调试后的质量打分,最后学生提交一份实践报告,根据几项内容综合评定成绩。

2.4实践教学过程贯穿思政教育

在微课器课程的教学中,以新时代中国特色社会主义思想为指导,弘扬社会主义核心价值观,结合中华优秀传统文化教育和职业理想、职业道德教育。例如在进行数字钟电路原理图设计时要求谨终慎始,在数字钟电路控制程序设计时,师生共同讨论科技兴国的重要性,在进行数字钟电路焊接时强调一丝不苟和精益求精的职业道德,数字钟电路综合调试时又突出了质量第一、用户至上的理念。

3教学实践中获得成功运用的方法

实践出真知,实践活动是激发主体性最有效的途径,实践活动能让学生思维活跃起来,它是兴趣产生的源泉,实践教学活动中要充分考虑以下几点:

3.1多种教学形式相结合,贴近学生内心需求

教学的形式应该是多种多样的,除了讲授理论知识和教授实践操作外还应该积极的鼓励学生进行探索学习、合作学习。在实践操作过程中,有些学生喜欢按照自己的进度和方式学习,少数学生还会带着问题和思考来,授课教师应在鼓励学生按照适合自己的方法达到学习目的的同时也应认识到完全依靠学生的自我指导是不现实的,应该将教师的指导与学生的自我指导有机地结合起来。此外,还应确保他们在实践活动中够彼此之间能够进行有效的补充,相互之间的鼓励、配合与交流。这样一来,不仅顺利地完成了教学目标和教学计划,更重要的是有效提高了学生的团队合作意识,充分发挥了学生的主观能动性,达到了非常好的教学效果。在教学中,应尽可能多的满足学生合理的需求,要善于发掘每一位学生的闪光点,教学过程中要多鼓励、多关心学生,为学生营造一个迈向成功的良好的学习氛围。

3.2遵守安全第一、兼顾全面的原则

微控制器课程实践部分内容是设计组装和调试智能数字钟,该载体内容丰富、难度适宜,学生感觉非常有兴趣,所以,该学习内容能够有效激发学生学习主动性。需要强调的是,微控制器是自动化专业的核心课程,必须要培养学生形成良好的操作习惯,教师自始至终要给学生灌输“安全第一”的思想,严格遵守各项操作要求。在实践开始之前,教师可以采用案例分析的形式让学生意识到遵守的纪律的重要性以及操作必须规范化,让学生充分认识到违规后可能产生的后果,遇到问题时必须要及时采取正确的应对措施。另外,“安全第一”的思想每堂课教师都必须警醒学生。

3.3实践操作中要手脑结合

实践操作课不仅仅是培养学生动手能力,更应注重理论与实践的紧密结合,通过实践操作深入领会理论知识。光动脑不动手是不可能培养学生实践操作能力的、是违背学生客观认知规律的,这仅仅是空洞陈乏的理论。知道了如何进行操作也不代表就学会了操作,实践操作必须是亲身参与,它是真实实践的一个过程。就像一个知道游泳要则的人,如果从不下水实践,那是没有用的,懂得再多也只能是纸上谈兵,缺乏实践性是永远也学不会游泳的。反过来光动手不动脑,实践操作的水平也是不会得到真正的提高,仅仅只能局限于机械的操作和记录数据。很显然这两种情况都不是我们每一位教育工作者所愿意看到的,我们所希望培养出来的学生是:以理论指导实践、从实践中验证理论,能够因地制宜地灵活运用所学知识去解决实际问题。为此,教师注重引导的同时,充分调动学生学习的主动性和积极性,使他们的脑子转起来、手动起来,真正做到手和脑的统一,从而让学生知道为什么这样做而不是就该这么做。

3.4引导学生探究学习

引导学生探究学习非常重要,这不仅可以激发学生的学习热情,更重要的是增强他们学习的信心,从而形成良好的学习习惯,激发他们对新知识、新领域的渴望和追求。引导是根主线,要充分体现教师的主导地位,通过这根主线调动学生,活跃课堂气氛,体现素质教育。例如:数字钟组装、调试完毕,已完成了教学任务,大部分教生认为自己已经大功告成,顺利完成了老师布置的任务,但此时教师还可以给学生提出一些带有启发性的问题,比如如何让数字钟在运行时如何增加闹钟功能等。通过分析比较,巩固学生的理论知识,这样会促使学生认识到自身的不足,某些地方还需深入学习,进而才能促使其今后有的放矢。

4结束语

我们要想方设法想提高实践教学质量,因为实践教学在微控制器教学中有着非常重要的地位,这就要求我们教师应多想好办法、好方法,从实践载体安排、实践教学方法和考核等多方面去多思考、多创新,真正提高微控制器课程实践教学的质量,满足新时代学生的学习需求,使学生获得某工作任务所需要的综合职业能力。

参考文献

[1]王静霞.单片机应用技术[M].北京:电子工业出版社,2019:259-268.

[2]江力.单片机原理与应用技术[M].北京:清华大学出版社,2015:149-201.

微控制器范文篇4

关键词:液晶显示驱动器I2C串行总线MSP430

1概述

点阵式液晶与外部的硬件接口简单,能以点阵或图形方式显示出各种信息,因此在电子设计中得到广泛应用。但是,对它的接口设计必须遵循一定的硬件和时序规范,不同的液晶显示驱动器,可能需要采用不同的接口方式和控制指令才能够实现所需信息的显示。某些液晶显示驱动器与外部的接口必须采用串行方式,而其串行接口往往不是标准的串行接口,这就为这类液晶显示驱动器的设计带来了困难。

针对上述问题,本文提出一种利用微控制器(MCU)的I/O端口,通过软件设计模拟与所使用的液晶显示驱动器规范相符的串行总线的设计思想,实现MCU对液晶显示驱动器的控制,从而建立起一套不但可以显示各种字符,而且可以动态显示曲线的游人显示系统。

2系统设计

本文所建立的液晶显示系统,选用美国德州仪器(TI)公司的MSP430F149微控制器来控制液晶显示驱动器uPD16682A,从而实现各种信息的显示。

2.1MSP430F14X微控制器简介

TI公司的MSP430F14X微控制器与其它MSP430系列微控制器相同,均甚至一个真正的正交16位RISCCPU内核:具有16个可单周期全寻址的16位寄存器,仅27条的精简指令集以及7种均采用双重取数据技术(DDFT)的一致性寻址方式。DDFT技术利用每个时钟脉冲对存储器进行两次数据存取操作。从而不再需要复杂的时钟乘法和指令流水线方案。

MSP430F14X系列MCU片内不但包括60多KB的Flash、2KB的RAM、一个看门狗时钟、12位16通道的A/D转换器、定时器、高精度比较器、PWM以及高速的USART控制器等常用资源,还在某些型号中集成了LCD控制器。其I/O资源丰富,且每个输入/输出(I/O)引脚上都提供了矢量中断功能,每个器件都支持复杂的事件驱动型操作。同其它微控制器相,带片内Flash的微控制器可将系统功耗降低5倍,并且减小了硬件线路板空间,与现代程序设计技术(如计算分支以及高级语言(如C语言)结合使用,使得MSP430的体系结构更为高效。

MSP430F14X可采用一个集成的数字控制振荡器(DCO)或外部高速晶振对系统进行定时,其工作电压范围为1.8~3.6V,并可根据需要提供高达8MIPS(每秒百万条指令)的操作性能,对于对成本非常敏感的应用,该系列器件能够采用DCO来工作而无需外部晶振,快速的指令执行周期配之以低于6ms的等机启动时间,使得系统总功耗比竞争器件低了10倍,大大延长了诸如公用设施计量、便携式仪表测试和智能检测等工程应用系统中的电池使用寿命。

MSP430F14X系列微控制器允许用户使用标准C语言进行程序编程,并提供高效的C语言编译环境;配之以支持对具有仿零点功能的快闪产品进行丰取的快速实时仿真工具FET及优良的调试环境,使MSP430F14X系列微控制器在工程设计中得到了广泛应用。

2.2液晶显示驱动器uPD16682A简介

uPD16682是NEC公司2001年初推出的液晶显示驱动器,该产品内置大容量显示RAM内存,并能够提供132×65点阵的全点显示,特别适合用于16×16或12×12点阵中、日文字符显示。该产品采用+3V单电源供电,内置升压电路并具3倍压和4倍压两种工作模式,支持8位串行或并行数据的输入,内置时钟发生电路和程序可编程控制的偏压电路。

(1)uPD16682A的显示内存

uPD16682A的显示RAM内存保存着被显示内容的点阵信息。显示RAM的每一位对应显示屏上的一个点,总共可以存储132×65点的信息;通过选择对应的RAM页地址和列地址,微控制器可以访问其中的任何一个点。微控制器对uPD16682A的显示RAM的读写操作通过uPD16682A的I/O缓冲器进行(串行模式下uPD16682A不支持读操作),并且该读操作和液晶显示屏驱动信号的读取操作是独立的,因此,当显示内存的数据同时被双方访问时,不会出现显示信息的抖动等现象。从微控制器读入的显示数据按照D7~D0的数据位顺序与液晶显示屏的行顺序一一对应,其显示关系对应图如图1所示。如果在系统中使用了多片uPD16682A,则在片间进行显示数据的转移和显示一整幅图案时用户就会有很大的自由度。

(2)uPD16682A与微控制器的接口

uPD16682A可以通过8位双向数据总线(并行模式下)或者通过串行总线接收来自微控制器的数据,这两种模式可以通过将其P/S引脚置高或置低进行选择。当工作于并行输入模式下时,uPD16682A的片选信号端、读写信号端以及控制信号端(A0)和数据线(D0~D7)都应该同微控制器的对应端口进行连接。此时uPD16682A内部显示RAM的数据以刷新液晶显示的内容,也可以通过数据总线读取显示内存的内容。当工作于串行模式下,uPD16682A仅使用数据线D6输入串行数据,即串行总线的数据输入端(SI),数据线D7被用作时钟输入(SCL)端,并将片将信号和控制信号(A0)同微控制器总线进行连接,置高或接地读写信号。此时uPD16682A内部显示RAM的数据访问是单向的,即微控制器只可以向显示RAM写数据以刷新液晶显示的内容,但不可以读取显示RAM的内容。

(3)uPD16682A的串行接口

uPD16682A的串行接口是TTL电平,不是标准的串行接口,对串行数据的接收没有具体波特率、数据接口协议的要求,内部包括1个8位的移位寄存器和1个3位的计数器。UPD16682A在每个串行时钟的上升沿将串行数据捕获到其内部的移位寄存器,同时计数器自动加1。当串行数据按照D7~D0的顺序被依次捕获到后,在第8个时钟周期的上升沿,已接收到内部的8位串行数据被转换成一个8位的并行数据;同时,uPD16682A读取控制信号线A0上的电平,并且根据A0信号来判断当前被写入的8位串行数据是一个显示数据还是一个控制命令。对控制信号线A0的读操作由uPD16682A的内部定时器来控制,在每隔8个串行时钟之后自动操作一次。

(4)uPD16682A的控制指令

uPD16682A通过读取其控制信号线A0的电平来判断当前从片外设备接收的数据是一个显示数据还是控制命令。当A0电平为高时,认为接收到的是一个显示数据;而当A0电平为低时,则认为接收到的是一个显示控制命令。利用uPD16682A的控制命令可以实现对uPD16682A大多数操作的控制。

2.3uPD16682A与MSP430F149的硬件接口设计

图2是系统uPD16682A与MSP430F149的硬件接口示意图。图中系统采用4MHz晶振,并由系统时钟分频得到其它内外设所用的时钟。MSP430F149和uPD16682A相连接的I/O口被定义为输出,MSP430F149利用片内12位A/D采集传感器变换后的电压信号。经程序处理后,通过上述I/O口传送到uPD16682A进行信息显示。由于驱动液晶显示的电压需要十几V,如果系统板采用+3V单供电,则液晶显示驱动器必须采用片内升压电路。图中uPD16682A采用内部4倍压连接方式。

2.4软件设计

MSP420F149允许用户标准C进行编程,并提供高效的C编译环境。如果对程序运行时间的要求不是很荷刻,采用C语言进行程序开发应当是编程人员的首先。以下主要介绍关于自定义串口总线的程序设计,同时介绍一种在uPD16682A下的画点和画线函数,提供在衅符显示屏下显示曲线的实现方法,从而为程序实现动态显示波形提供了可能。

2.4.1串行口控制程序

微控制器送往uPD16682A的数据有显示数据或显示命令两种。两者的区分由uPD16692A控制信号线A0的状态来表征,因此将MSP430F149的Port2.2端口电平置高或置低就可控制uPD16682A的状态。

按照uPD16682A串行接口听原理,为了向其写入一个8位或16位的数据,首先必须通过程序设计向uPD16682A产生一个时钟输出。时钟产生可以有两种方式。一是利用微控制器定时器中断,定时依次从I/O端口输出高、低电平。二是利用指令产生和数据同步的时钟脉冲,通过产生一个电平的跳变沿将位数据送到uPD16682A,然后通过逐次移位,就可以将一个8位数据写进uPD16682A内部的数据锁存器。在第8个时钟脉冲的上升沿,锁存器中数据炙一个8位的并行数据,同时根据A0信号线睥电平来显示图符或执行相应的控制命令。虽然这里的串行数据的发送没有具体波特率和数据接口协议的要求,但是在编写程序时,必须认真考虑串行方式下各个信号的时序。以下是向uPD16682A写入一个8位控制命令的程序:

voidSet_Address(unsignedcharcolumn,unsignedcharpage){

unsignedcharColH,ColL;

//设页地址

ColH=page|0xB0;

Write_Command(ColH);

//设列地址

ColH=(column&0xF0)>>4;

ColH|=0x10;

ColL=column&0x0F;

Write_Command(ColH);

Write_Command(ColL);

}2.4.2字符显示屏上的曲线绘制程序

有了上述程序,就可以方便地在uPD16682A上指定位置显示设定的图案和字符了。如果用户需要动态地展示信号波形和曲线,还可设计出专用的画点和画线函数,从而大大提高了字符液晶显示屏的动态图形显示能力。通常而言,液晶显示屏上的一点对应液晶显示驱动器显示RAM中的一位。显示RAM中的某位为1,则在液晶显示屏上的相应点即为点亮状态;而要想实现在液显示屏上动态的显示点和曲线,必须用到显示RAM中的数据。通常的做法是读取指定点周围的数据,然后在这些点中的某个指定位置插入1位,从而将液晶显示屏上的指定点点亮,这就是基本的画点原理。但是,在串行方式下,uPD16682A不具备数据读出能力。为此,我们仿照显示RAM显示的方式,在MSP430F149的数据区开辟了一块和uPD16682A显示RAM同样大小的内存块,在向uPD16682A显示RAM写入显示数据的同时,也向该内存块的对应位置写入同样的数据,保证了该内存块的内容和uPD16682A显示RAM中的数据是同步刷新的。因此在画点函数中,我们直接从该内存块中取出需要的显示数据进行处理,然后再通过自定义串行总线送往uPD16682A进行显示。用这种方式,我们实现了在液晶显示屏的任意位置画出一个点,并且还可以利用这种方式编制自己的画线函数,这样就使uPD16682A具备了动态显示波形的能力,也就扩展了字符液晶显示屏动态曲线波形的显示功能。以下是uPD16682A编写的画点函数:

voidDrawPointXY(unsignedcharx,unsignedchary){

unsignedcharpage,dot,dat,CouL,CouH;

dot=0x01;

page=y/8;/*计算当前点页地址、列地址*/

r_page=page;/*点亮当前点并保持周围点信息不变*/

r_column=x;

page|=0xB0;

dat=y%8;

dot=dot<

CouH=(x&0xF0)>>4;

/*通过自定义串行总线向uPD16682A发送数据*/

CouH=CouH|0x10;

CouL=(x&0x0F);

Write_Command(page);

Write_Command(CouH);

Write_Command(CouL);

dat=DisplayRam[r_page][r_column];

dat|=dot;

Write_DisplayData(dat);/*向显示RAM写入数据*/

}

程序中的二维全局数组DisplayRam[][]即为在MSP430F149中开辟的内存块,用于保存当前uPD16682A显示RAM中对应位置的显示数据。全局变量r_page和r_column分别保存8位显示数据的页地址和列地址。

如果想进一步实现曲线的显示,程序中则需要计算两个点之间在X方向和Y方向上的偏差,并依据偏差大小来插入要显示的点。本系统中,用这种设计方法获得了平滑的曲线显示效果。

微控制器范文篇5

关键词:数字路灯照明双微处理器PIC16F877PIC16F873

前言

公共照明系统广泛采用高压钠灯(highpressuresodiumlamp)或金属卤化物灯(metallichalidelamp),传统照明系统经常采用电感镇流器,照明灯具采用统一开关控制方案。

随着数字技术和网络技术的发展,公共照明数字化和网络化已经成为一种必然趋势。节约能源、保证灯具寿命、提高照明管理水平、美化城市夜量和保证城市夜间出行安全等,已经成为对公共照明系统的一项基本要求。本文将介绍基于镇流器的全数字公共照明系统。该系统在国内首次实现了远程单个路灯节点的任意监控,并重点介绍了系统的核心设备——组群控制器的作用、组成、工作原理是以及主要软件结构框图。

1数字路灯照明系统

图1给出了数字路灯系统的系统组成原理图。在该系统中,每个路灯节点采用全数字化电子镇流器,可以实现0%、50%、80%、100%功率输出,可以随时发送路灯的电流、电压信息,并具有开路、断路和路灯老化报警功能。每一个路灯节点内包含一个电力载波通信(PLC)模块,利用电力载波模块实现路灯节点之间以及路灯节点与组群控制器之间信息通信。组群控制器采用双CPU结构,负责日常系统的正常运行控制,并可以随时响应上位管理计算机发出的指令。组群控制器与照明管理计算机通过GSM/GPRS短信方式实现正常情况下的通信。在组群控制器发生故障的情况下,照明管理计算机可以通过GSM/GPRS直接实现路灯线路的开关控制,实现系统安全双保险。照明管理计算机采用地理信息系统(GIS)技术,实现图形化动态实时监控管理。

图2

2组群控制器工作原是与系统组成

2.2组群控制器系统组成

图2给出了一种组群控制器设计方案。它包括CPU模块、线路状态检测模块、交流接触器驱动模块、后备电源模块、时钟模块、控制策略模块、电能计量模块、温湿度检测模块、GSM通信模块和电力载波通信模块。CPU模块采用CPU结构。主微控制器采用高性能、8位、40引脚、具有8KBFlash、多路8位A/D的RISC单片机PIC16F877,负责与GSM通信模块和电力载波模块通信,与交流接触器驱动控制,与实时时钟的读取和校准以及根据照明控制策略发送控制指令等功能。从微控制器采用与主微控制器同一系列的高性能8位、28引脚、多路8位A/D、具有4KBFlash的RISC单片机PIC16F873。该控制器负责管理电能计量模块、后备电源及监控模块、温湿度监控模块和线路状态检测模块等。

图3

2.3双CPU通信方法与RS-485通信

虽然PIC16F87x系列单片机通信接口丰富,但是,整个系统通信复杂,接口资源仍然很紧张。主从CPU的可靠通信,是组群控制器可靠工作的关键之一。

根据资源分配,主微控制器PIC16F877与从微控制器PIC16F873采用SPI接口,并以主从方式通信。根据系统端口配置需要,PIC16F873采用硬件SPI接口方式,PIC16F877采用普通I/O口RB1~RB3来模拟硬件SPI口,即软件SPI接口。PIC16F877的SPI硬件资源分配给E2PROM24C64使用。PIC16F873的SPI接口工作在从模式下,PIC16F877需要选用一个普通I/O口(这里是RB4)与PIC16F873的SPI通信控制端RA4/SS相连,控制SI通信的发起与结束,如图3所示。每次通信都是由PIC16F877发起,PIC16F873响应。

图4

电能计量模块为单独模块,能够测量供电线路的电压、电流、功率、功率因数等参数,并具有标准的RS-485接口。为此,PIC16F873利用硬串口RC6/TX和RC7/RX,通过RS485接口变换,与电能计量模块JP1相连。这里MAX485芯片作为485总线接口转换芯片,用RC2作为RS-485总线通信输入/输出使能控制端,控制信号的读入和送出。

2.4交流接触器控制与状态保持

组群控制器的一项重要任务是通过固体继电器SSR和交流接触器实现照明线路供电控制。固体继电器为DC3~24V输入,AC220V输出,其输入由NPN型三极管9013驱动。由于系统实际运行过程中存在各种干扰,若则相关引脚很可能会出现跳变信号或三态,造成交流接触器误动作。因此“锁定”复位前状态,对保证系统可靠性非常重要。这里采用了由1个D触发器、1个光耦、3个电阻和3个I/O引脚组成的采样/保持电路,如图4所示。D触发器复位端R和置位端S分别接地,数据端D接CPU的数据控制端RE0,时钟端CLK通过光耦TIP521接CPU的时钟产生控制端RE1和RE2。保持电路的关键在于RE0、RE1、RE2单个引脚误动作无法产生有效时钟和控制指令。即使CPU发生复位,由RC0脚读回固态继电器当前工作状态,并将RE0输出(D触发器输入)置成该状态,进而保证SSR不产生误动作。电阻R32为上拉电阻,保证RE2出现三态时光耦不产生误导通。电阻R33起限流作用。实际证明该电路是有效的。

图5

2.5时钟与控制策略

要实现自动定时控制,系统时钟和系统预存控制策略是关键。组群控制器采用DS1302时钟芯片,为系统提供实时时钟。DS1302是一种带备份电源的、8脚、具有I2C串行通信功能的高性能、低功耗时钟芯片,提供秒、分、时、日、周、月、年日历功能。I2C串行总线SCL和SDA分别需要一个上拉电阻。主微控制器PIC16F877采用硬件I2C接口(RC3/SCL和RC4/SDA)与DS1302通信,如图5所示。组群控制器可以实现远程时钟校准。

图6

组群控制器将每日控制策略时间表Table1、季节划分时间表Table2、季节控制策略时间表Table3和节假日控制时间表Table4存储在E2PROM24C64中。24C64是容量为8KB、支持两线的I2C串行通信、1000000次擦写的E2PROM。主微控制器PIC16F877采用2个普通I/O口(RD1和RD2)模拟I2C串行总线,即实现软件I2C总线接口。组群控制器根据读得的日历信息和时间信息,对照各种控制策略时间表,开关灯及调光控制指令。

2.6软件实现

组群控制器软件分为主微处理器软件和从微处理器软件。主微控制器一方面负责通过GSM与照明管理计算机(简称上位机)通信,接收、解析和执行上位机发来的各种命令,并将执行结果发送给上位机;另一方面,主控制器在没有GSM信息的情况下,完成其它一些任务,软件流程图如图6所示。图7给出了从微控制器软件的简要流程图。

微控制器范文篇6

关键词:无线通信;射频;收发器;nRF905

1.引言

nRF905是挪威NordicVLSI公司推出的单片射频收发器,工作电压为1.9~3.6V,32引脚QFN封装(5×5mm),工作于433/868/915MHz三个ISM(工业、科学和医学)频道,频道之间的转换时间小于650us。nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加声表滤波器,ShockBurstTM工作模式,自动处理字头和CRC(循环冗余码校验),使用SPI接口与微控制器通信,配置非常方便。此外,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,工作于接收模式时的电流为12.5mA,内建空闲模式与关机模式,易于实现节能。nRF905适用于无线数据通信、无线报警及安全系统、无线开锁、无线监测、家庭自动化和玩具等诸多领域。

2.芯片结构、引脚介绍及工作模式

2.1芯片结构[1]

nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器功率放大器等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,因此使用非常方便。nRF905的详细结构如图1所示。

2.2引脚介绍

表1:nRF905引脚

2.3工作模式

nRF905有两种工作模式和两种节能模式。两种工作模式分别是ShockBurstTM接收模式和ShockBurstTM发送模式,两种节能模式分别是关机模式和空闲模式。nRF905的工作模式由TRX_CE、TX_EN和PWR_UP三个引脚决定,详见表2。

2.3.1ShockBurstTM模式

与射频数据包有关的高速信号处理都在nRF905片内进行,数据速率由微控制器配置的SPI接口决定,数据在微控制器中低速处理,但在nRF905中高速发送,因此中间有很长时间的空闲,这很有利于节能。由于nRF905工作于ShockBurstTM模式,因此使用低速的微控制器也能得到很高的射频数据发射速率。在ShockBurstTM接收模式下,当一个包含正确地址和数据的数据包被接收到后,地址匹配(AM)和数据准备好(DR)两引脚通知微控制器。在ShockBurstTM发送模式,nRF905自动产生字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。由以上分析可知,nRF905的ShockBurstTM收发模式有利于节约存储器和微控制器资源,同时也减小了编写程序的时间。下面具体详细分析nRF905的发送流程和接收流程。

2.3.1.1发送流程

典型的nRF905发送流程分以下几步:

A.当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据送传给nRF905,SPI接口的速率在通信协议和器件配置时确定;

B.微控制器置高TRX_CE和TX_EN,激发nRF905的ShockBurstTM发送模式;

C.nRF905的ShockBurstTM发送:

l射频寄存器自动开启;

l数据打包(加字头和CRC校验码);

l发送数据包;

l当数据发送完成,数据准备好引脚被置高;

D.AUTO_RETRAN被置高,nRF905不断重发,直到TRX_CE被置低;

E.当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。

ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。

2.3.1.2接收流程

A.当TRX_CE为高、TX_EN为低时,nRF905进入ShockBurstTM接收模式;

B.650us后,nRF905不断监测,等待接收数据;

C.当nRF905检测到同一频段的载波时,载波检测引脚被置高;

D.当接收到一个相匹配的地址,地址匹配引脚被置高;

E.当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校验位,然后把数据准备好引脚置高

F.微控制器把TRX_CE置低,nRF905进入空闲模式;

G.微控制器通过SPI口,以一定的速率把数据移到微控制器内;

H.当所有的数据接收完毕,nRF905把数据准备好引脚和地址匹配引脚置低;

I.nRF905此时可以进入ShockBurstTM接收模式、ShockBurstTM发送模式或关机模式。

当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发生改变,nRF905立即把其工作模式改变,数据包则丢失。当微处理器接到地址匹配引脚的信号之后,其就知道nRF905正在接收数据包,其可以决定是让nRF905继续接收该数据包还是进入另一个工作模式。

2.3.2节能模式

nRF905的节能模式包括关机模式和节能模式。

在关机模式,nRF905的工作电流最小,一般为2.5uA。进入关机模式后,nRF905保持配置字中的内容,但不会接收或发送任何数据。

空闲模式有利于减小工作电流,其从空闲模式到发送模式或接收模式的启动时间也比较短。在空闲模式下,nRF905内部的部分晶体振荡器处于工作状态。nRF905在空闲模式下的工作电流跟外部晶体振荡器的频率有关。

3.器件配置

所有配置字都是通过SPI接口送给nRF905。SIP接口的工作方式可通过SPI指令进行设置。当nRF905处于空闲模式或关机模式时,SPI接口可以保持在工作状态。

3.1SPI接口配置

SPI接口由状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄存器5个寄存器组成。状态寄存器包含数据准备好引脚状态信息和地址匹配引脚状态信息;射频配置寄存器包含收发器配置信息,如频率和输出功能等;发送地址寄存器包含接收机的地址和数据的字节数;发送数据寄存器包含待发送的数据包的信息,如字节数等;接收数据寄存器包含要接收的数据的字节数等信息。

3.2射频配置

射频配置寄存器和内容如表3所示:

表3:射频配置寄存器

射频寄存器的各位的长度是固定的。然而,在ShockBurstTM收发过程中,TX_PAYLOAD、RX_PAYLOAD、TX_ADDRESS和RX_ADDRESS4个寄存器使用字节数由配置字决定。nRF905进入关机模式或空闲模式时,寄存器中的内容保持不变。

4.应用电路

nRF905在使用中,根据不同需要,其电路图不尽相同,图2所示为典型的应用原理图,该电路天线部分使用的是50Ω单端天线。在nRF905的电路板设计中,也可以使用环形天线,把天线布在PCB板上,这可减小系统的体积。更详细的设计,读者可参考nRF905的芯片手册[2]。

微控制器范文篇7

关键词:USBCAN总线固件编程适配器

现场总线作为二十世纪80年展起来的新兴技术,在工业现场已有了广泛的应用。在比较有影响力的几种现场总线中,CAN总线以其突出的优点不仅大量应用于工业现场,而且在楼宇自动化、智能终端设备等民用领域也有了长足的发展。

现场总线网络技术的实现需要与计算机相结合。以往CAN总线网络与计算机的连接采用RS232、ISA或PCI接口。但是随着计算机接口技术的发展,ISA接口已经逐渐被淘汰;RS232接口数据传输率太低;PCI虽然仍是高速外设与计算机接口的主要渠道,但其主要缺点是占用有限的系统资源、设计复杂、需有高质量的驱动程序保证系统的稳定,且无法用于便携式计算机的扩展。随着USB1.1、USB2.0规范的相继制定,为外设与计算机的接口提出了新的发展方向。USB的主要特点有:外设安装简单,可实现热插拨;通讯速率高,USB1.1全速传送速率为12Mbps,与标准串行端口相比,大约快100倍;支持多设备连接;提供内置电源。

本文给出一种在Windows2000下使用USB1.1协议实现CAN总线适配器的设计方法。整个设计主要开发适配器的固件及计算机的驱动程序、应用程序,以达到用USB接口连接现场CAN总线网络的目的。

图1

1适配器硬件接口设计

适配器硬件电路由微控制器、CAN总线接口、USB总线接口和DC-DC隔离电源模块等组成。原理框图如图1所示。

微控制器P89C51RD2是Philips公司生产的增强型MCS-51兼容单片机,片内集成64KB闪存和1KB扩展RAM,双数据指针,4级中断优先级,7个中断源,内置看门狗,可编程时钟输出,在6时钟模式下工作,速度是标准51单片机的两倍。此时外部最高频率可达20MHz。在高速、大程序容量、中小规模数据处理场合是一款非常理想的单片机型。

CAN总线接口使用Philips公司的独立CAN总线控制器SJA1000,并由光耦6N136进行总线隔离。SJA1000是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制,符合CAN2.0A和2.0B规范,最高速率可在达1Mbps。CAN总线收发器采用PCA82C250。

PDIUSBD12是Philips公司推出的全速USB接口器件,完全兼容USB1.1规范。图1中D+引脚信号电平通过器件SoftConnect命令内部上拉,从而向主机表示为一个全速设备。EOT引脚自动检测USB接口的VBUS电压以确定USB电缆是否连接到了主机。SUSPEND是双向引脚,用以向微控制器指示器件是否挂起。当有USB总线事件发生时,引脚向微控制器发出中断信号。PDIUSBD12支持总线复用和非复用两种并行接口模式,以方便连接不同类型的微控制器。图1中采用总线复用方式,当用奇数地址访问PDIUSBD12时被认为是命令,偶数地址访问则被认为是数据读写。

各器件都需要外部时钟信号,而且它们自身也都有可编程的时钟输出功能,这就给系统的时钟设计带来了便利。图1中微控制器6时钟运行模式下,外部为12MHz晶振。P89C51RD2的P1.1引脚产生6MHz方波作为PDIUSBD12的输入时钟;通过PDIUSBD12的SetMode寄存器编程使CLKOUT输出时钟频率为24MHz,作为SJA1000的外部输入时钟。

2软件设计

软件设计包括微控制器的固件设计和计算机端USB驱动程序两部分。

2.1微控制器固件编程

固件编程是USB数据传输系统中终端设备程序设计的一个重要概念。微控制器通过固件是程序与计算机进行数据交换。固件设计的目的是:使PDIUSBD12在USB上达到最大的传输速率;增加系统的可扩展性和硬件无关性。

固件要实现的内容:一是对SJA1000初始化,接收CAN总线送来的数据,收集CAN网络状态信息,并将主机的数据下发到CAN网络;二是对PDIUSBD12初始化,完成USB总线连接过程,并组织CAN网络和主机之间的数据传送。设计中采用KeilC51软件编译环境,C51和ASM混合编程方式。

SJA1000和PDIUSBD12都有完善的中断机制,微控制器可以通过读它们的中断寄存器获得总线事件。为了提高固件的运行效率,主程序对系统进行实始化后开放中断,在中断服务程序中对事件进行分析和必要的处理,并设置相应的变量标志和数据缓冲区。主程序则循环查询变量标志,调用相应的子程序进行处理。这种程序结构使得主程序能够在前台处理各种数据传送任务,同时又可以通过中断在后台及时处理总线事件。

2.1.1CAN协议实现

SJA1000支持BasicCAN和PeliCAN两种协议模式。在适配器设计中采用了BasicCAN模式。中断设为电平中断方式,SJA1000中断服务程序框图如图2所示。

2.1.2USB1.1协议实现

PDIUSBD12支持所有的四种USB数据传输方式。在适配器的设计中使用了控制传输、中断传输和批量传输。控制传输中只用来传递控制信息,固定使用端点0;中断传输使用端点1,用来传送CAN网络状态信息;批量传输用来实现主机和CAN网络节点之间的数据传送,使用端点2。图3是PDIUSBD12中断服务程序框图。

2.2驱动程序设计

USB驱动程序属于WDM(Windowsdrivermodule)类型。WDM驱动程序是分层的,引入了FDO(FunctionDeviceObject)和PDO(PhysicalDeviceObject)两个新类来描述硬件,每一个物理硬件有一个PDO,但是可以有多个FDO,在驱动程序中直接操作的是PDO和FDO。系统通过全局唯一标识符GUID实现驱动程序的识别。应用程序和WDM驱动程序通信时,系统为每个用户请求打包形成一个I/O请求包发送到驱动程序。

图4是Windows中USB的通信层次结构模型。图4系统软件方块中的底部是Windows系统提供的驱动程序,包括主控制器驱动程序(OPENHCI.SYS或者UHCD.SYS)、HUB驱动程序(USBHUB.SYS)是一个类驱动程序(USBD.SYS)。

Windows2000下驱动程序的设计工具是VC++和Win2000DDK,但是直接使用DDK编程有相当大的难度。目前有第三方软件厂商提供了一些驱动程序开发工具,如Jungo公司的WinDriver、Compuware公司的DriverStudio等。这些工具仍然是基于WindowsDDK的,但是进行了新的封装,提供了驱动程序设计向导。

适配器设计中采用了DriverStudio作为驱动程序开发工具。利用其中的DriverWorks一步步地作出选择并修改少量参数,即可生成驱动程序框架和测试台应用程序框架,对USB设备的通用性部分支持得很好。在程序框架,对USB设备的通用性部分支持得很好。在VC++中对向导生成的代码作修改,并对设备特殊功能部分添加处理代码,然后用VC++编译为*.SYS文件,就是一个完整的驱动程序。SoftIce是DriverStudio的另一个调试工具,可以对驱动程序进行操作系统内核级的跟踪与调试。

微控制器范文篇8

本文介绍一种基于AT89C52为核心的无线式智能防盗报警系统,它具有8路无线防区,当有人非法进入防区,防区的传感器会发出信号无线传送给微控制器,微控制器就会发出警报;这个系统带有键盘,可以使用键盘进行各种操作以满足大部分保安和报警需要。

关键词:AT89C52无线智能报警系统

Abstract

ThepaperintroducesawirelesssecuritysystemthatisbasedonAT89C52.Ithas8wirelessblocks.Ifintrudersbreakintoablock,thesensoroftheblockwilltransmitasignaltotheMicroControllerUnit.AtthesametimetheMicroControllerUnitwillmakeanalarmsound.Thewirelesssecuritysystemhasakeyboard,whichenablesonetoprocesskindsofoperationtosaveone''''svaluablepropertiesfromanykindsofharms.

Keywords:AT89C52,wireless,securitysystem

一.前言

随着社会的发展,人类的物质文明越来越发达,人们的生活节奏也越来越快。但是,当人们在享受先进的人类文明时,如果意外事件突然发生,比如发生火灾、入室盗窃、突发疾病等等,往往会给人们的财产造成很大的损失,有时甚至危及人们的生命,因此,人们有必要对诸如此类事件进行防范。

安全防范工作越来越受到社会重视,安全防范意识愈来愈深入人心。现在人们采用高科技技术对火灾、盗窃、紧急求救等可能发生的会造成财产损失和危及人们生命安全的事件进行实时监控,一旦有险情就会发出警报,有时还可以采取应急措施来排除隐患。现在已出现很多种类的报警器或报警系统,比如汽车报警器、家用报警器、公共场所报警器等,近来又出现了智能楼宇和小区集控系统,前面的几种报警器功能比较单一,属于早期的产品,而后者的系统复杂,功能强大,科技含量很高,但价格不菲。

鉴于以上原因,我们想设计一种实用性好、适用广泛、可靠性高,能满足大部分保安和报警需要,同时又具有可扩展性的报警系统。根据导师的分配,我负责完成智能无线报警系统的设计。

二.报警系统功能介绍

*防盗、防火、防毒气多功能集于一体

*8路无线防区

*使用键盘进行各种操作

*具备防区总设和撤防方式

*具有密码设定和修改功能

*报警响应时间可编程

*14位8组电话号码存贮功能

*自动电话拨号

三.智能无线报警系统概述

一个报警系统是由传感器、微控制器、报警单元和指示装置等部分构成。传感器感知报警信息的变化,微控制器则对从传感器接受到的信息进行分析判断,并根据用户设置的报警参数来做出合理的处理,通过报警单元和指示装置告知用户。

1.传感器

传感器是整个报警系统的"触觉",如果没有传感器或者传感器失灵,则报警系统就无法检测报警源的信息,也就无法做出任何报警处理,从某种意义上说,传感器是现代智能报警器的"眼睛",传感器的种类和性能的好坏直接决定着报警器的类别和性能。

专门用做报警传感器的传感器有:红外线传感器、声波传感器、离子烟雾传感器、气敏传感器等等。其中红外线传感器用来探测人体移动、声波传感器则探测玻璃破碎时发出的声音,通过这两种传感器可以感知有无非法入室。当报警器装备了它们后就具有了防盗、防劫功能;离子烟雾传感器则是用来探测烟雾的浓度,在发生火灾前或火灾时总会有烟雾产生,因此离子传感器被用做火灾报警传感器;而气敏传感器则是用来探测有毒有害气体(煤气、一氧化碳、汽油蒸汽等等)的浓度,如果有毒有害气体的浓度超标,则会造成及其严重的后果,所以现代的智能报警系统少不了气敏传感器。

以上只列出了四种常见用在报警系统中的传感器,其实还有很多很多,这里不一一列举。

2.微控制器

微控制器(MicroControlUnit简称MCU)主要用于控制领域,用于实现各种测试和控制功能。MCU是现代所有智能产品中不可或缺的一部分,它可以按照人们预先设计的顺序和方法对事件进行连续不断地判断处理。微控制器已经成为目前高科技产品的控制处理中心,虽然它只能程序式工作,不懂得随机应变,但如果我们设计出完善、可靠的程序,则它就会做得"天衣无缝",完全胜任一个控制和决策者,值得一提的是它可以时刻工作,而不知疲倦,因此它很适合用在实时监控系统中。

报警系统是个实时系统,它需要对各种报警源信息进行实时判断和处理,同时它还要对各种事件和用户参数进行综合处理,以满足各种不同场合不同用户的需要,如果一个报警系统没有微控制器,就如同于一个人没有了大脑,因此好的报警系统得拥有性能优异的微控制器,拥有微控制器的报警系统就可以成为自动的和智能的报警系统。

3.报警和指示

报警系统的目的是为了能在出现危急情况之前或之时给人们以告示、提醒或根据用户所设定的处理方法和步骤进行自动应急处理,以至达到避免意外事件的发生或减少发生意外情况时造成的损失。报警和指示是报警系统的重要组成部分,它和传感器、微控制器构成了报警系统的三个最基础的要素,传感器是"眼睛",微控制器是"大脑",而报警和指示就是"手和脚的行动",它可以向人们显示系统的工作状态,各报警器的信息,当有报警情况时还可以响应从微控制器发出的控制信号,做出相应的各种报警行为。

4.键盘控制面板

键盘是实现人机对话的一种重要输入方式,在各种智能仪器和控制系统的设计中,我们常常需要用键盘向微控制器输入数据或对程序的进程进行管理。用户通过对键盘进行某些操作,设定报警系统具有满足自己生活需要功能,使得报警系统更加富有人性化、智能化。报警系统可能还有很多单元部分,这里只讲了其中重要的部分。

目录

摘要2

一.前言3

二.报警系统功能介绍3

三.智能无线报警系统概述3

1.传感器3

2.微控制器4

3.报警和指示4

4.键盘控制面板4

四.硬件设计5

1.防盗、防火灾等方面的设计5

2.微控制器的选择6

3.报警和显示设计6

4.键盘设计6

5.器件介绍7

1.89C527

2.24C028

3.HT-12E9

6.系统电路10

1.无线信号发送电路10

2.无线信号接收电路11

3.数据存储电路12

4.双音多频拨号电路16

五.软件设计16

1.主程序16

2.键盘扫描和键值处理18

3、无线报警信号接收程序19

4、双音多频拨号原理20

六.系统设计的实现过程23

七.系统调试过程中出现的问题及解决方法23

八总结与体会24

九.结束语24

十.参考文献25

十一.附录26

十一.附录

(一)、键盘操作说明

1、开始按下"*"键后,蜂鸣器发出一短促键声,表示主机认为键盘操作开始。

2、密码输入当按下"*"键后,若设有用户密码,则接着输入密码(1-6位阿拉伯数字),然后按"#"键确认,若输入密码正确,则蜂鸣器在按下"#"键后发出一短促键声,否则发出两声短促键声。如输入错误则须重新输入密码。

3、设置要对系统工作参数进行设置,则需在输入密码后按"设置"键,之后可以进行下述操作。

(1)、区域设置按"1",接着输入"1"到"15"的区域号。

(2)、防区总设防/撤防设置按"2",接着按"设/撤"键对报警系统的设防和不设防状态进行设置,设防时总设/撤指示灯亮。

(3)、各防点设防/撤防设置按"3",对各报警源进行单独的设防和不设防进行设置。

(4)、密码修改按"4",修改方法:新密码+"#"+新密码+"#",如果两次输入的新密码不相同,则将保留旧密码。

(5)、故障检查按"5",此时有故障的防区点指示灯会闪烁,表示该防点探头出故障,需要进行检修。

(6)、清报警和故障信息"6"+"#"+"6"+"#",使用此功能后,主机将清除此前的报警信息和故障信息。

(7)、报警延时时间设置按"7",可以在1-9分钟的范围内进行选择。

(8)、电话号码设置按"8",可以输入8组电话号码,每组电话号码允许最大16长度,不足16位的按实践长度输入即可。

(9)、遥控方式设置按"9",可对4路遥控器进行遥控方式设置,此设置提高了用户使用遥控器的灵活性。

4、"#"键可以退出各功能

微控制器范文篇9

关键词:USBγ能谱数据采集WDM

野外地面γ能谱测量技术主要研究地壳岩石土壤中产生的能量范围约为30keV~3000keV的γ射线,这里面包含着轴、钾等天然放射性核元素信息、核工程活动产生的大量人工放射性核元素信息以及γ射线与地壳相互作用产生的相关信息。而用于获取和处理γ能谱数据的多道γ能谱仪是重要的研究课题,其功能是把从γ射线探测器得到的脉冲信号转换为X-Y轴的能谱形式并显示出来(X轴代表能量,Y轴代表脉冲计数)。

传统的多道γ能谱仪一般采用NIM(NuclearInstrumentModule)插件的标准模式。但其存在体积庞大、抗干扰能力差等缺点,不适合于野外现场测量。为适应多道γ能谱仪智能化、微机化、便携化的实际需要,本设计采用笔记本电脑作为γ能谱仪的上位机。常用接口方式主要有RS-232C串口、红外线端口、EPP并口、USB、1394、Ethernet等。这几种接口方式的特点比较如表1所示。

表1接口方式特点比较

方式长度(m)速度(b/s)主要优点主要缺点

串口1520k应用广泛,研发简单速度慢,逐渐被淘汰

并口108M速度较快,研发简单逐渐被淘汰

红外线2115k无线传输距离短,可靠性差,耗电大

USB1.1512M传输稳定,速度快,使用方便,具有弹性,代表接口发展方向协议复杂,研发难度较大

13941.5400M传输速度快,具有弹性特定用途(视频),研发难度大

Ethernet50010M传输可靠,使用方便,资源共享特定用途(LAN),研发难度大

经过比较轮证发现,USB作为近年出现的一种代表微机接口发展方向的新型总线规范,其便捷易用、速度快、可靠性高等特点,使之非常适合作为便携式多道γ能谱仪的接口方式。目前大多数笔记本电脑一般都有两个以下的USB端口,USB规范规定每个端口提供5V、500mA的电量,而笔记本电脑在实际应用时,通常是通过自带锂电池供电的,无法提供足够的电量给外设,这时就会造成外设工作不正常,甚至使系统崩溃。考虑到本系统下位机部分功耗较大,因此供电方式使用外置电源。

笔者在吸收借鉴γ能谱测量技术最新研究成果的基础上,进行了USB便携式多道γ能谱仪的设计。本设计主要完成硬件、固件、设备驱动程序以及应用程序等的设计工作。

图2

1硬件设计

1.1系统总线结构

图1所示为USB便携式多道γ能谱仪的总体结构框图。下位机硬件部分主要由γ射线探测系统(探头)、脉冲信号调理电路、数字电位器、多道脉冲幅度分析器、USB接口电路以及电源电路等构成,其中探头部分包括闪烁探测器、前置电路和高压电路等,多道脉冲幅度分析器主要包括峰值别电路、控制电路、A/D转换电路以及微控制器系统等。上位机由笔记本电脑系统构成。

软件部分由固件、设备驱动和应用程序组成。

1.2USB接口电路

由于USB本身的控制协议较为复杂,需要使用相应的USB接口芯片。本设计采用了Philips公司的USB接口芯片PDIUSBD12(简称D12),其优点是可以选择合适的微控制器及其开发系统进行外设开发。

D12内部集成了串行输入引擎(SIE)、320字节的多结构FIFO存储器、收发器以及电压调整器,支持DMA方式,采用双缓冲区技术,遵从USB1.1标准。芯片中串行输入引擎(SIE)模块起着至关重要的作用,完成所有USB协议层功能,如同步模式识别、并/串转换、位填充/解填充、CRC检验/产生、包PID产生/确认、地址识别、握手信号包响应产生等。另外,D12还集成了SoftConnect、GoodLink、可编程时钟输出、低频晶振和终端电阻等特性,提高了系统的性价比。

图4

微控制器采用HYUNDAI公司的GMS90L32,它是一种兼容Intel8032微控制器的产品,其主要特点是工作电压范围宽(2.7V~5.5V)、功耗低、性价比高。D12与GMS90L32的连接如图2所示。本设计使用了多路地址/数据总线复用方式。

此外,本系统选用了美国ST公司的PSD913F2,它是用于8位微控制器的具有大容量FLASH存储器、在系统编程(ISP)能够和可编程逻辑的器件。它将地址锁存器、FLASH、SRAM、PLD等集成在一个芯片内,成功地实现了微控制器系统的“MCU+PSD”两芯片解决方案。这种方案既可简化电路设计,节省PCB印制板空间,缩短产品开发周期,又可增加系统可靠性,降低产品功耗。

2系统软件设计

2.1微控制器固件程序

所谓固件程序就是固化在程序存储器中的程序代码。本系统的固件存储在PSD913F2的Flash存储器中,固件开发使用的是KeilC51语言,开发平台为μVision2集成开发环境。

固件的开发是移植与开发相结合。本设计参考了Philips公司提供的D12固件程序范例,对于USB协议操作的相关代码可以直接移植使用,而数据采集、传输、存储等部分则是全新的开发工作。

固件程序结构如图3所示。硬件抽象层对D12的数据读、写以及各种指令的写入进行函数封装;D12命令接口层对D12的所有控制指令的函数进行封装;USB向量请求模块完成USB上电配置、向量请求等各类事件的响应处理;USB协议层包括对USB协议操作的封装以及对USB标准请求的响应;中断服务进程包括USB中断、ADC中断以及定时器0中断(记录测量时间)等。

主程序及ADC中断服务程序流程图如图4所示。主程序首先完成各种初始化,然后进入主循环,等待中断的发生,并根据标志变量执行相应的函数。当打开控制电路时,脉冲峰值别电路自动启动A/D转换,转换结束信号会触发微控制器外部中断1,进入ADC中断服务程序,读取A/D转换结果并存入缓存中,然后中断返回。

当D12有事件需要处理时,将触发微控制器外部中断0,微控制器读取D12的中断状态寄存器,判断中断的来源并作出相应的处理。若由数据端点触发,则相应地读取或写入数据;若由控制端点0触发,则判断请求的类型。标准请求由USB协议处理模块处理,用户自定义向量请求由USB向量请求模块处理。

2.2USB设备驱动程序的设计

在Windows环境下,USB设备驱动程序遵循WDM(Win32DriverMode)方式。为了简化设计,并兼顾驱动程序的运行效率,笔者选用了DriverStudio2.7工具软件中的DriverWorks组件进行USB设备驱动程序的开发。DriverWorks为WDM设备驱动程序的开发提供了完善的支持。其中包含一个非常完善的源代码生成工具DriverWizard以及相应的类库和驱动程序范例,它还支持在C++下进行设备驱动程序的开发。通过DriverWizard生成的代码只需要进行少量的修改可以使用,这使得驱动程序开发者可以将精力集中在驱动功能的实现上,而不必理会太多的WDM开发细节。

本设计在DriverWizard的最后自定义了三个IOCTL接口对USB设备进行控制,如表2所示。然后在自动生成的驱动程序代码中向相应的IOCTL函数添加代码,用函数BuildVerdorRequest构建USB协议的自定义向量请求(VendorRequest)。由编译修改后的源代码即可得到驱动程序文件McaD12.SYS。

表2自定义IOCTL接口

自定义IOCTL接口功能说明

Mca_IOCTL_START启动多道采集数据

Mca_IOCTL_READ开始读取数据

Mca_IOCTL_START停止多道数据

2.3USB应用程序的设计

应用程序的设计在VisualC++6.0开发环境下进行。根据实际要求,本设计需要在软件中对采集的数据进行整理、分析并显示。其功能模块主要有数据采集、谱数据显示、ROI操作、系统刻度、谱分析等,其结构框图如图5所示。

在Win32系统中,USB设备被抽象为一个文件,应用程序只需要通过几个API函数就可以实现与驱动程序中USB设备的通信。API函数如表3所示。

表3设备文件操作API函数

API函数功能说明

CreateFile打开设备

ReadFile从设读取数据

WriteFile向设备发送数据

CloseHandle关闭设备

DeviceIoControlI/O控制操作

本程序设计使用MFC多线程技术。单击开始按钮,程序就创建一个用户接口线程,并且通过IOCTL启动USB设备,然后在此线程每隔一定时间(10~20ms)从USB总线上读取一次数据;而程序自身的主线程则不断地依据读取的数据刷新屏幕,显示多道能谱。当单击停止按钮或是设定采集时间到时,程序则通过IOCTL停止USB设备的数据采集,终止用户接口线程,并且停止屏幕谱线的更新。

当创建用户接口线程时,首先从CwinThread类派生一个CioThread类,然后调用AfxBeginThread()函数创建CioThread类的对象进行初始化,启动线程运行。根据需要可将初始化和结束代码分别放在类的InitInstance()和ExitInstance()函数中。其中,InitInstance()函数是从USB采集数据的线程的主要函数。从中实现对IOCTL的调用、对USB设备数据的读取等功能。其流程如图6所示。

3测试与结论

实测Cs放射源γ能谱如图7所示。根据能量为0.6641MeV的谱峰,系统可以自动计算能量分辨率,实测能量分辨率小于10%。

微控制器范文篇10

关键词:触摸屏ADS7846同微控制器PIC16F876

引言

随着社会自动化程度的提高,人机交互能力急需大的转变,向着更方便使用、更直观的方向发展。激光治疗机主要应用激光的物理特性作用于人体,产生机体化学反应从而达到治疗疾病的目的。激光治疗机作为一种精密仪器需要精确的控制及防尘、防静电、防潮等方面的严格要求。激光治疗机输入设备采用触摸屏控制,既是基于以上要求也是从方便使用者操作和界面直观的角度考虑的。触摸屏的应用使得数据的显示和数据的输入结合为一体,简化了整个设备。

1触摸屏原理

触摸屏附着在显示器的表面,与显示器配合使用。通过触摸产生模拟电信号,经过转换为数字信号由微处理器计算得出触摸点的坐标,从而得到操作者的意图并执行。触摸屏按其技术原理可分为五类:矢量压力传感器、电阻式、电容式、红外线式和表面声波式,其中电阻式触摸屏在实际应用中的较多。电阻式触摸屏由4层的透明薄构成,最下面是玻璃或有机玻璃构成的基层,最上面是一层外表面经过硬化处理从而光滑防刮的塑料层,附着在上下两层内表面的两层为金属导电层(OTI,氧化铟),这两层由细小的透明隔离点进行绝缘。当手指触摸屏幕时,两层电层在触摸点处接触。

触摸层的两个金属导电层分别用来测量X轴和Y轴方向的坐标。用于X坐标测量的导电层从左右两端引出两个电极,记为X+和X-。用于Y坐标测量的导电层从上下两端引出两个电极,记为Y+和Y-。这就是四线电阻触摸屏的引线构成。当在一对电极上施加电压时,在该导电层上就会形成均匀连接的电压分布国。若在X方向的电极对上施加一确定的电压,而Y方向电极对上不加电压时,在X平行电压场中,触点处的电压值可在在Y+(或Y-)电极上反映出来,通过测量Y+电极对地的电压大小,便可得知触点的X坐标值。同理,当在Y电极对上加电压,而X电极对上不加电压时,通过测量X+电极的电压,便可得知触点的Y坐标。测量原理如图1所示。

五线式触摸屏与四线式不同。主要区别在于五线触摸屏将其中一导电层的四端均引出来作为四个电极,另一导电层仅仅作为测量的导体输出X向和Y向的电压,测量时要交替在X向和Y向上施加电压。

2触摸层控制器工作原理

触摸屏控制器有多种,主要的功能均是在微处理器的控制下向触摸屏的两个方向分时施加电压,并将相应的电压信号传送给自身A/D转换器,在微处理器SPI口提供的同步时钟作用下将数字信号读入微处理器。控制器ADS7846基本结构如图2所示。

图1触摸点P处测量结果计算如下:

ADS7846内部可以通过寄存器的设置A/D转换器的分辨率设为8位或12位,在本系统中A/D转换器的分辨率取12位。则P点的二进制输出代码为:

其中:Vref_full为加在ADS6746内部A/D转换器上的参考电压。

触摸屏控制器的运行是通过串行数据输入口DIN输入控制命令进行控制的。控制的基本格式如下:

bitbit6bit5bit4bitbitbitbit

起始位(高电平)A2A1A0MODESER/DFRPD1PD0

bit7指明发送命令开始,高电平有效。A2:A0用于选择数据输入通道,101选择X坐标测量,001选择Y坐标测量。MODE将内部模数转换器的分辨率定义为8位(MODE=1)或12位(MODE=0)。SER/DFR为单端/双端参考电压选择位。PD1:PD0根据省电模式的需要进行选择设置。这些命令控制位的设置将在程序代码部分得以应用。

3系统硬件设计

激光治疗机的输入系统由三部分组成:触摸屏、触摸屏控制器和微控制器。微控制器采用Microchip公司的新型芯片PIC16F867。内部总线采用哈佛双总线结构。在内部频率相同的情况下,加快了数据的传输速度,避免了瓶颈现象。此芯片采用精简指令集(RISC)易于使用,加快了开发速度。内部含有8KB程序存储器(分页操作),256字节EEPROM,368字节RAM,8路模数转换器,1个通用串行口(SCI),1个I2C接口,1个串行接口(SPI),3个定时器及看门狗电路(WathcDog)等许多重要资源。许多接口功能上的复用使得整个微控制器简洁,功能强大。

根据ADS7846与微控制器进行数据交换的接口特征,选用PIC16F876的SPI口。SPI口包括三个信号:SDO(串行数据输出),SDI(串行数据输入),SCK(串行同步时钟)。硬件连接关系见图3。

本文侧重于激光治疗仪输入系统的设计,其它硬件的设计仅给出接口的含义。由于PIC16F876的内部集成度较高,所以接口相当简单,但是要完成复杂的控制功能必须进行内部寄存器的设置。

图3

4软件设计

按照以上设计思想设计了应用软件。图4为主程序与触摸屏输入检测部分的程序流程图。其中,坐标数据处理通常采用查表的方法,将用户命令的坐标形成数据表,利用获得的坐标信息进行变换快速查表,从而提高软件的运行速度。

下面是PIC16F876同ADS7846接口的部分程序代码。

CMDATAEQU30H

XDATA_HEQU31H

XDATA_LEQU32H

YDATA_HEQU33H

YDATA_LEQU34H

;初始化寄存器

MOVLW02H

MOVWFTRICB;定义B口方向

MOVLW90H

MOVWFTRISC;定义C口方向

BCFSSPCON,5

MOVLW10H

MOVWFSSPCON;初始化SSPCON

BSFSSPCON,5;启动SPI

;获取X,Y坐标

GetXY

BCFPORTB,0;选口AD7846

MOVLW0D4H;获取X坐标命令

MOVWFSSPBUF;发送命令

BUSY

BTFSCPORTB,1;判忙?

GOTOBUSY

MOVFSSPBUF,W;12位数据

MOVWFXDATA_H;XDATA_H存放高字节

MOVFSSPBUF,W

MOVWFXDATA_L;XDATA_L存放低字节

································

;Y坐标数据同样处理

RETLW0