ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:370.91KB ,
资源ID:8286216      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8286216.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字电压表作业学习资料.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字电压表作业学习资料.docx

1、数字电压表作业学习资料数字电压表作业20162017学年第2学期嵌入式控制系统设计数字电压表 专业班级 姓 得分评人一、 技术要求1、约束性指标:数字显示采用8段数码管,字符高度14.2mm,红色;显示电压范围05V,显示分辨率5mV;显示位数:4位,显示结果要紧凑;显示形式:X.XXX,即小数点位于第一位之后。2、扩展性指标:数字电压表具有与PC机通讯功能;用8位晶体管显示电压数值。二、 方案设计1、 总体方案设计利用AW60开发板设计一个四位数字电压表,设计中使用到AW60MUC中的AD转化模块、串口通信模块以及PWM模块。设计实现了显示电压范围05V,显示分辨率5mV的数字电压表,实现了

2、8为数码管的动态显示以及PC机的实时通信连接功能。设计方案原理图如图1.图1 方案原理图2、四位数字电压表显示硬件连接按照如下表格对应接插点连接。表1 晶体管段选连接PORTPTE7PTE6PTE5PTE4PTE3PTE2PTA1PTA0MCU portSCKMOSIMISOSSTICH1TICH0PA1PA0DisplayDPGFEDCBA表2 晶体管位选连接PORTCPORTC3PORTC2PORTC1PORTC0MCU portPORTC3PORTC2PORTC1PORTC0DisplayL1L2L3L4表3 参考电压及AD输入接口PowerPower+Power+A/D 05VMCU

3、portVREFHVREFLPB0原理图图2 四位数码管显示原理图AD转换程序见附录。PCB图图3 PCB原理图实验结果利用编写的程序以及设计的电路,可以完成四位数字电压表的要求。实验结果如图4。图4 数字显示结果3、8段数码管显示硬件连接按照如下表格对应接插点连接。表4 8段数码管显示PORTPORTD0PORTD1PORTD2PORTD3PORTG0PORTG1PORTG2PORTG3MCUPD0PD1PD2PD3PG0PG1PG2PG3OUTL7L6L5L4L3L2L1L0原理图图4 8段晶体管显示原理图程序运行程序见附录。PCB图图5 PCB原理图显示结果显示结果如图6.图6 8段晶体

4、管显示结果4、串口通信利用BDM仿真器连接实验板和PC机,编写程序实现实验板和PC级的通讯功能。原理图图7 串口通信原理图实验结果图7 串口通信结果(3.660V)三、 显示精度测试表5 测试结果(由低到高)表6 测试结果(由高到低)四、 基于STC89C51的方案设计原理框图图8 C51方案原理框图两种方案对比 使用STC89C51单片机,需要使用外部ADC转换模块AD8040。增加了硬件电路的复杂性和成本,增加了单片机设计工作量,同时降低了系统的可靠性。ADC8040模块使用的是8位ADC转换,精度比使用AW60内ADC模块的精度低。五、附录主程序#include /* for Enabl

5、eInterrupts macro */ #include derivative.h /* include peripheral declarations */ /* Def Variable*/ unsigned char LED4=0x01,0x02,0x03,0x04; unsigned char NUM=0;unsigned char LEDBuffer;unsigned char LEDBuffer1; const char LEDTable4=0xF7,0xFB,0xFD,0xFE; const char SGT10=0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x

6、92, 0x82, 0xF8,0x80, 0x90; unsigned short ADCTEMP,ADCTEMP1; unsigned char GRAPH(unsigned char LEDBuffer1); const unsigned char LEDtraD9=0xFF,0xFE,0xFC,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0; const unsigned char LEDtraG9=0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF8,0xF0;unsigned char NUMtra=0;unsigned char j=0;voi

7、d main(void) DisableInterrupts; /* Disable Interrupts*/ /*Initial_ICG*/ ICGC1=0x78; /*Enable the External Crystal=4MHz,Bus Frequency=4MHz*/ ICGC2=0x22; while(ICGS1&0x08)=0) _RESET_WATCHDOG(); /*Check FLL LOCK=1?*/ /*Initial_TPM2*/ TPM2SC=0x06; /*Set TPM2clock is Bus rate clock, Prescale Divisor is 6

8、4 */ TPM2MODH=0x00; /*Set Time =2.5ms*/ TPM2MODL=0x9C; /*Initial_PTF*/ PTFD_PTFD4=1; PTFDD_PTFDD4=1; /*Initial_PTC*/ PTCD=0xFF; PTCDD=0xFF; /*Initial_PTE*/ PTED=0xFF; PTEDD=0xFF; /*Initial_PTD*/ PTDD=0xFF; PTDDD=0xFF; /*Initial_PTG*/ PTGD=0xFF; PTGDD=0xFF; /*Initial_PTA*/ PTAD=0xFF; PTADD=0xFF; /*In

9、itial_ADC1*/ ADC1CFG=0x18; ADC1SC2=0x00; APCTL1=0x01; APCTL2=0x00; ADC1SC1=0x60; /*Initial_SCI1*/ SCI1BDL=0X1A; SCI1C2=0X08; TPM2SC=TPM2SC|(0x48); /*Enable TPM2 Overflow Interrupt Enable TPM2*/ /TPM2SC=TPM2SC|(0x08); EnableInterrupts; /* enable interrupts */ /* include your code here */ for(;) _RESE

10、T_WATCHDOG(); /* feeds the dog */ /* loop forever */ /* please make sure that you never leave main */ /*def function*/ unsigned char GRAPH(unsigned char LEDBuffer1) return(SGTLEDBuffer1); void interrupt tpm2ovf(void) /unsigned char GRAPH(unsigned char LEDBuffer1); TPM2SC_TOF=0; PTFD_PTFD4=PTFD_PTFD4

11、; /*Display*/ PTCD=0xFF; LEDBuffer=GRAPH(LEDNUM); if(NUM=0) LEDBuffer=LEDBuffer&0x7F; PTED=LEDBuffer; PTAD=LEDBuffer; PTCD=LEDTableNUM; NUM+=0x01; if(NUM=4) NUM=0x00; void interrupt adc1(void) /AD转换程序 ADC1SC1_COCO=0; /*Conversion*/ unsigned char i=0; ADCTEMP=ADC1R; ADCTEMP=ADCTEMP/205; LEDi=(char)AD

12、CTEMP; i+; _RESET_WATCHDOG(); /* feeds the dog */ ADCTEMP=ADC1R%206; ADCTEMP1=ADCTEMP; ADCTEMP=ADCTEMP/21; if(char)ADCTEMP=0x0A) LEDi=0; i-; LEDi=LEDi+1; i+; else LEDi=(char)ADCTEMP; i+; _RESET_WATCHDOG(); /* feeds the dog */ ADCTEMP1=ADCTEMP1%21; ADCTEMP=ADCTEMP1/2; if(char)ADCTEMP=0x0A) LEDi=0; i-

13、; LEDi=LEDi+1; i+; else LEDi=(char)ADCTEMP; i+; _RESET_WATCHDOG(); /* feeds the dog */ LEDi=(char)ADCTEMP%2*5; i+; if(i=4) i=0; NUMtra=ADC1R/ 114; /晶体管显示程序 PTDD=LEDtraDNUMtra; PTGD=LEDtraGNUMtra; /串口通信程序 for(j=0;j4;j+) while(SCI1S1&0X80)=0) _RESET_WATCHDOG(); /* feeds the dog */ SCI1D=LEDj+48; 中断向量VECTOR ADDRESS 0xFFE2 tpm2ovf VECTOR ADDRESS 0xFFD0 adc1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1