《项目7任务5:汽车燃油表设计与制作ppt课件.pptx》由会员分享,可在线阅读,更多相关《项目7任务5:汽车燃油表设计与制作ppt课件.pptx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、项目7任务5:汽车燃油表设计与制作电子课件玩转项目开发 任务五汽车燃油表设计与制作一、目的与要求一、目的与要求通过单片机控制,转动连接在单片机引脚上的电位器,实现模拟电压信号的读取,在LED数码管上显示出模拟信号转换成的数字信号,以此来模拟汽车燃油表显示。设计要求:转动P1.5端口上的电位器,数码管显示AD转换数据。玩转项目开发 任务五汽车燃油表设计与制作二、电路设计二、电路设计玩转项目开发 任务五汽车燃油表设计与制作三、程序设计三、程序设计1.源程序源程序#include STC15F2K60S2.hunsigned char table=0 xc0,0 xf9,0 xa4,0 xb0,0
2、x99,0 x92,0 x82,0 xf8,0 x80,0 x90;unsigned int AD_D;/取AD值unsigned char ad_p4;/AD值取出千、百、十、个位后存放位置。void InitADC();/内部AD初始化程序unsigned char GetADCResult(unsigned char ch);/取内部10位AD数据unsigned int get_adc(unsigned char ch);/读第几通道AD数据值/1ms延时函数/void delay(unsigned int i)unsigned int j,k,z;for(j=0;ji;j+)for(
3、z=0;z8;z+)for(k=0;k250;k+);void display()unsigned char i,ds;ds=0 x01;for(i=0;i4;i+)P2=tablead_pi;P0=ds;/发送数字“i”段码到数码管显示delay(2);P0=0 x00;P2=0 xFF;delay(2);/关闭显示器,消除鬼影ds=ds1;void main()/主程序unsigned char i;P0M0=0 x00;/设置P0口为准双向IO(传统51模式)P0M1=0 x00;/设置P0口为准双向IO(传统51模式)P2M0=0 x00;/设置P2口为准双向IO(传统51模式)P2M
4、1=0 x00;/设置P2口为准双向IO(传统51模式)InitADC();P5=0 x00;while(1)AD_D=get_adc(5);/取第5通道(P1.5)AD转换数据ad_p3=(AD_D%10000)/1000;/取AD值的千位。ad_p2=(AD_D%1000)/100;/取AD值的百位。ad_p1=(AD_D%100)/10;/取AD值的十位。ad_p0=AD_D%10;/取AD值的个位。for(i=0;i100;i+)/降低AD读取频率display();/在数码管上显示数据 玩转项目开发 任务五汽车燃油表设计与制作/AD转换部分/读第几通道AD数据值unsigned in
5、t get_adc(unsigned char ch)unsigned int adc_r;adc_r=GetADCResult(ch)*4+ADC_RESL;/将AD转换结果高位数据和低位数据组合AD_D=get_adc(5);/取第5通道(P1.5)AD转换数据ad_p3=(AD_D%10000)/1000;/取AD值的千位。ad_p2=(AD_D%1000)/100;/取AD值的百位。ad_p1=(AD_D%100)/10;/取AD值的十位。ad_p0=AD_D%10;/取AD值的个位。for(i=0;i100;i+)/降低AD读取频率display();/在数码管上显示数据/AD转换部
6、分/读第几通道AD数据值unsigned int get_adc(unsigned char ch)unsigned int adc_r;adc_r=GetADCResult(ch)*4+ADC_RESL;/将AD转换结果高位数据和低位数据组合return(adc_r);/返回AD转换结果/取内部10位AD数据unsigned char GetADCResult(unsigned char ch)ADC_CONTR=0 x88|ch;/打开电源开关、转换速度为540个时钟周/期、通道为CH、启动转换 while(!(ADC_CONTR&0 x10);/等待AD转换结束 ADC_CONTR&=0
7、 x10;/关闭AD转换,对转换结束标志清0 return ADC_RES;/返回AD转换结果高位寄存器数据/内部AD初始化程序void InitADC()P1ASF=0 x07;/设置P1口的相应引应为模拟输入(AD功能)ADC_RES=0;/AD转换结果高位寄存器清零 ADC_CONTR=0 x80;/打开AD转换器电源开关 delay(100);/ADC 延时玩转项目开发 任务五汽车燃油表设计与制作四、相关知识四、相关知识1.STC15W4K32S4系列单片机内部系列单片机内部AD简介简介STC15W4K32S4系列单片机内部集成了8路10位高速A/D转换器,A/D转换器的结构如图所示。
8、通过模拟多路开关,将通过ADC07的模拟量输入送给比较器。用数/模转换器(DAC)转换的模拟量与输入的模拟量通过比较器进行比较,将比较结果保存到逐次比较寄存器,并通过逐次比较寄存器输出转换结果。A/D转换结束后,最终的转换结果保存到ADC转换结果寄存器ADC_RES和 ADC_RESL,同 时,置 位 ADC控 制 寄 存 器ADC_CONTR中的A/D转换结束标志位ADC_FLAG,以供程序查询或发出中断申请。模拟通道的选择控 制 由 ADC控 制 寄 存 器 ADC_CONTR中 的CHS2CHS0确定。ADC的转换速度由ADC控制寄存器中的SPEED1和SPEED0确定。在使用ADC之前
9、,应先给ADC上电,也就是置位ADC控制寄存器中的ADC_POWER位。玩转项目开发 任务五汽车燃油表设计与制作当CLK_DIV.5(PCON2.5)/ADRJ=0时,A/D转换结果寄存器格式如下:当CLK_DIV.5(PCON2.5)/ADRJ=1时,A/D转换结果寄存器格式如下:玩转项目开发 任务五汽车燃油表设计与制作STC15系列单片机ADC由多路选择开关、比较器、逐次比较寄存器、10位DAC、转换结果寄存器(ADC_RES和ADC_RESL)以及ADC_CONTR构成。STC15系列单片机的ADC是逐次比较型ADC。逐次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最
10、高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。逐次比较型A/D转换器具有速度高,功耗低等优点。玩转项目开发 任务五汽车燃油表设计与制作当ADRJ=0时,如果取10位结果,则按下面公式计算:当ADRJ=0时,如果取8位结果,按下面公式计算:玩转项目开发 任务五汽车燃油表设计与制作当ADRJ=1时,如果取10位结果,则按下面公式计算:式中,Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。玩转项目开发 任务五汽车燃油表设计与制作2.P1口模拟功能控制寄存器口模拟功能控制寄存
11、器P1ASFSTC15系列单片机的A/D转换口在P1口(P1.7-P1.0),有8路10位高速A/D换器,速度可达到300KHz(30万次/秒)。8路电压输入型A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的P1口可继续作为I/O口使用(建议只作为输入)。需作为A/D使用的端口需先将P1ASF特殊功能寄存器中的相应位置为1,将相应的口设置为模拟功能。P1ASF寄存器的格式图4-7所示。P1ASF:P1口模拟功能控制寄存器(该寄存器是只写寄存器,读无效)。玩转项目开发 任务五
12、汽车燃油表设计与制作玩转项目开发 任务五汽车燃油表设计与制作3.ADC控制寄存器控制寄存器ADC_CONTRADC_CONTR寄存器的格式如图4-8所示。对ADC_CONTR寄存器进行操作,建议直接用MOV赋值语句,不要用与和或语句。玩转项目开发 任务五汽车燃油表设计与制作ADC_POWER:ADC电源控制位。0,关闭ADC电源;1,打开A/D转换器电源。建议进入空闲模式和掉电模式前,将ADC电源关闭,即ADC_POWER=0,可降低功耗。启动A/D转换前一定要确认A/D电源已打开,A/D转换结束后关闭A/D电源可降低功耗,也可不关闭。初次打开内部A/D转换模拟电源,需适当延时,等内部模拟电源
13、稳定后,再启动A/D转换。建议启动A/D转换后,在AD转换结束之前,不改变任何I/O口的状态,有助于高精度A/D转换。SPEED1,SPEED0:模数转换器转换速度控制位如图4-9所示。玩转项目开发 任务五汽车燃油表设计与制作图4-9模数转换器转换速度控制位玩转项目开发 任务五汽车燃油表设计与制作ADC_FLAG:模数转换器转换结束标志位,当A/D转换完成后,ADC_FLAG=1,要由软件清0。不管是A/D转换完成后由该位申请产生中断,还是由软件查询该标志位A/D转换是否结束,当A/D转换完成后,ADC_FLAG=1,一定要软件清0。ADC_START:模数转换器(ADC)转换启动控制位,设置
14、为“1”时,开始转换,转换结束后为0。玩转项目开发 任务五汽车燃油表设计与制作CHS2/CHS1/CHS0:模拟输入通道选择如图所示。玩转项目开发 任务五汽车燃油表设计与制作4.ADC转换结果调整寄存器位转换结果调整寄存器位ADC转结果调整寄存器位ADRJ位于寄存器CLK_DIV/PCON中,用于控制ADC转换结果存放的位置。寄存器CLK_DIV如图所示。ADRJ:ADC转换结果调整。0,ADC_RES7:0存放高8位ADC结果,ADC_RESL1:0存放低2位ADC结果。1,ADC_RES1:0存放高2位ADC结果,ADC_RESL7:0存放低8位ADC结果。玩转项目开发 任务五汽车燃油表设计与制作5.程序编程思路程序编程思路STC单片机通过内部AD转换电路检测P1.5引脚上电位器中心抽头分得的电压值,此程序直接将检测到的AD转换值显示来出,不做其他处理,程序设计流程图如图所示。玩转项目开发 任务五汽车燃油表设计与制作6.功能测试功能测试(1)检查电路连接是否正确:是否(2)检查程序下载器是否连接正常:是否(3)下载程序到目标板是否完成:是否(4)调节电位器,显示数值是否变化:是否THE END