基于51单片机的数字电压表实训报告

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

单片机课程设计

数字电压表实训报告姓名:

专业:

班级:

学号:

指导老师:

时间:2012年6月

数字电压表实训报告

一、实训目的

1、设计电路图,根据电路图焊接电路。

2、通过把设计好的程序利用软件将编译得到HEX格式文件加载到单片机芯片中,实

现仿真电路,得到仿真电路结果。

二、实训要求

1、选择课题,独立完成电路的焊接和程序的编写与调试工作。

2、数码管准确显示电压表上电压值,误差允许在+0.05

3、结合理论知识分析在焊接电路和调试程序过程中出现的问题,并及时解决相应问题。

4、可以到图书馆查阅参考资料。

5、认真完成实验课题。

三、实训仪器

电脑,Keil软件,Proteus软件

四、实训器材

晶振、电容、电阻、按键、单片机、数码管、电烙铁、烙铁架、焊锡、电路板、实验配套工具

五、系统概述

(1)本设计基于AT89C51单片机,主要ADC0832芯片来进行电压从模拟量到数字量的转换。ADC0832为A/D转换,AT89C51单片机为控制核心,以LED数码管为显示器件。

(2)利用AT89C51单片机及其外围接口电路,程序控制ADC0832对输入电压进行模数转换,在单片机进行数据处理和转换后,传输指令和转换后的电压代码至LED数码管显示模块。ADC0832能将0~5V的模拟电压量转换为0~255级的数字量,本次制作的数字电压表的量程为0~5V。

本系统主要包括5个模块:

电源,串口通信,A/D转换模块,主控模块,显示模块

六、.A/D转换模块(ADC0832管脚功能)

CS_ 片选使能,低电平芯片使能。

CH0 模拟输入通道0,或作为IN+/-使用。

CH1 模拟输入通道1,或作为IN+/-使用。

GND 芯片参考零电位(地)。

DI 数据信号输入,选择通道控制。

DO 数据信号输出,转换数据输出。

CLK 芯片时钟输入。

Vcc/REF 电源输入及参考电压输入(复用)

七、ADC数据读取程序流程:

八、ADC0832的工作原理:

正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时使用并与单片机的接口是双向的,所以在I/O口资源紧张时可以将DO和DI并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D 转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟(CLK)输入端输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第一个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第二、三个脉冲下沉之前DI端应输入两位数据用于选择通道功能。

九、.ADC0832管脚连接图:

十、程序

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit ADCS = P3^3;

sbit ADCLK = P3^4;

sbit ADDI = P3^5;

sbit ADDO = P3^5;

sbit wei=P2^7;

sbit duan=P2^6;

uchar code Tab[]={0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90};

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void Display(uint dat) //显示的数值为毫伏{

uchar shi,bai,qian;

qian = dat/1000%10;

bai = dat/100%10;

shi = dat/10%10;

// ge = dat%10;

wei=1;

P0 = 0x01;

wei=0;

duan=1;

P0 = Tab[qian]&0x7f; //最高位加小数点duan=0;

delay(3);

wei=1;

P0 = 0x02;

wei=0;

duan=1;

P0 = Tab[bai];

duan=0;

delay(3);

wei=1;

P0 = 0x04;

wei=0;

duan=1;

P0 = Tab[shi];

duan=0;

delay(3);

/* wei=1;

P0 = 0xf7;

wei=0;

duan=1;

P0 = Tab[ge];

duan=0;

delay(10);*/ }

uchar ADC0832(bit mode,bit channel) //AD转换,返回结果{

uchar i,dat,ndat;

ADCS = 0;//拉低CS端

_nop_();

_nop_();

ADDI = 1; //第1个下降沿为高电平

ADCLK = 1;//拉高CLK端

_nop_();

_nop_();

ADCLK = 0;//拉低CLK端,形成下降沿1

_nop_();

_nop_();

ADDI = mode; //低电平为差分模式,高电平为单通道模式。

ADCLK = 1;//拉高CLK端

_nop_();

_nop_();

ADCLK = 0;//拉低CLK端,形成下降沿2

相关文档
最新文档