关于PIC单片机的一些经验总结
学习pic单片机经验

学习pic单片机经验刚接触pic单片机使用的是MPLAB IDE 对于配置字的要求可以通过软件进行设置也可以用__CONFIG();进行设置但是发现官网上用的是MOLAB X IDE 对于配置字的格式要求变成了#pragma 当然也可以通过软件的窗口>>pic存储器视图>>配置字对配置字进行设置XC8对于中断的格式也有了变化 __interrupt(优先级)#pragma config FOSC = INTRC_CLKOUT// Oscillator Selection bits (INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)#pragma config MCLRE = ON // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)#pragma config BOREN = ON // Brown Out Reset Selection bits (BOR enabled)#pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled) #pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)#pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming)// CONFIG2#pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V)#pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off)// #pragma config statements should precede project file includes.// Use project enums instead of #define for ON and OFF.。
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或某一范围内,则认为没有触控操作,否则有触控操作。
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。
PIC单片机_C编程技巧

PIC单片机C编程技巧PIC单片机C编程技巧1、PICC 和MPLAE 集成PICC 和MPLAE 集成:PICC有自己的文本编辑器,不过是DOS风格的,看来P ICC的工程师要专业冷到酷底了 ...大家大可不必用它,如果你没什么癖好的话,你不会不用UltraEdit 吧?1:建立你的工作目录:建议在C盘根目录下建立一个以A开头的文件夹做为工作目录.因为你会发现它总是在你查找文件时候第一个跳入你眼中.2:MPLAB 调用PICC.(以MPLAE5.7 版本为例子)启动MPLAB. 在Project--〉Install Language Tool:Lan guage Suite——>hi-tech piccTool Name ---->PICC CompilerExecutable ---->c:hi-picinpicc.exe (假如你的PICC 是默认安装的)选Command-line最后OK.上面这步只需要设定一次,除非你重新安装了MPLAE.3:创建你的项目文件:(假如你实现用EDIT编辑好了一个叫AA.C的C 代码文件)Project-->New Project-->File Name--->myc (假如我们把项目文件取名字叫MYC.PJT)右边窗口当然要选择中你的工作目录.然后OK.4:设定你的PICC工作参数:Project-->Edit Project上面4个栏目就用默认的,空的也就让它空着,无所谓的.需要修改的是:Development Mode----> 选择你的PIC型号.当然要选择Mplab SIM Simulator让你可以用软件仿真.Lan guage Tool Suite--->HI-TECH PICC上面的步骤,你可能会遇见多个提示条,不要管它,一路确下面是PICC编译器的选择项:双击Project Files 窗口里面的MYC.HEX, 出现一个选择栏目.命令很多,大家可以看PICC文本编辑器里面的HEL P,里面有详细说明.下面就推荐几个常用也是建议用的:Gen erate debug info 以及下面的2 项.Produce assembler list file就在它们后面打勾即可,其它的不要管,除非你有特殊要求.5:添加你的C代码文件:当进行了前面几步后,按Add Node 找到AA.C文件就OK 了.6:编译C代码:最简单的一步:直接按下F10.编译完后,会出现各种调试信息.C代码对应的汇编代码就是工作目录里面的AA.IST, 用EDIT打开可以看见详细的对比.7:其它,要是一切都没问题,那么你就可以调试和烧片了,和以往操作无异.2、如何从汇编转向PICC首先要求你要有C语言的基础。
PIC单片机的一些学习心得与总结

PIC单片机的一些学习心得与总结为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大家能及时的给予纠正和批评,提出宝贵的意见。
PIC单片机的概述PIC16F616是一款14引脚、8位的CMOS单片机。
采用精简指令集,仅有35条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令。
这样有利于提高单片机的运行速度和执行效率。
PIC16F616这款单片机供电电压可以在2V到5。
5V之间,内部集成了一个RC振荡器,频率可以配置成8MHZ或者4MHZ,也可以用外部晶振提供时钟。
内部集成有AD转换、比较器等硬件模块,还具有上电复位、欠压复位、看门狗、代码保护等功能。
三个定时器、PWM发生器等可以由用户编程。
下面我来一一介绍关于PIC单片机的这些模块和功能。
存储器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。
PIC单片机总结

一、引言据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。
这说明单片机应用在我国才刚刚起步,有着广阔的前景。
培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。
当今单片机厂商琳琅满目,产品性能各异。
针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。
采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。
它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。
采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。
这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。
同时,这种单片机指令多为单字节,程序存储器的空间利用率大大提高,有利于实现超小型化。
属于CISC结构的单片机有Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列等;属于RISC结构的有Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。
一般来说,控制关系较简单的小家电,可以采用RISC型单片机;控制关系较复杂的场合,如通讯产品、工业控制系统应采用CISC单片机。
不过,RISC单片机的迅速完善,使其佼佼者在控制关系复杂的场合也毫不逊色。
根据程序存储方式的不同,单片机可分为EPROM、OTP(一次可编程)、QTP(掩膜)三种。
我国一开始都采用ROMless型单片机(片内无ROM,需片外配EPROM),对单片机的普及起了很大作用,但这种强调接口的单片机无法广泛应用,甚至走入了误区。
PIC小结
PIC工作小结Led点灯、uart收发摘要本文总结了针对pic学习过程中的遇到的问题以及解决的过程。
检查器件检查power supplypower supply 加电,调节直选用通道的5V处,此处选用slave(任选一个),用万用表检查引脚,看是否显示正确,(将万用表调至合适的档位,红+ 黑- 测量各个引脚,确认显示正确),关闭power supply为什么是5V?通过查看电路图VDD供电引脚,我们得知核心芯片需要3V电压。
再查看power原理图,得知需要用常用的5V电压经过转换得到3V电压。
找板子的5V引脚,注意连线顺序,对照板子上的正方形引脚。
检查PIC板1、查看电路图根据发光二极管的特性知,当引脚RD8、RD9、RD10、RD11处于低电平时,二极管发光,查看pic引脚图,找到RD8、RD9、RD10、RD11,找到为68、69、70、71脚,2、检查是否引脚是否有短路现象用万用表,一个脚接R3、R4、R5、R6(从板子上看到的),一个脚测pic的68、69、70、71脚,看是否导通。
2、准备连接线和power supply 连接,注意红+、黑-,注意连线的正确性,看pcb的j12.编写程序1、设置引脚方向寄存器(从电路图看到是RD8、RD9、RD10、RD11),查看数据手册,找到TRISD:决定端口的方向,0输出,1输入PORTD:当方向为输入时,存放端口的值LATD:数据锁存器ODCD:漏极开路控制寄存器2、设置锁存器#include <p24FJ128GA010.h>int main(void){_TRISD8 = 0; //设置引脚方向:0 输出;1 输入_TRISD9 = 0;_TRISD10 = 0;_TRISD11 = 0;_LATD8 = 0; //设置锁存器的值,低电平(由前面得知)_LATD9 = 0;_LATD10 = 0;_LATD11 = 0;while(1) {}return 0;}3、编译设置好项目的输出路径、当前路径、头文件路径、库文件路径。
PIC单片机大总结
PIC单片机大总结什么是PIC单片机?PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC)。
一种具有分散作用(多任务)功能的CPU。
与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。
PIC 单片机是一个小的计算机PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。
然而,处理能力—存储器容量却很有限,这取决于PIC的类型。
但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。
时钟频率与扫描程序的时间和执行程序指令的时间有关系。
但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变(1*)。
如果是同样的体系结构,时钟频率较高的处理能力会较强。
这里用字来解释程序容量。
用一个指令(2*)表示一个字。
通常用字节(3*)来表示存储器(4*)容量。
一个字节有8位,每位由1或0组成。
PIC16F84A单片机 的指令由14位构成。
当把1K个子转换成位为:1 x 1,024 x 14 = 14,336位。
再转换为字节为:14,336/(8 x 1,024) = 1.75K。
在计算存储器的容量时,我们规定 1G 字节 = 1,024M 字节, 1M 字节 = 1,024K 字节, 1K 字节= 1,024 字节. 它们不是以1000为倍数,因为这是用二进制计算的缘故。
1. 计算机的物理结构,包括组织结构、容量、该计算机的CPU、存储器以及输入输出设备间的互连。
经常特指CPU的组织结构,包括它的寄存器、标志、总线、算术逻辑部件、指令译码与执行机制以及定时和控制部件。
2. 指出某种操作并标识其操作数(如果有操作数的话)的一种语言构造3. 作为一个单位来操作(运算)的一个二进制字符串,通常比计算机的一个字短。
4. 处理机内的所有可寻址存储空间以及用于执行指令的其它内存储器。
在计算存储器的容量时,我们规定 1G 字节 = 1,024M 字节, 1M 字节 = 1,024K 字节, 1K 字节= 1,024 字节. 它们不是以1000为倍数,因为这是用二进制计算的缘故。
PIC学习心得
PIC学习心得本次心得为PIC18F25K22上的代码零、配置CPU 的特殊功能,地址从300000开始,如以下,有晶振选择,复位功能,看门狗配置,调试口rb7-rb6的配置,因为RB6-RB7为串口2的端口,需要对应为位=1才能使得他们可以用于普通io,其实单片机默认也是1.对于已经用于特殊功能的引脚,比如已经配置了引脚为I2C功能,如果要配置为普通IO时,需要将I2C失能掉,SSPXCON1=0X00;这样才能正常使用这2个IO口了如果要使单片机使用内部晶振,就需要将对应的OSCCON位置1IRCF<2:0>:内部RC 振荡器频率选择位(2)IRCF<2:0>=111 = HFINTOSC – (16 MHz)OSTS=0 = 器件依靠内部振荡器(HFINTOSC、MFINTOSC 或LFINTOSC)运行OSCCON2默认使用内部晶振时,频率会随温度漂移,使用波特率的时候要注意了,最好使用外部晶振PWDX默认,使外围功能使能#pragma romdata CONFIG1H=0x300001 //晶振const rom unsigned char config1H = 0x0a; //setting for HS oscillator中档功耗#pragma romdata CONFIG2L=0x300002 //复位const rom unsigned char config2L = 0x00;#pragma romdata CONFIG2H=0x300003const rom unsigned char config2H = 0x1e; //WDT#pragma romdata CONFIG3H=0x300005//配置一些端口的映射const rom unsigned char config3H = 0x00; //禁用复位脚,开始为CPU提供时钟而无需等待#pragma romdata CONFIG4L=0x300006//最高位为1,RB6 和RB7用于普通IO 口const rom unsigned char config4L = 0x80; //RB6 和RB7专用于在线调试#pragma romdata一、中断配置,PIC只有高低2个优先级,对应的函数有2个,函数地址为0X08和0X18中断配置,一下为高低优先级配置RCONbits.IPEN=1;//使能中断优先级,如果IPEN配置为0,没有中断优先级,所有优先级都为高,调到0x08地址的中断INTCONbits.GIE=1;//=允许所有高优先级中断INTCONbits.PEIE=1;//=允许所有低优先级的中断2、中断函数写法高优先级地址为0X08#pragma code InterruptVectorHigh = 0x08void InterruptVectorHigh (void){_asmgoto InterruptHandlerHigh //jump to interrupt routine,goto之后的InterruptHandlerHigh函数名可以自己取名_endasm}// High priority interrupt routine#pragma code#pragma interrupt InterruptHandlerHigh //InterruptHandlerHigh函数名可以自己取名void InterruptHandlerHigh()//中断函数内容低优先级函数地址为0X18#pragma code InterruptVectorLow= 0x18void InterruptVectorLow (void){_asmgoto InterruptHandlerLow //jump to interrupt routine,goto之后的InterruptHandlerHigh函数名可以自己取名_endasm}// High priority interrupt routine#pragma code#pragma interruptlow InterruptHandlerLow //InterruptHandlerHigh函数名可以自己取名void InterruptHandlerLow(void) //中断函数内容3、例如串口中断配置:IPR1bits.RC1IP=0; //设为低优先级,让他跳入低优先级中断函数,为1将跳入高优先级函数PIR1bits.RC1IF=0; //清中断标志PIE1bits.RC1IE=1; //接收中断允许PIE1bits.TX1IE=0; //发送中断禁止4、这样配置完成后,如果串口其他寄存器配置无误,接收到数据后就会跳入低优先级函数InterruptHandlerLow中二、ADC1、ADC采集为了不浪费MCU资源,不用中断函数来采集配置如下,(1)先将要用于ADC采集的IO口配置为输入(2)将对应IO扣配置为ADC输入(3)配置ADCON0-3寄存器TRISA|=0x01;//引脚方向寄存器,1输入,0输出。
pic单片机实验报告
pic单片机实验报告
《pic单片机实验报告》
实验目的:通过对pic单片机的实验,掌握其基本原理和应用技能,提高对单
片机的理解和应用能力。
实验内容:
1. 初步了解pic单片机的基本结构和工作原理;
2. 学习pic单片机的编程语言和编程工具;
3. 进行简单的pic单片机实验,如LED灯控制、数码管显示等;
4. 分析实验结果,总结经验和教训。
实验步骤:
1. 阅读pic单片机的相关资料,了解其基本原理和应用领域;
2. 学习pic单片机的编程语言和编程工具,如C语言和MPLAB X IDE;
3. 进行LED灯控制实验,编写简单的程序控制LED的亮灭;
4. 进行数码管显示实验,编写程序实现数字的显示和滚动效果;
5. 分析实验结果,总结经验和教训,找出存在的问题并改进。
实验结果:
1. 成功掌握了pic单片机的基本原理和编程技能;
2. 实现了LED灯控制和数码管显示的实验,并取得了良好的效果;
3. 发现了一些问题,如程序逻辑错误和电路连接不良,及时改进并取得了成功。
实验总结:
通过本次实验,我对pic单片机有了更深入的了解,掌握了其基本原理和编程
技能,提高了对单片机的应用能力。
同时,也发现了一些问题并及时改进,取
得了良好的实验效果。
希望能在今后的学习和工作中,更好地应用pic单片机,为科研和工程项目做出更大的贡献。
- 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.。