基于PIC16F87X的声源定位系统设计与实现Word文档格式.docx
- 文档编号:18936953
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:28
- 大小:1.97MB
基于PIC16F87X的声源定位系统设计与实现Word文档格式.docx
《基于PIC16F87X的声源定位系统设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于PIC16F87X的声源定位系统设计与实现Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
需要研究时延估计的基本理论的同时、还要对外界状况以及精度方面的分析进行比较,需要分析影响定位精度的其他因素。
1.3 课题研究内容
课题主要研究的内容有三个他们分别是:
◆.PIC16F87X系列单片机的理论知识
◆.基于TDOA声源定位的理论基础
◆.声源信号的接收及处理
第2章 PIC单片机
2.1 PIC单片机介绍
本课题就是通过对PIC16F87X系列单片机的自学研究。
从而了解基于此系列单片机的声源定位的硬件设计原理,从而达到理论与实践相结合的目的,而本章就详细的介绍了对PIC单片机的自学内容。
单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。
最早期的单片机都是8位或4位的。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。
据统计,我国目前的单片机数量已经达到了1-3亿片,而且每年正在以大约16%的速度持续增长,而相对于世界单片机市场我国的占有率只有区区的1%。
从此方面来讲充分的说明单片机在未来的应用在我国还有很大的发展空间,还有非常广阔的前景。
就单片机而言,单片机的种类很多,PIC只是单片机大家族中的一个小群体,PIC单片机是一个小型的计算机。
PIC系列单片机品种虽多,但是各个产品的内部硬件构成和它的资源数据,存储器的设置仍然是有规律可循的,PIC系列单片机各种类别的数据存储器基本上都是以寄存器方式工作和寻址的。
其PIC内部专用寄存器包括了很多种不同的寄存器,其中有定时寄存器TMRO、选择寄存器OPTION(又称为项选寄存器)、程序计数器PCL、状态寄存器STATUS、间接寻址寄存器INDF和FSR、端口I/O寄存器(如PORTA、PORTB…)和相对应的端口I/O控制寄存器(又称为端口I/O数据方向寄存器,如TRIAS、TRISB…)、保持寄存器PCLATH和中断控制寄存器INTCON等。
上述的专用寄存器都是PIC16C63/65/65A和PIC16C71A共同有的,它们不仅是寄存器名称、功能相同,而且寄存器的地址也完全相同。
如果再查看其它PIC单片机,如PIC16C62/62A/64/64A、PIC16C71/72/73/73A/74/74A、PIC16C8X……它们的专用寄存器名称凡是与以上相同者其地址也完全与上述相同,可见尽管PIC系列单片机品种多,但掌握它们的规律后,学习起来是不难的。
PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。
然而,处理能力—存储器容量却很有限,这取决于PIC的类型。
但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。
2.2 PIC单片机主要性能
众所周知PIC系列单片机是由美国Microchip公司生产的单片机产品,具有较好的抗干扰性能、简洁的指令集、所需硬件配置较少的特点。
PIC16F877单片机是其开发的新产品,具有Flash编程的功能,用户可以直接在单片机上进行如暂停CPU执行、观察寄存器内容等操作,非常适用于教学和进行新产品的研发。
PIC16F877A单片机是目前应用最广泛的一种PIC单片机。
在电脑的外设、家电控制、电信通信、智能仪器、汽车电子以及金融电子等各个领域得到了广泛的应用。
2.2.1 PIC16F877A特性
PIC16F877A具有PIC16F87X系列单片机的共同特点,主要性能如下:
◆高性能RISCCPU
◆35条单字指令
◆所有指令皆为单个周期,只有程序式分指令是两个周期
◆运行速度:
DC~20MHz时钟输入,DC~200纳秒指令周期
◆数据总线与指令总线分离
◆中断能力
◆8级深度的硬件堆栈
◆直接、间接和相对的寻址方式
◆上电复位(POR)、可定时上电
◆代码的保护为可编程式
◆全静态设计
◆在线串行编程(ICSP)
◆其外围特征
◆10个多通道A/D转换器
◆带有RD,WR和CS控制(只40/44引脚)8位字宽的并行端口
PIC16F877具有FlashProgram程序内存功能,可以重复烧录程序,而其内有ICD(InCircuitDebug)功能,可以让使用者直接在单芯片电路或产品上,进行如暂停微处理器执行、查看缓存器内容等新功能,PIC16F877A单芯片有PLCC(PlasticLeadedChipCarrier)与QFP(QuadFlatPackage)两种形式的包装,依照不同的需求,寻找不同的包装形式。
PIC16F877A(见图2.1和图2.2)属于闪控式(Flash)单芯片,可以重复烧录,其ROM的容量总共是8K字节,以2K为一页,区分为4页;
内部RAM总共有512个字节(00f~1FFh),以128个字节为一个存储块,工区分为4个存储块,每个存储块的前半段都具有特殊用途,分别连接到特殊功能模块,例如I/O,CCP,Timer,USART,MSSP等。
图2.1PIC16F877A实物
图2.2PIC16F877A引脚说明
2.2.2 PIC16F877A的各引脚及其功能
PIC16F877A一共有40个引脚其功能如见下表2.1。
表2.1PIC16F877A引脚功能
引脚
功能
OSC1/CLKIN
13
振荡器晶体输入/外部时钟源输入
OSC2/CLKOUT
14
振荡器晶体输出,在晶体振荡器方式下,接晶体或陶瓷谐振器;
在RC方式下,输出1/4fosc1
MCLR/VPP/THV
1
主清零(复位)/编程电压输入/高电压测试方式控制,复位低电平有效
RA0/AN0
RA1/AN1
RA2/AN2/VREF-
RA3/AN3/VREF+
RA4/T0CKI
RA5/SS/AN4
2
3
4
5
6
7
A口是双向I/O口
RA0作为模拟量输入口0
RA1作为模拟量输入口1
RA2作为模拟量输入口2/模拟参考电压负极
RA3作为模拟量输入口3/模拟参考电压正极
RA4作为为Timer0定时器/计数器时钟输入
RA5作为模拟输入口4/同步串行口的从动选择输入
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
33
34
35
36
37
38
39
40
B口是双向可编程I/O口,所有引脚内部弱上拉
RB0作为中断外部信号进行输入
RB3作为为电压较低时输入
RB4引脚电平变化产生中断
RB5引脚电平变化产生中断
RB6引脚电平变化产生中断/在线调试器
RB7引脚电平变化产生中断/在线调试器
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
15
16
17
18
23
24
25
26
C口是双向I/O口
RC0也作为Timer1/Timer时钟输入
RC1也作为Timer1输入/比机器输出或者PWM2输出
RC2也作为/PWM1输出
RC3也作为SPI和I时钟的输入/输出
RC4也作为SPI通信数据线的输入/I2C数据I/O线
RC5也作为SPI通信数据线的输出
RC6也作为非同步传输或SCI同时间时钟线
RC7也作为非同步接收或SCI同时间数据线
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
19
20
21
22
27
28
29
30
D口是双向I/O端口,也可单片总线接口
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
8
9
10
E为I/O端口
RE0作为并行en_read/模拟量输入5
RE1作为从动口的en_write线/模拟量输入6
RE2作为并行片选控制线/模拟量输入7
VSS
12
31
逻辑信号和I/O引脚对应的接地端
VDD
11
32
逻辑型号和I/O引脚对应的电源正极
2.2.3 PIC16F877A的特殊内嵌功能
PIC16F877A属于内嵌功能较多的单芯片,除了CPU、POM、RAM及I/O等基本构造外,还包括以下各种功能,简介如下:
◆A/Dconverter:
模拟数字转换器,最多可以读取8组模拟输入信号。
◆CCP:
输入捕捉、输出比较、PWM,用于控制直流马达。
◆Timer:
内部定时器,有Timer、0Timer1、Timer2三个。
◆USART:
UniversalSynchronousAsynchronousReceiverTransmiter,同步/异步串行传输,如RS232、RS485等。
◆MSSP:
MasterSynchronousSerialPort,两线式(I2C)与三线式(SPI)标准同步。
串行传输协定,常用于EEPROM内存资料的烧录与读取,或是与其他集成电路沟通与联系,形成多芯片网路。
2.2.4 PIC16F877A输入输出区
PIC16F877A有33只引脚都可以当成输入、输出引脚,输入输出端口是单芯片基本界面,可以与周边电路进行电路控制和信号传输与检测。
PIC是8位的单芯片,以引脚特性分组,每组尽量凑满8只引脚,并将I/O命名为PORTA(RA0~RA5)、PORTB(RB0~RB7)、PORTC(RC0~RC7)、PORTD(RD0~RD7)和PORTE(RE0~RE5)等,各分组特性说明如下:
◆PIC16F877A的PORTA的总共有6位(RA0~RA5),PORTA的引脚可作为数据输入输出端口,而系统重置后,PORTA自动生成模拟输入状态,可以取读模拟输入信号。
◆PORTB的总共有8位(RB0~RB7),可以编写程序规划输入输出方向、状态,其中,要进行烧录时,使用到三个引脚,分别是引脚36(RB3/PGM),引脚39(RB6/PGC)与引脚40(PB7/PGD)。
◆PORTC的总共有8位(RC0~RC7),除可以作为数据I/O外,还和一些特殊功能的外微电路共享引脚,例如CCP(直流马达控制)、I2C、SPI(同步串行通信电路)、UART(异步串行传输电路)等。
◆PORTD的总共有8位(RD0~RD7),出可做一般数据I/O外,并与PSP(ParallelSlavePort)并行传输区共享。
当整体系统需要多单芯片时,彼此可以经由并行传输区来快速传输资料。
◆PORTE的总共有3位(RE0~RE2),PORTE的引脚8、9、10有三种功能,除了基本的I/O功能外,还有模拟输入功能,而上述PORTD的并行传输区设定所需的控制引脚,如/RD、/WR、/CS等,也是属于PORTE引脚。
第3章 PIC编程
3.1PIC单片机编程系统
3.1.1 指令概述
指令就是人们用来指挥CPU按要求完成每一项基本操纵的命令,每一种单片机都有其不同的指令集,所谓指令集就是该单片机的全部指令的集合,也称其为单片机的指令系统。
由于生产厂家的不同,或者由于单片机的CPU内核的差异,他们的指令系统一般会各不相同。
在一个固定的指令系统之中,每一条指令都可以完成一种固定的操作行为,例如,数据传送操作,加法操作,减法操作,逻辑与操作,逻辑或操作,左移操作,右移操作,等等。
而对于上述的操作看似简单,但是无论多么复杂的控制操作,都可以用上述简单的固定操作行为去实现复杂的控制。
换句话说,通过一些列有规则的简单操作,只要得当、具有规则性、目的性的组合在一起就可以构成一个符合我们要求的复杂功能程序。
3.1.2 PIC单片机C语言编程简介
C语言有着简洁方便,灵活紧凑,运算符丰富,数据类型丰富的特点。
在编写程序的时候,会省时省力,它的代码效率特别高,这是其优点中最为突出的,同时维护升级校对起来非常方便,代码的重复利用率很高,在多平台的情况下还可以进行跨平台的代码移植等等很多优点,综上所述,C语言编程在单片机系统设计中也已经得到了越来越广泛的运用了。
针对PIC单片机的软件开发,同样可以用C语言实现。
单片机相对于PC机在程序编写这一技术问题上存在着一定的差距,主要的原因在于PC机的资源非常丰富,而起运算能力要远远超过单片机,所以当有一个程序需要编写时,程序员在编写过程中,他大多数不用担心编译后的可执行代码在运行过程中会占用系统的资源数,也不太多考虑其运行效率。
但是相反的是单片的内部资源非常有限,对控制的实时性的要求要比PC机的高的多,所以如果没有对单片机的结构体系与硬件资源作详尽的了解,以笔者的愚见认为是无法写出高质量实用的C语言程序。
这就是为什么前面所有章节中的示范代码全部用基础的汇编指令实现的原因,希望借此能使读者对PIC单片机的指令体系和硬件资源有深入了解,在这基础之上再来讨论C语言编程,就有水到渠成的感觉。
本论文围绕中档系列PIC单片机来展开讨论。
在进行单片机C语言编译之前,我们必须要提到的就是PIC单片机的C语言编译器了,作为单片机龙头的Microchip公司,让人遗憾的就是她没有针对于中低档的编译器,但为了单片机的C语言编译的可行性,我们可以找一些比较专业的第三方公司来进行PIC单片机的编译,他们有Bytecraft、CCS、IAR、Hitech。
其中最经常被使用的就是Hitech公司的PICC编译器,它具备稳定性好,生成的代码效率高等优点,得到了很多相关专业人士的认可。
但其正版软件需要付费的,在其网站上有限时的试用版。
但是Hitech公司为了满足广大PIC爱好者的需求,提供了免费版的PICC-Lite学习版编译器套件,这款学习版和正版的操作使用基本是一致的,但只支持PIC单片机家族中的PIC16F877、PIC16F628和PIC16F84等几款。
这几款Flash型的单片机因其所具备的丰富的片上资源而最适用于单片机学习入门。
3.1.3 PIC单片机C语言编程环境
Hitech-PICC编译器
PICC大体上还是符合ANSI标准,但有一点例外:
对函数的递归调用,它完全不支持。
导致这种结果的因素是PIC单片机特殊的堆栈结构。
在前面介绍PIC单片机架构时已经详细说明了PIC单片机是通过硬件控制堆栈的,深度主要是由单片机本身决定的。
显然,大量堆栈式操作的递归算法是不可能实现的。
除此之外,软件的堆栈要再单片机中得以实现其效率会比较低,正因如此,PICC编译器采用一种对其中局部变量进行固定分配其地址空间的技术,称为“静态覆盖”,在这种技术的帮助下所产生的机器代码效率就会很高,届时代码量超过4K字节后,在整个C语言编译过程中十分注意编写语句效率的情况下,C语言所编译出来的代码长度与全部都用汇编语言所写代码的代码量的差距就已经不是很大了(小于百分之十),如果之前没有对PIC单片机的内核,各功能模块和汇编指令,C语言基础有着深刻的了解是很难做到这一点的。
MPLAB-IDE内挂接PICC
PICC编译器可以直接挂接在MPLAB-IDE集成开发平台下,实现一体化的编译连接和原代码调试。
使用MPLAB-IDE内的调试工具ICE2000、ICD2而且其源代码级别的程序调试都可以通过软件模拟器来实现,非常快捷。
首先必须在你的计算机中安装PIC单片机的C语言编译器,无论是完全版还是学习版都可以和MPLAB-IDE挂接。
安装成功后可以进入IDE,选择“ProjectSetLanguageToolLocations”菜单项。
打开工具挂接设置项,见图3.1。
图3.1MPLAB-TDE语言工具设置页面
在如3.1图所示页面后,找到“(HI-tech)PICC工具栏”一项,将其展开后,找到可以运行的文件组选项:
“Executable”之后,所有的可以执行的后台可调用的PIC编译器可用文件都会被“MPlab-IDE”的作用下显示出来。
在所显示的页面中可以找到名字为“PICCAssembler”的汇编语言编译器,将其与C语言程序编译器(PICCCompiler)相连后,点击“PICCLinker”连接定位程序后,会显示出对应的可执行程序名。
而在此时都会显示“PICC.exe”文件。
然后分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 PIC16F87X 声源 定位 系统 设计 实现