欢迎来到天天文库
浏览记录
ID:28028629
大小:268.63 KB
页数:5页
时间:2018-12-07
《单片机课程设计--单通道模拟量采集器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验四单通道模拟量采集器U/D〉一、实验目的1、在实践中加深理解PIC单片机片内ADC模块功能;2、理解和掌握A/D转换的编程方法;3、熟悉C语言中的算术运算符指令。二、实验器材1、一台PC机和一块万用表;2、一套P1C仿真编程器教学系统(仿真编程器+开发板+数据线+9V电源+万用表)。三、实验原理1、硬件原理图C20104VCCSEG2RD02rRDIA•RD2rRD3•RD411rRE13"RD615•RD717rSEG1SEG19^1AIin1A21Y21A31Y31A41Y42AI2YI2A22Y22A32Y32V42GGNDU274HC244rvixR13J-
2、■jb,abP.:4;200Rc4R15j2C0Rd,d19Rl6j2^L^200Re.e3j-■圓,ixf5R18xR19200RdpJdp2gdpBIB210b7•4d2e1f10Rdg11abcdcfBIB2B3dpSEGI12J3LCD-L*1f*LCDPooOS:-V;v-r;fr:LCDP23104VCCPSBo一卜ggggSgggLEDA+5VffnrjiwnGNDI2019HC138卜*omcnoI—ic«OmOOIU><»ooLCDP1LEDlLEDsegIsf.g5工作迭择并关VCC賺•、••=>-广.3、xa:X:£X:a:•X-oJ4LCDD•pZa:*or-Joo00U1PIC16FB77A^=CH104VCC3211°ipVCCVCCio1泛以以sssss^sssg.GNDGNDXX31C1322Pe*>UJ/2、电路功能:连接在RA0/AN0引脚上的1K微调电阻RP2充当模拟量提供者。当利用小改锥旋转其芯轴,可以提供一量值在VDD—VSS范围内的模拟电压。启动A/D转换过程,利用开发板上的6个数码管中的第1,2,3个数码管作为输出显示器件,把每次A/D转换产生的结果显示在这3个数码管上。详见电路图。3、软件设计思路和程序清单:本例的软件设计思路:转换结果采用了左4、对齐方式。忽略了最低2位,将10位AD当做8位来用了,A/D转换的时钟源选用了系统周期的8倍,本例对于ADC的电压基准要求不高我们就选用了电源电压VDD和VSS作为基准电压,对于A/D转换过程是否完成也没有利用ADC模块的中断功能而是以软件方式查询其状态兼控制位GO/DONE是否被硬件自动清零。本例中选用的模拟通道为ANOo参考程序清单如下:I*Copyright(c)2007,GuangdongVocationalCollegeofIndustryandCommerce*Allrightsreserved:R&DTeam要本者摘版作木*木*文件名称:PIC16F8775、—10BTTAD.cVI.0Chunru_Xiong*完成日期:2007年3月26日^include^defineucharunsignedchar^defineuintunsignedint#defineulongunsignedlong//共阴极数码管0—9字符表Constucharled[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};ucharADResultO;voiddisplay();voiddelay(uint);voiddelayus0;//系统各V0口初始化子程序voidi6、nitial()PORTR^OxOO;//R口输出0P0RTD=0x00;//D口输出0TRISA=0X01;TRISD=0X00;TRISE=0X00;ADC0N0=0x41;//A口RAO作为输入,其余作为输出//D口作为段码驱动,全部为输出//E口作为位选通,全部为输出//选择A/D通道为RAO,打开A/D转换器//在工作状态,且使A/D转换时钟源为F0SC/8八DCON1=OXOR;//转换结果左对齐,只选1个A/D通道RAO/ANO//选择VDD和VSS作参考源,(分辩率取8位)}//延时子程序voiddelay(uintx){uintj;while(x—){7、for(j=5535;—j;);}}//延时子程序voiddelayus(){uintj;for(j=1000;—j;);}//显示初始化子程序voidinitdis()P0RTR=0x00;//选通数码管1P0RTD=0x3F;P0RTE=0x01;//选通数码管2P0RTD=0x3F;P0RTE=0x02;//选通数码管3P0RTD=0x3F;}//读AD值voidADReadFunc(){ADC0N0=0x41;delayus();ADGO=1;while(ADGO);ADResuit0=ADRESH;//显示子程序voiddisp
3、xa:X:£X:a:•X-oJ4LCDD•pZa:*or-Joo00U1PIC16FB77A^=CH104VCC3211°ipVCCVCCio1泛以以sssss^sssg.GNDGNDXX31C1322Pe*>UJ/2、电路功能:连接在RA0/AN0引脚上的1K微调电阻RP2充当模拟量提供者。当利用小改锥旋转其芯轴,可以提供一量值在VDD—VSS范围内的模拟电压。启动A/D转换过程,利用开发板上的6个数码管中的第1,2,3个数码管作为输出显示器件,把每次A/D转换产生的结果显示在这3个数码管上。详见电路图。3、软件设计思路和程序清单:本例的软件设计思路:转换结果采用了左
4、对齐方式。忽略了最低2位,将10位AD当做8位来用了,A/D转换的时钟源选用了系统周期的8倍,本例对于ADC的电压基准要求不高我们就选用了电源电压VDD和VSS作为基准电压,对于A/D转换过程是否完成也没有利用ADC模块的中断功能而是以软件方式查询其状态兼控制位GO/DONE是否被硬件自动清零。本例中选用的模拟通道为ANOo参考程序清单如下:I*Copyright(c)2007,GuangdongVocationalCollegeofIndustryandCommerce*Allrightsreserved:R&DTeam要本者摘版作木*木*文件名称:PIC16F877
5、—10BTTAD.cVI.0Chunru_Xiong*完成日期:2007年3月26日^include^defineucharunsignedchar^defineuintunsignedint#defineulongunsignedlong//共阴极数码管0—9字符表Constucharled[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};ucharADResultO;voiddisplay();voiddelay(uint);voiddelayus0;//系统各V0口初始化子程序voidi
6、nitial()PORTR^OxOO;//R口输出0P0RTD=0x00;//D口输出0TRISA=0X01;TRISD=0X00;TRISE=0X00;ADC0N0=0x41;//A口RAO作为输入,其余作为输出//D口作为段码驱动,全部为输出//E口作为位选通,全部为输出//选择A/D通道为RAO,打开A/D转换器//在工作状态,且使A/D转换时钟源为F0SC/8八DCON1=OXOR;//转换结果左对齐,只选1个A/D通道RAO/ANO//选择VDD和VSS作参考源,(分辩率取8位)}//延时子程序voiddelay(uintx){uintj;while(x—){
7、for(j=5535;—j;);}}//延时子程序voiddelayus(){uintj;for(j=1000;—j;);}//显示初始化子程序voidinitdis()P0RTR=0x00;//选通数码管1P0RTD=0x3F;P0RTE=0x01;//选通数码管2P0RTD=0x3F;P0RTE=0x02;//选通数码管3P0RTD=0x3F;}//读AD值voidADReadFunc(){ADC0N0=0x41;delayus();ADGO=1;while(ADGO);ADResuit0=ADRESH;//显示子程序voiddisp
此文档下载收益归作者所有