51单片机数字电压表实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微控制器技术创新设计实验报告
:学号:班级:
一、项目背景
使用单片机AT89C52和ADC0808设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示。在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为5V;显示精度0.001伏。
二、项目整体方案设计
ADC0808 是含8 位A/D 转换器、8 路多路开关,以及与微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。ADC0808的精度为1/2LSB。在AD 转换器内部有一个高阻抗斩波稳定比较器,一个带模拟开关树组的256 电阻分压器,以及一个逐次通近型寄存器。8 路的模拟开关的通断由地址锁存器和译码器控制,可以在8 个通道中任意访问一个单边的模拟信号。
三、硬件设计
四、软件设计
#include
#include"intrins.h"
#define uchar unsigned char #define uint unsigned int sbit OE = P2^7;
sbit EOC=P2^6;
sbit START=P2^5;
sbit CLK=P2^4;
sbit CS0=P2^0;
sbit CS1=P2^1;
sbit CS2=P2^2;
sbit CS3=P2^3;
uint adval,volt;
uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; void delayms(uint ms)
{
uchar j;
while(ms --)
{
for(j=0;j<120;j++);
}
}
void ADC_read()
{
START=0;
START=1;
START=0;
while(EOC==0);
OE=1;
adval=P1;
OE=0;
}
void volt_result()
{
volt=adval*1.96;
}
void disp_volt(uint date) {
CS0=1;CS1=0;CS2=0;CS3=0; P0=~((~tab[date/100])|0x80); delayms(1);
P0=0xFF;
CS0=0;CS1=1;CS2=0;CS3=0; P0=tab[date%100/10]; delayms(1);
P0=0xFF;
CS0=0;CS1=0;CS2=1;CS3=0; P0=tab[date%10];
delayms(1);
P0=0xFF;
CS0=0;CS1=0;CS2=0;CS3=1;
P0=tab[date%100]; delayms(1);
P0=0xFF;
}
void t0() interrupt 1 {
CLK=~CLK;
}
void t0_init()
{
TMOD=0x02; TH0=0x14;
TL0=0x00;
TR0=1;
ET0=1;
EA=1;
}
void main(void) {
t0_init();
while(1)
{
ADC_read();
volt_result();
disp_volt(volt); }
}
五、实验结果
六、项目总结
通过这次实验设计,锻炼我们综合运用知识,提出问题,分析问题,及解决问题的能力。我感慨颇多,在着手设计的这段日子里,我又学到了很多东西。特别是理论联系实际。我认为掌握单片机的应用及开发技术是最基本的也是必要的。单片机是以后从事相关嵌入式研发最为基本的入门芯片。所以学好单片机是我们电子类的必要任务。通过这次单片机课程设计的顺利完成,离不开付老师指导,也离不开班上同学的耐心帮助。在此,我对所有帮助过我的老师和同学表示我真挚的感谢!