最近,一个帖子上了热榜。一位网友在论坛咨询了关于入门pic的技巧,背景是这样的:
1:8位的pic,选什么型号来学比较好?要求这个芯片是近几年【新推出】的【大众化】的,有lqfp32以下封装甚至有pid封装的。
2:mplab ide ,mplab x ide ,mplab xc8 ,它们之间是什么关系?需要注册或者购买版权的吗?我只会用c语言,我需要安装什么软件?
3:需要购买下载线吗?还是有usb转串口即可下载?仿真工具暂时就不考虑了(如果是一体化的便宜的也可以考虑)。
4:我之前就喜欢玩avr的atmega48-88-168,没有选择m128来玩是因为觉得它比较老款,而且它没有lqfp32以下的封装,再说我也不需要太大的资源
5:最重要的是我不懂得e文,之前的avr有少量的中文,后来出的基本没有中文数据手册了,而我这几天发现原来pic【官网】有大量的中文数据手册,而且 mplab x ide 也是中文界面的,既然它对中文这么友好,所有我就想学一下它。这几天我还在【芯圣】单片机那里购买了3块hc89f0541的51系列1t的开发板,正准备来玩一下的,突然发现这个pic有个中文社区,里面有大量的中文资料,所以,就不想了解hc89f0541了,估计pic比较可靠是吗?
另外也想说一下这个hc89f0541芯圣单片机,看【芯圣】资料他家的所有单片机都有一个很好的特色,就是:外设功能引脚全映射模块。它允许大部分功能端口可任意映射到任意i/o 端口,比如说uasrt的txd,rxd,它可以指定由任意的io脚输出或者输入。
热心的网友是这样推荐的:
开发、学习pic单片机要用到以下软硬件工具:
1. mplab ide 老的集成开发环境软件,这个是所有pic单片机的开发平台,2016年以后推出单片机基本上已经不支持了;
2. mplab x ide 新的集成开发环境软件,支持全部的8位、16位和32位芯片(部分比较老的芯片不支持);
3. mplab xc8是8位单片机c语言编译器,你用c语言编程必须要用此编译器,需要单独安装配合 mplab x ide 使用;
4. 另外还要用到pic单片机开发板、编写器(如kit4或icd3、icd4);
5.建议买一个 mplabpickit4在线调试器。
以上是最基本的开发配置。
推荐mplab x ide(集成开发环境) + xc8(编译器), 硬件可以直接选择一块curiosity nano开发板。pic系列8位单片机为适应各种不同的用途,推荐pic16f722/3/4/6/7。另外,pic16f1946和pic16f877a是8位单片机中性价比较高的一种。
最终,panxiaoyi在芯片方面选择了pic18f27q10和pic18f47q10系列。选择它们是因为它们有中文数据手册,资源丰富,某宝购买方便,也不贵,包邮10多元。下载线选择了pic kit3.5。
软件环境方面,现在已经安装了 mplab x ide v4.20 没有安装5.x版本,因为4.x的中文界面更好,同时也安装了xc8。
点灯例程:
#include#include#include#includeconfiguration.hintmain(intargc,char** argv){unsignedlongi;for(i=1000000;i>0;i--){trisa=0;porta=0;}for(i=1000000;i>0;i--){trisa=0;porta=255;}return(exit_success);}
#ifndefxc_configuration_h#definexc_configuration_h#include // include processor files - each processor file is guarded.// pic18f24q10 configuration bit settings// 'c' source line config statements// config1l#pragmaconfig fextosc = ech// external oscillator mode selection bits (ec (external clock) above 8 mhz; pfm set to high power)#pragmaconfig rstosc = hfintosc_64mhz// power-up default value for cosc bits (hfintosc with hffrq = 64 mhz and cdiv = 1:1)// config1h#pragmaconfig clkouten = off// clock out enable bit (clkout function is disabled)#pragmaconfig cswen = on// clock switch enable bit (writing to nosc and ndiv is allowed)#pragmaconfig fcmen = on// fail-safe clock monitor enable bit (fail-safe clock monitor enabled)// config2l#pragmaconfig mclre = intmclr// master clear enable bit (if lvp = 0, mclr pin (re3) is an input; if lvp =1, mclr pin (re3) is mclr)#pragmaconfig pwrte = off// power-up timer enable bit (power up timer disabled)#pragmaconfig lpboren = off// low-power bor enable bit (low power bor is disabled)#pragmaconfig boren = sbordis// brown-out reset enable bits (brown-out reset enabled , sboren bit is ignored)// config2h#pragmaconfig borv = vbor_190// brown out reset voltage selection bits (brown-out reset voltage (vbor) set to 1.90v)#pragmaconfig zcd = off// zcd disable bit (zcd disabled. zcd can be enabled by setting the zcdsen bit of zcdcon)#pragmaconfig pps1way = on// ppslock bit one-way set enable bit (ppslock bit can be cleared and set only once; pps registers remain locked after one clear/set cycle)#pragmaconfig stvren = on// stack full/underflow reset enable bit (stack full/underflow will cause reset)//#pragma config debug = off // debugger enable bit (background debugger disabled)#pragmaconfig xinst = off// extended instruction set enable bit (extended instruction set and indexed addressing mode disabled)// config3l#pragmaconfig wdtcps = wdtcps_31// wdt period select bits (divider ratio 1:65536; software control of wdtps)#pragmaconfig wdte = off// wdt operating mode (wdt disabled)// config3h#pragmaconfig wdtcws = wdtcws_7// wdt window select bits (window always open (100%); software control; keyed access not required)#pragmaconfig wdtccs = sc// wdt input clock selector (software control)// config4l#pragmaconfig wrt0 = off// write protection block 0 (block 0 (000800-001fffh) not write-protected)#pragmaconfig wrt1 = off// write protection block 1 (block 1 (002000-003fffh) not write-protected)// config4h#pragmaconfig wrtc = off// configuration register write protection bit (configuration registers (300000-30000bh) not write-protected)#pragmaconfig wrtb = off// boot block write protection bit (boot block (000000-0007ffh) not write-protected)#pragmaconfig wrtd = off// data eeprom write protection bit (data eeprom not write-protected)#pragmaconfig scane = on// scanner enable bit (scanner module is available for use, scanmd bit can control the module)#pragmaconfig lvp = on// low voltage programming enable bit (low voltage programming enabled. mclr/vpp pin function is mclr. mclre configuration bit is ignored)// config5l#pragmaconfig cp = off// usernvm program memory code protection bit (usernvm code protection disabled)#pragmaconfig cpd = off// datanvm memory code protection bit (datanvm code protection disabled)// config5h// config6l#pragmaconfig ebtr0 = off// table read protection block 0 (block 0 (000800-001fffh) not protected from table reads executed in other blocks)#pragmaconfig ebtr1 = off// table read protection block 1 (block 1 (002000-003fffh) not protected from table reads executed in other blocks)// config6h#pragmaconfig ebtrb = off// boot block table read protection bit (boot block (000000-0007ffh) not protected from table reads executed in other blocks)// #pragma config statements should precede project file includes.// use project enums instead of #define for on and off.#endif/* xc_header_template_h */
其他pic网友优质开箱测评帖: 1、[pic/avr mcu] 【curiositynano测评报告】初识pic16f15244用户:21ic蓝v作者jinglixixi 最近,如愿地收到了pic16f15244curiosity nano评估工具包。其实说是工具包会有些误解,它其实是由一块pic16f15244开发板和2排插针构成。 除去包装后,将开发板与排针连接后,则如图1所示。
图1 pic16f15244开发板
由于工具包并没有配置相应的usb线,所以在找到一条usb线后便迫不及待连上电脑相看一下上电后的效果,其状态如图2所示。也就是说除了电源指示灯被点亮外,并无太大的变化。
图2 上电效果 但与此同时,在电脑上还有着一定变化的,明显的效果就是在安装驱动后,桌面上出现了一个虚拟的u盘,见图3所示。
图3 虚拟u盘 在打开u盘后,可见到里面存有3个文件,见图4所示。
图4 u盘内容 此时若打开资源管理器,则可看到不仅有虚拟的u盘,还有虚拟的串口,见图5所示。
图5 虚拟串口 观察到这里,似乎能做的也就这些了,那我们就为后续的工作先做些准备把。
1.找到那张器件联络图(原理图),下载为: ww1.microchip.com/downloads/en/devicedoc/pic16f15244_curiosity_nano_schematics.pdf,该原理图给我们的关键内容如图6所示。 由此可知,板载的2个器件与mcu的连接关系为:led(黄色) --- ra2(低电平点亮)sw(用户键)--- rc2(按下为低电平)此外,串口的占用引脚为:tx(发送) --- rc1rx(接收) --- rc0 2. 找到硬件的用户使用指南
图6 关键内容 3. 了解pic16f15244为我们具有哪些特色,其主要内容为:
4. 开发工具的配备,其主要内容为:
随后的工作就是下载软件来构建开发环境了,由于手头的开发环境是基于mplab xide 5.30,所以需要重新下载安装mplab x ide 5.40,因为在mplab xide 5.30下是找不到pic16f15244,这一点似乎不如keil,如果能下载个升级包把问题解决了多好!
2、[pic/avr mcu] 【curiositynano测评报告】+初次上手pic单片机之pwm呼吸灯用户:南来之风 非常感谢论坛提供了一次难得的初次体验pic单片机的机会。官网的资料是非常详细的,对于这款curiosity nano,建议从github上开始学起来。 github.com/microchip-pic-avr-examples/pic16f15244-pwm-led-blink
首先是环境的搭建:
正确安装好驱动后,在端口中应该可以看到“curiosity virtual com port”
开发环境安装好后,首先打开mplab xide5.40,软件是自动识别我们这款板子,而且硬件资料,软件demo一应俱全,非常的便利!
转到git上,试着运行一个pwm-led-blink-master的项目,下载后先build一个工程。
成功后,把程序下载到板子上。
与此同时,把gnd和ra2引脚引出,连接到一个简易示波器的输入端,可以看到pwm的方波驱动led闪烁,在简易示波器上显示出响应的波形。
在例程的基础上,增加了几个不同占空比的值,目前占空比可以选择0,12,25,37,50,62,75,88,100。代码比较糙,但还是贴出来了:
uint16_tarray_dutycycle[] ={0x0000,0x007f,0x00fa,0x177,0x01f4,0x0271,0x02ee,0x036a,0x03e7};uint16_ti;uint8_tindex =0;int8_tdirection =1;voidmain(void){system_initialize();// initialize the deviceinterrupt_globalinterruptenable();// enable the global interruptsinterrupt_peripheralinterruptenable();// enable the peripheral interruptswhile(1){if(direction ==1){if(index !=8)pwm3_loaddutyvalue(array_dutycycle[++index]);else{direction =-1;pwm3_loaddutyvalue(array_dutycycle[--index]);}}else{if(index !=0)pwm3_loaddutyvalue(array_dutycycle[--index]);else{direction =1;pwm3_loaddutyvalue(array_dutycycle[++index]);}}for(i =5120; i!=0;i--);}}
可以看出pwm的波形占空比变化时候led0的亮度也随之变化。
3、[pic/avr mcu] 【curiositynano测评报告】+开箱、建立开发平台及led闪烁
用户:hu9jj
周末收到本次评测的主角pic18f57q43核心板,鲜红的外包装依旧那么惹人喜爱:
两个防静电包装袋中分别是排针和pic18f57q43核心板:
核心板上的焊盘依旧的交叉错位,稍加用力将排针插入核心板,就可以直接使用,省略焊接步骤。我之前曾打样了几块扩展板,本次依然派上用场:
上电之后,打开mplab x ide,系统自动识别核心板,通过链接就可以下载pic18f57q43的相关资料:
电路图、硬件用户手册及数据表下载完之后,照例先升级pack包:
我懒得选择,依次升级了全部pack,因此花了一个多小时才完成:
准备工作基本完成之后,开始新建项目:
我安装的是中文版ide,但不知怎么回事,有时菜单不出现中文,不过这无伤大雅,选择“new project”就是:
照旧选择标准项目(参见上图),然后进入第二步,选择芯片类别:
类别选择正确之后,在设备栏中输入“pic18f57,然后从下拉列表框中选择对应的核心板型号,当然,您愿意录入完整的核心板型号也行,然后在工具栏中选择您的核心板编号,这样项目便会与核心板挂钩:
下一步便是选择编译器:
新建项目的最后一步是输入项目名称、选择项目文件存放的位置等:
至此,项目新建完毕,下一步就是通过mcc来配置代码,完善必要的代码文件:
可以从window下拉菜单中点击进入(或退出)代码配置器mcc,也可以直接点击工具栏上的图标进入或退出mcc:
点击之后,首先需要确定mcc配置文件存放的位置,我通常按默认的位置,直接点击“保存”按钮:
通过下载的电路图,我们知道led是接在rf3引脚、key是接在rb4引脚,因此在引脚图表中将rf3设置成output,将rb4设置成input,为了容易理解,点击右上部分的pin module选项,然后在对应引脚的名称设置成key和led:
配置完成后,不要忘记点击右上部的generate选项来生成代码:
退出mcc之后,打开main.c文件,添加一个计时用的全局变量ms,并在主循环中写入下列代码,用于计时和控制led引脚电平翻转:
编译并下载程序到核心板上:
稍等片刻,程序烧录完毕,黄色led灯便闪烁起来了,开发平台也顺利建立了。
这是测试的动画:
西门子公司提出4种混合模式的行业专网参考部署模式
怎样用计算机电源为钻头供电
荣耀Magic2评测 到底值不值得买
二手CHROMA19052 安规测试仪(曾S13713875
云计算为产业发展提供了巨大潜力开辟新窗口
入门PIC需要准备什么工具呢?
一套符合标准SQL语义的开发语言,link的最新特性
新思科技部署下一代 DesignWare IP 解决方案
2021哪款蓝牙耳机性价比高?性价比超高的无线蓝牙耳机推荐
5G网络商用之前还面临着三个主要挑战
工程机械中的压力传感器
智能镜面显示屏让智能家居成为当今时代新的时尚
pcb自动布线设置_设置线间距与宽度设置_pcb布局布线技巧
常用单片机介绍
氮化镓助力快充小型化,聚合物钽电容大显身手
投身AI创业浪潮 成功的概率只有1%
语音控件引入了火狐Firefox浏览器
SK将在2018年移动世界大会的展台上推出“社交虚拟现实”和多种5G演示
嵌智捷科技CM-AM335X嵌入式主板介绍
特斯拉推送固件更新,专为中国车主设计的功能