本科学生设计性实验报告
实验项目名称___基于单片机的数字电压表______
一、实验设计方案
实验名称:基于单片机的数字电压表
实验时间:
小组合作: 是●否○
小组成员:
1、实验目的:
设计制作一个基于单片机的数字电压表,实现测量交流电压值测量、直流电压值测量等功能。
2、实验场地及仪器、设备和材料:
电脑、Proteus仿真软件、keil编译软件、AT89C51、AD0809、LCD液晶屏、整流桥、电阻、电容
3、实验思路(实验内容、数据处理方法及实验步骤等):
单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理,主要由单片机、时钟电路、复位电路组成。
图1 系统时钟电路图2 系统复位电路
逐次逼近型A/D转换器属于直接型A/D转换器,它能把输入的模拟电压直接转换为输出的数字代码,而不需要经过中间变量。主要由比较器、环形分配器、控制门、寄存器与D/A转换器组成。
图3 引脚图
LCD显示模块
LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。
系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。如图4所示。
VSS VDD VO RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K
LCD 模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
图4 LCD1602模块
通过键盘切换,实现对直流信号和交流信号电压值的测量,并把电压值实时显示在LCD显示屏上。对直流信号电压值,测量误差小于1%;对交流信号电压值,测量误差小于2%。可通过键盘切换实现多级量程的直流电压测量,其范围是200Mv、2V、20V。可通过键盘切换实现多级量程的交流电压测量,其范围是200Mv、2V、20V。键盘模块如图5所示。
图5 键盘接口电路仿真图
根据需要,可将系统软件按照功能划分为4个模块,分别是主程序模块、A/D转换模块、液晶显示模块、键盘程序程序模块,各模块的功能关系如图6所示。编写系统软件时,可首先编写各模块的底层驱动程序,而后是系统联机调试,编写上层主程序。
系统主程序
液晶管显示
A/D转换
键盘程序
.
图6 系统软件框图
主程序主要负责初始化工作:设置定时器、寄存器的初值,启动A/D转换,读取转换结果,通过键盘处理量程转换响应,控制液晶实时显示等。
A/D转换程序
A/D转换程序的功能是采集数据,在整个系统设计中占有很高的地位。当系统设置好后,,当输入为高电平则转换完成,将转换的数值转换并显示输出。若输入为低电平,则继续扫描。
程序如下:
#include<>
#include <>
unsigned long dat_adc0808;
uint adc0808_init()
{
START=0;
OE=0;
START=1;
START=0;
while(EOC==0);
OE=1;
dat_adc0808=P1;
OE=0;
return dat_adc0808;
}
得到ADC0808的转换结果后,应当及时处理成LCD1602能够显示的数字字符。以下函数实现此功能,为ADC0808显示刷新子程序:
void Refresh_show() //刷新显示
{
uint t=dat_adc0808*;
display_buffer[1][7] = t/100+'0';
display_buffer[1][9] = t/10%10+'0';
display_buffer[1][10] = t%10+'0';
}
液晶显示程序
//-----------LCD初始化-----------------*//
void Initialize_LCD1602()
{
mand(0x38);delay50us(10);
mand(0x0C);delay50us(10)
JJG 847-2011 滤纸式烟度计检定规程(2) 来自淘豆网m.daumloan.com转载请标明出处.