关于PIC16F616单片机的一些经验
PIC16系列单片机的ID码解读
PIC16 系列单片机的ID 码解读
见过很多初学者对PIC16 系列单片机的ID 码的读和写犯迷糊。
说实话,这方面的资料也不怎幺全。
有些教材可能会涉及ID 区域的介绍,可是往往是一代而过。
这对初学者来说是比较容易犯错的地方。
今天有空,对相关的问题作了一些整理,分享给大家。
可能有些地方说的不够妥当,欢迎大家多多探讨。
1.什幺是ID 区域?
ID 区域是独立于EEPROM,FLASH,RAM 的区域。
程序设计人员可以利用该区域存放软件的版本号,编写日期,烧录日期,产品标识等信息。
不过该区域很小PIC16 系列只能存放4 个字节。
2.ID 码怎幺烧录到ID 区域里面去?。
最新(总结范文)之单片机学习总结与心得
最新(总结范文)之单片机学习总结与心得单片机进修总结与心得为了给前一段时候进修pic16f616型单片机的一个总结和便利人人的交换,我写了这篇对于pic单片机的进修心得,都是在看了手册和编程调试后用本人的言语构造的,其中有缺乏或许有疑问的处所但愿大家能实时的赋予纠正和品评,提出珍贵的看法。
复位、中缀和就寝(1)复位pic16f616包孕如许的几个复位性能,上电复位(power-on)、硬件复位、欠压复位(brown-out)、看门狗复位。
对于上电复位por,人人都不目生,单片机在上电的时间坚持复位直到电压可以或许餍足其失常的事情电压,同时你能够经由过程对connfig(编译器上即可配置)的配置,来开启power-uptime,这个时候普通为64ms。
硬件复位能够经由过程mclr引脚外界复位电路,即可完成硬件复位(将此引脚接低电平)。
欠压复位这个性能是可选的,也能够间接在编译环境中设置config寄存器来开启此性能。
当此性能开启时,假如单片机在运转的时间,供电电压缺乏就会惹起欠压复位,复位后单片机假如发明供电电压曾经达到正常值的时间,会有一个64ms的延时,而后再运行步伐。
对于看门狗的复位在看门狗部份曾经说了。
这里的一些复位还涉及到一些标记位。
这些标记位漫衍在status和pcon下面。
status上有两个位to、pd,当标记位to=1时,暗示暗示曾经操作了上电复位或者是执行了clrwdt或许sleep指令,当to=0时,暗示发生了看门狗复位。
当标记位pd=1时暗示操作了上电复位或者是执行了clrwdt指令,当pd=0时,暗示执行了sleep指令。
pcon上有两个标记位是por和bor,分手暗示的是上电复位和欠压复位标记。
详细的能够参看手册。
(2)中缀pic16f616包孕如许的几个中缀源:ra2/int引脚内部中缀、ra端口电平变迁中缀、定时器timer0、timer1、timer2溢出中缀、比拟器中缀、ad转换中缀、捕捉/比拟/pwm中缀。
PIC单片机控制触摸屏心得
PIC单片机控制触摸屏一、触摸屏基本原理:触摸屏并非液晶显示屏,而是显示屏前面的透明薄膜。
它有三层构成:X电极层、Y电极层、中间隔离层。
两电极层平常是相互绝缘的,当手指触摸屏幕时,平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零,控制器侦测到这个接通后,进行A/D转换,并将得到的电压值与5V相比即可得触摸点的Y轴坐标,同理得出X轴的坐标,这就是所有电阻技术触摸屏共同的最基本原理。
二、PIC单片机pic16f77简介:1、我所使用的是40脚封装的芯片。
管脚如下图:I/O口的方向有TRISX寄存器设置。
0是输出1是输入,若为输出,则PORTX寄存器和RXw位可以控制引脚的高低电平。
2、AD转换模块:AD转换模块有三个寄存器:ADCON0、ADCON1、ADRES。
AD转换的步骤:其中第4步中需要等待的采集时间有时不能按照文档中所说的16us左右。
如果单纯的用一路AD通道,则16us的采集时间是可以的。
但是若涉及到多通道之间的相互转换后,这个时间就不能保证采集的信号是正确的,应该延长采集时间。
我看到网上有人说用1ms 的延时,具体延时应根据实际情况测量一下。
AD转换结果位于ADRES寄存器中,8位。
3、通用串口USART:建议大家调试程序的时候多用一下USART,太好用了。
下面是有关寄存器:TXREG :发送缓冲器,RCREG :接收缓冲器。
4、中断:下面是与中断有关的寄存器:中断编程需要注意的问题:PIC单片机的编程软件是MPLAB,它只有一个中断函数,并且有interrupt关键字。
多个中断同时使能时,需要在中断函数里判断中断标志位,来判断是哪个外设发生了中断。
三、控制电路:程序设计:(1)、检测是否有触控操作:首先使T1、T3导通,T2、T4截止,AD转换ADY 的电压值,若为0或某一范围内,则认为没有触控操作,否则有触控操作。
跑步机的控制方式
关于直流电机在跑步机中的控制方案调研报告对于专业的跑步机,国内外跑步机用驱动电机仍以有刷直流电机为主,采用直流电动机不可逆PWM系统。
此前,青岛英派斯健身集团开发的一款DP220T健身房用跑步机就是采用了跑步机用有刷直流电动机为驱动电机,以集成PWM控制芯片SG3525A为核心,硬件电路实现的电压负反馈、电流补偿控制的PWM闭环控制系统。
尽管有着控制简单的优点,但直流有刷电动机由于存在电刷和换向器的机械换向结构,长期运行必然需要经常维护电刷和换向器,而且,由于损耗存在于转子上,使得散热困难、温升增加,限制了电机转矩重量比的进一步提高。
对于价格相对便宜的家庭用小型跑步机,主要是根据市场的实际需求,在保证技术指标的前提下,尽量考虑设计的经济性和实用性。
家庭用跑步机几乎都采用的是直流有刷调速系统。
例如,国内某型号的跑步机,采用低价位的8位单片机AT89C2051为核心单元构成了直流有刷电机调速系统,电机采用脉宽调制方式进行调速,通过软件编程改变控制算法,增加了控制的灵活性,具有较高的性价比。
使用交流伺服驱动系统取代直流有刷调速系统是目前研究的一个重要方向。
但是我们不用交流伺服电机驱动系统,故不做过多讨论。
目前无刷直流电动机调速系统在电动跑步机上的应用也是研究的一大热点。
一方面,无刷直流电动机具有有刷直流电动机运行效率高、无励磁损耗以及调速性能好等优点;另方而,由于其采用电子换向装置取代了有刷直流电动机的机械换向结构,从而又具有交流电动机结构简单、运行可靠、维护方便等一系列优点。
因此,采用无刷直流电动机调速系统较其它方案具有更高的性价比。
而对于电动跑步机系统,由于其要求较大的起动转矩,所以,采用带位置传感器的PWM调速系统是性能较好的方案。
对于其具体的实现方案主要有两种,一种是以无刷直流电机专用控制芯片为核心控制单元构成无刷电动机调速系统。
最具代表性的是MOTOROLA公司生产的第二代无刷电机控制专用芯片MC33035,它集成了译码、PWM生成、保护等无刷电机控制的诸多功能,组成的系统所需外围电路结构简单,运行可靠,可与同系列芯片MC33039配合构成速度闭环控制,具有较好的调速性能,其不足之处在于调速式单一,无法使用较为复杂的算法。
PIC16位数字信号控制器和单片机入门指南
PIC16位数字信号控制器和单片机入门指南基本连接要求在开始使用 dsPIC33EPXXXGP50X、 dsPIC33EPXXXMC20X/50X PIC24EPXXXGP/MC20X 系列器件进行开发之前,需要注意最基本的器件引脚连接要求。
下面列出了必须始终连接的引脚名称:•所有 VDD 和 VSS 引脚•所有 AVDD 和 AVSS 引脚(不论是否使用 ADC 模块)• VCAP• MCLR 引脚• PGECx/PGEDx 引脚,用于进行在线串行编程( In-Circuit Serial Programming™, ICSP™)和调试• OSC1 和 OSC2 引脚(使用外部振荡器源时)此外,可能还需要连接以下引脚:• VREF+/VREF- 引脚(在实现 ADC 模块的外部参考电压时使用)去耦电容需要在每对电源引脚(例如, VDD/VSS 和 AVDD/AVSS)上使用去耦电容。
使用去耦电容时,需要考虑以下标准:•电容的类型和电容值:建议使用参数为 0.1 μF( 100 nF)、 10-20V 的电容。
该电容应具有低ESR,谐振频率为 20 MHz 或更高。
建议使用陶瓷电容。
•在印刷电路板上的放置:去耦电容应尽可能靠近引脚。
建议将电容与器件放置在电路板的同一层。
如果空间受限,可以使用过孔将电容放置在 PCB 的另一层,但请确保从引脚到电容的走线长度小于0.25 英寸( 6 毫米)。
•高频噪声处理:如果电路板遇到高频噪声(频率高于数十 MHz),则另外添加一个陶瓷电容,与上述去耦电容并联。
第二个电容的电容值可以介于0.001 µF 和0.01 µF 之间。
请将第二个电容放置在靠近主去耦电容的位置。
在高速电路设计中,需要考虑尽可能靠近电源和接地引脚放置一对电容。
例如,0.1 µF 电容与0.001 µF 电容并联。
•最大程度提高性能:对于从电源电路开始的电路板布线,需要将电源和返回走线先连接到去耦电容,然后再与器件引脚连接。
pic16f单片机例程 -回复
pic16f单片机例程-回复如何使用PIC16F 单片机编写程序。
第一步:了解PIC16F 单片机的基本知识PIC16F 是一种低功耗、高性能的单片机芯片,由美国微芯科技公司开发。
它拥有多种功能和较大的内存空间,适用于很多应用场景,如家电、汽车电子、工业控制等。
该单片机的主要特点包括:8 位的CPU,最多可存储8KB 的程序代码,具备各种输入/输出接口,支持多种通信协议,并且能够与外部设备进行数据交互。
第二步:准备开发工具和环境在编写PIC16F 单片机程序之前,我们需要准备好相应的开发工具和环境。
常用的工具包括MPLAB X IDE(集成开发环境)、XC8 C 编译器(用于编译C 语言代码),以及一个PICkit 编程器(用于将程序烧录到单片机上)。
安装MPLAB X IDE 后,在软件中选择合适的PIC16F 型号,创建一个新的项目,并将XC8 编译器与之关联。
第三步:编写程序代码在MPLAB X IDE 中,我们可以使用C 语言来编写PIC16F 的程序代码。
以下是一个简单的示例,用于控制一个LED 灯的开关:c#include <xc.h>配置LED 引脚#define LED_PIN RA0#define LED_TRIS TRISA0void main(void) {配置引脚为输出模式LED_TRIS = 0;主循环while (1) {点亮LEDLED_PIN = 1;延时一段时间__delay_ms(1000);熄灭LEDLED_PIN = 0;延时一段时间__delay_ms(1000);}}在这个示例中,我们首先通过宏定义来配置LED 对应的引脚和寄存器。
然后,在主函数中,我们将引脚配置为输出模式,并进入一个无限循环。
在循环中,我们先点亮LED,延时一段时间后再熄灭LED,并再次延时,以实现LED 的闪烁效果。
第四步:编译和烧录程序在编写完程序代码后,我们可以使用MPLAB X IDE 的XC8 编译器对代码进行编译。
pic16f单片机例程
pic16f单片机例程如何在PIC16F单片机上实现一个简单的LED闪烁程序PIC16F系列是微芯科技公司推出的8位单片机系列产品,被广泛应用于各种嵌入式系统中。
其中,PIC16F877A是该系列中应用最广泛的一款单片机。
本篇文章将介绍如何使用PIC16F877A单片机,通过编写一个简单的LED闪烁程序来展示其基本的程序控制能力。
第一步:准备硬件设备要实现LED闪烁程序,我们需要以下硬件设备:- PIC16F877A 单片机- 开发板- LED- 适配器(用于将单片机上的数字电压转换为LED所需的电压)将PIC16F877A单片机插入开发板的合适位置上,并连接好适配器和LED。
确保硬件设备连接正确,以便在编写程序后能够顺利进行实验和调试。
第二步:编写闪烁程序C语言是编写PIC单片机程序的常用语言。
我们将使用MPLAB X IDE和XC8编译器来编写闪烁程序。
按照以下步骤进行设置和编写程序。
1. 安装MPLAB X IDE以及XC8编译器,确保其正常运行。
2. 打开MPLAB X IDE,创建一个新工程。
选择"Microchip Embedded" -> "Standalone Project",并选择合适的工具链(例如:XC8)。
3. 选择PIC16F877A作为目标设备。
4. 定义单片机的时钟频率和相关配置参数。
在项目窗口的“Properties”下,选择"XC8 Global Options" -> "PIC14/PIC16" -> "Configuration bits",并设置好需要的参数(例如:时钟频率、使能位等)。
5. 在工程目录下创建一个新的.c文件,用于编写闪烁程序。
例如:ledBlink.c6. 编写闪烁程序的代码。
以下是一个简单的LED闪烁程序示例:c#include <xc.h>#define _XTAL_FREQ 8000000函数声明void init(void);void delay(void);主函数int main(void) {init();无限循环while(1) {设置LED端口为高电平PORTDbits.RD0 = 1;延时delay();设置LED端口为低电平PORTDbits.RD0 = 0;延时delay();}return 0;}void init(void) {将RD0引脚配置为输出TRISDbits.RD0 = 0;初始化RD0引脚为低电平PORTDbits.RD0 = 0;}void delay(void) {延时函数,用于控制LED闪烁的速度__delay_ms(500);}第三步:编译和下载程序完成程序的编写后,我们需要将其编译成二进制文件并下载到PIC16F877A单片机中。
pic16单片机控制led灯组控制原理
pic16单片机控制led灯组控制原理关于PIC16单片机控制LED灯组的控制原理,需要从如下几个方面进行详细阐述。
第一部分:PIC16单片机简介在介绍控制原理之前,需要先介绍一下PIC16单片机的基本概念和特点。
PIC16单片机是一种微型计算机,具有处理器、存储器和输入/输出设备等功能集成在一个芯片中。
它具有低功耗、高性能、易于编程等特点,被广泛应用于各种嵌入式系统中。
第二部分:LED灯组的概念和类型LED灯组是由多个LED灯连接在一起形成的灯条或灯串。
LED灯组可以用于室内照明、广告招牌、汽车照明等领域。
根据连接方式和控制方式的不同,LED灯组可以分为常量电流型和常量电压型两种类型。
第三部分:PIC16单片机控制LED灯组的原理PIC16单片机可以通过控制引脚的高低电平,来控制LED灯组的亮灭和闪烁。
具体原理如下:1. 连接电路搭建:首先,需要将PIC16单片机的控制引脚与LED灯组的控制引脚相连接。
这里使用了两个GPIO(General-PurposeInput/Output)引脚,一个作为信号输出口,一个作为信号输入口。
2. 程序编写:使用PIC16单片机的编程软件,根据控制需求编写相应的程序。
程序需要设置GPIO引脚的工作模式(输入或输出),并配置相应的电平状态。
3. 控制信号输出:PIC16单片机根据程序的设定,将控制信号输出到LED 灯组的信号输入口。
输出信号可以是高电平或低电平,通过改变电平状态来控制LED灯组的亮灭。
4. 电源供应:LED灯组需要工作电源,通常为直流电源。
这里需要通过外部电源为LED灯组供电,PIC16单片机作为控制器不直接提供电源。
5. 控制信号接收:LED灯组将PIC16单片机输出的控制信号接收后,根据信号的高低电平来控制LED灯的亮灭。
具体控制方式可以是逐个LED 灯依次点亮、所有LED灯同时点亮、或者实现各种闪烁模式。
第四部分:示例应用通过一个简单的示例来进一步说明PIC16单片机控制LED灯组的原理:假设有一个由8个LED灯连接在一起的LED灯组,我们希望通过PIC16单片机控制这个LED灯组以实现以下功能:- 点亮所有LED灯- 依次点亮每个LED灯- 实现呼吸灯效果我们可以先定义一个数组来存储LED灯组的控制信号,数组的每个元素代表一盏LED灯的状态(亮或灭)。
pic16单片机 旋转编码器 计数
pic16单片机旋转编码器计数一、概述pic16单片机作为一种常见的微控制器,被广泛应用于各种各样的嵌入式系统中。
而在许多嵌入式系统中,旋转编码器也是一种常见的输入设备,用于接收用户的旋转操作,并将其转换成数字信号。
本文将围绕pic16单片机如何实现对旋转编码器的计数功能展开讨论。
二、旋转编码器的工作原理旋转编码器是一种常用的用于探测旋转方向和角度的传感器。
它由两个通常相互垂直的轴组成,并且当旋转编码器旋转时,两个轴的相对位置会改变,从而可以通过检测这种位置的变化来判断旋转的方向和角度。
旋转编码器一般有两种类型:绝对编码器和增量编码器。
对于pic16单片机来说,增量编码器更为常见。
三、pic16单片机对旋转编码器的计数原理pic16单片机通过外部中断来接收旋转编码器发出的脉冲信号,从而实现对旋转的计数。
一般来说,旋转编码器每旋转一次会产生一定数量的脉冲信号,根据脉冲信号的数量和方向,pic16单片机可以实现对旋转的准确计数。
四、pic16单片机旋转编码器计数的实现步骤1. 确定旋转编码器的工作方式:不同型号的旋转编码器工作方式可能不同,需要先确定旋转编码器产生脉冲信号的规律。
2. 连接旋转编码器和pic16单片机:将旋转编码器的脉冲输出端连接至pic16单片机的外部中断引脚,同时连接旋转编码器的电源和接地端。
3. 初始化pic16单片机的外部中断:通过设置pic16单片机的寄存器,初始化外部中断的工作方式和触发条件。
4. 编写中断服务程序:当pic16单片机接收到外部中断信号时,中断服务程序会被触发,需要编写相应的中断服务程序来处理旋转编码器发送的脉冲信号。
5. 实现计数功能:在中断服务程序中,对旋转编码器发出的脉冲信号进行计数,并根据方向进行相应的加减操作。
五、pic16单片机旋转编码器计数的应用pic16单片机对旋转编码器的计数功能在许多嵌入式系统中都有广泛的应用。
在机器人控制系统中,可以用旋转编码器来获取电机的转动情况,以便控制机器人的移动;在工业自动化设备中,也可以利用旋转编码器和pic16单片机来实现对设备操作的精确控制。
PIC单片机
PIC 单片机
为了给前一段时间学习PIC16F616 型单片机的一个总结和方便大家的交流,我写了这篇关于PIC 单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大家能及时的给予纠正和
批评,提出宝贵的意见。
2.PIC 单片机的概述
PIC16F616 是一款14 引脚、8 位的CMOS 单片机.采用精简指令集,仅有35 条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令.这样有利于提高单片机的运行速度和执行效率.
PIC16F616 这款单片机供电电压可以在2V 到5.5V 之间,内部集成了一个RC 振荡器,频率可以配置成8MHZ 或者4MHZ,也可以用外部晶振提供时钟.内部集成有AD 转换、比较器等硬件模块,还具有上电复位、欠压复位、看门
狗、代码保护等功能.三个定时器、PWM 发生器等可以由用户编程.下面我来
一一介绍关于PIC 单片机的这些模块和功能.
3.存储器
PIC16F616 分为程序存储其和数据存储器,程序存储器的大小是2048words, 数据存储器的大小是128bytes.。
PIC16单片机的应用设计部分问题记录
PIC16单片机的应用设计部分问题记录PICl6系列单片机属于PIC8位单片机的中级型产品,采用14位的RISC指令系统。
笔者使用PICl6F716单片机设计了一个电动机保护器,在设计过程中遇到很多问题,通过多方查找资料以及向Microchip公司技术人员寻求支持,问题一一得到解决。
现将部分问题记录如下,与大家一起探讨。
1 ICD2作为程序烧写的使用1.1 ICD2简介MPLAB ICD2在线调试器是一款低价位的PIC开发工具。
它利用Flash工艺芯片的程序区自读写功能来实现仿真器调试功能;使用的软件平台是Microchip的MPLAB IDE(集成开发环境软件包),兼容Windows NT、Windows 2000和Windlows XP等操作系统。
其通信接口方式可以是USB(最高可达2Mb/s)或RS-232串行接口方式;工作电压范围为2.O~5.5V,可支持最低2.0V的低压调试。
MPLABICD2可以支持大部分Flash工艺的芯片。
它不仅可以用作调试器,同时还可以作为开发型的烧写器使用。
1.2 ICD2作为烧写器时的配置烧写芯片的方式有两种:普通烧写和在线烧写。
在线烧写是适合大批量生产方式的烧写办法。
使用在线烧写时通常用户都已经把芯片焊到了板上,此时就要求用户板上有预留的烧写接口。
用户板上的接口是通过一条6芯的扁平电缆与ICD2主机上同样的接口一一对应连接的。
图1显示了MPLAB ICD2与目标板上模块连接插座的互连状况。
ICD连接插座有6个引脚,但只使用了其中的5个引脚,分别是VDD(电源)、VSS(地)、VPP(编程电压)、PGC(同步时钟)和PGD(数据)。
1.3 ICD2作为烧写器时容易出现的问题及解决方法尽管MPLAG ICD2与目标板的互连非常简单,但是一不小心就会出现问题,基本上每一个PIC的入门者都会碰到类似的问题。
下面就一些常见问题作简要叙述。
如图l所示,在VPP与VDD之间通常要串接一个上拉电阻(通常约为lOkΩ),这样VPP线可置为低电平来手动复位PICmicro单片机。
PIC16F616_12F615 Product Brief
• 工作电流: - 2V、 1 MHz 时典型值为 100 µA
• 待机电流: - 2V 时典型值为 1 nA
• 低功耗高速闪存技术: - 闪存擦写次数为 100,000 次 - 数据保存期 > 40 年
• 全静态设计 • 宽工作电压范围:
- PIC12F615 和 PIC16F616 为 2.0V-5.5V - PIC12HV615 和 PIC16HV616 为 2.0V– 用户自
2006 Microchip Technology Inc.
超前信息
DS41272B_CN第 1 页
PIC12F615/12HV615 PIC16F616/16HV616
• 增强型捕捉比较 /PWM 模块 (ECCP): - 16 位捕捉最大分辨率为 12.5 ns - 比较最大分辨率为 200 ns
定义的最大电压 • 宽温度范围:
- 工业级:-40ºC 至 +85ºC - 扩展级:-40ºC 至 +125ºC
外设特性:
• I/O 引脚: - 5 个可单独控制方向的 I/O 引脚 (PIC12F615 和 PIC12HV615) - 11 个可单独控制方向的 I/O 引脚(PIC16F616 和 PIC16HV616) - 1 个仅可输入的引脚 - 弱上拉可单独选择 - 高拉 / 灌电流可直接驱动 LED
Analog-for-the-Digital Age、 Application Maestro、 CodeGuard、 dsPICDEM、 、 dsPICworks、 ECAN、 ECONOMONITOR、 FanSense、 FlexROM、 fuzzyLAB、In-Circuit Serial Programming、ICSP、ICEPIC、 Linear Active Thermistor、 Mindi、 MiWi、 MPASM、 MPLIB、 MPLINK、 PICkit、 PICDEM、 、 PICLAB、 PICtail、 PowerCal、 PowerInfo、 PowerMate、 PowerTool、 REAL ICE、 rfLAB、 rfPICDEM、 Select Mode、 Smart Serial、 SmartTel、 Total Endurance、 UNI/O、 WiperLock和ZENA均为Microchip Technology Inc.在美国和其 他国家或地区的商标。
pic16单片机控制led灯组的硬件电路板的设计 -回复
pic16单片机控制led灯组的硬件电路板的设计-回复PIC16单片机控制LED灯组的硬件电路板的设计引言:PIC16单片机是一种常用的微控制器,具有高性能、低功耗和较低的成本等优点,在许多嵌入式系统中得到广泛应用。
本文将介绍如何使用PIC16单片机设计一个LED灯组的硬件电路板。
一、项目需求分析LED灯组的硬件电路板需要实现以下功能:1. 控制多个LED灯的亮灭。
2. 支持通过串口或蓝牙等方式进行远程控制。
3. 具备灯光效果的切换和动画效果。
4. 具备电源管理功能,包括过压、过流和短路保护。
二、硬件选型根据项目需求,我们需要选取适合的硬件元件来设计电路板。
以下是一些常用的元件:1. PIC16F877A单片机:作为微控制器,PIC16F877A具有高性能和丰富的外设接口,适合用于控制LED灯组。
2. LED灯:根据实际需求选择适当的LED灯,常用的有常亮LED、RGB LED、WS2812B等。
3. MAX7219驱动芯片:用于控制多个LED显示模块,支持串行数据传输和级联连接。
4. 电源管理芯片:用于提供稳定的电源,同时实现过压、过流和短路保护等功能。
5. 无线通信模块:根据需要选择适当的无线通信模块,如HC-05蓝牙模块或nRF24L01无线模块。
三、电路设计1. 电源部分:使用电源管理芯片提供稳定的电源,同时通过电源管理芯片的保护功能,实现过压、过流和短路保护。
2. 单片机部分:将PIC16F877A单片机与MAX7219驱动芯片连接,用于控制LED灯组的亮灭和灯光效果切换。
同时,通过串口或蓝牙模块与外部设备进行通信。
3. LED灯部分:将LED灯与MAX7219驱动芯片连接,实现灯光的控制。
根据需要可以选择不同类型的LED灯,如常亮LED、RGB LED或WS2812B等。
4. 无线通信部分:如果需要远程控制功能,可以将无线通信模块与单片机相连,与其他设备进行通信。
四、PCB设计在完成电路设计后,我们需要进行PCB布局和布线。
pic16单片机控制led灯组的硬件电路板的设计 -回复
pic16单片机控制led灯组的硬件电路板的设计-回复中括号内的主题是"pic16单片机控制led灯组的硬件电路板的设计"。
在本文中,我将逐步回答这个主题,解释硬件电路板的设计以及如何使用pic16单片机来控制led灯组。
准备工作:在开始设计之前,我们需要做一些准备工作。
首先,我们需要准备以下材料和设备:1. PIC16单片机2. LED灯组3. 电流限制电阻4. 电路连接线5. 面包板6. 逻辑分析仪(可选)电路设计:首先,我们需要确定所需的电路设计。
在本例中,我们将使用PIC16单片机来控制一个LED灯组。
这个电路设计包括以下几个主要组件:1. PIC16单片机:这是我们的核心控制单元。
我们将使用这个单片机来控制LED灯组的开关和亮度。
2. LED灯组:这是我们需要控制的设备。
我们可以选择不同颜色和亮度的LED灯来创建各种效果。
3. 电流限制电阻:为了确保LED灯组正常工作,我们需要将适当的电流限制电阻连接到每个LED灯上。
接下来,我们将按照以下步骤进行电路设计:1. 确定电源电压和电流:首先,我们需要确定要使用的电源电压和电流。
这取决于我们选择的LED灯组的规格。
请注意,PIC16单片机通常工作于较低电压(通常为5V)。
2. 设计电源电路:使用合适的电源电压,我们需要设计一个电源电路来为我们的电路提供稳定的电源。
这可以是简单的电池供电电路或直流电源适配器。
3. 连接PIC16单片机和LED灯组:使用面包板和连接线将PIC16单片机和LED灯组连接在一起。
确保正确连接每个LED灯的正极和负极。
此外,还需要连接电流限制电阻以确保每个LED灯的电流处于安全范围内。
4. 设计PIC16单片机引脚的连接:根据PIC16单片机的规格,在面包板上连接和布线PIC16单片机的引脚。
这些引脚将用于控制LED灯组的开关和亮度。
确保正确连接诸如电源引脚、输入/输出引脚、计时器引脚等必要的引脚。
PIC单片机开发的经验、技巧总结分享
PIC单片机开发的经验、技巧总结分享由美国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”指令降低功耗是一个方面,同时,即使是关中断状态,Port B端口电平的变化可唤醒“sleep”,提前结束延时程序。
这一点在一些应用场合特别有用。
同时注意在使用“sleep”时要处理好与WDT、中断的关系。
例1(用Mplab-C编写)例2(用Masm编写)Delay()Delay{ ;此行可加开关中断指令/*此行可加开关中断指令*/ movlw.10。
MICROCHIP PIC16F676单片机 调试烧录指引
一、烧录工具1.编程器: ALL-11(A)2.适配器: OTS-16-033.PC电脑一台二、烧录软件版本信息ALL-11 Universal Programmer V3.10三、调试方法:1.确认防静电手环接地良好后,戴上防静电手环。
2.连接编程器,启动PC电脑3.将适配器装于锁紧内,并将锁紧担杆拉下,芯片脚靠下侧放置,极性点朝上;4.双击电脑桌面上快捷方式“WACCESS”,(方便起见,可先在桌面上建一快捷方式)如下图所示:5.选择菜单项“Device”进入“Manufacture list”选择“MICROCHIP”,点击“OK”按钮。
6.出现Type list窗口,选左侧的MPU/MCU,右边选择“PIC16F676”型号,点击“RUN”按钮。
7.此时可调文件,选菜单FILE下拉至“Load file to programmer buffer”确定,调用所需文件(*.hex),选定后点击“打开”钮。
(注:调用的文件必须与《芯片拷贝申请记录表》上的程序名称一致)8.选择File format为“Intel hex”,Unused bytes选择“FF”。
File status栏中各项不用改写(变),点击OK钮。
致即可进入下一步骤。
10.点击“Auto”按钮;打开下图所示窗口;将图中圈选项打勾;11.点击“RUN”按钮,即可开始烧录;12.如烧录OK,右面板上方会显示OK字样,如烧录错误,则用红色字体显示“Error”字样。
13.批量烧录时,按ALL-11(A)上的“YES”钮即可,等待片刻后,若“GOOD”灯亮,则烧录成功,否则烧录失败。
14.烧录OK的单片机要求在其上方打点做标识;四、相关文件及表单1.《芯片拷贝申请记录表》。
2021单片机学习总结与心得
2021单片机学习总结与心得单片机学习总结与心得为了给前一段时间学习pic16f616型单片机的一个总结和方便大家的交流,我写了这篇关于pic电子元件的学习心得,都是在后看了手册和编程调试后用自己的语言非政府的,其中丘陵地区有不足或者有疑议的地方希望大家能及时的给予纠正和批评,提出宝贵的意见。
复位、中断和睡眠(1)复位pic16f616包括这样的数个复位功能,上电复位(power-on)、硬件复位、欠压复位(brown-out)、看门狗复位。
关于上电复位por,大家都不陌生,工作电压在上电的时候保持复位直到电压能够满足其正常的单片机,同时你可以通过对connfig(编译器上即可设置)的设置,来开启power-uptime,这个时间一般为64ms。
硬件复位可以通过mclr引脚外界复位电路,即可实现硬件复位(将此引脚开低电平)。
欠压复位这个功能是可选的,当中也可以直接在编译环境中配置config寄存器来开启此功能。
当此功能开启时,如果单片机在运行的时候,供电电压不足就会引起欠压复位,复位后单片机如果发现供电电压已经达到正常值的时候,会有一个64ms的延时,然后再运行程序。
关于看门狗的复位在看门狗部分已经说了。
这里的一些复位还涉及到一百名一些标志位。
这些标志位为分布在status和pcon上面。
status上有两个位to、pd,当标志位to=1时,表示表示已经操作了上电复位或者是执行了clrwdt或者sleep指令,当to=0时,表示发生了看门狗复位。
当标志位pd=1时表示操作了上操作过程电复位或者是执行了clrwdt指令,当pd=0时,表示执行了sleep指令。
pcon上为有两个标志位是por和bor,分别表示的是上电复位和欠压复位标志。
具体内容的可以参看手册。
(2)中断pic16f616包括这样的几个中断源:ra2/int引脚外部中断、ra端口电平变化中断、定时器timer0、timer1、timer2溢出中断、比较器中断、ad转换中断、捕获/比较/pwm中断。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于PIC单片机的一些经验为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大家能及时的给予纠正和批评,提出宝贵的意见.2.PIC单片机的概述PIC16F616是一款14引脚、8位的CMOS单片机.采用精简指令集,仅有35条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令.这样有利于提高单片机的运行速度和执行效率.PIC16F616这款单片机供电电压可以在2V到5.5V之间,内部集成了一个RC振荡器,频率可以配置成8MHZ或者4MHZ,也可以用外部晶振提供时钟.内部集成有AD转换、比较器等硬件模块,还具有上电复位、欠压复位、看门狗、代码保护等功能.三个定时器、PWM 发生器等可以由用户编程.下面我来一一介绍关于PIC单片机的这些模块和功能.3.存储器PIC16F616分为程序存储其和数据存储器,程序存储器的大小是2048words,数据存储器的大小是128bytes.程序存储器中0000H的地址为复位地址,当上电或者看门狗计时器等复位的时候,均会导致PC指针指向复位地址.地址0004H为中断地址,当无论发生什么中断的时候,PC 指针就会指向此地址.在地址0005H~07FFH可以移植程序.数据存储器分为两个部分,分别叫做bank0和bank1,其中bank0的地址范围为:00H-7FH,Bank1的地址范围为80H-FFH.一般的寄存器都放在里面.可以通过寄存器STATUSL里面的RP0位来选择bank0和bank1.在编程序的时候要注意的是,当你要操作的寄存器在bank0的时候,先要选择bank0(将寄存器STATUS的RP0位置0),然后再对你所要操作的寄存器进行操作,当你要操作的寄存器在bank1的时候,同理先要选择bank1.如果想要定义一些变量,可以在数据存储器20H开始的地址定义,定义的地址范围为20H-7FH.一般这么多就够用了.4.PIC的输入输出端口在学习这个部分的时候,曾经遇到过一些问题.PIC单片机的引脚不多,大多都是复用引脚,例如AD、IO、比较器、外接晶振等等,所以在配置端口的时候,一定要知道每个功能怎样设置才能实现的,在这一小节中,我要讲的是通用IO口的设置问题.PIC16F616有12个IO口,但是有一个引脚(RA3)只能作为输入引脚用,不能用作输出,另外,A口具有电平变化中断的功能,而C口没有,在设计的时候要注意.在设置的时候,一般要进行以下几项设置:(1)设置端口是模拟端口还是数字端口,可以通过寄存器ANSEL来设置.例如你想用AD,就要将相应的引脚设置为模拟输入端口.(2)如果你选择的是数字端口,接下来就要设置端口的方向,是输入还是输出(RA3除外),可通过寄存器TRISA(A口)或TRISC(C口)来设置.(3)设置端口的输出电平,可以通过寄存器PORTA(A口)或PORTC(C口)来设置.这是对IO口的通用设置,但是这不是全部的设置,接下来的设置要看时A口还是C 口了.对于A口,它有几个特殊的功能:内部弱上拉、电平变化中断、RA2/INT引脚的沿中断.如果想要这些功能,就要对相应的寄存器进行设置.弱上拉的设置:只有当引脚为输出的时候弱上拉才有效,可以通过寄存器WPUA来设置相应引脚的弱上拉,值得一提的如果开启了弱上拉,会有多余的电流浪费,这样对于低功耗的设计是不可取的,但是如果在进行一些例如键盘电路设计的候,可以开启弱上拉功能,这样就不需要在键盘电路中加上拉电阻了.电平变化中断的设置:可以通过寄存器IOCA来设置,但是首先要将相应引脚设置为数字端口且为输入状态.同时要将寄存器INTCON的REIE位设置为1,总中断要允许(置寄存器INTCON的GIE位),如果设置相应引脚有这个功能,当此引脚电平发生的时候,就会产生一个中断,同时一些中断标志位被置上(INTCON的RAIF位被置1),且总中断GIE 被置为0.在中断服务程序中,要软件清除RAIF位和重新置GIE位才能继续开启此中断.RA2/INT脚的沿中断设置:同样首先要将相应引脚设置为数字端口且为输入状态,设置INTCON的INTF位为1,表示允许int引脚外部中断,寄存器OPTION_REG的INTEGD位可以设置是上升沿中断还是下降沿中断.当发生中断时,INTCON的INTF位被置为1,GIE 被清零,在中断服务程序中,要软件清除INTF位和重新置GIE位才能继续开启此中断.对于C口,不能产生电平变化中断和沿中断.5.定时器定时器是单片机的一个很重要的部分,用它可以产生很多不同的定时时间,来满足程序设计的不同需求.PIC16F616有三个定时器,分别是Timer0、Timer1、Timer2.它们的用法不是很相同,下面来分别谈谈这三个定时器的用法和设置问题.(1)Timer0Timer0是一个八位的计数器,它有一个八位的计数寄存器TMR0,八位的预分频器(与看门狗共用),可以选择内部或者是外部时钟源,有计数器溢出中断的功能.Timer0可以作为一个定时器或者计数器来使用,与Timer0有关的寄存器有:TMR0,INTCON,OPTION_REG,TRISA.当Timer0作为定时器来使用的时候,要设置OPTION_REG的T0CS位为0,表示用的是内部时钟,每一个指令周期TMR0的值会增加(当没有预分频的时候),当TMR0被赋值的时候,会有两个指令周期的延时.预分频器可以和看门狗共用,可以由OPTION_REG的PSA位来设置,当PSA 为0的时候分频器选择Timer0,当PSA为1的时候分频器选择看门狗.同时,与分频器的分频值可以通过寄存器OPTION_REG来设置,设置的值可以由1:2到1:256.当Timer0的计数器TMR0计数从FFH到00H的时候会产生溢出,同时溢出标志位(INTCON寄存器的T0IF位)会置位(无论Timer0的中断是否开启),如果中断已经开启了(INTCON寄存器的T0IE被置位),那么就会产生溢出中断.T0IF 位需要软件对其进行清零.当Timer0作为计数器来使用的时候,就要用外部时钟源(OPTION_REG的T0CS 置1),每次当引脚T0CK1的沿到来时Timer0的TMR0会增加1,上升沿和下降沿可以由OPTION_REG的T0SE来设置.中断和Timer0作为定时器使用时一样.在我们编程序的时候,可以用Timer0进行定时或产生定时信息,下面我来解释定时器的定时时间的计算.假设Timer0用的时钟源是内部的4MHZ,那么每条指令的执行时间就是1us,设Timer0的预分频系数是1:256,TMR0的初值是6,那么定时时间为:256×(256-6)×1us=64ms在编程的时候需要注意的是Timer0的中断是不能把单片机从SLEEP的状态唤醒的.(2)Timer1Timer1是一个十六位的计数器.它有一个计数寄存器对(TMR1H:TMR1L),时钟源也是内外可选的,具有一个2bit的预分频器,可以同步或者异步操作,具有中断功能,但是溢出中断只能在外部时钟、异步的模式才能将单片机从SLEEP中唤醒,Timer1具有捕获/比较功能,还有被一些特殊事件触发功能(ECCP),比较器的输出可以与Timer1的时钟同步.下面来一一介绍这些功能.在编程的时候也可以按照这样的步骤来进行.设置寄存器T1CON,时钟源可以选择外部或者内部的时钟源,外部时钟源可以选择LP晶体.Timer1在选择内部时钟时,可以运行在定时器的状态,选择外部时钟的时候,可以运行在定时器或者是计数器状态,工作于计数器状态时可以选择门限是高电平还是低电平计数.这些都可以通过寄存器T1CON来设置.以下是T1CON每个位的具体功能:bit1:Timer1是否开启位,当此位设为1时,Timer1开启,设为0时,Timer1关闭;bit2:时钟源选择位,置1时,选择外部时钟(T1CK1引脚的上升沿),此位置0时,选择的是内部时钟,并且和T1ACS(寄存器CM2CON1中)配合,当T1ACS位为0时,时钟为FOSC/4,当T1ACS位为1时,时钟为FOSC.bit2:T1SYNC:定时器1的外部时钟输入同步位,当TMR1CS位为1、T1SYNC位为1,定时器1被设置成与外部时钟不同步,T1SYNC位为0时,定时器1被设置成与外部时钟同步模式.Bit3: T1OSCEN:此位为1时Timer1的时钟选择LP,为0时LP晶体被关闭.Bit5-4:T1CKPS:Timer1时钟的预分频系数设置,通过这两位的是指,可以讲Timer1设置成1:1、1:2、1:4、1:8几种分频值.Bit6:TMR1GE:只有当TMR1ON位为1时才有效,当此位为1时,Timer1计数被Timer1的门限控制,此位为0时,Timer1正常计数.Bit7:T1GINV:此位为1时,Timer1在门限为高时计数,此位为0时,Timer1在门限为低时计数.Timer1的中断编程:当Timer1的计数产生溢出的时候,如果Timer1中断允许的话,就会产生中断.中断可以这样设置,Timer1的中断允许位TMR1IE(在PIE1寄存器中)置1,寄存器INTCON的PEIE位置1,同时总中断位GIE(位于寄存器INTCON中)要置为1.当定时器产生中断的时候,会把中断标志T1IF置为1(位于寄存器PIR1中),然后PC 指针指向0004H地址.T1IF位必须软件清除.(3)Timer2Timer2的功能于Timer1有些不同,Timer2时一个八位的计数器,有一个八位的计数寄存器TMR2,Timer2具有以下功能:有两个分频器,一个是前分频器,一个是后分频器.分频可以软件进行设置,另外,Timer2的时钟源是指令时间(FOSC/4),Timer2有一个寄存器PR2,此寄存器的功能是当TMR2增加到PR2的值时,将产生中断,当然,中断必须允许,然后PR2的值会重新变为00H.下面来介绍Timer2的编程:Timer2的控制寄存器T2CON作用是设置Timer2的开启关闭和前后分频的分频系数,寄存器T2CON的TOUTPS<3:0> 位设置后分频系数,可以被设置成1:1~1:16;位TMR2ON为1时,Timer2开启,为0时,Timer2关闭;位T2CKPS<1: 0>可以设置前分频系数,可以被设置成1、4、16.Timer2的中断可以这样控制,允许Timer2中断位TMR2IE(位于PIE1寄存器内)被置1时,Timer2中断被允许,被置0时, Timer2中断禁止.寄存器INTCON的PEIE 位置1,同时总中断位GIE(位于寄存器INTCON中)置为1.通过上面的设置,Timer2就可以产生中断了.当定时器产生中断的时候,会把中断标志T2IF置为1(位于寄存器PIR1中),然后PC指针指向0004H地址.中断标志位T2IF必须软件清除.下面是三个定时器的比较:唤醒功能其他功能定时器Timer0内部或外部时钟源,有一个预分频器.定时器、醒功能.计数器值溢出时发生中断预分频器与看门狗共用.定时器Timer1内部或外部时钟源,有一个预分频器定时器、计数器外部时钟、异步模式时可唤醒CPU计数器值溢出时发生中断与比较器模块、捕获/比较模块共用定时器Timer2有前分频器和后分频器醒功能.计数器值与预置值相等时发生中断PWM的产生需要此定时器6.AD模块PIC16F616有一个十位、八路的AD转换器.其参考电压可以为电源电压VDD,也可以是外部参考电压(VREF引脚),当AD转换完成后可以产生一个中断,此中断可以把单片机从睡眠状态中唤醒.下面来介绍一下关于AD转换的编程方法.要使用一个ADC,要做的有一下几件事情:(1)设置端口,需要采样模拟信号的端口必须设置为模拟输入状态,如果设置为数字端口,将使转换结果不正确,端口的模拟输入可以由寄存器ANSEL来配置,在讲RA口的时候已经说到了如何配置了.(2)通道的选择,有八路外部通道和三路内部通道,可以通过ADCON0寄存器的CHS<3:0>位来设置通道的选择.(3)参考电压的选择,参考电压可以是VDD,也可以是外部参考电压,可以通过ADCON0寄存器的VCFG位来设置,当VCFG=0时,参考电压为VDD,当VCFG=1时,参考电压为外部参考电压(来自VREF引脚)(4)ADC的转换格式,AD转换后的结果保存在一个寄存器对里面:ADRESH和ADRESL,但是AD转换结果只有十位,设置AD转换格式可以通过设置ADCON0的ADFM 位来选择,当ADFM=1时10位的AD结果的低八位保存在ADRESL内,高两位保存在ADRESH内;当ADFM=0时10位的AD结果的高八位保存在ADRESH内,低两位保存在ADRESL内.(5)AD时钟源的选择,寄存器ADCON1专门来设置AD的时钟源,ADCS<2:0>不同组合,可以将AD的时钟源设置为不同的频率,可以为FOSC/2、FOSC/4、FOSC/8、FOSC/16、FOSC/32、FOSC/64和FRC(内部RC).(6)AD中断的配置,要使用AD的中断功能,可以先把AD中断使能,ADIE位设置为1(在寄存器PIE1中),PEIE位置1(在INTCON寄存器中),总中断GIE位置1(INTCON寄存器中).要开始一个AD转换,首先要使能ADC模块,即把寄存器ADCON0的ADON位置1即可,然后将GO/DONE位(ADCON0中)置1就可以启动AD转换了.AD转换需要时间,转换1bit需要Tad的时间,Tad与AD转换的时钟源和VDD 有关,转换十位就需要11个Tad时间,如果第一个AD转换完成了,要进行第二个AD转换,必须还要等待2*Tad的时间才能开始.一个AD完成了,GO/DONE位会被置为0,如果中断允许的话,就会产生中断,且中断标志位ADIF(寄存器PIR1内)会被置1,在AD中断程序中就可以把AD转换结果读取出来(读ADRESH和ADRESL),需要时把AD中断标志位清零.AD中断可以把单片机从睡眠中唤醒,但是要注意,使用这个功能的时候,时钟源必须设置为FRC,否则的话在睡眠的时候就不会产生AD中断了.7.看门狗PIC16F616的看门狗WDT其定时计数的脉冲序列由片内独立的RC振荡器产生,所以它不需要外接任何器件就可以工作.而且这个片内RC振荡器与引脚OSC1/CLKIN上的振荡电路无关,即使OSC1和OSC2上的时钟不工作,WDT照样可以监视定时.例如:当PIC16F616在执行SLEEP指令后,芯片进入休眠状态,CPU不工作,主振荡器也停止工作,但是,WDT照样可监视定时.当WDT超时溢出后,可唤醒芯片继续正常的操作.而在正常操作期间,WDT超时溢出将产生一个复位信号.如果不需要这种监视定时功能,在编程时,可关闭这个功能.WDT的定时周期在不加分频器的情况下,其基本定时时间是18ms,这个定时时间还受温度、VDD和不同元器件的工艺参数等的影响.如果需要更长的定时周期,还可以通过软件控制OPTION寄存器(PSA位置1)把预分频器配置给WDT,这个预分频器的最大分频比可达到1∶128.这样就可把定时周期扩大128倍,即达到2.3秒.WDT的预分频器是和Timer0所共用的,如果把预分频器配置给WDT,用CLRWDT和SLEEP指令可以同时对WDT和预分频器清零,从而防止计时溢出引起芯片复位.所以在正常情况下,必须在每次计时溢出之前执行一条CLRWDT指令喂一次狗,以避免引起芯片复位.当系统受到严重干扰处于失控状态时,就不可能在每次计时溢出之前执行一条CLRWDT指令,WDT就产生计时溢出,从而引起芯片复位,从失控状态又重新进入正常运行状态.当WDT计时溢出时,还会同时清除状态寄存器中的D4位T0,检测T0位即可知道复位是否由于WDT计时溢出引起的.8.比较器PIC16F616有两个比较器:C1和C2,C1的结构比C2的结构要简单,下面我分别对这两个比较器的用法和特性作简要说明.(4)比较器C1:它有一个独立的控制寄存器CM1CON0,通过这个寄存器可以对比较器C1进行一些设置.位C1ON可以控制C1的开启关闭,位C1OE 可以决定比较器的输出是从引脚输出还是内部输出,位C1POL可以选择比较器输出的极性,位C1R选择参考电压是链接到引脚C1IN+还是连接到C1VREF,C1CH可以选择比较器负端从哪一个引脚输入的,位C1OUT存放了比较器的输出结果.(5)比较器C2:它的控制寄存器CM2CON0的操作跟C1一样,但是比较器C2比比较其C1功能要强,因为它与Timer1挂上钩了,C2可以连接到Timer1,而C1不能.当C2与Timer1相连接的时候,C2的输出可以设置成与Timer1的下降沿锁定,如果Timer1有分频,则比较器的输出与分频后的Timer1下降沿锁定,可以通过相关寄存器来进行设置.(6)两个比较还有其它的功能,都能组成滞回比较器,这样就可以对输入电压有一定的滤波功能.两个比较器还可以形成一个SR锁存器.由于在本项目中没有选择用比较器这个功能,所以在这里就不详细叙述其细节设置,但要注意的是在不用此模块的时候,要能够保证此模块不能影响其他模块的正常工作,可以把比较器功能关闭(通过寄存器CM1CON0、CM2CON0的CxON位置0来关闭).9.捕获/比较/PWM功能PIC16F616具有捕获/比较/PWM的模块,下面来简单的介绍一下它们的功能.这三个功能需要定时器的支持,捕获和比较功能需要定时器Timer1的支持,PWM功能需要定时器Timer2的支持.都有中断的功能,选择这三种功能的某一种功能可以通过寄存器CCP1CON来设置.CCP1CON的低四位CCP1M<3:0>可以通过不同的组合来开启某项功能和关闭所有功能,当CCP1M<3:0>=0000的时候,捕获/比较/PWM模块的所有功能被禁止.具体其他的不同组合实现的功能,请参考PIC16F616的用户手册.当选择捕获功能时,它可以捕获引脚CCP1发生的事件,同时把16位Timer1的计数值拷贝到CCPR1H:CCPR1L中来,引脚CCP1的发生事件可以指的是下列事件:CCP1引脚的每个上升沿或者下降沿、第四个上升沿、第十六个上升沿.可以通过寄存器CCP1CON 的低四位CCP1M< 3:0>来设置是哪一种事件.当事件发生的时候,单片机会置中断标志位CCP1IF(寄存器PIR1上),如果中断被允许(寄存器PEIE的位CCP1IE=1)的话,就会产生中断,中断标志位CCP1IF需要软件清零.选择比较功能时,如果定时器Timer1的计数器值与寄存器CCPR1H:CCPR1L相等的话,将产生下面的事件:把引脚CCP1置1/0、产生一个中断、触发一个事件(把定时器Timer1的技术器TMR1清零,并且如果此时AD是允许的话,它将触发一次AD转换),这些事件可以通过寄存器CCP1CON的低四位CCP1M<3:0>来设置是哪一种事件.当选择PWM功能时,通过设置PR2、T2CON、CCPR1L、CCP1CON这四个寄存器,模块可以产生不同占空比的PWM波形.具体的设置和占空比的计算请参考手册.如果我们不需要这些功能,可以把这个模块关闭掉(设置CCP1M<3:0>=0000即可).10. 复位、中断和睡眠(1)复位PIC16F616包括这样的几个复位功能,上电复位(Power-on)、硬件复位、欠压复位(Brown-out)、看门狗复位.关于上电复位POR,大家都不陌生,单片机在上电的时候保持复位直到电压能够满足其正常的工作电压,同时你可以通过对CONNFIG(编译器上即可设置)的设置,来开启Power-up Time,这个时间一般为64ms.硬件复位可以通过MCLR引脚外界复位电路,即可实现硬件复位(将此引脚接低电平).欠压复位这个功能是可选的,也可以直接在编译环境中配置CONFIG寄存器来开启此功能.当此功能开启时,如果单片机在运行的时候,供电电压不足就会引起欠压复位,复位后单片机如果发现供电电压已经达到正常值的时候,会有一个64ms的延时,然后再运行程序.关于看门狗的复位在看门狗部分已经说了.这里的一些复位还涉及到一些标志位.这些标志位分布在STATUS和PCON上面.STATUS上有两个位TO、PD,当标志位TO=1时,表示表示已经操作了上电复位或者是执行了CLRWDT或者SLEEP指令,当TO=0时,表示发生了看门狗复位.当标志位PD=1时表示操作了上电复位或者是执行了CLRWDT指令,当PD=0时,表示执行了SLEEP指令.PCON上有两个标志位是POR和BOR,分别表示的是上电复位和欠压复位标志.具体的可以参看手册.(2)中断PIC16F616包括这样的几个中断源:RA2/INT引脚外部中断、RA端口电平变化中断、定时器Timer0、Timer1、Timer2溢出中断、比较器中断、AD转换中断、捕获/比较/PWM 中断.这些中断的允许位和中断标志位分别位于INTCON、PIE1、PIR1、IOCA这些寄存器里面,如果要开启相应的中断,就要置相应的中断允许位,开启总中断位(INTCON寄存器的GIE位),还要开启INTCON上的PEIE位(定时器0溢出中断、INT引脚沿中断和RA端口的电平变化中断除外).当中断发生的时候,相应的中断标志位就会置起来,同时总中断标志位GIE会被清零,保证在此时间内不会相应其他的中断,然后将当前的PC指针值压栈保存,以用来保证中断能正确的返回到原来执行的地方.然后PC指针指向中断向量地址0004H的地方,所以在编程序的时候,你可以在0004H的地址存一条跳转指令跳到你定义的中断服务程序里面去就可以了.如果在中断的时候想保存一些重要的寄存器的话,可以在中断程序的起始将其保存,然后在中断服务程序的末尾将其恢复即可.要注意的是中断标志位不会自己清零,这就需要在编程的时候在软件上对其清零,否则的话,单片机不停的执行中断服务程序.如果你想要在以后的程序中还能产生中断的话,就要把总中断允许位GIE重新置位.(3)睡眠要想让单片机睡眠的方法很简单,执行一条SLEEP指令就可以了,如果看门狗允许的话,WDT就会被清零,但是还保持运行,寄存器STATUS的PD位将会置0,TO位将会置1,IO 口还保持原来的状态,在睡眠状态下,不能驱动振荡器了.有些事件可以将单片机从睡眠状态中唤醒:看门狗、RA口电平变化中断、外部复位引脚MCLK被拉低、RA2/int引脚沿中断、Timer1中断(必须工作在异步计数模式)、ECCP捕获模式中断、AD转换中断(时钟源必须为内部RC的时候)、比较器输出有变化,这些事件能够将单片机唤醒,其他的事件不能.如果某项能唤醒单片机的中断已经开了,当总中断允许位GIE为1的时候,单片机被唤醒后可以进入中断程序中去,而当GIE位为0的时候,单片机也可以被唤醒,但是是执行下面的语句,而不能进入中断程序中去.为了保证在执行SLEEP语句后看门狗能够清零,最好在SLEEP语句之前加一句清看门狗的语句CLRWDT.相关型号资料:AT25020N-10SC2.7 MUX08FP IRFI9520G TS83C51RB2-MC11. PIC单片机的一些电特性VSS引脚的最大输出电流和VDD最大的输入电流为:90mA;每个IO口的输出电流可达25mA,IO口总共输出电流可达90mA;每个IO口是由两个保护二极管上下钳位的.当电压超过VDD和VSS的时候,二极管最大能承受20mA的电流;IO口输入漏电流最大为±1uA,引脚MCLR和OSC漏电流最大为±5uA;PORTA内部弱上拉(若设置了此功能)电流最大为400uA;IO口输出低电平为0.6V,输出高电压为VDD-0.7V;12. 编程注意事项及技巧在编程调试后和根据网上的一些资料和经验,我注意到了一些在编程的事项和技巧,通过这些设置,可以使系统更加稳定的工作,现在总结如下:(1)在设置端口的时候,先将端口输出你想要预置的值,以免发生出示状态的不稳定,影响系统正常工作.虽然在当前还没有定义端口是输出还是输入状态,这样做总是好的.(2)在开启某个中断功能的时候,最好将其中断标志位清一次零.(3)在设计低功耗的时候,其中有些功能是比较耗电的,如果不用的话,一定要将其关掉.例如将IO口设置成输入并将其悬空,就会很耗电流;RA口设置弱上拉的时候如果引脚接地,电流会很大;欠压复位也是一个耗电大户.而看门狗开启时用的时钟源为内部的RC,不怎么耗电;AD转换耗电也不多.(4)单片机里面的功能很多,在有些功能不需要的时候,一定要将其关闭(可以放在初始化程序之中),这样一来有利于程序的稳定性;二来可以省电,因为开启某个功能总是要电来驱动的.(5)如果一个寄存器被多种功能所共用,建议只对相应位进行操作,例如用BCF、BSF、或、异或、与、非等指令,而不要整个的将其赋值,以免弄错了使其他模块受到干扰。