dingzy_2002

  • 2019-11-08
  • 回复了主题帖: PIC32MX250F128B请教?

    中文资料在www.microchip.com.cn上找,英文资料,要去官网www.microchip.com去找,不过官网反映速度是很慢的.

  • 2019-09-17
  • 回复了主题帖: 求解!PIC16LF15323看门狗似乎默认开启

    看了下手册,15323的看门狗有两个控制线,WDT和WWDT,要注意配置;WDT可以由硬件或软件开启。

  • 回复了主题帖: PIC16+CMT2300A,接收不到数据。

    白呵呵 发表于 2019-9-16 18:15 有谁能指导一下吗,直通或包模式也行
    我没用过CMT2300A,根据我用过SPI模式的PIC16芯片来说,可以从以下方面排错: ①PIC16的SPI有四种模式;软件要调整对应的CMT2300A对应的SPI模式。 ②中断或相关的引脚配置是否正常? ③CMT2300A的配置模式是否正确?

  • 2019-09-15
  • 回复了主题帖: 订购了一个MPLAB Snap

    dcexpert 发表于 2019-9-12 14:24 这些缺点的确都有,不过对我足够了,就是不想花太多成本买ICD4。
    在我看来,KIT4应该是更好的选项,官方折扣的最低价大概是128元左右吧

  • 2019-09-12
  • 回复了主题帖: 订购了一个MPLAB Snap

    性价比还是比较高的;不过,我看来有三点不足:①无外壳,②不支持高压编程,③对早期芯片支持力度不足;只能作为补充使用.

  • 2019-09-08
  • 加入了学习《隔离拓扑简介》,观看 全桥与LLC拓扑

  • 2019-09-04
  • 回复了主题帖: 2019年STM32全国巡回研讨会即将开启,现在报名赢三重礼

  • 2019-08-28
  • 加入了学习《直播回放: 单片机编程不再难,利用MPLAB?代码配置器(MCC)实现快速开发》,观看 P1. 独立于内核的外设,集成模拟外设

  • 2019-08-22
  • 回复了主题帖: 颁奖了-下载有礼:是德科技电子书《通过了解测试精度的基础知识, 提高良率并降低...-

    确认个人信息无误 ,请帮忙兑换成E金币。谢谢EEWORLD及是德!

  • 2019-08-09
  • 回复了主题帖: 基于pic18f25k22单片机的spi接口oled屏驱动

     例如,这样子: void SPI_PORT_INIT(void) { TRISBbits.TRISB3=0;//SDO2 TRISBbits.TRISB1=0;//SCK2 TRISAbits.TRISA6=0;//D/C TRISAbits.TRISA7=0;//RES ANSELBbits.ANSB3=0; ANSELBbits.ANSB1=0; } void OLED_SPI_INIT(void) { SSP2CON1=0X30; //SSPM3:SSPM0配置的时钟不确定 Fosc/4 SSP2STATbits.SMP=0; SSP2STATbits.BF=0; SSP2STATbits.CKE=0; SSP2IE=0; SSP2IF=0; GIE=1; PEIE=1; } void SPI_WriteByte(uchar data,uchar cmd)//0表示命令,1表示数据 { uchar i=0; if(cmd==1) {OLED_DC=1;}//写数据 else {OLED_DC=0;}//写命令 OLED_SCK=0; SSP2BUF=data;//可能将数据移入sspbuf中需要时间 NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); while(!SSP2IF) SSP2IF=0; TEMP=SSP2BUF; OLED_SCK=1; OLED_DC=1; } void OLED_DISPLAY_ON(void)//开启OLED显示 { SPI_WriteByte(0X8D,OLED_CMD);//设置电荷泵 SPI_WriteByte(0X14,OLED_CMD);//开启电荷泵 SPI_WriteByte(0XAF,OLED_CMD);//开启OLED } void OLED_DISPLAY_OFF(void)//关闭OLED显示 { SPI_WriteByte(0X8D,OLED_CMD);//设置电荷泵 SPI_WriteByte(0X10,OLED_CMD);//关闭电荷泵 SPI_WriteByte(0XAE,OLED_CMD);//关闭OLED } void OLED_SET_POS(uchar x,uchar y)//设置位置 { SPI_WriteByte(0xb0+y,OLED_CMD); //设置页首地址 SPI_WriteByte((x&0xf0)>>4|0x10,OLED_CMD);//设置显示位置列高四位首地址 SPI_WriteByte((x&0x0f)|0x01,OLED_CMD); //设置显示位置列低四维首地址 或0x01??? } void OLED_Clear(void) //清屏指令 清完之后整个屏幕是黑色的,和没点亮是一样的 { uchar i,n; for(i=0;i<8;i++) { SPI_WriteByte(0xb0+i,OLED_CMD); SPI_WriteByte(0x00,OLED_CMD); SPI_WriteByte(0x10,OLED_CMD); for(n=0;n<132;n++) { SPI_WriteByte(0,OLED_DATA);//??? } } } void OLED_Showchar(uchar x,uchar y,uchar chr) //写字符 { uchar c=0,i=0; c=chr-' ';//得到偏移后的值 字符量相对空格的差值 或者加上‘0’-‘ ’的ascii值 OLED_SET_POS(x,y); for(i=0;i<8;i++) { SPI_WriteByte(F8X16[c*16+i],OLED_DATA); } OLED_SET_POS(x,y+1); for(i=0;i<8;i++) { SPI_WriteByte(F8X16[c*16+i+8],OLED_DATA); } } void OLED_Showchar_shansuo(uchar x,uchar y,uchar chr) { // GIE=1; // PEIE=1; uchar c=0,i=0; c=chr-' ';//得到偏移后的值 字符量相对空格的差值 或者加上‘0’-‘ ’的ascii值 OLED_SET_POS(x,y); if(b==0) { for(i=0;i<8;i++) { SPI_WriteByte(F8X16[c*16+i],OLED_DATA); } OLED_SET_POS(x,y+1); for(i=0;i<8;i++) { SPI_WriteByte(F8X16[c*16+i+8],OLED_DATA); } } else { for(i=0;i<8;i++) { SPI_WriteByte(0X00,OLED_DATA); } OLED_SET_POS(x,y+1); for(i=0;i<8;i++) { SPI_WriteByte(0X00,OLED_DATA); } } } void OLED_ShowChinese(uchar x,uchar y,uchar num) { uchar t,adder=0; OLED_SET_POS(x,y); for(t=0;t<16;t++) { SPI_WriteByte(Hzk[2*num][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+1); for(t=0;t<16;t++) { SPI_WriteByte(Hzk[2*num+1][t],OLED_DATA); adder+=1; } } void OLED_ShowChinese_12x12(uchar x,uchar y,uchar num) { uchar t,adder=0; OLED_SET_POS(x,y); for(t=0;t<12;t++) { SPI_WriteByte(HZ[2*num][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+1); for(t=0;t<12;t++) { SPI_WriteByte(HZ[2*num+1][t],OLED_DATA); adder+=1; } } void OLED_ShowChinese_32X32(uchar x,uchar y,uchar num) { uchar t,adder=0; OLED_SET_POS(x,y); for(t=0;t<24;t++) { SPI_WriteByte(HZK[3*num][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+1); for(t=0;t<24;t++) { SPI_WriteByte(HZK[3*num+1][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+2); for(t=0;t<24;t++) { SPI_WriteByte(HZK[3*num+2][t],OLED_DATA); adder+=1; } // OLED_SET_POS(x,y+3); // for(t=0;t<32;t++) // { // SPI_WriteByte(HZK[4*num+3][t],OLED_DATA); // adder+=1; // } } void OLED_Shownum(uchar x,uchar y,uchar num) { uchar t,adder=0; OLED_SET_POS(x,y); for(t=0;t<16;t++) { SPI_WriteByte(F16X32[4*num][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+1); for(t=0;t<16;t++) { SPI_WriteByte(F16X32[4*num+1][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+2); for(t=0;t<16;t++) { SPI_WriteByte(F16X32[4*num+2][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+3); for(t=0;t<16;t++) { SPI_WriteByte(F16X32[4*num+3][t],OLED_DATA); adder+=1; } } void OLED_Shownum_shansuo(uchar x,uchar y,uchar num)//大数字 { uchar t,adder=0; OLED_SET_POS(x,y); if(b==0) { for(t=0;t<16;t++) { SPI_WriteByte(F16X32[4*num][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+1); for(t=0;t<16;t++) { SPI_WriteByte(F16X32[4*num+1][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+2); for(t=0;t<16;t++) { SPI_WriteByte(F16X32[4*num+2][t],OLED_DATA); adder+=1; } OLED_SET_POS(x,y+3); for(t=0;t<16;t++) { SPI_WriteByte(F16X32[4*num+3][t],OLED_DATA); adder+=1; } } else { for(t=0;t<16;t++) { SPI_WriteByte(0X00,OLED_DATA); adder+=1; } OLED_SET_POS(x,y+1); for(t=0;t<16;t++) { SPI_WriteByte(0X00,OLED_DATA); adder+=1; } OLED_SET_POS(x,y+2); for(t=0;t<16;t++) { SPI_WriteByte(0X00,OLED_DATA); adder+=1; } OLED_SET_POS(x,y+3); for(t=0;t<16;t++) { SPI_WriteByte(0X00,OLED_DATA); adder+=1; } } } void OLED_INIT(void) { osccon_init(); SPI_PORT_INIT(); OLED_SPI_INIT(); OLED_SCK=1; OLED_RES=1; __delay_ms(100); OLED_RES=0; __delay_ms(100); OLED_RES=1; //要有足够的时间等待rc复位完毕,才能开始下面的初始化 SPI_WriteByte(0xAE,OLED_CMD);//--turn off oled panel SPI_WriteByte(0x00,OLED_CMD);//---set low column address SPI_WriteByte(0x10,OLED_CMD);//---set high column address SPI_WriteByte(0x40,OLED_CMD);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F) SPI_WriteByte(0x81,OLED_CMD);//--set contrast control register SPI_WriteByte(0xCF,OLED_CMD); // Set SEG Output Current Brightness SPI_WriteByte(0xA1,OLED_CMD);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常 SPI_WriteByte(0xC8,OLED_CMD);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常 SPI_WriteByte(0xA6,OLED_CMD);//--set normal display SPI_WriteByte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64) SPI_WriteByte(0x3f,OLED_CMD);//--1/64 duty SPI_WriteByte(0xD3,OLED_CMD);//-set display offset Shift Mapping RAM Counter (0x00~0x3F) SPI_WriteByte(0x00,OLED_CMD);//-not offset SPI_WriteByte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency SPI_WriteByte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec SPI_WriteByte(0xD9,OLED_CMD);//--set pre-charge period SPI_WriteByte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock SPI_WriteByte(0xDA,OLED_CMD);//--set com pins hardware configuration SPI_WriteByte(0x12,OLED_CMD); SPI_WriteByte(0xDB,OLED_CMD);//--set vcomh SPI_WriteByte(0x40,OLED_CMD);//Set VCOM Deselect Level SPI_WriteByte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02) SPI_WriteByte(0x02,OLED_CMD);// SPI_WriteByte(0x8D,OLED_CMD);//--set Charge Pump enable/disable SPI_WriteByte(0x14,OLED_CMD);//--set(0x10) disable SPI_WriteByte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5) SPI_WriteByte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7) SPI_WriteByte(0xAF,OLED_CMD);//--turn on oled panel SPI_WriteByte(0xAF,OLED_CMD); /*display ON*/ OLED_Clear(); OLED_SET_POS(0,0); }  

  • 回复了主题帖: 基于pic18f25k22单片机的spi接口oled屏驱动

    1.建议楼主用附件或代码框模式来发贴,会更好点, 2.没有详细的程序说明及硬件连接情况,不够完美。

  • 2019-05-22
  • 加入了学习《黑科技探头:碰一下就知电流大小(英文)》,观看 黑科技探头:碰一下就知电流大小(英文,国外网友评测)

  • 2019-01-19
  • 回复了主题帖: 小家电周波控制过EMC方式

    邱海涛qht 发表于 2019-1-19 10:20 是的,每次触发就是在过零点出发的,有过零检测电路的。现在控制方式已经能够满足EMC但是周波控制时,低 ...
    这个一般没有根治的方法,但可以减少波动, 一般是采用输出离散化方法控制,不过对于极低控制参数时,还是不能根除的。

  • 回复了主题帖: 小家电周波控制过EMC方式

    如果可能的话,应该用过零开通功能要比PWM或T方式会更好吧

  • 2019-01-12
  • 回复了主题帖: 各种情况下IO口省电情况

    IO口直接接共阴数码管段选,我不需要点亮该选时如何设置IO口模式跟省电流? 数码管也属于单向电流工作元件,所以使用数码管,在不点亮状态下,也应该将引脚设置成输出模式 不点高的位保持电平相等就可以了,置H与置L要按数码管的接法 共阴时,IO置L;共阳时,IO置H,方便软件控制与切换。

  • 回复了主题帖: 各种情况下IO口省电情况

    本帖最后由 dingzy_2002 于 2019-1-12 16:17 编辑 2引脚外部接地时,如何设置能够节省电流?如何设置能减少干扰? 3引脚外部接VCC时,如何设置能够节省电流?如何设置能减少干扰? 引脚在外部接地或接电源时,本身就具有较强的抗干扰能力,可以将引脚设置为悬空输入状态,来降低功耗 但不要开启上拉(外部接地)或下拉(外部接VDD),以及输出状态。上拉或下拉会产生额外的电流消耗(电流在UA级); 设置成输出状态,可能会因管脚的误动作,从而短路输出级,产生较大电流。

  • 回复了主题帖: 各种情况下IO口省电情况

    1引脚在悬空时,如何设置能够节省电流?如何设置能减少干扰?   由于现在的MCU是CMOS工艺,大部分引脚设置成输入时,其内部电路为施密特触发输入,在外部干扰或存在接近1/2的VDD电压时,其施密特电路将存在较大电流,对功耗和寿命产生影响。 ① 所以一般引脚不用(悬空时),建议设置成输出模式,以将低功耗及寿命。 ② 一般MCU管脚的H与L输出的驱动电流是不一样的,置L的驱动电流要更大点,抗干扰能力更强。 ③可靠性要求高的场合,一般在MCU上电后,尽快设置引脚状态为好。 ④另外的情况:如果引脚是悬空输入,但不允许设置成输出模式(如与外部其它器件相连进行通讯或控制),可以先将引脚设置成模拟输入(如果有的话),等待外部器件工作确定后,已径将此引脚确定电平了,再切换到悬空输入状态。

  • 回复了主题帖: 颁奖:Littelfuse SiC MOSFET和肖特基二极管产品介绍及相关应用直播

    nmg 发表于 2019-1-10 13:57 填领奖表了吗? 不是回复帖子
    不好意思哦,我没仔细看:loveliness:现在填了领奖表了

  • 2019-01-10
  • 回复了主题帖: 颁奖:Littelfuse SiC MOSFET和肖特基二极管产品介绍及相关应用直播

      信息确认!感谢eeworld!!

  • 2018-12-29
  • 回复了主题帖: 颁奖:Littelfuse SiC MOSFET和肖特基二极管产品介绍及相关应用直播

    信息确认!谢谢EEWORLD!

最近访客

< 1/3 >

统计信息

已有651人来访过

  • 芯币:4605
  • 好友:17
  • 主题:22
  • 回复:503
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


邱海涛qht 2018-12-21
版主你好,麻烦帮我分析下IO口模式低功耗的问题http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=1064647&page=1#pid2831223
hschengyg 2018-10-8
版主你好! 我在网上下载了PIC16F72转速表ASM汇编程序,因不懂ASM汇编,编译失败,请教帮忙修改一下。并请教汇编的基本原理和步骤。谢谢!        list      p=16F72 #INCLUDE<P16F72.INC>      __CONFIG (0x3FB1);   cblock 0x20 count1 count2 count3 count4 Transo buff LO_count HI_count blank contor endc #DEFINE   setu  PORTB.F2 #DEFINE   sclk   PORTB.F3 #DE ... ...
wgj2778 2013-9-5
同学 想问你些问题  希望你能给点帮助
查看全部