ADC0832的数字电压表设计说明
基于ADC0832和LCD160128设计的数字电压表
![基于ADC0832和LCD160128设计的数字电压表](https://img.taocdn.com/s3/m/4d819c156edb6f1aff001fbf.png)
学习情境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设计的两路电压表](https://img.taocdn.com/s3/m/7145dd6da26925c52dc5bf0f.png)
毕业设计题目用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数字电压表](https://img.taocdn.com/s3/m/46cea1e1f8c75fbfc77db2e7.png)
信息与电气工程学院单片机应用系统(三级项目)设计说明书(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多年的发展历史,虽然不断改进与完善,仍然无法满足现代电子测量的需求,近二十年,微电子技术,计算机技术,集成技术,网络技术等高新技术得到了迅猛发展。
ADC0832
![ADC0832](https://img.taocdn.com/s3/m/0a2ed94e852458fb770b56ff.png)
ADC0832设计模块1、ADC0832的主要技术指标:(1)8位分辨率,逐次逼近型。
(2)5V电源供电时,基准电压为5V,输入模拟电压范围为0~5V。
(3)输入和输出电平与TTL和CMOS兼容。
(4)有两个可供选择的模拟输入通道。
(5)在250KHz时钟频率时,转换时间为32µs。
(6)一般功耗仅为15mW。
2、ADC0832引脚说明(1)/CS片选使能,低电平有效。
(2)CHO模拟通道0,差分输入时,作为IN+或IN-使用。
(3)CH1模拟输入通道1,差分输入时,作为IN+或IN-使用。
(4)GND 电源地。
(5)DI数据信号输出,选择通道控制。
(6)DO数据信号输出,转换数据输出。
(7)Vcc/Vre电源输入及参考电压输入(复用)。
(8)CLK芯片时钟信号3、ADC0832时序图4、运用ADC0832设计一个0-5V的数字电压表电路如图所示:设计要求:五位数码管动态显示,第一位显示通道状态(0、1)第二位显示C,第三位是个数,第三位和第四位数码管分别显示十分位和百分位;按键SW1选择通道0,按键SW2选择通道1,并且蜂鸣器和短时间鸣叫;调节滑动变阻器数码管的示数能在0.00~5.00之间变化。
C程序:/************************************************CAUCyeyongan*************************************************/#include <reg52.h>#include <intrins.h>#define uchar unsigned charsbit CS=P3^5;sbit Clk=P1^6; //时钟sbit DO=P3^7; //ADC0832输出引脚sbit DI=P3^6; //ADC0832输入引脚sbit key=P3^3; //按键bit keydownflg; //操作位的定义bit adc_flg;uchar dat,channel;uchar key_buffer;uchar P2_buffer;uchar Beep_cnt;uchar disp_cnt;uchar count4ms;uchar disp_buff[5]; //数码管显示缓存uchar code Tab1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0 xA1,0x86,0x8E}; //共阳数码表uchar code Tab[5]={0x7f,0xbf,0xdf,0xef,0xf7}; //数码管位选表uchar A_D(uchar CH) //AD函数{uchar i,adval,test; //定义局部变量并初始化adval=0x00;test=0x00;Clk=0; //clk低电平DI=1; //DI初始高电平在第一个时钟脉冲的下降沿前保持高电平,表示启动信号_nop_();CS=0; //片选_nop_();Clk=1; //clk上升沿,起始位写入_nop_();if(CH==0x00) //选择通道0{Clk=0; //clk低电平DI=1;_nop_();Clk=1; //clk上升沿,通道0的第一位写入_nop_();Clk=0;DI=0;_nop_();Clk=1; //clk上升沿,通道0的第二位写入_nop_();}else{Clk=0;DI=1;_nop_();Clk=1; //clk上升沿,通道1的第一位写入_nop_();Clk=0;DI=1;_nop_(); //clk上升沿,通道1的第二位写入Clk=1;_nop_();}Clk=0;DI=1;for(i=0;i<8;i++) //从高位向低位读取八位AD值{_nop_();adval<<=1;Clk=1;_nop_();Clk=0;if(DO)adval|=0x01;elseadval|=0x00;}for(i=0;i<8;i++){test>>=1; //从低位向高位读取八位AD值if(DO)test|=0x80;elsetest|=0x00;_nop_();Clk=1;_nop_();Clk=0;}if(adval==test) dat=test; //判断两个读取值是否相等相等就把读取的数赋值给DAT_nop_();CS=1;DO=1;Clk=1;return dat;}void FillDispBuffer(void) //数码管显示缓存函数{disp_buff[0]=channel; //显示通道disp_buff[1]=12; //显示"C"disp_buff[2]=dat/51; //显示个位disp_buff[3]=dat%51*10/51; //显示十分位disp_buff[4]=((dat%51)*10%51)*10/51; //显示百分位}void dealkey(void) //按键处理{if(keydownflg) return; //keydownflg控制位为1,不对按键进行处理key_buffer=P2;if((key_buffer&0x80)!=0x80) channel=0; //选择通道0if((key_buffer&0x40)!=0x40) channel=1; //选择通道1FillDispBuffer(); //数码管显示缓存Beep_cnt=0;keydownflg=1; //keydownflg控制位置1 }void main(void) //主函数{P0=0xff; //初始化P2=0xff;dat=0x00;disp_cnt=0;count4ms=0;channel=0;TMOD=0x10;TH0=(65535-4000)/256;TL0=(65535-4000)%256;EA=1;TR0=1;ET0=1;while(1){if(adc_flg) //ADC转换控制位,防止输入与输出产生冲突{adc_flg=0;A_D(channel); //ADC函数FillDispBuffer(); //数码管显示缓存}if(!key) //按键dealkey();}}void T0_service(void) interrupt 1 //定时器0中断子函数{TH0=(65535-4000)/256;TL0=(65535-4000)%256;P2_buffer=Tab[disp_cnt]; //查表,数码管的位选择if(keydownflg) //蜂鸣器0.4s的短时间鸣叫{P2_buffer=P2_buffer&0xfe;Beep_cnt++;if(Beep_cnt==100) keydownflg=0;}P2=P2_buffer; //数码管显示数字符号if(disp_cnt==2) //第三位数码管显示小数点P0=Tab1[disp_buff[disp_cnt]]&0x7f;elseP0=Tab1[disp_buff[disp_cnt]];disp_cnt++; //if(disp_cnt==5) disp_cnt=0;count4ms++;if(count4ms==50) //0.2s ADC转换一次{adc_flg=1;count4ms=0;}}。
简易数字电压表课程设计
![简易数字电压表课程设计](https://img.taocdn.com/s3/m/fa655a41cfc789eb172dc8d4.png)
电子测量结课作业简易数字电压表指导教师:学院:专业班级:姓名:学号:摘要本文介绍了一种基于单片机的简易数字电压表的设计。
该设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。
A/D转换主要由芯片ADC0832来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯片AT89C52来完成,其负责把ADC0832传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着ADC0832芯片工作。
该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。
此数字电压表可以测量0-5V的1路模拟直流输入电压值,并通过一个LCD1602液晶屏显示出来。
关键词: 单片机;数字电压表;A/D转换;AT89C52;ADC0832目录1 数字电压表的简介 01.1数字电压表简介 01.2数字电压表的的背景与意义 02 设计总体方案 (2)2.1 设计要求 (2)2.2 设计思路 (2)2.3 设计方案 (2)3 硬件电路设计 (4)3.1 A/D转换模块 (4)3.2 单片机系统 (6)3.3 复位电路和时钟电路 (9)3.4 LCD显示系统设计 (10)3.5 总体电路设计 (12)4 程序设计 (13)4.1 程序设计总方案 (13)4.2 系统子程序设计 (13)5 仿真 (15)5.1软件调试 (15)5.2显示结果及误差分析 (15)5.2.1 显示结果 (15)5.2.2 误差分析 (17)结论 (19)参考文献 (20)附录............................................................................................... 错误!未定义书签。
1 数字电压表的简介1.1数字电压表简介在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
第15章 采用ADC0832的两路电压表设计
![第15章 采用ADC0832的两路电压表设计](https://img.taocdn.com/s3/m/96e66166172ded630b1cb6aa.png)
{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数字电压表(程序+仿真图)](https://img.taocdn.com/s3/m/e994d1b8fc4ffe473268aba2.png)
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位的值,如果不相同舍去。
基于ADC0832数字电压表
![基于ADC0832数字电压表](https://img.taocdn.com/s3/m/d68af420ed630b1c59eeb56a.png)
阿坝师范高等专科学校电子信息工程系课程设计基于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做的数字电压表](https://img.taocdn.com/s3/m/8330e72bbd64783e09122b90.png)
#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();}}。
ADC0832数字电压表
![ADC0832数字电压表](https://img.taocdn.com/s3/m/fd1c960d10a6f524cdbf8509.png)
摘要单片计算机即单片微型计算机。
(Single-Chip Microcomputer),是集CPU ,RAM ,ROM 定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
简易电压表是利用模拟量转换成数字量经单片机处理并反映在显示器上,它可以分析5V的电压,并能用该电压表可测出该电路的电流和电阻值。
本文介绍了电压表的使用和开发环境,仿真系统和开发使用的MCS-51系列的单片机芯片。
在第二章论述了总体设计过程,确定了技术指标及器件的选择第四章着重描述了系统硬件电路设计、硬件设计框图及所使用的各种芯片功能与特性。
关键词:电压表、单片机技术、A/D转换AbstractWith the infiltration in the social field of the c omputer in recent years, the application of the one-chip computer is moving towards deepening constantly, drive tradition is it measure crescent benefit to upgrade day to control at the same time. In measuring in real time and automatically controlled one-chip computer application system, the one-chip computer often uses as a key part, only one-chip computer respect knowledge is not enough, should also follow the structure of the concrete hardware , and direct against and use the software of target's characteristic to combine concretly, in order to do perfectly. The pressure system of much passways of simulation utilizes the pressure sensor to gather the pressure at present and reflect by display, it can analyse excessive Cheng of the pressure , sends out and reports to the police. It can be according to inputting the amount of money of calculating out the object with accurate unit price to adopt the principle of the electronic scale.This text has introduced the research meaning of this system and development environment used in the introduction at first, artificial system of the big good fortune and developing the one-chip computer chip of MCS-51 series used. Have described the overall design process in chapter two, have confirmed chapter three of choice of technical indicator and device has described emphatically that designs the block diagram and various kinds of chip functions and characteristics used in circuit design of the systematic hardware , hardware, have analyzed the design course of the software especially in chapter four.Keyword: Electric voltage form,technology of the one-chip computer , A/D change目录引言 (4)1 核心芯片简介 (5)2 AT89S51简介 (8)2.1 AT89C51芯片的引脚及特点 (8)2.2 AT89C51的主要性能参数 (11)2.3 AT89C51的新功能 (11)3 方案设计 (12)4 软硬件设计 (13)4.1 硬件电路设 (13)4.2 单片机AT89C51外围电路设计 (13)4.3 ADC0832与单片机的接口设计 (14)4.4 显示设计 (14)4.5 电源设计 (14)5 结论 (15)6 致谢 (15)7 参考文献 (16)引言电压、电流、功率是表征电信号能量大小的三个基本参量。
ADC0832驱动程序讲解
![ADC0832驱动程序讲解](https://img.taocdn.com/s3/m/d425285e5e0e7cd184254b35eefdc8d376ee142c.png)
调试技巧与工具
使用调试工具
利用调试工具如串口调试器、示波器等,观察程序运行过程中的关键 变量、信号波形等,以便快速定位问题。
逐步执行
在关键代码段逐步执行,观察程序运Байду номын сангаас状态和数据变化,以便找出问 题所在。
内存检查
使用内存检查工具检查程序是否有内存泄漏、越界等问题。
单元测试与集成测试
进行单元测试和集成测试,确保驱动程序各模块之间的协调工作正常。
它采用CMOS技术,具有低功 耗、低成本、高精度等优点。
ADC0832的接口简单,易于与 微控制器连接,广泛应用于各 种模拟信号的采集和转换。
特点与优势
分辨率
ADC0832的分辨率为8位,可以提供256个 不同的等级。
电源电压
ADC0832的电源电压范围为+5V至+15V, 适应不同的电源需求。
转换时间
ADC0832的转换时间较短,最快可以在1微 秒内完成。
接口
ADC0832采用三线制串行接口,可以方便 地与微控制器连接。
应用领域
数据采集
01
ADC0832可以用于各种数据采集系统,如温度、压力、流量等
传感器信号的采集和转换。
控制系统
02
ADC0832可以用于控制系统的模拟信号输入,实现自动控制和
05 ADC0832驱动程序优化 与调试
性能优化
优化代码结构
采用高效的数据结构和算法,减少不 必要的计算和资源占用。
减少中断处理时间
优化中断处理函数,减少中断处理时 间,提高系统响应速度。
合理使用缓存
根据程序需求,合理使用缓存,提高 数据访问速度。
降低功耗
优化电源管理,降低系统功耗,延长 设备使用寿命。
基于ADC0832的数字电压表
![基于ADC0832的数字电压表](https://img.taocdn.com/s3/m/a68a6377f242336c1eb95ea3.png)
基于ADC0832的数字电压表#include<reg51.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件sbit CS=P3^4; //将CS位定义为P3.4引脚sbit CLK=P1^0; //将CLK位定义为P1.0引脚sbit DIO=P1^1; //将DIO位定义为P1.1引脚//////////////////////////////////////////////////////////////////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。
ADC的数字电压表设计
![ADC的数字电压表设计](https://img.taocdn.com/s3/m/4c99fe33941ea76e59fa042e.png)
目录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设计的两路电压表](https://img.taocdn.com/s3/m/f9d1597f1ed9ad51f11df204.png)
题目:基于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 选题背景近年来计算机技术及微电子器件在工程技术中应用十分广泛。
PCB项目说明书 用 ADC0832 设计的两路电压表(用 LCD1602显示)
![PCB项目说明书 用 ADC0832 设计的两路电压表(用 LCD1602显示)](https://img.taocdn.com/s3/m/fe236274783e0912a2162a1e.png)
利用单片机 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的数字电压表设计说明
![ADC0832的数字电压表设计说明](https://img.taocdn.com/s3/m/6507c79aa8956bec0875e3d2.png)
目录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模数转换应用程序](https://img.taocdn.com/s3/m/b600c106effdc8d376eeaeaad1f34693daef1009.png)
简易数字电压表制作——ADC0832模数转换应用程序/************************************************************** *********************//*简易数字电压表制作——ADC0832模数转换应用程序(C语言版)*//*目标器件:AT89S51 *//*晶振:12.000MHZ *//*编译环境:Keil uVision2 V2.12 *//************************************************************** *********************//*********************************包含头文件********************************/#include#include/*********************************端口定义**********************************/sbit CS = P3^5;sbit Clk = P3^4;sbit DATI = P3^3;sbit DATO = P3^3;/*******************************定义全局变量********************************/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};/************************************************************** **************函数功能: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_();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;_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位的值,如果不相同舍去。
ADC--ADC0832及其应用
![ADC--ADC0832及其应用](https://img.taocdn.com/s3/m/b5567a3083c4bb4cf7ecd1f9.png)
DAC0832一) D/A转换器DAC0832DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。
如图4-82所示,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。
运算放大器输出的模拟量V0为:图4-82由上式可见,输出的模拟量与输入的数字量()成正比,这就实现了从数字量到模拟量的转换。
一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。
输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。
图4-83是DAC0832的逻辑框图和引脚排列。
图4-83D0~D7:数字信号输入端。
ILE:输入寄存器允许,高电平有效。
CS:片选信号,低电平有效。
WR1:写信号1,低电平有效。
XFER:传送控制信号,低电平有效。
WR2:写信号2,低电平有效。
IOUT1、IOUT2:DAC电流输出端。
Rfb:是集成在片内的外接运放的反馈电阻。
Vref:基准电压(-10~10V)。
Vcc:是源电压(+5~+15V)。
AGND:模拟地 NGND:数字地,可与AGND接在一起使用。
DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。
实验线路如图4-84所示。
图4-85IN0~IN7:8路模拟信号输入端。
A1、A2、A0 :地址输入端。
ALE地址锁存允许输入信号,在此脚施加正脉冲,上升沿有效,此时锁存地址码,从而选通相应的模拟信号通道,以便进行A/D转换。
START:启动信号输入端,应在此脚施加正脉冲,当上升沿到达时,内部逐次逼近寄存器复位,在下降沿到达后,开始A/D转换过程。
EOC:转换结束输出信号(转换接受标志),高电平有效。
OE:输入允许信号,高电平有效。
CLOCK(CP):时钟信号输入端,外接时钟频率一般为640kHz。
Vcc:+5V单电源供电。
基于ADC0832的数字电压表设计报告
![基于ADC0832的数字电压表设计报告](https://img.taocdn.com/s3/m/f1907d55f56527d3240c844769eae009581ba2cc.png)
基于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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);}}}。