关于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单片机,为科研和工程项目做出更大的贡献。
PIC单片机报告
PIC单片机报告第一篇:PIC单片机报告PIC单片机实验报告一、定时器的使用(1)实验目的:通过学习和实验理解PIC单片机定时器的内部工作原理,学会定时器初始化配置编程,并能利用实验板对定时器有简单的应用。
(2)实验器材:16位PIC单片机学习板。
(3)实验过程:1、PIC单片机定时器概述:根据具体器件,dsPIC30F 器件系列提供了几个16 位定时器。
这些定时器被指定为Timer1、Timer2、Timer3 ……等。
可分为三种类型:A类型时基、B类型时基和C类型时基。
A类型时基:在大多数dsPIC30F 器件上,至少有一个A 类型定时器。
通常Timer1 是A 类型定时器。
A 类型定时器与其他类型的定时器相比,有下列独特的功能:可以使用器件的低功耗32 kHz 振荡器作为时钟源工作可以在使用外部时钟源的异步模式下工作A 类型定时器独特的功能使它可以用于实时时钟应用(Real-Time Clock,RTC)。
16 位定时器模式:在16 位定时器模式下,定时器在每个指令周期递增,直到与预先装入周期寄存器PR1 中的值匹配,然后复位至0,继续计数。
当CPU 进入空闲模式时,定时器将停止递增,除非TSIDL(T1CON<13>)位 = 0。
如果TSIDL = 1,定时器模块逻辑将继续递增,直到CPU 空闲模式终止。
位同步计数器模式:在16 位同步计数器模式下,定时器将在外部时钟信号的上升沿递增,外部时钟信号与内部相位时钟同步。
定时器计数,直到等于PR1 中预先装入的值,然后复位至0,继续计数。
当CPU 进入空闲模式时,同上。
位异步计数器模式:在16 位异步计数器模式下,定时器在外部时钟信号的上升沿递增。
定时器计数,直到等于PR1 中预先装入的值,然后复位至0,继续计数。
当定时器配置为异步工作模式时,CPU 进入空闲模式,如果TSIDL = 1,则定时器将停止递增。
B类型时基:在大多数dsPIC30F 器件上,如果存在Timer2 和Timer4,它们是B 类型定时器。
pic单片机实验报告
pic单片机实验报告PIC单片机实验报告引言:PIC单片机是一种非常常见的嵌入式系统开发工具,被广泛应用于电子产品的设计与制造过程中。
本实验报告将介绍我对PIC单片机的实验研究,并分享实验过程中的收获和心得体会。
实验一:LED灯的控制在本实验中,我使用PIC单片机来控制一组LED灯的亮灭。
通过编程,我成功实现了按键控制LED灯的开关,以及通过定时器实现LED灯的闪烁效果。
这个实验让我初步了解了PIC单片机的编程方法和基本原理。
实验二:温度传感器的应用在这个实验中,我将PIC单片机与温度传感器连接,并通过编程实现了温度的实时监测和显示。
通过这个实验,我深入了解了模拟信号的采集和数字信号的处理过程,并学会了如何使用PIC单片机进行数据的读取和处理。
实验三:蜂鸣器的控制本实验中,我使用PIC单片机控制了一个蜂鸣器的发声。
通过编程,我实现了不同频率的声音输出,并且可以通过按键控制声音的开关。
这个实验让我了解了如何通过PIC单片机来控制外部设备,并且学会了如何利用定时器来产生不同频率的方波信号。
实验四:液晶显示屏的应用在这个实验中,我将PIC单片机与液晶显示屏连接,并通过编程实现了文字和图形的显示。
通过这个实验,我学会了如何使用PIC单片机来控制液晶显示屏,并且了解了液晶显示屏的基本原理和工作方式。
实验五:无线通信模块的应用在本实验中,我将PIC单片机与无线通信模块连接,并通过编程实现了两个PIC 单片机之间的无线数据传输。
通过这个实验,我了解了无线通信模块的基本原理和工作方式,并学会了如何使用PIC单片机进行无线通信的应用。
结论:通过对PIC单片机的实验研究,我深入了解了PIC单片机的工作原理和应用方法。
通过编程和实践,我成功实现了LED灯的控制、温度传感器的应用、蜂鸣器的控制、液晶显示屏的应用以及无线通信模块的应用。
这些实验不仅让我掌握了PIC单片机的基本编程技巧和应用方法,还培养了我对嵌入式系统开发的兴趣和能力。
我的PIC单片机调试心得
我的PIC单片机调试心得,给像我一样曾经苦苦寻觅的初学者一点启示我是一位初学者,pic初学者,但是在单片机行当已经混迹多年了。
说句实话,c开发环境都大同小异,只不过烧写和在线仿真大同小异。
钻研了两天,收到了很多回应和启发。
下面应soso的请求,把最近的调试心得和大家分享1、先说说我要做的东西说来惭愧,这是临时的一个小任务,做一个采集和现实的部分,用两路ad采集模拟量,通过开关进行切换,简单的说就是开关打开,显示一路模拟量;开关关闭,显示另一路模拟量。
主电路及其简单,我就直接说了,不附图了。
电源通过一个负载(滑动变阻器就可以)回到电源负极,在回路中接入一个电流传感器,实时采集电流信号(如果条件不允许,也可以用康铜丝或者一个大瓦数小数值的采样电阻采集电流信号。
然后通过放大,隔离后送入单片机的AN0口。
另外一路AN1可以用来做另外一个模拟量的采集,具体是什么待定,可以是温度,也可以是电压(时间短,我就做了1路,另一路有待高人们自己开发,哈哈)2、我遇到的问题对于我来说,pic是新事物,要从刚开始接触说起,时间不长,72小时。
给我的感觉,这种单片机价格便宜,体积小,结构简单,编程用c,也比较和我的胃口。
缺点(也就是苦苦煎熬着我的)就是仿真和烧录。
和其他单片机一样,每个厂商都推出了自己的c编译环境和开发环境,我们的pic使用ide 和picc(不是保险公司哦)具体如图。
Picc是自己嵌入ide的进入界面,感觉无比亲切,和keil也差不多啊,于是照方抓药。
通过工程想到,建立工程。
选择你使用的芯片,选择编译器,如图,picc.exe的路径也可以看到哦!新建工程,但是不导入c文件点菜单栏VIEW下的project,在source右键,加入c文件,如果没有c文件,就新建一个c文件,然后加入到source里面。
导入之后就如图了。
下面就是激动人心的编译程序了,如果程序无误,应该出现这个:接下来就可以进行烧写和仿真了在这之前,需要进行一些必要的设置,按上图就可以,在Configue里面。
pic单片机的原理和应用
pic单片机的原理和应用一、pic单片机的概述PIC(Peripheral Interface Controller)单片机是由美国Microchip Technology公司生产的一种微控制器,广泛应用于嵌入式系统和电子设备中。
它采用哈佛结构,具有高性能、低功耗、易于编程等特点,在各种领域的控制应用中得到了广泛的应用。
二、pic单片机的核心组成部分pic单片机由五个主要部分组成,包括中央处理器(CPU)、存储器、输入/输出(I/O)端口、计时器/计数器和通信接口。
1.中央处理器(CPU):pic单片机通过CPU实现程序的控制和计算操作。
它包含一个ALU(算术逻辑单元)、寄存器和指令集,用于执行程序中的指令。
2.存储器:pic单片机具有多种类型的存储器,包括闪存存储器(用于存储程序代码和数据)、随机存取存储器(RAM)和特殊功能寄存器(SFR)。
这些存储器用于存储程序、变量和配置信息。
3.输入/输出(I/O)端口:pic单片机提供了多个I/O端口,用于与外部设备进行通信。
它们可以用于读取输入数据或控制输出信号,实现与外部世界的连接。
4.计时器/计数器:pic单片机具有多个计时器和计数器,用于执行时间相关的任务。
它们可以用于测量时间、生成定时器中断、计数输入脉冲等操作。
5.通信接口:pic单片机支持多种通信接口,包括串行通信接口(如SPI和I2C)和通用异步收发器(UART)。
这些接口使pic单片机能够与其他设备进行串行通信,实现数据传输和通信功能。
三、pic单片机的应用领域pic单片机在各种控制和嵌入式系统中得到了广泛的应用。
以下是pic单片机的一些常见应用领域:1.家用电器控制:pic单片机可以用于控制家用电器,如洗衣机、冰箱、空调等。
它们可以通过读取传感器数据并根据程序逻辑来控制电器的运行状态和功能。
2.工业自动化:pic单片机在工业自动化领域中得到了广泛应用。
它们可以用于控制生产线上的设备、监测温度、湿度、压力等参数,并根据需要进行相应的控制和调节。
学习PIC单片机有感
学习PIC单片机有感学起PIC,上手还是蛮快的,毕竟已经学了2 种16 位的单片机,更是接触了一款32 位的处理器,再来学习16 位的单片机,自然十分容易。
刚开始的时候拿到一块dsPIC33FJ128M706 单片机开发板,此单片机乃microchip 公司较为高端的单片机,具有DSP 引擎数字图像处理功能;内置两路SPI,IIC,UART,CAN 等多种通信模块;9 路16 位定时器,其中有八路课组成4路32 位定时器;10/12 位可选择AD 转换模块,其端口可以任意设定,共多达32 路;4 对含有死区电压的PWM 发生器及其他一些常见的模块。
如此强大的单片机可谓是单片机中的顶尖角色。
所以,我很庆幸现在就接触了这款单片机。
拿到开发板,去官网下载datasheet,发现官网提供中文手册,直呼microchip 太人性化了。
开始安装软件遇到了一点小麻烦,询问一个老师他竟然不告诉我,在此我深深的感叹如此枉称老师。
花了几天安装成功后,开始阅读长达300 多页的datasheet,凭着自己的单片机基础,又加上PICkit3 仿真器,很快实现了板子上的许多功能。
不久和标哥碰头聊天,给了我一个启示,学习单片机需要掌握这款编译软件。
因为那时我还只会编辑、下载完事。
于是开始摸索MPLAB 软件仿真。
放假了,帮老师写一个程序测试板子,板子上的单片机dsPIC30F4011 单片机,乍一看两块单片机在许多地方上有惊人的相似,于是信心满满的开始在4011 板子上实验。
PWM 和定时器很快搞定,轮到倍频的时候,发现了问题,调试好久,不得其解,于是在网上寻得一大神,他就给我一句话,最好的方法是阅读datasheet。
于是就呆在电脑前一门心思的看那个枯燥的文档。
一看就是三个小时,又把英文的手册下载对照查阅,慢慢的理解了这个道理。
直呼这款单片机的datasheet 也太不人性化了。
接着调试AD,也不知道是神经短路,还是脑袋长包,总之放了许多小错误,从晚上11 点开始一直调试到凌晨。
AVR和PIC单片机学习心得总结
AVR和PIC单片机学习心得总结一、两种单片机工程文件编译成功的关键是工程文件名和存储目录必须是英文字母,绝对不能是汉字目录! 否则就会出现编译错误。
我就是使用了汉字目录“我的文档”在工程文件编译文件过程产生错误,百思不得其解,浪费了许多时间。
二、学AVR单片机感觉还是用AVR STUDIO自带的GCC比较爽。
一是因为AVR STUDIO 自带(不过还要自己安装WinAVR);二是因为WinAVR是自由软件不需要破解;三是现在用起来比以前要爽多了,以前还要自己编写makefile文件,现在只需在project的configuration中设置一下单片机使用晶振频率,剩下的就交给编译器;四是GCC 函数库比较丰富,拿来直接用省的自己编写代码了。
三、PIC 单片机用量好像比AVR单片机大一点,但低档PIC单片机的结构没有AVR 单片机结构合理,尤其是在中断和存储器结构方面。
PIC产生中断,中断入口就一个,程序设计者要想知道哪里产生了中断就要自己写代码查询各个中断标志寄存器置位了;还有PIC的存储器分好几个存储块,写程序要在几个块之间转换;AVR单片机就不会存在这个问题。
四、AVR单片机从软件开发到硬件开发非常便宜。
软件免费而功能强大,编程仿真电路简单,网上购买便宜,自己也就可以制作。
相对PIC单片机软硬件耗费就要大一些,本人开始学PIC就是因为pic单片机的编程器贵中途放弃,最后还是因为朋友学不会PIC单片机,就把他的编程器送给了我,我才得以继续学习PIC。
五、比起汇编来还是用:单片机C语言,比较容易,编写程序简单,程序可读性强,功能函数可以拿来使用。
六、说一说PIC单片机的优点:1、就是PIC单片机汇编命令要比AVR单片机少的多,要是实现个简单的功能用汇编语言感觉用PIC好;2、以前感觉PIC单片机的网上源程序要比AVR单片机好像要稍微多一些,不过现在感觉avr单片机的源程序也很多,并且进行了归纳。
PIC单片机学习笔记
PIC单片机学习笔记(7)语句(5)-循环语句循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操作。
如一个12M的51芯片应用电路中要求实现1毫秒的延时,那么就要执行1000次空语句才可以达到延时的目的(当然可以使用定时器来做,这里就不讨论),如果是写1000条空语句那是多么麻烦的事情,再者就是要占用很多的存储空间。
我们可以知道这1000条空语句,无非就是一条空语句重复执行1000次,因此我们就可以用循环语句去写,这样不但使程序结构清晰明了,而且使其编译的效率大大的提高。
在C语言中构成循环控制的语句有while,do-while,for和goto语句。
同样都是起到循环作用,但具体的作用和用法又大不一样。
我们具体来看看。
goto语句这个语句在很多高级语言中都会有,记得小时候用BASIC时就很喜欢用这个语句。
它是一个无条件的转向语句,只要执行到这个语句,程序指针就会跳转到goto后的标号所在的程序段。
它的语法如下:goto 语句标号;其中的语句标号为一个带冒号的标识符。
示例如下void main(void){unsigned char a;start: a++;if (a==10) goto end;goto start;end:;}上面一段程序可以说是一个死循环,没什么意思,只是说明一下goto的用法。
这段程序的意思是在程序开始处用标识符"start:"标识,表示程序这是程序的开始,"end:"标识程序的结束,标识符的定义应遵循前面所讲的标识符定义原则,不能用C的关键字也不能和其它变量和函数名相同,不然就会出错了。
程序执行a++,a的值加1,当a等于10时程序会跳到end标识处结束程序,否则跳回到start标识处继续a++,直到a等于10。
上面的示例说明goto不但可以无条件的转向,而且可以和if语句构成一个循环结构,这些在C程序员的程序中都不太常见,常见的goto语句用法是用它来跳出多重循环,不过它只可以从内层循环跳到外层循环,不能从外层循环跳到内层循环。
PIC单片机学习笔记
PIC单片机学习笔记1.状态寄存器STATUS2.实现间接寻址的寄存器INDF和FSR3.与程序计数器PC相关的寄存器PCL和PCLATH4.电源控制寄存器PCONPIC单片机的指令系统PIC16F87X共有35条指令,均是长度为14位的单字节指令。
所有指令按操作对象的不同又分为3类:面向字节操作类(17条);面向位操作类(4条);常数操作和控制操作类(14条)。
PIC配置字的设置PIC的配置字设置方法到目前我学到两种:1. 两个_紧跟CONFIG,后跟配置字设置后的数值;2. 两个_紧跟CONFIG,后跟各配置字的位和状态,其格式如下:;================================================================== ; 配置自定义;================================================================== __CONFIG_DEBUG_OFF_CP_ALL_CPD_ON_LVP_OFF_BODEN_OFF_PWRTE_ON_WDT_OFF_HS _OSC ;配置自定义间接寻址、INDF和FSR 寄存器INDF寄存器不是物理寄存器,对INDF寄存器寻址将导致间接寻址。
使用INDF寄存器可以实现间接寻址。
对任何INDF寄存器的指令实际上访问的是由指针寄存器FSR所指的寄存器。
间接读INDF寄存器本身会返回00H。
而使用间接寻址对IDNF 寄存器进行写操作将导致执行一个空操作(虽然可能会影响状态位)。
有效的9位地址是通过组合8位FSR寄存器和IRP位(STATUS《7》)获得的。
示例如下:间接寻址示例:例:给30H~7FH单元依次写入30H~7FH。
其中COUNT是计数寄存器。
;=================================================================; 连续地址写入数据子程序(间接寻址);================================================================= WR_ADS:MOVLW 30H ;以下将RAM内容初始化MOVWF FSR ;从30H单元开始MOVLW 30H ;将值30H赋给单元30HMOVWF COUNT ;INTRAM:MOVF COUNT,0 ;将30H~7FH赋给单元30H~7FHMOVWF INDF ;对INDF进行操作INCF COUNT,1 ;COUNT+1INCF FSR,1 ;指针+1BTFSS COUNT,7 ;COUNT《7》为1吗(7FH时COUNT《7》=0)GOTO INTRAM ;RETURN ;程序返回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.。