位单片机原理及应用基于pic32mx1xx2xx系列便携式实验开发板配套光盘daad example_第1页
位单片机原理及应用基于pic32mx1xx2xx系列便携式实验开发板配套光盘daad example_第2页
位单片机原理及应用基于pic32mx1xx2xx系列便携式实验开发板配套光盘daad example_第3页
位单片机原理及应用基于pic32mx1xx2xx系列便携式实验开发板配套光盘daad example_第4页
位单片机原理及应用基于pic32mx1xx2xx系列便携式实验开发板配套光盘daad example_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

13.8由输出构成DA模拟量输出和将其采样的AD例本节描述了在微芯PIC32MX220F032B型上的DA-AD综合示例。通过输出占空比从0~100%渐8段数码管显示(0~1023适用范围:本节所描述的代码适用于PIC32MX220F032B型(28引脚SOIC封装对于其他型号或封装的,测试,不确定其可用性。13-2SPIA/D1由SPI模块自动选择(SCK2只能选这个引脚SPI2PPSOutput(2,RPB8,SPI34RPB7Rbits.RPB7R=52ANSELAbits.ANSA0=基于的D/A变换电路:采用PIC32MX220F032B型所具有的脉宽调制通道输出可变占空比的波形,将波形通过RC滤波电路将其形成大小可调的模拟量,即可实现D/A13-6 13-6RC10D/AA/D转换模块将其电压值转换成数字量送到LED开 开 否是否缓冲区指否是否缓冲区指针将缓冲区数据求和取平int{intint{int{if(ADS_flag>{ADS_flag=adrst[adptr]= if(adptr>15){adptr=ads=ads+=adrst[i];ads=ads>>4;}}}return}开 开 联开开启动AD采返结返结 init函数流程框图图13-9:定时器中断函数流程框图图13-10 { RPB7Rbits.RPB7R= 1OC1CON=1//TurnoffOC1ng //InitializesecondaryCompareOC1CON=//2周期设定+//ConfigurePR2 //SetT2CONSET= //Enable 1init函数例程(13-8所示OC1CONSETOC1CONSET=//Enable}//ConfiguretheTimer//ConfiguretheTimer1interruptvoidISR(_TIMER_1_VECTOR,ipl2){//Cleartheinterruptflag{t> t=ADS_flag=}{t>t= 1_d=={1 1>DUTYMAX{1=1_d=}}{ 1=={1=1_d=}1--} }}4、AD采样函数例程(13-10所示UINT16 {{//自动采样:31Tadwhile //= //结束本次采样/return }附件:代* #include//ConfigurationBit//SYSCLK=48MHz(8MHzCrystal/FPLLIDIV*FPLLMUL///PBCLK=48MHz(SYSCLK///PrimaryOscw/PLL//WDT#pragmaconfigFPLLMUL=MUL_24,FPLLIDIV=DIV_2,FPLLODIV=DIV_2,FWDTEN=OFF#pragmaconfigPOSCMOD=HS,FNOSC=FRCPLL,FPBDIV=DIV_1#pragmaconfigFUSBIDIO //FUSBIDIO#pragmaconfig = //Periodneededfortimer1totriggeraninterruptevery0.1//(48MHzPBCLK/1 KHzTimer1#definePERIOD =0.001s=0.2ms#defineBTN_DELAY //2*5=10ms#defineSYS_FREQ( #defineDUTYMAX0x0DFF unsignedint unsignedintadrst[16]={0},adptr=0;//0~9,0.~9.FSEt-unsignedcharLed_lib[]={0x42,0xf3,0x86,0xa2,0x33,0x2a,0x0a,0xf2,0x02,0x22,0x40,0xf1,0x84,0xa0,0x31,0x28,0x08,0xf0,0x00,0x20,0x1e,0x0e,0x0f,0xbf,0x23,0x9b,0x8b};//LED字库voidSpiInitDevice()//8bits/char,inputdatasampledatendofdataoutputSpiOpenFlagsoFlags=SPI_OPEN_MSTEN|SPI_OPEN_CKP_HIGH|SPI_OPEN_MODE8|PPSOutput(2,RPB8,SDO2);//SetRB8pinasoutputfor//OpenSPImodule,useSPIchannel2,useflagssetabove,DivideFpbby6SpiChnOpen(2,oFlags,6);}voidSpiDoBurst(unsignedchar*pBuff,unsignedcharLen){if(pBuff){unsignedintfor(i=0;i<Len;i++){}}}void{= PORTA.0AN0AD1CON1 //AD1CHS CH0CH1AN0AD1CSSL=AD1CON3 //AD1CON2 //VREF+VREF-//2= //}UINT16{AD1CON1bits.ASAM=1; //自动采样:31个Tad后自动转换while(!AD1CON1bits.DONE); //等待转换完成AD1CON1bits.ASAM=0; //结束本次采样/转换操作return }{spibuff[2]=Led_lib[rst%10]; spibuff[1]=Led_lib[(rst/10)%10]; spibuff[0]=Led_lib[(rst/100)%10]; spibuff[3]=Led_lib[rst/1000]; }void{//OpenTimer1(T1_ON|T1_SOURCE_INT|T1_PS_1_1,//Setupthetimerinterruptwithapriorityof2INTEnable(INT_T1,INT_ENABLED);}//ConfiguretheTimer1interruptvoidISR(_TIMER_1_VECTOR,ipl2){//Cleartheinterruptflag t> {t=ADS_flag=} t>{t= 1_d=={1 1>DUTYMAX{}}{

1=1_d= 1=={}}

1=1_d=1-- }} {RPB7Rbits.RPB7R=RPB7Rbits.RPB7R=1//1初始OC1CON=//offOC1ng //InitializesecondaryCompareOC1CON= //Configure //2周期设定+PR2 //SetT2CONS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论