ADC0832的数字电压表设计

合集下载

基于ADC0832和LCD160128设计的数字电压表

基于ADC0832和LCD160128设计的数字电压表

学习情境3-数字电压表的设计之基于ADC0832和LCD160128设计的数字电压表☆点名,复习1、ADC0832的引脚及其功能,以及与单片机的硬件连接?2、PCF8591的引脚及其功能,以及与单片机的硬件连接?引言:新课讲授3.4基于ADC0832和LCD160128设计的数字电压表3.4.1 LCD160128简介LCD160128是一种图形点阵液晶显示模组。

它用T6963C作为控制器,KS0086作为驱动的160(列)X128(行)的全点阵液晶显示。

具有与INTER8080时序相适配的MPU接口功能,并有专门的指令集,可完成文本显示和图形显示的功能设置。

LCD160128液晶显示器的工作电压为+5V士10%,能够显示显示10个(/行)X8共120个(16 X 16点阵)的中文字符,共有13条操作指令。

1.芯片引脚及其功能表1引脚功能2.与主控制器的通信(1)读状态在数据读写操作之前必须进行状态检查。

T6963C的状态可以从数据总线中读取。

此时RD#和CE#引脚为低电平,WR#和C/D#引脚为高电平。

状态字格式如下所示:MSB LSBSTA7 D7STA6D6STA5D5STA4D4STA3D3STA2D2STA1D1STA0D0表2 状态子STA0 指令读写状态0:禁止;1:使能;STA1 数据读写状态0:禁止;1:使能;STA2 自动模式数据读状态0:禁止;1:使能;STA3 自动模式数据写状态0:禁止;1:使能;STA4 保留STA5 控制器操作状态0:禁止;1:使能;STA6 读屏/考屏错误标志0:无错误;1:错误;STA7 闪烁状态检查0:关显示;1:正常显示注意1:必须同时检查STA0与STA1的状态,由于硬件中断可能引起数据错误操作。

注意2:STA0与STA1用于大多数模式的状态检查。

注意3:STA2与STA3用于自动模式数据读写使能,此模式下,STA0与STA1无效。

状态检查流程:图1 状态检查流程图注意4:如果使用MSB=0命令,则必须先读取状态操作。

用ADC0832设计的两路电压表

用ADC0832设计的两路电压表

毕业设计题目用ADC0832设计的两路电压表学生姓名王进学号 ********** 所在院(系) 物理与电信工程学院专业班级电信1101 指导教师杨创华完成地点陕西理工学院用ADC0832设计的两路电压表王进(陕理工学院电子信息科学与技术专业1101班级,陕西汉中723000)指导教师:杨创华[摘要]:本设计由A/D转换、数据处理及显示控制等组成,测量0~5V范围内的输入电压值,由显示器1602显示,最大分辨率0.1V,误差±0.05V。

数字电压表的核心为AT8051单片机和ADC0832 A/D转换集成芯片。

数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。

传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高,抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。

目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。

于此同时,由DVM扩展而成的各种通用及专用数字仪器,也把电量及非电量测技术提高到崭新水平[关键字]:AT8051单片机;ADC0832;1602液晶显示屏Two voltage meter designed by ADC0832Wang jin(Class1101,Major Electronic information science and technology,Shaanxi University of Technology,Hanzhong 723000,Shaanxi)Tutor: Yang ChuanghuaAbstract:The design is composed of A/D conversion, data processing and display control, etc., and the input voltage from 0 to 5V is measured, and the maximum resolution 0.1V is 1602, and the error is + 0.05V. The core of the digital voltmeter is A T8051 microcontroller and A/D ADC0832 conversion chip. Digital voltage meter (digital voltmeter) referred to as DVM, it is using digital measuring technology, the continuous analog (DC input voltage conversion into a non continuous, discrete digital form and the instrument display. The traditional analog voltage table single function, low precision, unable to meet the needs of the digital age, using the singlechip digital voltage meter, by the high precision, strong anti-interference ability, expansion and strong, easy to be integrated, but also communicate with the PC in real time. At present, composed of various monolithic A / D converter digital voltage meter, has been widely used in electronic and electrical measurement, industrial automation instrument, automatic test system, intelligent measurement field, showing a strong vitality. At the same time, the variety of general and special digital instruments made by DVM, also can improve the power consumption and the non - electric measurement technology to a new level.Key words: A T8051SCM; ADC0832;1602 LCD screen目录引言 (3)1数字电压表设计两种方案 (4)1.1 由数字电路及芯片构建 (4)1.2 由单片机系统及A/D转换芯片构建 (4)2原器件介绍 (4)2.1单片机8051 (4)2.1.1 8051单片机引脚图与引脚功能简介 (4)2.1.2 8051内部结构 (5)2.2 ADC0832简介 (7)2.3 LCD1602液晶显示屏 (10)3设计方案 (13)4系统硬件电路的设计 (14)4.1 单片机系统 (14)4. 2 时钟电路 (14)4. 3 复位电路 (15)4. 4 LED显示电路 (15)5软件设计 (15)5.1 主程序 (16)5.2 A/D转换子程序 (16)5.3 显示子程序 (16)5.4 总流程图 (16)总结 (18)致谢 (19)参考文献 (20)附录A (21)仿真图 (21)附录B (22)程序 (22)引言数字电压表(Digital Voltmeter)是在50年代初,60年代末发展起来的电压测量仪表,简称为DVM,它运用的是数字化的测量技术,能够把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后再通过显示器件显示出来。

ADC0832的数字电压表设计说明

ADC0832的数字电压表设计说明

目录1.引言 (1)2.方案设计 (1)2.1设计要求 (1)2.2设计方案 (1)3.硬件设计 (2)3.1单片机最小系统 (2)3.2显示驱动部分 (2)3.3转换电路 (3)3.4单片机驱动部分 (3)4.软件设计 (4)4.1软件流程 (4)4.2子程序模板 (5)5实验结果与讨论 (5)5.1实验仿真 (5)5.2结果讨论 (5)6心得体会 (6)7参考文献 (13)8附录8.1程序 (7)8.2 原理图 (7)1.引言随着片机技术的飞速发展,,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发肢和社会信息化程度的提商,人们为了寻求最好的科技,为了方便人类在使用科技产品的快速性,准确性。

例如数字电压表能够准确的,快速的量出电压。

利用ADC0832和AT89C52的结合再通过LCD来显示出来。

ADC0832是一个8位D/A转换器。

单电源供电,从+5V~+15V均可正常工作。

基准电压的围为±10V;电流建立时间为1μS;CMOS工艺,低功耗20mW。

ADC0832转换器芯片为20引脚,双列直插式封装。

该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存。

使用时数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级直通)形式。

2.方案设计2.1设计要求按系统要实现功能,设计必须达到以下的几个步骤的要求(1)主电路系统是由ADC0832,单片机AT89C52和LCD显示屏组成。

(2)ADC0832是模拟数字转换芯片,是将外侧电压信号转换成数字信号再通过AT89C52处理,再通过LCD显示出来(3)能测量0-5V的数字电压(4)测量误差不大于0.1V2.2设计方案2.1.1单片机的选择本设计选用单片机AT89C52它是一种带8K字节闪烁可编程可擦除只读存储器的低电压,足够本设计之用,高性能CMOS8位微处理器该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令系统及8052产品引脚兼容,功能强大、使用方便的AT80C52单片机适用于许多较为复杂的应用场合。

第15章 采用ADC0832的两路电压表设计

第15章 采用ADC0832的两路电压表设计

{Wr1602Cmd(0x80+0x03);
i=RdAdc0832(0);
//读取Adc0832 0通道的

i=(i*5000/255);
Wr1602Dat('C');
//显示Adc0832 0通道的

Wr1602Dat('H');
Wr1602Dat('0');
Wr1602Dat('=');
Wr1602Dat('0'+i/1000);//个位
// LCD1602初始化函数
{ delay_ms(20);
Wr1602Cmd(0x38);
delay_ms(5);
Wr1602Cmd(0x38);
delay_ms(5);
Wr1602Cmd(0x06);
Wr1602Cmd(0x0c);
Wr1602Cmd(0x01); //清屏
Wr1602Cmd(0x80); //设置地址
Wr1602Dat('.');
Wr1602Dat('0'+i%1000/100); //小数点后一位
Wr1602Dat('0'+i%1000%100/10); //小数点后两位
Wr1602Dat('0'+i%1000%100%10); //小数点后三位
Wr1602Dat('V');
Wr1602Cmd(0xC0+0x03);
CLK=0;_nop_();_nop_();_nop_();_nop_();
DIO=Hx;_nop_();_nop_();_nop_();_nop_();//写通道号位

ADC0832的数字电压表设计说明

ADC0832的数字电压表设计说明

目录1. 引言 (1)2. 方案设计 (1)2.1设计要求 (1)2.2设计方案 (1)3. 硬件设计 (2)3.1单片机最小系统 (2)3.2显示驱动部分 (2)3.3转换电路 (3)3.4单片机驱动部分 (3)4. 软件设计 (4)4.1软件流程 (4)4.2子程序模板 (5)5实验结果与讨论 (5)5.1实验仿真 (5)5.2结果讨论 (5)6心得体会 (6)7参考文献 (13)8附录8.1程序 (7)8.2原理图 (7)1. 引言随着片机技术的飞速发展,,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发肢和社会信息化程度的提商,人们为了寻求最好的科技,为了方便人类在使用科技产品的快速性,准确性。

例如数字电压表能够准确的,快速的量出电压。

利用ADC0832和AT89C52的结合再通过LCD来显示出来。

ADC0832是一个8位D/A转换器。

单电源供电,从+5V〜+15V均可正常工作。

基准电压的围为土10V;电流建立时间为1卩S; CMOS:艺,低功耗20mWADC0832 转换器芯片为20引脚,双列直插式封装。

该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存。

使用时数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级直通)形式。

2. 方案设计2.1设计要求按系统要实现功能,设计必须达到以下的几个步骤的要求(1)主电路系统是由ADC0832单片机AT89C52和LCD显示屏组成。

(2)ADC083是模拟数字转换芯片,是将外侧电压信号转换成数字信号再通过AT89C52处理,再通过LCD显示出来(3)能测量0-5V的数字电压(4)测量误差不大于0.1V2.2设计方案2.1.1 单片机的选择本设计选用单片机AT89C52它是一种带8K字节闪烁可编程可擦除只读存储器的低电压,足够本设计之用,高性能CMOS位微处理器该器件采用ATME高密度非易失存储器制造技术制造,与工业标准的MCS-51指令系统及8052产品引脚兼容,功能强大、使用方便的AT80C52单片机适用于许多较为复杂的应用场合。

adc0832数字电压表(程序+仿真图)

adc0832数字电压表(程序+仿真图)

adc0832数字电压表(程序+仿真图)仿真图:/*********************************包含头文件********************************/#include <reg51.h>#include <intrins.h>/*********************************端口定义**********************************/sbit CS = P3^5;sbit Clk = P3^3;sbit DATI = P3^4;sbit DATO = P3^4;sbit P20=P2^0 ;/*******************************定义全局变量********************************/unsigned char dat = 0x00; //AD值unsigned char count = 0x00; //定时器计数unsigned char CH; //通道变量unsigned char dis[] = {0x00, 0x00, 0x00}; //显示数值/*******************************共阳LED 段码表*******************************/unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90};char code tablewe[]={ 0xfd,0xfb,0xf7,0xef,0xdf,0xfe };/**************************************** ************************************函数功能:AD转换子程序入口参数:CH出口参数:dat***************************************** ***********************************/unsigned char adc0832(unsigned char CH){unsigned char i,test,adval;adval = 0x00;test = 0x00;Clk = 0; //初始化DATI = 1;_nop_();CS = 0;_nop_();Clk = 1;_nop_();if ( CH == 0x00 ) //通道选择{Clk = 0;DATI = 1; //通道0的第一位_nop_();Clk = 1;_nop_();Clk = 0;DATI = 0; //通道0的第二位_nop_();Clk = 1;_nop_();}else{Clk = 0;DATI = 1; //通道1的第一位_nop_();Clk = 1;_nop_();Clk = 0;DATI = 1; //通道1的第二位_nop_();Clk = 1;_nop_();}Clk = 0;DATI = 1;for( i = 0;i < 8;i++ ) //读取前8位的值{_nop_();adval <<= 1;Clk = 1;_nop_();Clk = 0;if (DATO)adval |= 0x01;elseadval |= 0x00;}for (i = 0; i < 8; i++) //读取后8位的值{test >>= 1;if (DATO)test |= 0x80;elsetest |= 0x00;_nop_();Clk = 1;_nop_();Clk = 0;}if (adval == test) //比较前8位与后8位的值,如果不相同舍去。

LCD1602+ADC0832制作的数字电压表

LCD1602+ADC0832制作的数字电压表

ADC0832+LCD1602+PROTEUS仿真电路C51程序//********************************//LCD1602+ADC0832制作的数字电压表//接口方式:模拟口线//作者:曾宪阳//网址:/zxymcu//********************************#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define IO_1602 P0 //IO口sbit RS_1602=P2^0;sbit RW_1602=P2^1;sbit E_1602=P2^2;sbit CS=P1^0;sbit CLK=P1^1;sbit DIO=P1^2;void delay_ms(unsigned int t)//11.0592MHz 1ms {uchar x,y;for(t;t>0;t--){for(x=0;x<114;x++)for(y=0;y<1;y++);}}void Wr1602Cmd(unsigned char dat) {//写命令函数E_1602=0;IO_1602=dat;RS_1602=0;RW_1602=0;E_1602=1;delay_ms(1);E_1602=0;delay_ms(1);}void Wr1602Dat(unsigned char dat) {//写数据函数E_1602=0;IO_1602=dat;RS_1602=1;RW_1602=0;E_1602=1;delay_ms(1);E_1602=0;delay_ms(1);}void Init1602(void){delay_ms(20);Wr1602Cmd(0x38);delay_ms(5);Wr1602Cmd(0x38);delay_ms(5);Wr1602Cmd(0x06);Wr1602Cmd(0x0c);//Wr1602Cmd(0x01);//清屏Wr1602Cmd(0x80);//设置地址}uchar RdAdc0832(bit Hx){uchar value0,value1,i;CS=1;CLK=0;DIO=1;CS=0;DIO=1;_nop_();_nop_();_nop_();_nop_(); //写ST位 CLK=1;_nop_();_nop_();_nop_();_nop_();CLK=0;_nop_();_nop_();_nop_();_nop_();DIO=1;_nop_();_nop_();_nop_();_nop_();//写SGL位 CLK=1;_nop_();_nop_();_nop_();_nop_();CLK=0;_nop_();_nop_();_nop_();_nop_();DIO=Hx;_nop_();_nop_();_nop_();_nop_();//写通道号位CLK=1;_nop_();_nop_();_nop_();_nop_();CLK=0;_nop_();_nop_();_nop_();_nop_();DIO=1;for(i=0;i<8;i++){CLK=1;_nop_();_nop_();_nop_();_nop_();CLK=0;_nop_();_nop_();_nop_();_nop_();value0<<=1;if(DIO==1) value0|=0x01;else value0&=0xfe;}for(i=0;i<8;i++){value1>>=1;if(DIO==1) value1|=0x80;else value1&=0x7f;CLK=1;_nop_();_nop_();_nop_();_nop_(); CLK=0;_nop_();_nop_();_nop_();_nop_(); }CS=1;if(value0!=value1) P1&=0X7F;else P1|=0X80;return value0;}void main(){unsigned long i;Init1602();while(1){Wr1602Cmd(0x80);i=RdAdc0832(0);i=(i*5000/255);Wr1602Dat('C');Wr1602Dat('H');Wr1602Dat('0');Wr1602Dat('=');Wr1602Dat('0'+i/1000);Wr1602Dat('.');Wr1602Dat('0'+i%1000/100);Wr1602Dat('0'+i%1000%100/10); Wr1602Dat('0'+i%1000%100%10); Wr1602Dat('V');Wr1602Cmd(0xC0);i=RdAdc0832(1);i=(i*5000/255);Wr1602Dat('C');Wr1602Dat('H');Wr1602Dat('1');Wr1602Dat('=');Wr1602Dat('0'+i/1000);Wr1602Dat('.');Wr1602Dat('0'+i%1000/100);Wr1602Dat('0'+i%1000%100/10);Wr1602Dat('0'+i%1000%100%10);Wr1602Dat('V');}}LCD1602+ADC0809制作的数字电压表-总线连接方式//********************************//LCD1602+ADC0809制作的数字电压表//接口方式:总线扩展//作者:曾宪阳//网址:/zxymcu//******************************** #include<reg52.h>#define ADC0809Addr 0x78ff#define LCDWriteComAddr 0xa7ff#define LCDWriteDatAddr 0xafff#define uchar unsigned char#define uint unsigned intuchar Disp[6];void delay_ms(uint t){uchar x,y;for(t;t>0;t--){for(x=0;x<114;x++)for(y=0;y<1;y++);}}void Init1602(void){delay_ms(15);*((uchar xdata*)LCDWriteComAddr)=0x38; delay_ms(5);*((uchar xdata*)LCDWriteComAddr)=0x38; delay_ms(5);*((uchar xdata*)LCDWriteComAddr)=0x38;delay_ms(2);*((uchar xdata*)LCDWriteComAddr)=0x08; delay_ms(2);*((uchar xdata*)LCDWriteComAddr)=0x01; delay_ms(2);*((uchar xdata*)LCDWriteComAddr)=0x0c; delay_ms(2);*((uchar xdata*)LCDWriteComAddr)=0x06; delay_ms(2);*((uchar xdata*)LCDWriteComAddr)=0x80; delay_ms(2);}void Display(void){*((uchar xdata*)LCDWriteComAddr)=0XC0;delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)='I';delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)='N';delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)='0';delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)='=';delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)=('0'+Disp[0]); delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)=('.');delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)=('0'+Disp[1]); delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)=('0'+Disp[2]); delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)=('0'+Disp[3]); delay_ms(2);*((uchar xdata*)LCDWriteDatAddr)=('V');delay_ms(2);}void ADC0809(void){unsigned long i;*((uchar xdata*)ADC0809Addr)=0;delay_ms(100);i=*((uchar xdata*)ADC0809Addr);P1=i;i=(i*5000/255);Disp[0]=(i/1000);Disp[1]=(i%1000/100);Disp[2]=(i%1000%100/10);Disp[3]=(i%1000%100%10);}void main(void){Init1602();while(1){ADC0809(); Display(); }}。

数字直流电压表

数字直流电压表

摘要本文介绍了用ADC0832集成电压转换芯片和ATC89C52单片机设计制作的数字直流电压表。

在测量仪器中,电压表是必须的,而且电压表的好坏直接影响到测量精度。

具有一个精度高、转换速度快、性能稳定的电压表才能符合测量的要求。

为此,我们设计了数字电压表,该系统有三个部分:数据采集,数据处理和显示,终端接收,主要由ADC0832转换器和单片机ATC89C52构成,A/D转换器在单片机的控制下完成对模拟信号的采集和转换功能,最后由译码器74LS164和LED数码显示器构成的显示部分来显示采集的电压值。

此设计通过调试完全满足设计的指标要求。

电路设计简单,设计制作方便有较强的实用性。

关键词:模数转换器ADC0832;单片机ATC89C52;数字电压表; 译码器74LS164;LED数码显示器摘要 (1)第一章电压表概述 (4)第二章总体方案设计 (6)2.1信号采集分析 (6)2.1.1信号采集 (6)2.1.2 A/D转换器的选取 (8)2.2控制与显示方法分析 (8)2.2.1单片机系统分析 (9)2.2.2显示分析 (10)2.3传输方式分析 (11)第三章系统硬件设计 (12)3.1单片机及外围电路的设计 (12)3.1.1 单片机的选择 (12)3.1.2复位和振荡电路的设计 (13)3.2数据采集电路 (14)3.2.1 A/D转换的一般步骤 (14)3.2.2 ADC0832内部功能与引脚介绍 (14)3.2.3 AT89C52单片机 (16)3.2.3 ADC0832与ATC89C52单片机的接口方法 (17)3.3 LED显示电路和译码器74LS164 (18)3.3.1 LED显示电路 (18)3.3.2 译码器74LS164 (18)3.3.3 LED与74LS164的接口方法 (19)3.4通信电路 (20)第四章系统软件设计 (22)4.1 数字电压表系统软件设计方案确定 (22)4.2数字电压表应用程序设计 (24)4.3 LED显示程序 (24)第五章总结 (26)参考文献 (27)附录A:硬件原理图 (28)附录B:源程序......................................... 错误!未定义书签。

基于ADC0832数字电压表

基于ADC0832数字电压表

阿坝师范高等专科学校电子信息工程系课程设计基于ADC0832数字电压表学生姓名任银鹏专业名称电子信息工程技术班级电信班学号20113026基于ADC0832数字电压表一、设计要求设计一个在单片机AT89S52作用下基于ADC0832数字电压表.二、系统设计方案1. 模块图2. 模块作用该电压表由单片A/D转换器构成,在很大的电压情况下,电压表去测量时会对其并联很大的电阻分掉高压,然后再进行测量,这本来很大的电压,到后来测出来的电压就会很小,这就是A/D转换实现低压电压表测量高压三、硬件原理1.LCD1602图3.1 LCD1602外观如图3.1 LCD1602外观,从LCD1602参数手册知道芯片工作电压为4.5~5.5V,工作电流20mA。

模块最佳工作电压为5V。

引脚作用说明如下表3.1:表3.1引脚作用说明从参数手册知道LCD1602与单片机8051系列连接方式如图3.2所示,LCD1602引用电路如图3.3:图3.2 LCD1602与单片机8051系列连接方式图3.3 LCD1602引用电路如图3.3 LCD1602引用电路,单片机P2口与LCD1602的7-14脚连接,单片机14脚与LCD1602的6脚连接,单片机15脚与LCD1602的4脚连接。

2. ADC0832ADC0832具有8位分辨率;双通道A/D转换;输入输出电平与TTL/CMOS相兼容;5V电源供电时输入电压在0-5V之间,工作频率为250KHz,转换时间为32us;一般功耗仅为15Mw的特点。

ADC0832芯片引脚说明如图3.4:图3.4ADC0832芯片引脚说明:cs:片选使能,低电平芯片使能;cho:模拟输入通道0,或作为IN+/-使用;ch1:模拟输入通道:1,或作为IN+/-使用;GND:芯片参考0电位;DI:数据信号输入,悬着通道控制;DO:数据信号输出,转换数据输出;CLK:芯片时钟输入;Vcc/REF:电源输入及参考电压输入。

基于ADC0832的数字电压表

基于ADC0832的数字电压表

//基于ADC0832的数字电压表#include<reg51.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件//ADC0832端口引脚定义sbit CS=P3^0; //将CS位定义为P3.0引脚sbit CLK=P3^6; //将CLK位定义为P3.6引脚sbit DIO=P3^7; //将DIO位定义为P3.7引脚//全局变量声明unsigned char code digit[10]={"0123456789"}; //定义字符数组显示数字unsigned char code Str[]={"Volt="}; //说明显示的是电压//液晶端口定义sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/void delaynms(unsigned char n){unsigned char i;for(i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。

adc0832做的数字电压表

adc0832做的数字电压表

#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define _rrca_() CY = ACC & 0x01 //产生RRC A指令#define _rlca_() CY = ACC & 0x80 //产生RLC A指令sbit bADcs=P1^4;sbit bADcl=P1^5;sbit bADda=P1^6;sbit flag=P1^7;sbit str=P2^7;sbit d=P2^6;sbit clk=P2^5;bit choose=0;unsigned char data1;unsigned char count;unsigned char cycle;uint ge,xiao1,xiao2;unsigned long data2;//无小数点const uchar table1[17]={0x81,0xed,0x43,0x49,0x2d,0x19,0x11,0xcd,0x01,0x09,0x71,0x31,0x93,0x61,0x13,0 x17,0xff};//有小数点const uchar table2[17]={0x80,0xec,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08,0x70,0x30,0x92,0x60,0x12,0 x16,0xff};uchar buffer[4]={0x00,0x00,0x00,0x00};void Delayus(uchar i){while(--i);}void display(void){uchar bit_count=0;uchar table_counter=0;uchar byte_counter=0;uchar temp_i=0;buffer[0]=xiao2;buffer[1]=xiao1;buffer[2]=ge;buffer[3]=0x00;//led_str_off;//先清零str=0;//led_clk_off;clk=0;for(byte_counter=0;byte_counter<4;byte_counter++) {bit_count=8;if(byte_counter==2)temp_i=table2[buffer[byte_counter]];elsetemp_i=table1[buffer[byte_counter]];// nop;while(bit_count>0){if((temp_i&0x80)==0){//led_d_off;d=0;}else{//led_d_on;d=1;}temp_i=(temp_i<<1);// nop;//led_clk_on;clk=1;// nop;//led_clk_off;clk=0;// nop;bit_count--;}}//led_str_on;str=1;}/*void ad(){choose=0;count = 0;bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.bADcl = 0;bADda = 1;//在第1 个时钟脉冲的下沉之前DI端必须是高电平.bADcl = 1;bADcl = 0;//pulse 1 downbADda = 1;bADcl = 1; bADcl = 0;//pulse 2 downif(choose == 0)bADda = 0;elsebADda = 1;bADcl = 1; bADcl = 0;//pulse 3 downbADcl = 1; bADcl = 0;//pulse 4 down//bADcl = 1;for(cycle = 8; cycle > 0; cycle-- ){bADda = 1;//bADcl = 0;//pulsebADcl = 1;CY = bADda;_rlca_(); //RRC AbADcl = 0;//pulse}data1= ACC;for(cycle = 8; cycle > 0; cycle-- ){bADda = 1;bADcl = 1;CY = bADda;_rrca_();//RLC AbADcl = 0;//pulse}//bADcl = 0;//pulse} */void ad(void){ uchar i;//data1=0;bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.bADcl=0;bADda=1;bADcl=1;bADcl=0;//i downbADda=1;bADcl=1;bADcl=0; // 2 downbADda=0;bADcl=1;bADcl=0; // 3 downbADda=1;bADcl=1;bADcl=0; // 4 downfor(i=8;i>0;i--){data1<<=1;bADcl=0;bADcl=1;if(bADda==1) data1|=0x01;bADda=1;}/* for(i=8;i>0;i--){bADcl=0;bADcl=1;} */bADcs=1;}void cal(){data2=((ulong)data1*493)/256; ge=data2/100;xiao1=(data2%100)/10;xiao2=data2%10;}main(){flag=1;while(1){ad();cal();display();}}。

基于ad0832的液晶显示数字电压表

基于ad0832的液晶显示数字电压表

设计题目:基于液晶显示的AD0832两路模数转换系别:应用电子与通信技术系班级:0991321学生姓名:张潇指导教师:徐秋景、姜滨成绩:2012年7月12日课程设计任务书2012年7月2日目录第一章绪论 (1)1.1选题目的 (1)1.2设计要求 (1)1.2.1设计题目和设计指标 (1)1.2.2设计功能 (1)第二章总体设计及工作原理 (2)2.1设计原理及方案 (2)2.2总体设计 (2)第三章硬件设计及电路图 (3)3.1芯片资料介绍 (3)3.1.1 AT89C51 (3)3.1.2 AD0832 (3)3.2单片机对 ADC0832 的控制原理 (4)3.3 LCD显示模块 (5)3.4时钟电路 (6)3.5电压调节部分 (6)3.6复位电路 (7)3.7系统原理图 (7)第四章系统程序设计 (8)4.1软件总体框架设计 (8)4.2系统子程序设计 (9)4.2.1初始化程序 (9)4.2.2A/D转换子程序 (9)收获和体会 (12)致谢 (13)参考文献 (14)附录1 (15)附录2完整程序代码 (16)原件清单 (33)第一章绪论1.1选题目的模-数(AD)和数-模(DA)转换是模拟电路和数字电路进行沟通的渠道,在数字电路里,电平只有高和低两种状态,比如5V和0V,对应着1和0;模拟电路里,电平则理论上有无数个状态,比如0V、0.1V、0.2V…等等。

如何将模拟电平值在数字电路里表达出来呢?这就需要AD转换过程。

ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。

由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,且目前已经有很高的普及率。

学习并使用ADC0832可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。

1.2设计要求1.2.1设计题目和设计指标设计题目:基于液晶显示的AD0832两路模数转换。

设计指标:当改变电压值时,经过AD0832模数转换,液晶显示结果对应改变。

数字电压表

数字电压表

数字电压表摘要:本文运用AT89S52和ADC0832进行A/D转换,根据数据采集的工作原理,设计实现数字电压表,最后完成单片机的LCD数据显示,显示所测量的电压值。

本系统用精度高,稳定性好等特性。

关键字:数字电压表AT89S52 ADC0832 LCD1602一、方案论证及选择1、主控芯片方案1:选用专用电压转换芯片INC7107实现电压的测量和现实。

缺点是精度比较低,且内部电压转换和控制部分不可控制。

优点是价格低廉。

方案2:选用单片机AT89S52和A/D转换芯片ADC0832实现电压的转换和控制,用LCD1602显示出最后的转换电压结果。

缺点是价格稍贵。

优点是转换精度高,且转换的过程和控制、显示部分可以控制。

基于课程设计的要求,我们优先选用了:方案2。

2、显示部分方案1:选用4个单体的共阳数码管,将a—h全部连接起来,然后接到单片机口的I/O上进行控制。

缺点是焊接时比较麻烦,容易出错。

优点是价格比较便宜。

方案2用一个LCD1602显示结果,1602可以显示数字和字符显示内容十分的丰富。

基于以上方案和课程设计的要求,我们优先选用了:方案2。

二、硬件设计这个电路主要芯片有ADC0832、单片机AT89S52和LCD1602组成,下面分别介绍一下它们的功能:ADC08321.主要特性1)2路8位A/D转换器,即分辨率8位。

2)具有转换起停控制端。

3)转换时间为100μs4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

6)工作温度范围为-40~+85摄氏度2.内部结构ADC0832内部结构框图图1 ADC0832引脚图3.外部特性(读写时序)ADC0832时序正常情况下 ADC0832 与单片机的接口应为 4条数据线,分别是 CS、CLK、DO、DI。

但由于 DO端与 DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将 DO和 DI 并联在一根数据线上使用。

ADC的数字电压表设计

ADC的数字电压表设计

目录1.引言 (1)2.方案设计 (1)2.1设计要求 (1)2.2设计方案 (1)3.硬件设计 (2)3.1单片机最小系统 (2)3.2显示驱动部分 (2)3.3转换电路 (3)3.4单片机驱动部分 (3)4.软件设计 (4)4.1软件流程 (4)4.2子程序模板 (5)5实验结果与讨论 (5)5.1实验仿真 (5)5.2结果讨论 (5)6心得体会 (6)7参考文献 (13)8附录8.1程序 (7)8.2 原理图 (7)1.引言随着片机技术的飞速发展,,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发肢和社会信息化程度的提商,人们为了寻求最好的科技,为了方便人类在使用科技产品的快速性,准确性。

例如数字电压表能够准确的,快速的量出电压。

利用ADC0832和AT89C52的结合再通过LCD来显示出来。

ADC0832是一个8位D/A转换器。

单电源供电,从+5V~+15V均可正常工作。

基准电压的范围为±10V;电流建立时间为1μS;CMOS工艺,低功耗20mW。

ADC0832转换器芯片为20引脚,双列直插式封装。

该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存。

使用时数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级直通)形式。

2.方案设计2.1设计要求按系统要实现功能,设计必须达到以下的几个步骤的要求(1)主电路系统是由ADC0832,单片机AT89C52和LCD显示屏组成。

(2)ADC0832是模拟数字转换芯片,是将外侧电压信号转换成数字信号再通过AT89C52处理,再通过LCD显示出来(3)能测量0-5V的数字电压(4)测量误差不大于0.1V2.2设计方案2.1.1单片机的选择本设计选用单片机AT89C52它是一种带8K字节闪烁可编程可擦除只读存储器的低电压,足够本设计之用,高性能CMOS8位微处理器该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令系统及8052产品引脚兼容,功能强大、使用方便的AT80C52单片机适用于许多较为复杂的应用场合。

用ADC0832设计的两路电压表

用ADC0832设计的两路电压表

题目:基于ADC0832的两路电压表设计_所在院系:电气工程与自动化学院专业:10自动化入学时间:二〇一〇年九__月导师所在单位:电气工程与自动化学院完成时间:二〇一四年五月摘要数字电压表是采用数字化测量设计的电压仪表。

目前,其作为数字化仪表的基础和核心,已被广泛应用于电子和电工测量、工业自动化仪表、自动测试系统等领域,显示出强大的生命力。

与此同时,数字电压表扩展而成的各种通用及专用仪器仪表,也将电量及非电量测量技术提高到崭新水平。

本设计为直流数字电压表。

利用单片机AT89C51借助软件实现数字显示功能、自动校准、LED显示,A/D转换器采用ADC0832构成数模转换电路。

该电压表测量范围在0~5V。

由于采用高性能的单片机芯片为核心,同时利用LED数码管为显示设备,这样就使显示清晰直观、读数准确,减少了因为人为因素所造成的测量误差事件,同时提高了测量的准确度。

关键词:AT89C51;A/D转换;LED目录目录 (3)第1章绪论 (4)1.1 选题背景 (4)1.2 主要特点 (6)第2章方案论证及方案选择 (7)2.1方案论证 (7)2.2方案选择 (8)第3章主要元器件介绍 (9)3.1 ADC0832的介绍 (9)3.1.1引脚及功能介绍 (9)3.1.2 内部介绍 (10)3.1.3芯片的操作方法 (10)3.2 AT89C51的介绍 (12)3.2.1引脚及功能介绍 (12)3.2.2内部介绍 (14)3.2.3芯片的操作方法 (14)3.3 SCD1602的介绍 (15)3.3.1引脚及功能介绍 (15)3. 3. 2内部介绍 (16)3. 3. 3 芯片的操作方法 (16)第4章系统硬件设计 (17)4.1 最小系统电路 (17)4.1.1 时钟电路 (17)4.1.2 复位电路 (18)4.2 模数转换电路 (19)4.2.1转换电路 (19)4.3 液晶显示电路 (20)4.3.1显示电路 (20)4.4 硬件结构图 (21)第5章系统软件设计 (22)5.1 主程序设计 (22)5.2 A/D转换程序 (23)第6章程序清单 (24)致谢 (33)参考文献........................................................................................................................................ .37第1章绪论1.1 选题背景近年来计算机技术及微电子器件在工程技术中应用十分广泛。

ADC0832数字电压表

ADC0832数字电压表

信息与电气工程学院单片机应用系统(三级项目)设计说明书(2014/2015学年第二学期)题目:数字电压表设计与实现目录一、课程设计目的...................................................................................................................... - 1 -二、课程设计正文...................................................................................................................... - 1 -2.1 总体论述...................................................................................................................... - 1 -2.2 设计方案...................................................................................................................... - 2 -2.3 硬件元器件的选择与设计.......................................................................................... - 2 -2.3.1 AT89C51模块................................................................................................... - 2 -2.3.2 A/D数据转换模块........................................................................................... - 5 -2.3.3 LCD显示系统设计........................................................................................... - 7 -2.4 程序设计总方案.......................................................................................................... - 9 -2.4.1. 初始化程序.................................................................................................... - 9 -2.4.2显示子程序...................................................................................................... - 9 -2.4.3A/D转换子程序................................................................................................ - 9 -三、软件调试与仿真................................................................................................................ - 11 -3.1软件调试..................................................................................................................... - 11 -3.2数字电压表仿真......................................................................................................... - 11 -四、课程设计总结.................................................................................................................... - 11 -五、参考文献............................................................................................................................ - 12 - 附录 ........................................................................................................................................... - 13 -数字电压表设计与实现一、课程设计目的电压表已经有100多年的发展历史,虽然不断改进与完善,仍然无法满足现代电子测量的需求,近二十年,微电子技术,计算机技术,集成技术,网络技术等高新技术得到了迅猛发展。

PCB项目说明书 用 ADC0832 设计的两路电压表(用 LCD1602显示)

PCB项目说明书 用 ADC0832 设计的两路电压表(用 LCD1602显示)
1 项目任务
利用单片机 STC89C52 与 ADC0832 设计一个两路电压表,将模拟信号 0~5V 之间的电压值转换成数字量信号,并在 LCD1602 显示屏上显示,通过虚拟电压表 观察 ADC0832 模拟量输入信号的电压值,LCD1602 实时显示相应的数值量。
项目要求: (1)LCD 显示清晰无鬼影不闪烁 (2) 程序设计中,要使 LCD 显示变化的电压
图 3-2 ADC0832 时序图
集成模数转换芯片 ADC0832 实现的 A/D 转换电路如图 3-2 所示。被测信号 由 ADC0832 模拟输入端输入,完成 A/D 转换后送入单片机,经相应处理后送出 显示。
4 液晶显示屏 LCD1602 简介
1602 液晶显示器它是一种专门用来显示字母、数字、符号等的点阵型液晶 模块。它有若干个 5*7 或者 5*11 等点阵字符位组成,每个点阵字符位都可以显 示一个字符。其为 5V 电压驱动,带背光,可显示两行,每行 16 个字符,内置 含 128 个字符的 ASC 字符集字库,只有并行接口,无串行接口。其中 D0~D7 与单片机的 P0.0~P0.7 相连接,RS 与单片机的 P2.0 相连接,R/W 与单片机的 P2.1 相连,E 与单片机 P2.2 相连。
当前地址指针的数值
原则上每次对控制器进行读写操作之前,都必须进行读/写检测,确保 SAT7 为 0。实际上,由于单片机的操作速度慢于液晶控制器的反应速度,因此可以不 进行读/写检测,或只进行简短的延时即可。
c)数据指针设置见表 4-3。 控制器内部设有一个数据地址指针,用户可以通过它们访问内部的全部 80B 的 RAM。
电源地
2
VDD
电源正极
3
VO
液晶显示对比度调节端

用ADC0832设计的两路电压表protues仿真

用ADC0832设计的两路电压表protues仿真
delay(1);
LCD_write_cmd(0x0c);
delay(1);
LCD_write_cmd(0x06);
delay(1);
LCD_write_cmd(0x01);
delay(1);
}
#endif
#ifndef _ADC0832_H_
#define_ADC0832_H_
uchar ADC_read_data(uchar ch)
{
if(j==0)
add=0x00;
else
add=0x40;
ADC_change(j);
LCD_buffer[j][8]=dat/100+'0';
LCD_buffer[j][10]=dat/10%10+'0';
LCD_buffer[j][11]=dat%10+'0';
LCD_display(add,LCD_buffer[j]);
delay_us();
clk=1;
delay_us();
/*********二,三个下降沿选择通道1***********************沿之前,设DIO=1
delay_us();
for(i=0;i<8;i++)//第4~11共8个下降沿读数据(MSB->LSB)
delay(2);
en=0;
delay(2);
}
void LCD_display(uchar add,uchar s[])
{
uchar i;
LCD_write_cmd(0x80+add);
for(i=0;i<16;i++)

基于ADC0832的数字电压表设计报告

基于ADC0832的数字电压表设计报告

基于ADC0832的数字电压表设计报告设计题目:基于ADC0832数字一路电压表电路设计专业班级:电气工程及其自动化1024 学号:22 、32 、21姓名:杨青涛、康爱丽、孟广琴指导教师:瓮嘉民目录基于ADC0832的一路数字电压表设计 (3)1、电压表设计原理图 (3)2、PROTEUS仿真图 (4)3、原理图 (5)4、PCB图 (6)5、实物图 (7)6、报告 (8)1、设计方案 (8)2、电路特色 (9)3、功能介绍 (10)4、流程图、 (11)5、1感受(康爱丽) (13)5、2感受(孟广琴) (14)5、3感受(杨青涛) (15)6 参考资料 (16)基于ADC0832的一路数字电压表设计1、电压表设计原理图2、proteus仿真图5、实物图第二组:杨青涛孟广琴基于ADC0832的一路数字电压表设计康爱丽6、报告1、设计方案通过一个A/D(ADC0832模拟数字转换)芯片采集后将外测电压信号转换为数字信号,再由单片机(AT89S52)处理信号,输出信号,由LCD1602显示各路电压。

89S52引脚图2、电路特色设计以单片机at89s52芯片为核心的简单电压测量电路,它由5V直流电源供电。

在硬件方面,通过可变电阻调节输入电压的变化来反映检测到的电压变化。

通过A/D转换后数字量在单片机at89s52处理在转换成相应的实际电压,通过LCD1602显示器进行显示。

LCD 显示电压实现零辐射、低功耗、散热小、体积小、图像还原精确、字符显示锐利等。

3、功能介绍该电压表由单片A/D转换器构成,在很大的电压情况下,电压表去测量时会对其并联很大的电阻分掉高压,然后再进行测量,这时本来很大的电压,到后来测出来的电压就会很小,这就是A|D转换实现低压电压表测量高压液晶与89S52的接口4、流程图、(1)主程序(2)液晶模块电压显示流程图(3 ) 电压显示5、1感受(康爱丽)问1:while(1){}部分的流程图咋画?答1:这段语句说明结构体是一个死循环,这样就该明白咋画了问2:画循环时需要在横线上添加Y和N该咋添加?答2:经百度查询后我明白了一般只有封闭图形才可以直接添加文字的,比如矩形,这个问题还得用文本框解决,具体方法是设置文本框属性线条颜色和填充颜色都设置为无;这样就可以实现了。

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

目录1.引言 (1)2.方案设计 (1)2.1设计要求 (1)2.2设计方案 (1)3.硬件设计 (2)3.1单片机最小系统 (2)3.2显示驱动部分 (2)3.3转换电路 (3)3.4单片机驱动部分 (3)4.软件设计 (4)4.1软件流程 (4)4.2子程序模板 (5)5实验结果与讨论 (5)5.1实验仿真 (5)5.2结果讨论 (5)6心得体会 (6)7参考文献 (13)8附录8.1程序 (7)8.2 原理图 (7)1.引言随着片机技术的飞速发展,,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发肢和社会信息化程度的提商,人们为了寻求最好的科技,为了方便人类在使用科技产品的快速性,准确性。

例如数字电压表能够准确的,快速的量出电压。

利用ADC0832和AT89C52的结合再通过LCD来显示出来。

ADC0832是一个8位D/A转换器。

单电源供电,从+5V~+15V均可正常工作。

基准电压的范围为±10V;电流建立时间为1μS;CMOS工艺,低功耗20mW。

ADC0832转换器芯片为20引脚,双列直插式封装。

该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存。

使用时数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级直通)形式。

2.方案设计2.1设计要求按系统要实现功能,设计必须达到以下的几个步骤的要求(1)主电路系统是由ADC0832,单片机AT89C52和LCD显示屏组成。

(2)ADC0832是模拟数字转换芯片,是将外侧电压信号转换成数字信号再通过AT89C52处理,再通过LCD显示出来(3)能测量0-5V的数字电压(4)测量误差不大于0.1V2.2设计方案2.1.1单片机的选择本设计选用单片机AT89C52它是一种带8K字节闪烁可编程可擦除只读存储器的低电压,足够本设计之用,高性能CMOS8位微处理器该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令系统及8052产品引脚兼容,功能强大、使用方便的AT80C52单片机适用于许多较为复杂的应用场合。

2.1.2总体设计及系统原理数字电压表的整体设计比较简单,包括单片机,ADC0832的芯片和LCD的显示电路组成。

先通过ADC0832芯片将外侧电压信号转换成数字信号,再通过由AT89C52组成的电路处理转换成相应的实际电压,再通过LCD显示电路显示出来。

3.1.单片机最小系统单片机最小系统选用AT89C52,自动复位和手动复位电路可对单片机进行复位操作。

3.2.显示驱动部分本设计是选用LCD1602显示器进行显示,用来显示电压的数值。

LCD1602显示器成本低,配置灵活与单片机接口简单,在单片机应用系统中广泛应用 本设计采用LCD1602,它是一种专门用来显示字母,数字和符号等的点阵型的液晶模块。

它由若干个5×7或者5×11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔。

LCD1602显示器与AT89C52相连。

1602液晶模块内部的控制器控制指令时 钟 电 路 A/D 转 换 部 分复 位 电 路AT89C52LCD 显 示 部3.3转换电路本设计是采用ADC0832芯片,ADC0832为8位分辨率A/D 转换芯片,,其最高分辨率可达256级,可以适应一般的模拟量的转换要求。

其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V 之间,芯片转换时间仅为32μs 具有双数据输出可作为数据检控,以减少数据误差。

转换速度快且稳定性强。

独立的芯片使能输入,使多器件挂接和处理器控制变得更加方便。

通过DI 数据输CS 1CH02CH13GND 4VCC 8CLK 7DI 5DO6U2ADC083251%RV11kC310uF一种8位分辨率,双通道A/D 转换芯片。

由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎。

ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。

其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。

芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。

独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。

通过DI 数据输入端,可以轻易的实现通道功能的选择。

表:ADC0832配置位4,软件设计4.1软件流程在本设计实验里面单片机是对ADC0832的控制,在正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS,CLK,DO.DI。

但由于DO端与DI端在通信时并未同事有效并与单片机的接口是双向的,,所以电路设计将DO和DI端并联在一根数据线上使用。

当ADC0832未工作时器CS输入端为高电平,此时芯片禁用CLK和DI/DO的电平可任意。

当进行A/D转换时,必须将CS使能端置于低电平并且保持低电平直到转换完全结束。

此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟冲,DO/DI端则使用DI端输入通道功能选择的数据信号。

在第1个时钟脉冲的下沉之前DI端必须是高压平,表示启始信号。

在第2、3个脉冲下沉之前DI端输入2用于选择通道功能。

当此2位数据位“1”“0”时,只对CHO进行单通道转换。

当2位数据为“1”、“”时,只对CH1进行单通道转换。

当2位数据位“0”、“0”时,将CHO作为正输入端IN+,CH1作为负输入端IN—进行输入。

当2位数据位“0”、“1”时,将CHO作为负输入端IN-,CH1作为正输入端IN+进行输入。

到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。

从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。

直到第11个脉冲时发出最低位数据DATAO。

一个字节的数据输出完成。

也正是从此位开始输出一个相反字节的数据,即从第11个字节的下沉输出DATAO。

随后输出8位数据,到第19个脉冲时输出完成。

也标志着一次A/D转换的结束。

最后将CS置高平禁用芯片,直接将转换后的数据进行处理就可以了4.2子程序模块主要控制子程序说明如下:(1)delay:延时子程序;void delay(uint z)(2)void LCD_init(),是LCD1602的功能设定。

例如; LCD_write_cmd(0x38);delay(1);//功能设置,数据长度为8位,双行显示,5×7点阵字体。

(3)void LCD_display(uchar add,uchar s[])是lcd的显示程序。

5实验结果与讨论5.1实验仿真依据各功能模块的功能要求和工作过程画出程序的流程图,然后根据流程图和系统的硬件连接写出详细的程序,接着对各个子程序进行编译,调试,运行,看看是否能达到其功能,然后再将整个程序糅合在一起进行整体软件调试。

在整体调试中,需注意寄存器组不能重复,在进入中断时,哪些寄存器内容和参数需入栈保护,以及调用子程序时各参数必须统一,在编译通过时,最好能把整个程序再单步执行一遍。

单步执行时看看每步执行完后数据各个特殊功能寄存器中数据的变化,这样才能确保整个程序按照系统的工作过程和功能要求执行。

仿真结果。

5.2讨论结果本设计以AT89C52单片机为系统的控制核心,采用proteus仿真软件进行测试。

Proteus是一款比较常用的单片机仿真软件,用proteus和keil配合进行仿真提高系统运行效率与稳定性。

6.心得体会通过这次设计,使我深入了解了AT89S52单片机和ADC0832(A\D转换器)的结构和特点及数字电压表的工作原理,加深了对课本理论知识的理解,锻炼了实践动手能力,理论知识与实践设计相结合,培养了创新开发的思维。

在此次课程设计中,收获知识的同时,我还收获了阅历。

此次单片机课程设计需要运用到许多之前所学过的知识,令我认识到自己以前学习的一些不足之处,例如对以前所学知识的理解不够深刻,掌握得不够牢固,运用不够灵活。

这让我懂得了认真学习的重要性,以及要孜孜不倦地钻研所学过的知识,做得融会贯通,不能一览而过,不求甚解。

在边学习边动手的过程中,我对电子时钟的构造以及原理有了进一步的了解,同时也加深和巩固了我对单片机语言的认识。

除此之外,由于是第一次做单片机,因此在此次课程设计的过程中,无论是电路绘制还是汇编语言编写都难免遇到了不少困难和障碍,例如C语言编写出错、电路元件无从入手等。

在面对困难和障碍时,我庆幸自己没有退缩和逃避,而是通过各种方法,迎难而上,以坚持、耐心和努力勇敢无畏地面对困难,克服困难,解决困难。

让我发现问题、分析问题、解决问题以及动手实践的能力都有了很大的提高,并了解到理论知识与实践相结合的重要意义。

7.1参考文献[1] 吴炳胜,80C51单片机原理及应用技术.北京.冶金工业出版社个2008.[2] 林立,张俊亮单片机原理及应用.北京.电子工业出版社 2013[3] 蓝和慧,宁武,闫晓金,单片机应用技能.北京.电子工业出版社 2009[4] 王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子出版社,2002.[5] 蔡朝洋.单片机控制实习与专题制作.北京.北京航空航天大学出版社 2006[6] 高禹.C语言程序设计.北京.清华大学出版社 20118.附录1:程序1.)文件ADC0832.h#ifndef _ADC0832_H_#define _ADC0832_H_uchar ADC_read_data(uchar ch){uchar i,dat0=0,dat1=0;cs=0;clk=0;dio=1;delay_us();clk=1;delay_us(); //第一次下降沿之前DIO置高,起始信号clk=0;dio=1;delay_us();clk=1; //第二次下降沿输入dio=1delay_us();clk=0;dio=ch; //第三个下降沿,设DIO=0;delay_us();clk=1;delay_us();/*********二,三个下降沿选择通道1************************/ clk=0;dio=1; //第四个下降沿之前,设DIO=1delay_us();for(i=0;i<8;i++)//第4~11共8个下降沿读数据(MSB->LSB){clk=1;delay_us();clk=0;delay_us();dat0=dat0<<1|dio;}for(i=0;i<8;i++) //第11~18共8个下降沿读数据(LSB->MSB){dat1=dat1|((uchar)(dio)<<i);clk=1;delay_us();clk=0;delay_us();}cs=1; //判断dat0与dat1是否相等return (dat0==dat1)?dat0:0;}void ADC_change(uchar ch){dat=ADC_read_data(ch)*500.0/255;//dat变量要全局变量,重要LCD_buffer[ch][8]=dat/100+'0';LCD_buffer[ch][10]=dat/10%10+'0';LCD_buffer[ch][11]=dat%10+'0';}#endif2.)文件LCD1602.h#ifndef _LCD1602_H_#define _LCD1602_H_uchar LCD_check_busy(){uchar state;rs=0;rw=1;delay(2);en=1;state=P0;delay(2);en=0;delay(2);return state;}void LCD_write_cmd(uchar cmd){while((LCD_check_busy()&0x80)==0x80);rs=0;rw=0;delay(2);en=1;P0=cmd;delay(2);en=0;delay(2);}void LCD_write_data(uchar dat){while((LCD_check_busy()&0x80)==0x80); rs=1;rw=0;delay(2);en=1;P0=dat;delay(2);en=0;delay(2);}void LCD_display(uchar add,uchar s[]) {uchar i;LCD_write_cmd(0x80+add);for(i=0;i<16;i++)LCD_write_data(s[i]);}void LCD_init(){LCD_write_cmd(0x38);delay(1);LCD_write_cmd(0x0c);delay(1);LCD_write_cmd(0x06);delay(1);LCD_write_cmd(0x01);delay(1);}#endif3.)文件define.h#ifndef _DEFINE_H_#define _DEFINE_H_#define uchar unsigned char#define uint unsigned intsbit cs=P3^0;sbit clk=P3^1; //控制端口定义sbit dio=P3^2;sbit rs=P2^0;sbit rw=P2^1;sbit en=P2^2;uint j,add,dat;uchar LCD_buffer[][16]={{" CH1 = . V "},{" CH2 = . V "}};#endif4.)文件delay.h#ifndef _DELAY_H_#define _DELAY_H_void delay(uint z){uint x,y;for(y=z;y>0;y--)for(x=10;x>0;x--);}void delay_us(){_nop_();_nop_();}#include<reg52.h>#include<intrins.h>#include"define.h"#include"delay.h"#include"LCD1602.h"#include"ADC0832.h"5.)主函数void main(){LCD_init();while(1){for(j=0;j<2;j++){ if(j==0)add=0x00;elseadd=0x40;ADC_change(j);LCD_buffer[j][8]=dat/100+'0';LCD_buffer[j][10]=dat/10%10+'0';LCD_buffer[j][11]=dat%10+'0';LCD_display(add,LCD_buffer[j]);delay(1);}}}。

相关文档
最新文档