测控电路大作业(Proteus,ADC0809)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

测控电路大作业说明书

专业:学号:姓名:

设计要求:利用传感器输出电压(0~5mv),放大电路,滤波电路,ADC电路,单片机,LED 显示压力值(电压值)

课题的具体要求如下:

1、方案总体设计与论证

2、系统硬件电路设计:简易数字电压表测量电路由A/D转换、数据处理及显示控制等组

成,A/D转换由集成电路0808完成,显示采用四位数码管

3、系统流程图设计,汇编程序编写:包括初始化程序、主程序、显示子程序、模/数转

换测量子程序等

4、调试及性能分析:采用KELL编译器进行源程序编译及仿真测试,同时进行硬件电路

的设计制作,在Proteus软件里进行硬件仿真,最后进行端口电压的对比测试设计思路

根据设计要求,选择AT89C52单片机作为核心控制器件。 A/D转换采用ADC0808实现。与

单片机的接口为P0和P3端口。电压显示采用4位一体的LED数码管

LED数码管的段码输入,由并行端口P1产生;位码输入,由并行端口P2低四位

产生

5' ADC0809对模拟量输入信号进行转换,通过判断EOC(P3.1引脚)来确定转换是否

完成,若EOC为0,则继续等待;若EOC为1,则把OE置位,将转换完成的数据存储到

P1中

电路图:

程序如下:#include

unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char dispbuf[4];

unsigned int i;

unsigned int j;

unsigned char getdata;

unsigned int temp;

unsigned int temp1;

unsigned char count;

unsigned char d;

sbit ST=P3^0;

sbit OE=P3^1;

sbit EOC=P3^2;

sbit CLK=P3^3;

sbit P34=P3^4;

sbit P35=P3^5;

sbit P36=P3^6;

sbit P20=P2^0;

sbit P21=P2^1;

sbit P22=P2^2;

sbit P23=P2^3;

sbit P17=P1^7;

void TimeInitial();

void Delay(unsigned int i);

void TimeInitial()

{ TMOD=0x10;

TH1=(65536-200)/256;

TL1=(65536-200)%256;

EA=1;

ET1=1;

TR1=1;

}

void Delay(unsigned int i)

{

unsigned int j;

for(;i>0;i--)

for(j=0;j<125;j++)

;

}

void Display()

{

P1=dispbitcode[dispbuf[3]];

P20=0;P21=1; P22=1; P23=1;

Delay(10); P1=0x00;

P1=dispbitcode[dispbuf[2]];

P17=1;

P20=1; P21=0; P22=1; P23=1;

Delay(10); P1=0x00;

P1=dispbitcode[dispbuf[1]];

P20=1;P21=1;P22=0; P23=1;

Delay(10); P1=0x00;

P1=dispbitcode[dispbuf[0]];

P20=1;P21=1;P22=1;P23=0;

Delay(10); P1=0x00;

}

void main()

{

TimeInitial();

while(1)

{

P34=0;

P35=0;

P36=0;

ST=0;

while(EOC==1);//查询转换结束

{

OE=1;

getdata=P0;

OE=0;

temp=getdata*1.0/255*500;

dispbuf[0]=temp%10;

dispbuf[1]=temp/10%10;

dispbuf[2]=temp/100%10;

dispbuf[3]=temp/1000;

Display();

ST=0;

OE=0;

ST=1;

}

}

}

void t1(void) interrupt 3 using 0

{

TH1=(65536-200)/256;

TL1=(65536-200)%256;

CLK=~CLK;

}

6 系统仿真及调试

首先采用Keil uVision3编译器进行源程序编译及仿真调试,调试好程序后将目标

文件导入Proteus进行软件调试。调试的主要任务是排查错误,错误主要包括逻辑错误

和功能错误,这些错误有些事显性的,而有些事隐形的。可以通过仿真开发系统来发

现并逐步改正。

在Proteus ISIS编辑窗口中单击开始仿真按钮,4位LED数码管显示相应的电压值。当开始调试,滑动变阻器RV1的阻值调至最小位置时,LED显示0.000,正确显示数值;

把RV1调至中间位置时,LED显示2.476,同样正确读出数据;当把RV1阻值调至最大

位置时,LED显示4.972,正确读出数据。证明该简易数字电压表合格。

感想:

这是由程老师任教的《测控电路》课程的大作业,我的设计题目——简易数字电压表。经过一个星期的努力,我们基本上按要求完成了该次任务。在设计过程中,我们以实现系统的电路简单,功能完善,使用快捷为目的进行设计。但是由于一些方面条件的限制,所设计的方案仍然存在一些不足(题目中要求使用ADC0809转换器在Proteus里面不能进行仿真,我们最后选择了ADC0808型转换器)),亟待改进。

因为第一次接触单片机类的设计,在设计过程中叶出现了一些问题,之前自己学习

的专业知识掌握的不够好,对电路的理解不是很透彻,设计的电路布局布线不是非常合理,理论联系实际的能力还有待加强。由于ADC0809在Proteus里面不能进行仿真,在

转换器的选用时因为不熟悉元件我们走了很多弯路,耽误了整个设计的进程。还有其他

一些方面的不足,都有待在以后的学习设计中进行改进。

通过实践,我对C语言和单片机有了更进一步的认识和理解,并且学会了Proteus和Keil软件的基本使用,掌握了从器件的需求、功能模块的划分、原理图的设计和绘制、电路图仿真、程序设计及其仿真调试的流程,积累了硬件设计的经验。在此还要衷心感谢各位老师的指导及同学和组员给予的帮助,我会继续努力!

相关文档
最新文档