数字电压表作业.docx

上传人:b****2 文档编号:24549859 上传时间:2023-05-28 格式:DOCX 页数:17 大小:382.76KB
下载 相关 举报
数字电压表作业.docx_第1页
第1页 / 共17页
数字电压表作业.docx_第2页
第2页 / 共17页
数字电压表作业.docx_第3页
第3页 / 共17页
数字电压表作业.docx_第4页
第4页 / 共17页
数字电压表作业.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数字电压表作业.docx

《数字电压表作业.docx》由会员分享,可在线阅读,更多相关《数字电压表作业.docx(17页珍藏版)》请在冰豆网上搜索。

数字电压表作业.docx

数字电压表作业

2016—2017学年第2学期

《嵌入式控制系统设计》

数字电压表

 

专业班级

得分

评人

 

一、技术要求

1、约束性指标:

⑴数字显示采用8段数码管,字符高度14.2mm,红色;

⑵显示电压范围0~5V,显示分辨率5mV;

⑶显示位数:

4位,显示结果要紧凑;

⑷显示形式:

X.XXX,即小数点位于第一位之后。

2、扩展性指标:

⑴数字电压表具有与PC机通讯功能;

⑵用8位晶体管显示电压数值。

二、方案设计

1、总体方案设计

利用AW60开发板设计一个四位数字电压表,设计中使用到AW60MUC中的AD转化模块、串口通信模块以及PWM模块。

设计实现了显示电压范围0~5V,显示分辨率5mV的数字电压表,实现了8为数码管的动态显示以及PC机的实时通信连接功能。

设计方案原理图如图1.

图1方案原理图

2、四位数字电压表显示

①硬件连接

按照如下表格对应接插点连接。

表1晶体管段选连接

PORT

PTE7

PTE6

PTE5

PTE4

PTE3

PTE2

PTA1

PTA0

MCUport

SCK

MOSI

MISO

SS

TICH1

TICH0

PA1

PA0

Display

DP

G

F

E

D

C

B

A

表2晶体管位选连接

PORTC

PORTC3

PORTC2

PORTC1

PORTC0

MCUport

PORTC3

PORTC2

PORTC1

PORTC0

Display

L1

L2

L3

L4

表3参考电压及AD输入接口

Power

Power+

Power+

A/D0~5V

MCUport

VREFH

VREFL

PB0

②原理图

图2四位数码管显示原理图

③AD转换程序

见附录。

④PCB图

图3PCB原理图

⑤实验结果

利用编写的程序以及设计的电路,可以完成四位数字电压表的要求。

实验结果如图4。

图4数字显示结果

3、8段数码管显示

①硬件连接

按照如下表格对应接插点连接。

表48段数码管显示

PORT

PORTD0

PORTD1

PORTD2

PORTD3

PORTG0

PORTG1

PORTG2

PORTG3

MCU

PD0

PD1

PD2

PD3

PG0

PG1

PG2

PG3

OUT

L7

L6

L5

L4

L3

L2

L1

L0

②原理图

图48段晶体管显示原理图

③程序

运行程序见附录。

 

④PCB图

图5PCB原理图

⑤显示结果

显示结果如图6.

图68段晶体管显示结果

4、串口通信

利用BDM仿真器连接实验板和PC机,编写程序实现实验板和PC级的通讯功能。

①原理图

图7串口通信原理图

②实验结果

图7串口通信结果(3.660V)

三、显示精度测试

表5测试结果(由低到高)

表6测试结果(由高到低)

四、基于STC89C51的方案设计

①原理框图

图8C51方案原理框图

②两种方案对比

使用STC89C51单片机,需要使用外部ADC转换模块AD8040。

增加了硬件电路的复杂性和成本,增加了单片机设计工作量,同时降低了系统的可靠性。

ADC8040模块使用的是8位ADC转换,精度比使用AW60内ADC模块的精度低。

五、附录

①主程序

#include/*forEnableInterruptsmacro*/

#include"derivative.h"/*includeperipheraldeclarations*/

/*DefVariable*/

unsignedcharLED[4]={0x01,0x02,0x03,0x04};

unsignedcharNUM=0;

unsignedcharLEDBuffer;

unsignedcharLEDBuffer1;

constcharLEDTable[4]={0xF7,0xFB,0xFD,0xFE};

constcharSGT[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

unsignedshortADCTEMP,ADCTEMP1;

unsignedcharGRAPH(unsignedcharLEDBuffer1);

constunsignedcharLEDtraD[9]={0xFF,0xFE,0xFC,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0};

constunsignedcharLEDtraG[9]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF8,0xF0};

unsignedcharNUMtra=0;

unsignedcharj=0;

voidmain(void)

{

DisableInterrupts;/*DisableInterrupts*/

/*Initial_ICG*/

{

ICGC1=0x78;/*EnabletheExternalCrystal=4MHz,BusFrequency=4MHz*/

ICGC2=0x22;

while((ICGS1&0x08)==0)__RESET_WATCHDOG();/*CheckFLLLOCK=1?

*/

}

/*Initial_TPM2*/

{

TPM2SC=0x06;/*SetTPM2'clockisBusrateclock,PrescaleDivisoris64*/

TPM2MODH=0x00;/*SetTime=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;

}

/*Initial_ADC1*/

{

ADC1CFG=0x18;

ADC1SC2=0x00;

APCTL1=0x01;

APCTL2=0x00;

ADC1SC1=0x60;

}

/*Initial_SCI1*/

{

SCI1BDL=0X1A;

SCI1C2=0X08;

}

TPM2SC=TPM2SC|(0x48);/*EnableTPM2OverflowInterruptEnableTPM2*/

//TPM2SC=TPM2SC|(0x08);

EnableInterrupts;/*enableinterrupts*/

/*includeyourcodehere*/

 

for(;;){

__RESET_WATCHDOG();/*feedsthedog*/

}/*loopforever*/

/*pleasemakesurethatyouneverleavemain*/

}

/*deffunction*/

unsignedcharGRAPH(unsignedcharLEDBuffer1)

{

return(SGT[LEDBuffer1]);

}

voidinterrupttpm2ovf(void)

{

//unsignedcharGRAPH(unsignedcharLEDBuffer1);

TPM2SC_TOF=0;

PTFD_PTFD4=~PTFD_PTFD4;

/*Display*/

{

PTCD=0xFF;

LEDBuffer=GRAPH(LED[NUM]);

if(NUM==0){

LEDBuffer=LEDBuffer&0x7F;

}

PTED=LEDBuffer;

PTAD=LEDBuffer;

PTCD=LEDTable[NUM];

NUM+=0x01;

if(NUM>=4){

NUM=0x00;

}

}

}

voidinterruptadc1(void)//AD转换程序

{

ADC1SC1_COCO=0;

/*Conversion*/

{

unsignedchari=0;

ADCTEMP=ADC1R;

ADCTEMP=ADCTEMP/205;

LED[i]=(char)ADCTEMP;

i++;

__RESET_WATCHDOG();/*feedsthedog*/

ADCTEMP=ADC1R%206;

ADCTEMP1=ADCTEMP;

ADCTEMP=ADCTEMP/21;

if((char)ADCTEMP>=0x0A)

{

LED[i]=0;

i--;

LED[i]=LED[i]+1;

i++;}

else

LED[i]=(char)ADCTEMP;

i++;

__RESET_WATCHDOG();/*feedsthedog*/

ADCTEMP1=ADCTEMP1%21;

ADCTEMP=ADCTEMP1/2;

if((char)ADCTEMP>=0x0A)

{LED[i]=0;

i--;

LED[i]=LED[i]+1;

i++;

}else

LED[i]=(char)ADCTEMP;

i++;

__RESET_WATCHDOG();/*feedsthedog*/

LED[i]=(char)ADCTEMP%2*5;

i++;

if(i==4)

{i=0;

}

}

NUMtra=ADC1R/114;//晶体管显示程序

PTDD=LEDtraD[NUMtra];

PTGD=LEDtraG[NUMtra];

//串口通信程序

for(j=0;j<4;j++){

while((SCI1S1&0X80)==0)__RESET_WATCHDOG();/*feedsthedog*/

SCI1D=LED[j]+48;

}

}

②中断向量

VECTORADDRESS0xFFE2tpm2ovf

VECTORADDRESS0xFFD0adc1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

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

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