pic单片机十篇

时间:2023-03-16 20:16:32

pic单片机篇1

关键词Microchip单片机功耗编程

--------------------------------------------------------------------------------

由美国Microchip公司生产的PIC系列单片机,由于其超小型、低功耗、低成本、多品种等特点,已广泛应用于工业控制、仪器、仪表、通信、家电、玩具等领域,本文总结了作者在PIC单片机开发过程中的一些经验、技巧,供同行参考。

1怎样进一步降低功耗

功耗,在电池供电的仪器仪表中是一个重要的考虑因素。PIC16C××系列单片机本身的功耗较低(在5V,4MHz振荡频率时工作电流小于2mA)。为进一步降低功耗,在保证满足工作要求的前提下,可采用降低工作频率的方法,工作频率的下降可大大降低功耗(如PIC16C××在3V,32kHz下工作,其电流可减小到15μA),但较低的工作频率可能导致部分子程序(如数学计算)需占用较多的时间。在这种情况下,当单片机的振荡方式采用RC电路形式时,可以采用中途提高工作频率的办法来解决。

具体做法是在闲置的一个I/O脚(如RB1)和OSC1管脚之间跨接一电阻(R1),如图1所示。低速状态置RB1=0。需进行快速运算时先置RB1=1,由于充电时,电容电压上升得快,工作频率增高,运算时间减少,运算结束又置RB1=0,进入低速、低功耗状态。工作频率的变化量依R1的阻值而定(注意R1不能选得太小,以防振荡电路不起振,一般选取大于5kΩ)。

另外,进一步降低功耗可充分利用“sleep”指令。执行“sleep”指令,机器处于睡眠状态,功耗为几个微安。程序不仅可在待命状态使用“sleep”指令来等待事件,也可在延时程序里使用(见例1、例2)。在延时程序中使用“sleep”指令降低功耗是一个方面,同时,即使是关中断状态,PortB端口电平的变化可唤醒“sleep”,提前结束延时程序。这一点在一些应用场合特别有用。同时注意在使用“sleep”时要处理好与WDT、中断的关系。

图1提高工作频率的方法

例1(用Mplab-C编写)例2(用Masm编写)

Delay()Delay

{;此行可加开关中断指令

/*此行可加开关中断指令*/movlw.10

for(i=0;i<=10;i++)movwfCounter

SLEEP();Loop1

}Sleep

decfszCounter

gotoLoop1

return

2注意INTCON中的RBIF位

INTCON中的各中断允许位对中断状态位并无影响。当PORTB配置成输入方式时,RB<7:4>引脚输入在每个读操作周期被抽样并与旧的锁存值比较,一旦不同就产生一个高电平,置RBIF=1。在开RB中断前,也许RBIF已置“1”,所以在开RB中断时应先清RBIF位,以免受RBIF原值的影响,同时在中断处理完成后最好是清RBIF位。

3用Mplab-C高级语言写PIC单片机程序时要注意的问题

3.1程序中嵌入汇编指令时注意书写格式见例3。

例3

…………

while(1){#asmwhile(1){

……#asm/*应另起一行*/

#endasm……

}/*不能正确编译*/#endasm

……}/*编译通过*/

……

当内嵌汇编指令时,从“#asm”到“endasm”每条指令都必须各占一行,否则编译时会出错。

3.2加法、乘法的最安全的表示方法见例4。

例4

#include<16c71.h>

#include

unsignedinta,b;

unsignedlongc;

voidmain()

{a=200;

b=2;

c=a*b;

}/*得不到正确的结果c=400*/

原因是Mplab-C以8×8乘法方式来编译c=a*b,返回单字节结果给c,结果的溢出被忽略。改上例中的“c=a*b;”表达式为“c=a;c=c*b;”,最为安全(对加法的处理同上)。

.3了解乘除法函数对寄存器的占用

由于PIC片内RAM仅几十个字节,空间特别宝贵,而Mplab-C编译器对RAM地址具有不释放性,即一个变量使用的地址不能再分配给其它变量。如RAM空间不能满足太多变量的要求,一些变量只能由用户强制分配相同的RAM空间交替使用。而Mplab-C中的乘除法函数需借用RAM空间来存放中间结果,所以如果乘除法函数占用的RAM与用户变量的地址重叠时,就会导致出现不可预测的结果。如果C程序中用到乘除法运算,最好先通过程序机器码的反汇编代码(包含在生成的LST文件中)查看乘除法占用地址是否与其它变量地址有冲突,以免程序跑飞。Mplab-C手册并没有给出其乘除法函数对具体RAM地址的占用情况。例5是乘法函数对0×13、0×14、0×19、0×1A地址占用情况。

例5

部分反汇编代码

#include01A7081FMOVF1F,W

#include01A80093MOVWF13

;借用

unsignedlongValue@0x101A90820MOVF20,W

charXm@0x2d;01AA0094MOVWF14

;借用

voidmain()01AB082DMOVF2D,W

{Value=20;01AC0099MOVWF19

;借用

Xm=40;01AD019ACLRF1A

;借用

Value=Value*Xm01AE235FCALL035Fh

;调用乘法函数

……01AF1283BCF03,5

}01B0009FMOVWF1F

;返回结果低字节

01B10804MOVF04,W

01B200A0MOVWF20

;返回结果高字节

4对芯片重复编程

对无硬件仿真器的用户,总是选用带EPROM的芯片来调试程序。每更改一次程序,都是将原来的内容先擦除,再编程,其过程浪费了相当多的时间,又缩短了芯片的使用寿命。如果后一次编程的结果较前一次,仅是对应的机器码字节的相同位由“1”变成“0”,就可在前一次编程芯片上再次写入数据,而不必擦除原片内容。

在程序的调试过程中,经常遇到常数的调整,如常数的改变能保证对应位由“1”变“0”,都可在原片内容的基础继续编程。另外,由于指令“NOP”对应的机器码为“00”,调试过程中指令的删除,先用“NOP”指令替代,编译后也可在原片内容上继续编程。

另外,在对带EPROM的芯片编程时,特别注意程序保密状态位。厂家对新一代带EPROM芯片的保密状态位已由原来的EPROM可擦型改为了熔丝型,一旦程序代码保密熔丝编程为“0”,可重复编程的EPROM芯片就无法再次编程了。使用时应注意这点,以免造成不必要的浪费(Microchip资料并未对此做出说明)。

参考文献

pic单片机篇2

【关键词】PIC单片机;AGC控制系统;设计研究

0.引言

目前我国在钢铁自动化方面取得较大成绩, 但亦有很多钢铁企业因液压控制技术的提升而面临响应随度跟不上的困境。采用PLC及高速闭环模块的自动化方式可达到要求,但其高成本、高维修费另很多企业望而却步,难以完成自动化控制的更新换代。本文以16位的PIC单片机做主控制器,开发了一套板带轧机厚度控制(AGC)系统,具有运行速度快,编程灵活、实用性强、抗干扰强,成本低等特点。

1.AGC 系统整体结构

AGC 系统的基本结构是由轧制力补偿闭环、厚度监控、厚度预控以及液压缸位置闭环(APC)等共同构成的,而AGC 系统的核心部分就是其中的液压缸位置闭环。下位机控制器在实际AGC系统中的主要功能是对现场传感器的数据进行采集,这项功能由相应的转换电路完成,并通过一些控制算法将轧件的具体出口厚度值计算出来,然后通过对伺服阀的驱动控制液压缸的运动来对其厚度进行调整[1]。

在轧机现场,与数据相关的硬件有:用于测量缸位移、导向辊速度的编码器、用于测量压强值的压力传感器、测厚仪、操作箱、指示灯、伺服阀、上位机等。相对应的接口电路在AGC系统当中可以被分为五种,也就是编码器信号输入端口、控制量的输出端口(也就是模拟量输出端口)、模拟量输入接口、数字量信号的接口、通信接口。

2.PIC 单片机

作为一种对设备进行控制的微控制器,PIC单片机属于一种CPU,其具备了一定的分散作用。由于自身具备的很多优点,如:精简指令集的技术、哈佛总线结构、两级流水线指令结构、寄存器采用RAM结构形式等,PIC系列单片机在医疗仪器、信号处理以及自动化设备当中得到了非常广泛的运用。本文采用PIC24H系列的PIC24HJ256GP610芯片,共有100个引脚, 256KB的闪存程序存储器,完全能够满足本系统性能需求[2]。

3.辅助芯片FPGA

为了使轧钢生产线的实际需求得到充分的满足,AGC系统在板带轧机当中需要具备较多的接口电路。然而这样强大的数量资源在现有的处理芯片当中并不具备。所以在对绝对值编码器以及增量式编码器的输入信号进行处理的时候,采用FPGA作为辅助芯片,利用FPGA作为辅助芯片不仅能够将单片机处理单元以及I/O 接口数节省下来,同时还具备更快的数据处理速度以及更强的可靠性等一系列优势。

现场可编程门阵列是FPGA的中文名字,属于一种能够进行编程的逻辑器件,在对其进行设计的时候,设计者可以以实际系统的要求作为依据,然后再利用对相应器件的编程从而保证逻辑功能的实现。作为一种半定制的专用集成电路,其不仅将定制电路的不足克服了,同时还有效的解决了以往的可编程器件缺少足够的逻辑门数的缺陷。FPGA具有非常高的集成度,而且体积相对来说比较小,同时其具备的数量庞大的内部资源可以使各种系统的需求得到充分的满足[3]。

4.模拟量接口电路硬件设计

在实际的工作过程中,AGC系统在进行厚度控制的时候需要对压力传感器的信号进行采集,并将其作为反馈量。电流形式是压力传感器对模拟量进行输出的主要形式,所以不能够在AGC系统当中进行直接输入。因此必须要将其转换成能够使工业满足的信号0~10V,再由并行12位的模数转换器MAX197转换为成数字量,MAX197需要5V工作电压,而本系统的单片机在数字输入引脚上的电压范围为-0.3V到5.6V,那么MAX197的输出与单片机可直接相连。

我们前面所提到的计算出来的辊缝值等为模拟量,用于驱动伺服阀来控制液压缸的抬高与降低,而单片机只能输出数字量,那么就需要将数字量转换为模拟量。本系统采用数模转换器DAC7724,分辨率为12位,可实现4路模拟信号的同时转换。转换后的模拟信号由四路运算放大器TL084进行放大从而控制伺服阀驱动。

经实验数据测量,MAX197及DAC7724测量准确度高,完全满足AGC系统对精度的要求。

5.数字量接口电路硬件

处于在强电设备形成的电磁环境中的轧钢现场,由于共地系统总线回流的状况可能由很多环节的干扰而发生,这样就会导致逻辑数据的变化,从而严重的影响到正常操作以及设备的安全性。在对电路之间电气进行隔离的时候,利用光电隔离的方法能够保证抗干扰能力的有效提升。在电隔离的情况下,光电隔离电路可以将光作为对信号进行传送的媒介,从而隔离输入以及输出信号,这样就对系统噪声起到了有效的抑制作用,从而将接地回路的干扰消除了,同时使数字信号的准确性得到了保证,在该系统中隔离元件是TLP521-4,作为一种具有四通道的光电耦合器,TLP521-4的输入输出隔离很高,同时还具备了补偿电压、电流以及温度的作用[4]。

6.结语

基于PIC单片机的AGC控制系统具有实用性强、抗干扰性好以及成本低廉的特点,同时电压转换电路还具有转换精度高以及电路简单的特性,由于具有很高的可移植性,所以在其他的开发系统中也得到了广泛应用。

参考文献

[1]车海军,杨文蜻,杨景明,等.基于FPGA的AGc系统位置检测接口电路设计[J].电气应用,2012(24):32-35.

[2]XIASiqing,GAOHuaiAhighlineariytopeartionaltanseonduetanaeempifieusedonenveoptaeingpoweamplifie[J].ChineseJuonaofEeetonveiees,2012,35(5):530-534.

pic单片机篇3

【关键词】PIC16F877;单片机;串口通信;A/D转换

在很多生产和工作的现场,对所处的环境指标有特殊的要求,因此,必须对相关数据进行实时监测。如在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控对象。随着工业生产环境的复杂程度不断提高,现场环境参数的技术指标也需要得到相应的提高,而以往传统的监测和控制已不能满足人们对现场环境参数的要求,在这种趋势下,采用单片机来对现场环境参数进行监测和控制取得了较快的发展。采用单片机进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控对象的技术指标,从而能够大大提高产品的质量和数量。因此,利用单片机对现场环境参数的采集问题是一个工业生产中经常遇到的问题。

1.测温仪功能

(1)能实时显示环境温度。

(2)测温范围0~100℃,精度为0.5℃。

(3)能实现测量的数据和PC机的传送。

(4)上位机用Delphi编程实现实时监控。

2.系统设计方案

2.1 系统模型

本文是基于微机控制通信的单片机通用数据采集系统。以单片机为核心,电路设计采用模块化。整个系统由主机,温度采集,键盘及显示,上下位机通讯等四部分组成。

(1)主机板:它是由PIC单片机构成的最小系统来完成。

(2)温度采集部分:它的电路由温度采集电路,放大电路及A/D转换电路构成。其中电桥是温度传感器,经过ICL7650放大电路将电压信号放大后,在经过A/D转换器,将模拟量转换为数字量,然后送PIC16F877进行处理。

(3)显示及键盘控制部分:它是由三个放大三极管分别控制三个八段数码管的亮灭实现动态扫描来进行显示的。用键盘来控制是否向上位机发送数据。

(4)上下位机通信:整个系统分为上位机和下位机,其中下位机为PIC16F877系列单片机,其主用功能是对温度参数进行实时采集监测与控制,上位机为个人PC机,其能通过RS-232-C串行总线接口与单片机的通信口进行数据通信,从而实现对温度参数进行实时观测控制。

在本文的设计中,模块的整体设计如图1所示。

2.2 温度采集电路模块

温度采集主要器件为温度传感器,也可自己制作测温电桥。采用温度传感器PT100作为电桥电路为主的采集电路。温度量到电压量的转化方法是温度传感器PT100作为电桥电路的一个桥臂,电桥在某一温度时呈现平衡状态,其输出是为零;当温度发生变化时,PT100的阻值也跟着发生变化,电桥的平衡被打破,电桥将输出一个电压值,这样就实现了温度信号到电压信号的转变。由于电桥输出的电压信号很小(毫伏级),应经过一个高精度而且放大倍数也很配备的运放将该信号进行放大。电压量到数字量的转变方法是将放大后的电压信号输入A/D转换器,A/D转换器将电压信号转换成数字量信号,这样就完成了温度采集。

2.3 显示电路

LED显示器件可以采用静态和动态两种显示方式。

静态显示方式的每一位可独立的控制,显示不同的字符,显示稳定,但需要的I/O比较的多。为了节省I/O口线,可以采用动态显示,也可以利用74LS164这一芯片“串入并出”的独特特点来实现。

动态显示方式是采用扫描方法显示字符,在每一个时刻所有LED位的段选码相同,由位选码控制相应的LED位显示或熄灭。只要满足一定的扫描速度(如每位被刷新的频率是30次/秒),则显示的字符序列就是稳定。

从本文设计的实际出发,也为了体现PIC系列单片机强大的口驱动能力,也考虑到硬件设计的成本,可选择用动态扫描的方法来制作显示电路。

2.4 键盘电路

一般键盘可以设计为独立式按键和行列式按键结构两大类。独立式结构键盘的每个按键单独占用一个I/O口,上拉电阻是为了保证电阻确保按键松开时,I/O口线有确定的高电平。可以采用查询方式或中断方式读取按键。

行列式键盘,占用相同数量的I/O口线的田间下,允许的按键数量要多的多,所以I/O口线较少但要求按键数量较多的情况下一般采用行列式结构键盘。行列式键盘的工作方式是先由列线送扫描字,然后读取行线状态判断按键。键盘程序也可设计为中断方式。

在本文的设计中,由于使用的按键比较少(仅3个按键),所以没有必要使用行列式键盘。使用独立式键盘即可。由于行列式键盘在扫描时要对行和列分别进行扫描,所以它的扫描速度没有独立式键盘快。

2.5 A/D转换电路

PIC16F87X系列单片机都具有A/D转换功能,对于在本次设计中使用的PIC16F877具有8个模拟输入端。这些模拟输入通道共享一个采样/保持电路,用一个多选一模拟开关进行切换。采样/保持电路的输出是A/D转换器的输入。A/D转换器是采用逐次逼近法进行模拟转换,转换的结果是10位的数字量。A/D转换的模拟基准电压可用软件编程选择,可以选择芯片的正电源电压VDD,负电源VSS以及参考电压。在40脚的PIC16F877中,11/32脚和12/31脚分别是芯片的电源端和接地端。这种A/D转换器集成在芯片的内部,再加上芯片使用了两个电源端和接地端(在芯片的中部),这样就可大大的减少电路对A/D转换的影响,使得测量的更为精确。

2.6 串行通信

在单片机应用中,如图2所示,常把单片机作为PC机的前置机充当数据终端,利用串行口和PC机通信,单片机完成数据的采样,PC机完成数据的的处理,达到很高的性能,如IC卡读/写机、变电站中使用的远程终端RTV等。PC机的串行中(COM1或COM2)是RS232电平(+12V为0,-12V为1),单片机的串行口是TTL电平,必须进行电平转换器(如1488发送器,1489接收器或TC233接收器发送器)变成RS232电平以后才能和PC机的串行口相连。

利用PIC16F877单片机的USART串行接口,可以和其他设备进行串行通信。

2.7 硬件实现方法与电路

PIC单片机输入输出的电平是TTL电平,与RS-232-C不匹配,一般需要用硬件实现电平的转换。在发送端用驱动器将TTL电平转换为RC-232-C电平,在接收端用接收器将RC-232-C电平再转换成TTL电平。

用于进行电平转换的IC比较多,如:ADM202、ADM203、MAX202、MAX232、MC1488、MC1489等等,用户可以根据需要进行选择。MAX232是双路发送/接收转换器,在一片上具有两个发送器和两个接收器。单电源供电(+5V),属于通用串行接收/发送驱动器芯片,它的电路简单,只需要外接5个0.1uF的电容即可。

3.结论

本文设计了一种专用测温仪,下位机采用嵌入式单片机PIC16系列,上位机采用Delphi作为开发工具,进行串口通讯并设计出友好的界面,应用PIC单片机对多点的温度进行采集和测量,通过RS-232接口将测量数据传输到PC机实时显示和记录于数据库中以便查询,并能动态显示。

参考文献

[1]何信龙,等.PIC16F8X快速上手[M].清华大学出版社,2002.

[2]刘和平.PIC16F8X单片机实用软件与接口技术[M].北京航空航天大学出版社,2002.

pic单片机篇4

实验操作是理论联系实际的重要环节,实验报告必须在科学实验的基础上进行,实验报告的撰写是知识系统化的吸收和升华的过程,实验报告应该体现完整性、规范性、正确性、有效性。现将撰写实验报告的有关内容说明如下:

1.实验名称

2.实验目的

本次实验所涉及并要求掌握的知识点。

3.实验内容与实验步骤

实验内容、原理、原理图分析及具体实验步骤。

4.实验环境

实验所使用的器件、仪器设备名称及规格。

5.设计实验数据表格

6.实验过程与分析

详细记录在实验过程中发生的故障和问题,并进行故障分析,说明故障排除的过程及方法。

根据具体实验,记录、整理相应数据表格、绘制曲线、波形图等,并进行误差分析。

7.实验结果总结

对实验结果进行分析,完成思考题目,总结实验的心得体会,并提出实验的改进意见。

注:1.前5项必须在做实验之前完成,并由指导教师签字后才能做实验。

2.对于学生自拟实验题目、参与科研、创新实验等形式实验项目的实验报告可采用论文、实验总结报告等形式完成。

3.此封皮标准页面为16K,实验报告:实验名称:

熟悉PIC系列单片机的开发环境及简单编程

实验目的:

1. 通过顺序结构的简单程序设计,熟悉PIC系列单片机的开发环境,掌握基本应用步骤和命令;

2. 熟悉汇编语言指令,掌握基本的程序设计方法。

实验环境:

PC计算机 MAPLAB编译环境

实验原理 :

实验一:交换两个寄存器内容(例如交换f10H和f11H的内容) 实验过程比较简单,无分支程序,而且思路十分清晰,难度不大。

实验二:(选作)将某一寄存器内容中的奇偶位数据交换。

本实验的思想是:将寄存器中数据同10101010二进制数相与,得到原数据的奇数位,并向右移一位后存至一个寄存器,作为结果数据的偶位数;再将寄存器中数据同01010101二进制数相与,得到原数据的偶数位,并向左移一位后存至另外一个寄存器,作为结果数据的奇位数。最后,将这两个寄存器中的数字进行或运算,得到结果。

实验中,使用了RO作为记录原数奇位数的寄存器,RE作为记录原数偶位数的寄存器,RN作为记录员数据的寄存器,RR作为记录结果的寄存器。

实验程序:

实验一:

LIST P=16C54

RA EQU 10

RB EQU 11

RT EQU 12

ORG 1FFH

GOTO MAIN

ORG 0

MAIN NOP

MOVLW 0

MOVWF RT

MOVLW 15H

MOVWF RA

MOVLW 3AH

MOVWF RB

MOVF RA,0

MOVWF RT

MOVF RB,0

MOVWF RA

MOVF RT,0

MOVWF RB

END

实验二:(选作)

LIST P=16C54

RO EQU 10

RE EQU 11

RN EQU 13

STATU EQU 3

CARRY EQU 0

RR EQU 12

ORG 1FFH

GOTO MAIN

ORG 0

MAIN NOP

MOVLW 99H

MOVWF RN; GIVE VALUE

ANDLW B'10101010'

MOVWF RE

BCF STATU, CARRY

RRF RE; ODD->EVEN

MOVF RN,0

ANDLW &nbs p; B'01010101'

BCF STATU, CARRY

MOVWF RO

RLF RO; EVEN->ODD

MOVF RO,0

IORWF RE,0; ADD THE TWO PARTS OF THE NUMBER BY OR THEM

MOVWF RR

END

调试结果:

实验一结果:

1、赋值后

2、调换中

3、调换后

实验二结果:

1、赋值后

2、取奇数位的数值存入RE

3、将奇数位的数值右移一位

5、取偶数位的数值存入RO

6、将偶数位的数值左移一位

7、得到最后结果

实验分析与实验体会:

本实验通过顺序结构的简单程序设计,我基本掌握了PIC系列单片机的开发步骤和命令,熟悉了PIC系列单片机的开发环境MAPLAB,并在具体变成过程中,熟悉汇编语言指令,掌握基本的程序设计方法。

虽然本实验是基本练习,目的是为了熟悉实验环境,但是,在实验中还是学到了很多东西:

pic单片机篇5

关键词:DDS 频率分辨率 转换速度 频率合成 PIC单片机

在研制雷达系统时,常常需要应用频率合成技术来实现跳频信号源。频率合成是指从一个高稳定的参考频率,经过各种技术处理,生成一系列稳定的频率输出。现在应用最广的是锁相环(PLL)频率合成技术,它是通过变化PLL中的分频比N来实现输出频率的跳频的,但无法避免缩短环路锁定时间与提高频率分辨率的矛盾,因此很难同时满足高速和高精确度的要求。直接数字式频率合成(DDS)是近年发展起来的一种新的频率合成技术。它将先进的数据处理理论与方法引入频率合成领域,是继直接频率合成(DS)和间接频率合成(IS)之后的第三代频率合成技术。DDS的优点是:相对带宽很宽,频率转换时间极短(ns级),频率分辨率很高(可达μHz),全数字化结构便于集成,输出相位连续,频率、相位和幅度均可实现程控。因此能够与计算机紧密结合在一起,充分发挥软件的作用。在实际应用中,可以采用单片机来代替计算机对DDS芯片进行控制,实现合成频率的输出。因此在很短的时间内,DDS得到了飞速的发展和广泛的应用。

1 DDS的基本原理

DDS技术是一种把一系列数字量形式的信号通过DAC转换成模拟量形式的信号的合成技术。正弦输出的DDS的原理框图如图1所示。相位累加器在A位频率控制字FCW的控制下,以参考时钟频率fc为采样率,产生待合成信号相位的数字线性序列。将其高P位作为地址码,通过查询正弦表ROM,产生S位对应信号波形的数字序列S(n),再由数/模转换器(DAC)将其转化为阶梯模拟电压波形S(t),最后由低通滤波器LPF平滑为正弦波输出。

频率控制字FCW和时钟频率fc共同决定了DDS输出信号的频率f0,它们之间的关系满足:

f0=(FCW/2A)·fc

(1)

所以,在DDS结构及fc确定的前提下,通过FCW的控制就可以方便地控制输出频率f0。其频率分辨率为:

f=f0min=fc/2N

(2)

按照Naquist准则,最高输出频率可达0.5fc。但考虑到实际低通滤波器的限制,最高输出频率一般为0.4fc。

由于DAC非线性作用的存在,使得查表所得的幅度序列从DAC的输入到输出要经过一个非线性过程。于就会产生输出信号f0的谐波分量。又因为DDS是一个采样系统,所以这些谐波会fc为周期搬移,即:

f=μfc±vf0

(3)

其中,u、v为任意整数。它们落到Nyquist带宽内就形成了有害的杂散频率,频率的位置可以确定,但幅度难以确定。所以在工程设计过程中要充分考虑输出频带,注意避免上述杂散分量落入其中,以此来获得较好的杂散指标。

2 DDS芯片介绍

DDS的诸多优点使它得到了非常广泛的应用。在数字调制方面,它可以用来实现FSK、QPSK、8PSK等调制。在转达频率源方面,它可以实现多点、窄步长、高相噪的点频输出的频率源以及线性调频输出频率源。在扩频通信方面,它可实现CDMA工作方式以及多种规律的跳频模式。

现在国外已经有非常成熟的DDS芯片。Qualcomm公司推出了DDS系列Q2220、Q2230、Q2334、Q2240、Q2368,其中Q2368的时钟频率为130MHz,分辨率为0.03Hz,杂散控制为-76dBc,变频时间为0.1μs;美国AD公司也相继推出了他们的DDS系列:AD9850、AD9851、可以实现线性调频的AD9852、两路正交输出的AD9854以及以DDS为核心的QPSK调制器AD9853、数字上变频器AD9856和AD9857。AD公司的产品全部内置了D/A变换器,称为Complete-DDS。其中,AD9852时钟频率为300MHz,近端杂散抑制优于-80dBc,远端优于-48dBc,相位噪声为-148dBc/Hz@10kHz,频率跳变速度为130ns,频率分辨率为1μHz。

AD9852主要由48位的频率寄存器、48位相位累加器、正(余)弦查询表(带正交输出)、幅度调制寄存器、乘法器和12位D/A转换器构成。

AD9852可以实现单频、FSK、Chirp、FM Chirp、BPSK等多种输出形式。用其中的Chirp模式和FSK模式可以方便地实现跳频功能,满足雷达跳频系统的要求。使用时只要初始化DDS,设定跳频持续时间和跳频间隔时间即可实现自动跳频。这比以往的DDS芯片如AD9850要方便得多。

AD9852的管脚分为三部分:(1)数据及控制端口;(2)电源部分;(3)参考及输出部分。

由于AD9852是目前市场上性价比较高的DDS器件之一,而且AD9852具有线性调频功能,可以方便实现频率的跳变。所以在雷达跳频系统中最终采用了AD9852芯片。下面就该芯片的应用设计做一简要介绍。

3 频率合成器的设计

要让AD9852工作,需要按下列流程初始化:

(1)数据在WR信号控制下从并行输入口D0~D1写入48位并行寄存器,或在SCLK控制下从串行输入口SDATA写入48位串行寄存器。

(2)对S/P SELECT置1或置0以决定输入数据是并行还是串行。1为并行,0为串行。

(3)AD9852芯片内部不带带通滤波器,所以电路中应该实际工作需要外接带通滤波器,滤除不需要的频率分量。

利用一片AD9852及简单的电路实现频率合成器的结构框图如图2所示。

根据我在设计过程中的实际经验,有以下几个问题需要注意。

3.1 单片机的选择

因为AD9852是3.3V系统,所以必须选择可以工作在3.3V的单片机。设计之初,忽略了这个问题,选用了普通51系列芯片,因为其输出电平只能为5V,高于3.3V,DDS芯片因此被损坏。所打算采用51系列,但因为其在市场上很难买到,所以最终采用了Microchip公司的PIC系列单片机PIC16F874。该单片机可以工作在2.2~5.5V的范围内。又考虑到设计要求的高速控制,PIC16F874单片机的速度是51系列的3倍,所以PIC16F874单片机满足设计要求。

3.2 单片机的电路

DDS的工作电压是3.3V,而PIC的掉电复位电压是4.5V,所以PIC单片机的电路需要使用上电复位模式。

3.3 要避开DDS杂散较大的输出频点

在实际应用中,还有一些点的杂散信号很大,而且离主频很近,无法去除。所以应该避免输出这些频点。这些频点为靠近fc/3、fc/4、fc/5、fc/6……的频点。

3.4 去耦

在一个电子系统中,通常多个器件共用一个电源。而电源线给交流信号提供了一个通路,使得交流信号通过电源线在器件之间传输,形成了干扰。所以必须在器件之间和电源到器件之间的电源线上加入滤波部分,滤掉交流干扰,称为去耦。电源的去耦通常用几个并联电容和串联电感来实现,如图3所示。

3.5 接地

接地可以分为单点接地和多点接地。一般认为,连线长度大于信号波长的二十分之一时,应采用多点接地;反之,则采用单点接地。

实现多点接地就要在PCB板上布出一个面积较大地接地面,此接地面又与接大地的屏蔽外壳大面积接触。这样整个地的阻抗很小,电位可以认为是一致的,各器件就近接地,就避免了在线上形成干扰。

在数模混和的电路中,由于数字部分干扰源很多,所以模拟部分易受影响。因此要注意把模拟地和数字地分开。一般的方法是用一根线来连接数字地和模拟地,而且只在一处相连,这样就可以较好地切断数字部分的干扰源。

3.6 充分利用DDS的sweet pots

如前所述,在DDS中,其相位累加器的位数为A,但用来查询正弦表的位数只有其高P位,剩下的就四舍王入丢弃了,这样做会产生一种相位截断误差。但是如果相位累加器中的A-P位恰好为0,其输出频点的特性就会比较好,这就是所谓的“sweet pots”。所以在DDS单点输出时,使DDS尽量在sweet pots频点输出,可以达到优化输出特性的目的。

3.7 DDS参考信号输入端的注意事项

由于采用了参考信号单端输入的方式,所以REFCLKB端应该接地或电源;参考信号输入端REFCLK要跟电源相连接。因为DDS的参考信号要求有1.6V的直流电平,在参考信号输入到REFCLK端的端点处,应接一个5.1kΩ的电阻到3.3V直流电源,同时接一个0~10kΩ的可变电阻(此处取5kΩ)到100Ω的电阻,经过电阻分压,REFCLK端就有1.6V的直流电压。这个0~10kΩ的可调电阻同时用来微调REFCLK端对地的电阻,以调节REFCLK的直流电位,具体情况请参看图4。图4中的II形滤波部分是为了滤除电源对REFCLK端的干扰。该频率合成器原理图如图4所示。

检验证明,利用AD9852设计的频率合成器具有跳频速度快、频率分辨率高、体积小、系统工作稳定、使用方便等优点。因此它有很强的实用价值。

pic单片机篇6

关键词:温度采集;PIC单片机;无线传输模块

1 引言

在工农业领域和日常生活中[1,2],温度是最常用的被控参数之一。传统的温度采集系统多采用导线连接,需要大量电缆,布线也困难。为此,本文设计了一种基于PIC单片机的无线温度采集系统。系统以PIC16F690单片机作为主控制器,采用智能数字温度传感器DS18B20进行数据采集,利用无线传输模块RFM12B实现数据无线收发。该系统具有高性能、低功耗的特点及快速处理数据的能力。

2 系统总体设计

无线温度采节点主要由无线通信模块、温度采集模块、液晶显示模块、主控制器组成。总体框图如图1所示。

3 系统硬件设计

PIC16F690是美国Microchip公司生产采用纳瓦技术生产的内嵌CMOS闪存的8位单片机[3,4]。该芯片内部集成有2个模拟比较器、2个软件定时器、12通道的10位A/D转换器和增强型PWM+模块,接口电路支持UART、SPI等通信模式。PIC16F690采用20个引脚的PDIP封装I/O口线既能满足通信、控制的需要,又兼具体积小、价格低、可在线调试的特点。DS18B20是DALLAS公司生产的一款线式数字温度传感器[5]。具有3引脚PR-35小体积封装形式;温度测量范围为-55℃~+125℃;可编程为9位~12位A/D转换精度;测温分辨率可达0.0625℃;测出的温度用符号扩展的16位数字量方式串行输出。RFM12B是一款低成本的ISM频段FSK收发模块,其核心电路采用的是带锁相环(PLL)技术的RF12射频收发芯片。RFM12可工作在433/868/915MHZ三个频段,并符合FCC和ETSI要求。它提供一个SPI接口,实现由MCU通过软件去设置各种射频参数和其它辅助功能。在无需外加功放电路的情况下,可使其通迅距离达到200米以上。OCM12232具有低功耗、供应电压范围宽、具有16common和61segment输出,并可外接驱动IC扩展驱动、具有2560位显示RAM(DD RAM),即80×8×4位,可完成文本显示或图形显示的功能设置。

4 系统软件设计

(1)无线通信协议

中心控制器采用轮询点名的方式查询各个温度采集节点的温度值,通讯协议设计为点名制,问答方式。协议格式为:字头+长度+地址+命令+数据+校验。

(2)软件实现

为了能够及时反馈温度值,无线温度采节点在点其他节点名时采集温度,当点名点到自己时,直接将最后一次采集的温度值通过无线发射出去。无线温度采节点程序流程如图2所示。

5 系统测试结果

为验证测试结果,实验室设置了温度测量系统,并采用精度为0. 001 ℃的标准温度计作为温度测量标准。其测量结果如表1所示。

6 结束语

本文结合嵌入式技术与无线通信技术,提出了基于PIC16F690单片机的无线温度采集系统。

实验证明,该无线温度采集系统成本低、功耗低、体积小,灵敏度高,在100 m范围内数据传输安全, 误差率低、传输可靠,具有非常广泛的应用前景。

参考文献

[1]牛永超,马孝义.基于CC1100的温室温湿度监测系统[ J ].农机化研究,2009, 31(8):90-92.

[2]朱卫华,黄智伟.基于无线数字温度传感器的多点温度测量系统设计[ J ].工业控制计算机,2003,16(6):57-58.

[3]张明峰.PIC单片机入门与实战[M].北京:北京航空航天大学出版社,2004.

[4]李海涛,仪维,吴筱坚,等.PIC单片机应用开发典型模块[M].北京:人民邮电出版社,2007.

[5]赵海兰,赵祥伟.智能温度传感器DS18B

20 的原理与应用[ J ].现代电子技术,2003(4):32-34.

pic单片机篇7

【关键词】PIC单片机热电偶PWMPID算法

0 引言

温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械等工业中,具有举足轻重的作用。对于不同场所、工艺,所需的温度范围、精度要求,则采用的测温元件、测温方法以及对温度的控制方法也将不同。

在服装、食品等一些轻工业中,对温度控制的范围、精度有特殊的要求,且对温控设备的造价十分敏感,因而需要一种经济而实用的温控系统。

如在服装工业中,服装的印染、烫画,温度一般要求在150~180℃,温控精度在0~399℃的范围内应达到±2℃,时间以s为单位。如果温度或时间不能满足要求,则产品的质量就达不到要求,甚至可能损坏原材料。因此要求比较高的温度及时间精度。同时,由于其产品的低成本性,要求温控系统的成本尽量低。

1 温度检测部分

工作温度一般为0~399℃,温控精度为±2℃,所以我们选择K型热电偶。镍铬-镍硅(镍铝)热电偶(分度号为K)。

该热电偶的正极为含铬10%的镍铬合金,负极为含硅3%的镍硅合金(有些国家的产品负极为纯镍)。可测量0~1300℃的介质温度,适宜在氧化性及惰性气体中连续使用,短期使用温度为1200℃,长期使用温度为1000℃,其热电势与温度的关系近似线性,价格便宜,是目前用量最大的热电偶。

1 .1 热电偶测温原理

热电偶是一种感温元件,它能将温度信号转换成热电势信号,通过电气测量仪表的配合,就能测量出被测的温度。

热电偶测温的基本原理是热电效应。在由两种不同材料的导体A和B所组成的闭合回路中,当A和B的两个接点处于不同温度T和T。时,在回路中就会产生热电势。这就是所谓的塞贝克效应。

导体A和B称为热电极。温度较高的一端(T>叫工作端(通常焊接在一起);温度较低的一端(T。>叫自由端(通常处于某个恒定的温度下)。

根据热电势与温度函数关系。可制成热电偶分度表。分度表是在自由端温度T。=0℃的条件下得到的。不同的热电偶具有不同的分度表。

在热电偶回路中接入第三种金属材料时,只要该材料两个接点的温度相同,热电偶所产生的热电势将保持不变,即不受第三种金属接入回路中的影响。因此,在热电偶测温时,可接入测量仪表,测得热电势后,即可知道被测介质的温度。

pic单片机篇8

关键词:CAN网关;dsPIC30F6011;CAN总线扩展;CAN总线拓扑结构

中图分类号:TP393.03

0 引 言

CAN总线是一种串行多主站局域网总线,被广泛应用于汽车控制系统、自动控制、楼宇自动化、医学设备等各个领域。其传输距离远,最远可达10 km,传输速率高,最高可达1 Mb/s,容错性能好,可靠性能高。但是由于CAN驱动器的驱动能力有限,

CAN总线能够驱动的节点数有限,一般在100个左右,同时会随着传输距离的增加,最高传输速率会下降,如果距离过长会引起信号丢失、反射等故障。在实验室条件下测得在5 Kb/s的通信速率下最远通信距离能达到10 km;在18 Kb/s的通信速率下最远通信距离只能达到2 km;而在42 b/s的通信速率下,最远通信距离只能达到1 km。测试条件:线缆采用线径为0.75 mm2的屏蔽双绞线,线缆为盘装,室内测试。在实验中,发现随着随着通信距离的增加,通信速率迅速下降,而CAN总线的驱动节点数量也次第下降。而在通信距离远,通信节点多的大空间场所,比如矿井、电力监控等系统需要CAN总线来传输数据和监控信息的场所,CAN总线不能满足要求。

如果要实现通信距离远、通信速率高、总线节点数量多CAN总线系统,实现CAN总线的扩展,就需要一个CAN网关进行桥接,把CAN总线划分为几个子网,增加CAN总线通信节点,延长CAN总线的传输距离,提高CAN总线的传输速率。在研究基于PIC单片机的CAN网关设计和扩展的CAN总线网络拓扑结构。

1 CAN网关总体设计及总线拓扑结构

1.1 CAN网关总体设计

CAN网关作为一种转发设备,连接在两个不同的CAN网络中,能够实时接收来自两个子网中的信息,根据需要筛选或者无条件地把接收到的信息转发到另外一个网络中。CAN总线层次结构分为物理层、数据链路层和应用层,工作于ISO/OSI参考模式下。CAN网关在物理层和数据链路层完成两个CAN网的连接。CAN网关结构图如图1所示。

CAN网关可以作为透明网关和源路由网关。透明网关完全按照接收到的帧格式转发,不改变帧结构,对于用户,网关相当于透明的。而源路由网关由用户提供路由信息,网关按照路由信息对消息进行过滤和有选择性的转发。

1.2 CAN总线网络拓扑结构

带有网关的CAN网络拓扑结构如图2所示。在这个网路中,PC机为主节点,而CAN节点作为从节点。在网络的顶层,由PC机和网关构成一个主网,在这个主网中PC机和CAN网关作为CAN节点,总线驱动器驱动能力可以带100个CAN节点左右。主网中的CAN网关再作为下一个子网中的主节点,而其他CAN网关或是CAN节点作为从节点,构成一个子网。这样通过CAN网关可以逐环把网络扩展下去,直到最底层的CAN节点[8]。而在应用层上,用户可以把网关配置成透明网关或是源路由网光[9]。透明网关不影响网络结构,CAN拓展网络形成一个多节点,远距离的网络。源路由网关对消息具有过滤性,根据用户的配置信息把CAN网络在应用层上划分为几个小网。

这样,解决了节点容量、通信距离、通信速率的问题。

2 网关的硬件设计

硬件电路开发采用集成电路,开发周期短,成本低。CPU采用Microchip公司的16位单片机dsPIC30F6011作为核心部件,其内部集成了┝礁霆CAN控制器,支持CAN 2.0A/B协议, CPU的速度可以达到30 MIPS,程序存储器空间有132 KB,内部RAM有6 144 B,数据程序存储器有2 048 B,集成的功能强大,体积小,性价比比较高。物理层采用两个CAN驱动器PCA82C250。其中一组的PCA82C250的RXD,TXD引脚不是和CPUdsPIC30F6011直接连接,而在中间用光速光藕6N137隔离。

单片机dsPIC30F6011有两个通用的UART口,可以作为和PC机或其他上位机通信的接口来用。另外,dsPIC30F6011采用TQPF封装64引脚,利用通用I/O驱动LED灯作为指示灯,预留并行液晶显示器和4×4行列式键盘的接口。

CAN控制器和驱动器部分采用了光电隔离器,因此电源设计部分要求有两个隔离的5 V电源。考虑到可以会用到液晶显示器,因此一路电源设计采用输出容量1 A的开关电源LM9076,而另外一路采用隔离DC/DC模块电源。这样CAN子网之间实现了电气隔离,如果一个网络出了问题并不影响另外一个网络的正常工作,提高了CAN网络的抗干扰性能。

硬件电路设计电路少、设计简单、成本低。

设计的CAN网关硬件设计系统框图如图3所示。

3 网关的软件设计

CAN网关作为消息的转发器,要准确、实时地接收两个CAN发送的信息,并且要实时发出去。对于不断发出信息的问题节点要及时屏蔽,避免错误信息蔓延到另一个CAN网络。如果CAN网关被设置成透明网关则直接把一个CAN网络的信息转发到另外一个网络中即可,如果CAN网关被设置成和某个区间ID相关,则要做一些信息过滤和屏蔽处理。当CAN网关检测到总线有错误时,要通过备用的UART口将错误信息上发到上位机或其他信息处理主机。

CAN网关的信息接收通过硬件中断来完成。当总线上有消息时,引起硬件中断,进入中断程序后根据中断标志位的区别把接收到的信息存放到相应的缓冲区中。缓冲区是一个FIFO的存储区。而主程序则一直检测两个CAN控制器对应的两个接收缓冲区,当检测到缓冲区不为空时则把缓冲区内的信息顺序发送到另一个网络中。从而形成一个具有一定的错误检测能力的双向通道,完成了两个CAN网络的信息转发。CAN网关的主程序框图如图4所示,中断程序框图如图5所示。

4 结 语

详细介绍了CAN总线扩展技术的网络拓扑结构和系统构成,给出了 CAN网关的硬件设计原理及软件设计框图。这样的CAN总线扩展网络,因为引入CAN网关而增加了消息的传递时间,但是这个增加的时间很小,是微秒级的,可以忽略不计。而带来的优势明显,因为把CAN网络在物理层上划分为几个网络,彼此之间不相互影响,因而增加了CAN网络的抗干扰性,同时,扩展灵活,只需要增加一个CAN网关来增加子网即可;通信速率可通过增加网关来提高,通信距离可以扩展到很远。通过CAN网关增加了CAN总线的[LL]容量、提高了CAN总线的通信速率、扩展了CAN总线的传输距离。

参 考 文 献

[1]吁苗.CAN作为现场总线在车身控制系统中的应用[J].农业装备与车辆工程,2006(9):53[CD*2]56.

[2]邬宽明.CAN总线原理和应用系统设计\[M\].北京:北京航空航天大学出版社,1995.

[3]Philips Semiconductors.Data Sheet.PCA82C250 CAN Controller Interface.

[4]夏巍,严辉,丁刚.CAN 网络的实时性与可靠性的研究[J].安徽建筑工业学院学报:自然科学版,2007,5(7):65[CD*2]68.

[5]饶运涛,邹继军,郑勇云.现场总线CAN原理与应用技术\[M\].北京:北京航空航天大学出版社,2003(6):19[CD*2]20.

[6]王可宁,辛维娟,杨宇祥.电力远程监测系统中的CAN 总线通信技术研究\[J\].仪表技术与传感器,2005(6):29[CD*2]34.

[7]Robert Bosch GmbH.CAN Specification Version 2.0.1991.

[8]曲凤丽,李峰,吴维敏,等.基于网段划分的 CAN总线拓扑优化方法\[J\].组合机床与自动化加工技术,2008(5):2[CD*2]3.

[9]SO11898.Road Vehicles[CD*2]Interchange of Digital Information Controller Area Network(CAN) for High[CD*2]speed Communication.

[10]Microchip公司.dsPIC30F6011A/6012A/6013A/6014A数据手册\[Z\].2004.

作者简介

刘广敏 助理研究员。主要从事单片机应用、微电机控制、现场总线方面的研究。

pic单片机篇9

随着我国福利制度的改革,供暖制度也发生了相应的变化。原来的供暖收费存在着对使用的热能估算不准确、收费不合理等问题。为此,国家建设部在一些城市实施供暖制度改革试点,并对热能实行计量收费,这就要求对使用的热能进行准确的计量。本文给出了一种基于PIC16C64单片机的、针对热水供暖的热能表设计方案。

1 热能表的组成原理

一般热能表的原理框图如图1所示,它主要由积分仪、流量计和温度传感器三部分组成。流量计用于计量流过采暖设备的热水的体积。两只温度传感器分别用于测量进水温度和回水温度。积分仪是热能表的核心,它能够根据流量计提供的热水体积流量和进水、回水温度差等数据计算出消耗的热能。其计算公式如下:

Q=CV(t供水-t回水)

其中,Q为消耗的热能,单位为kWh;C为水的比热容(C=0.001167kWh/L.℃);V为流过采暖设备的热水体积,单位为升(L);t供水、t回水为流过采暖设备进水口和回水口的热水温度,单位为℃。

从热能的消耗计算公式可以看出,只要测得采暖设备进水和回水的温差以及流过采暖设备的热水体积就可以计算出消耗的热能,因此,引起计量误差的因素有:

(1)流量计的精度;

(2)温度测量的准确度;

(3)两只温度传感器的配对误差;

(4)积分仪的计算精度。

对于流量计引起的误差,可以通过选取精度较高的流量计来解决,计算精度可以采用合适的CPU和完善的算法来解决。对于温度测量,国家有相应的标准,温度测量误差一般不大于±0.3℃,而两只温度传感器的配对误差应不大于±0.1℃,所以需要重点解决。

另外,由于热能表通常是安装在室外且长期使用,所以,热能表的功耗、抗电磁干扰、可靠性因素都需要加以考虑。

2 硬件电路构成及实现原理

2.1 硬件组成

根据上面的分析,笔者设计了一种基于PIC16C74单片机的热能表,其组成框图如图2所示。该系统主要由CPU、流量计、A/D转换器、温度传感器、LCD显示器、电路控制、EEPROM存储器和时钟电路等部分组成。其中CPU采用Microchip公司的微处理器PIC16C64,它是系统的核心,用于完成所有的控制和计算功能。温度传感器和A/D转换器组成温度采集电路,可测量采暖设备进水和回水的温度。为了保证测量精度,设计中选用了12位串行A/D转换器ADS7844,理论上,ADS7844的温度采集精度可达0.03℃。流量计用于测量流过取暖设备的热水体积,每流过一定体积的热水,流量计内部的干簧管闭合一次。将这个信号接到CPU的外部中断输入端,干簧管每闭合一次就向CPU申请一次中断,CPU用该信号累计流过采暖设备的热水的体积来进行热能计算。在需要时,还可以通过LCD显示器来显示水温和消耗的热能以及系统信息等。EEPROM存储器用于存储系统信息和消耗的热能。时钟电路用于为整个系统提供系统时间。用键盘可实现各种操作,如:通过键盘可以查看水温、消耗的热能和系统信息等。电源控制电路主要是在不需要显示和温度测量时切断相应部分电路的电源,以降低系统功耗。系统设置是在每次加电时设备系统的年、月、日、小时和分等时间信息。另外,当系统出现故障时,它也可向CPU申请中断,以使CPU将当时的时间、热能值和故障信息写入EEPROM以备查询。

2.2 系统工作过程

该系统的工作流程图如图3所示。每次加电时,一般先设备系统信息,然后CPU进入休眠状态,并等待处理各种中断。在CPU进入休眠状态前,需关闭温度传感器、A/D转换器和显示器的电源以减小系统功耗。处理完中断后,CPU再次进入休眠状态以等待下一次中断。水表中断表示已经有一定体积的热水流水采暖设备,需要计算一次热耗。键盘中断表示应处理各种显示,而故障中断则表示系统某个部分出现故障,此时CPU应将故障类型和此时的有关信息写入EEPROM。

3 注意事项

3.1 温度测量误差和传感器配对误差

从热耗计算公式可以看出,温度测量误差和传感器配对误差均会引起测量误差。鉴于这种情况,设计时一方面必须选用性能良好的温度传感器;另一方面应使温度传感器的特性呈线性关系且两只传感器的温度特性曲线应当一致。但是,常常温度传感器特性在0℃~100℃并非线性,每只传感器的特生曲线又不尽相同。因此,除了采用性能比较好的铂电阻作为温度传感器外,还必须对每只热能表通过硬件或软件校正。由于硬件校正会增加成本,因而多采用软件校正。具体做法是将整个测温范围根据允许的测量误差分为若干段,校正时测出各校正点的误差并存储到EEPROM。而实际工作时,先测出水温,然后采用查表的办法从误差中查出修正值来对所测的温度进行修正。如果测出的水温不是正好在校正点上,则可采用插值估算的办法予以修正。这样处理不仅可以解决温度测量误差,同时也可以解决传感器的配对误差。

3.2 功耗和抗电磁干扰

由于热能表长期处于无人看守状态,且只能使用电池供电,因此,设计时,要求系统功耗应非常低,且抗电磁干扰的性能要好。

正是为了降低系统功耗,设计时除显示器外,所有的器件都采用3.3V的低功耗器件。比如,作控制核心,PIC16C64具有功耗低、运行速度快等特点,其工作电流只有1mA(3.3V@32kHz时),进入休眠状态后只有几微安且可以用中断将其从休眠状态唤醒。温度传感器、A/D转换器和显示器是系统的主要耗能器件,因此在不使用时应将它们的电源切断,以进一步降低功耗。另外,由于PIC16C64的数据总线和地址总线都埋在芯片内部,因此,具有良好的抗电磁干扰性能。

pic单片机篇10

本文介绍以PIC16C73和CC1000为基本部件,设计并实现无线数据传输发射机的过程。

1 PIC16C73及CC1000简介

PIC16C73是Microchip公司生产的一种高性价比的8位嵌入式微控制器。CC1000是为在无线条件下应用所设计的一种极低功率单芯片射频收发器。它主要是为315、433、868和915MHz的ISM和SRD设备所设计,可以编程工作在300~1000MHz范围之间的任一频率上。它具有极低的电流消耗、高灵敏度、体积小、低供电电压、FSK数据传输率可达76.8kbps、FSK调制频谱修正等特点,它还为用户提供了简单易用的开发包。使用CC1000芯片设计电路简单,不需要使用极少的外部元件、不需要外部射频转换和中频滤波器。

2 系统设计

本无线数据传输发射机框图如图1所示。

图中,PIC16C73接收数字或模拟信号,经过缓存、组帧后,将数据传送到射频发射机,由CC1000实现FSK调制后发射出去。

本设计中PIC16C73的振荡周期为4MHz,指令周期为1μs。CC1000工作在发射状态,发射频率306.874457MHz,频偏64kHz,速率7638Kbps,发射功率10dBm。发射数据采用自定义帧格式,其格式为:

4字节位同步字—0AAH,0AAH,0AAH,0AAH;

2字节帧同步字(3位0加13位巴克码)—1FH,35H;

1字节地址或命令;

50字节数据。

上述57字节组成一帧,每两帧之间间隔为8.25ms。

3 硬件设计

单片机PCI16C73与CC1000的连接如图2所示。

单片机通过对3-wire串行设置接口(PDATA,PCLK和PALE)编程,使CC1000处在不同工作模式下。为实现数据回读,PDATA必须使能双向引脚,另一个双向引脚被用来实现数据(DIO)的发送和接收。提供数据定位的位置寄存器,完全设置CC1000需要发送29个16位的数据帧(7位地址位、1位读/写位和8位数据位)。

在每个写循环中,编程数据PDATA线上都发送16位数据,每个数据帧中前7位为地址位,下一位是读/写位(高电平写,低电平读),后8位是数据。在地址和读/写位传送过程中,程序地址锁存器使能PALE线必须保持低电平,然后传送8位数据位。PDATA上的数据同步在编程时钟PCLK的负沿完成。当D0,即8位数据位的最后一位已经载入时,数据就会被载入内部设置寄存器,时序如图3所示。

这些设置寄存器也可被单片机通过同样的设置接口读取。7位地址首先被发送,然后读/写位被置为低来,开始数据回读,时序如图4所示。

4 软件设计

4.1 总体流程图

软件采用模块化程序设计方法,图5是总体流程。

4.2 初始化

初始化是一项十分重要的工作,需要分别对PIC16C73和CC1000两个芯片进行初始化。由于本设计中要完成PC机与PIC之间的异步通信和PIC的模/数据换功能,所以除了PIC16C73的各个PORT端口外,还应对串行通信接口SCI部件和A/D转换部件等进行初始化。在单片机初始化完成后,通过它对CC1000进行初始化,使其工作在发射模式,其流程如图6所示。

4.3 中断服务子程序设计

PIC16C73有多达11种中断源,本设计使用了其中的SCI异步接收中断和A/D转换完成中断。初始化工作完成后,当单片机通过SCI接收完一字节数据后就会产生SCI接收中断,另外,当单片机完成一次A/D后也会产生中断。在产品中断后,程序即进入中断服务子程序,要完成数据的缓存、缓存管理及组帧、数据传送工作。

图6