51单片机数字电压表实验报告
单片机课程设计报告报告——数字电压表
数字电压表单片机课程设计报告班级:姓名:学号:指导教师:2011 年3 月29 日数字电压表电路设计报告一、题目及设计要求采用51系列单片机和ADC 设计一个数字电压表,输入为0~5V 线性模拟信号,输出通过LED 显示,要求显示两位小数。
二、主要技术指标1、数字芯片A/D 转换技术2、单片机控制的数码管显示技术3、单片机的数据处理技术三、方案论证及选择主要设计方框图如下:1、主控芯片方案1:选用专用转化芯片INC7107实现电压的测量和实现,用四位数码管显示出最后的转换电压结果。
缺点是京都比拟低,内部电压转换和控制局部不可控制。
优点是价格低廉。
方案2:选用单片机AT89C51和A/D 转换芯片ADC0809实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。
缺点是价格稍贵;优点是转换京都高,且转换的过程和控制、显示局部可以控制。
基于课程设计的要求和实验室能提供的芯片,我选用了:方案2。
2、显示局部方案1:选用4个单体的共阴极数码管。
优点是价格比拟廉价;缺点是焊接时比拟麻烦,容易出错。
方案2:选用一个四联的共阴极数码管,外加四个三极管驱动。
这个电路几乎没有缺点;优点是便于控制,价格低廉,焊接简单。
基于课程设计的要求和实验室所能提供的仪器,我选用了:方案2。
四、电路设计原理模拟电压经过档位切换到不同的分压电路筛减后,经隔离干扰送到A/D转换器进展A/D转换。
然后送到单片机中进展数据处理。
处理后的数据送到LED 中显示。
同时通过串行通讯与上位通信。
硬件电路及软件程序。
而硬件电路又大体可分为A/D转换电路、LED显示电路,各局部电路的设计及原理将会在硬件电路设计局部详细介绍;程序的设计使用汇编语言编程,利用Keil和PROTEUS 软件对其编译和仿真。
一般I/O接口芯片的驱动能力是很有限的,在LED显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED,此时就需要增加LED驱动电路。
数字电压表实验报告
简易数字电压表目录摘要及关键词 (2)一、实现方案 (3)1.硬件选择方案 (4)2.程序设计 (12)二、系统的测试与结果 (17)三、调试过程及问题解决方法 (18)四、课题设计的收获及心得 (18)参考文献 (18)摘要:本课题实验主要采用AT89S51芯片和ADC0809芯片来完成一个简易的数字电压表,能够对输入的0~5 V的模拟直流电压进行测量,并通过一个4位一体的7段LED数码管进行显示,测量误差约为0.02 V。
该电压表的测量电路主要由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。
A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。
数据处理则由芯片AT89S51来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。
显示模块主要由7段数码管及相应的驱动芯片(74HC245)组成,显示测量到的电压值。
关键词:简易数字电压表、ADC0809、AT89S51。
实现方案:本实验采用AT89S51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1所示。
该电路通过ADC0809芯片采样输入口IN0输入的0~5 V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89S51芯片的P0口。
AT89S51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P1口经驱动芯片74HC245驱动,再传送给数码管。
同时它还通过其三位I/O口P3.0、P3.1、P3.2产生位选信号,控制数码管的亮灭。
另外,AT89S51还控制着ADC0809的工作。
其ALE管脚为ADC0809提供了1MHz工作的时钟脉冲;P2.3控制ADC0809的地址锁存端(ALE);P2.4控制ADC0809的启动端(START);P2.5控制ADC0809的输出允许端(OE);P3.7控制ADC0809的转换结束信号(EOC)。
单片机课程设计报告——数字电压表[1]剖析
数字电压表单片机课程设计报告班级:姓名:学号:指导教师:2011 年3 月29 日数字电压表电路设计报告一、题目及设计要求采用51系列单片机和ADC设计一个数字电压表,输入为0~5V线性模拟信号,输出通过LED显示,要求显示两位小数。
二、主要技术指标1、数字芯片A/D转换技术2、单片机控制的数码管显示技术3、单片机的数据处理技术三、方案论证及选择主要设计方框图如下:1、主控芯片方案1:选用专用转化芯片INC7107实现电压的测量和实现,用四位数码管显示出最后的转换电压结果。
缺点是京都比较低,内部电压转换和控制部分不可控制。
优点是价格低廉。
方案2:选用单片机AT89C51和A/D转换芯片ADC0809实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。
缺点是价格稍贵;优点是转换京都高,且转换的过程和控制、显示部分可以控制。
基于课程设计的要求和实验室能提供的芯片,我选用了:方案2。
2、显示部分方案1:选用4个单体的共阴极数码管。
优点是价格比较便宜;缺点是焊接时比较麻烦,容易出错。
方案2:选用一个四联的共阴极数码管,外加四个三极管驱动。
这个电路几乎没有缺点;优点是便于控制,价格低廉,焊接简单。
基于课程设计的要求和实验室所能提供的仪器,我选用了:方案2。
四、电路设计原理模拟电压经过档位切换到不同的分压电路筛减后,经隔离干扰送到A/D 转换器进行A/D 转换。
然后送到单片机中进行数据处理。
处理后的数据送到LED 中显示。
同时通过串行通讯与上位通信。
硬件电路及软件程序。
而硬件电路又大体可分为A/D 转换电路、LED 显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用汇编语言编程,利用Keil 和PROTEUS 软件对其编译和仿真。
一般I/O 接口芯片的驱动能力是很有限的,在LED 显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED ,此时就需要增加LED 驱动电路。
单片机数字电压表报告
单片机数字电压表设计报告作者:刘兴鹏雷达定杨涛辅导教师:江学焕摘要∙本次设计用单片机芯片AT89s52设计一个数字电压表,能够测量交、直流电压值,四位数码显示。
此系统由电源电路、发光二极管指示、51单片机最小系统、键盘电路、四位数码管动态显示电路、AD采集部分组成。
为使系统更加稳定,使系统整体精度得以保障,本电路使用了TLC549数据转换芯片,单片机系统设计采用AT89S52单片机作为主控芯片,配以RC上电复位电路和11.0592MHZ震荡电路,显示芯片用TEC6122,驱动四位数码管显示。
程序每执行周期耗时缩到最短,这样保证了系统的实时性。
∙关键字:数字电压表、AT89S51单片机、AD采集、四位数码管。
一、硬件部分硬件电路部分已提供,硬件主要是由刘兴鹏焊接成的。
该课题是将单片机应用数字电压表中,由单片机控制AD采样电压,采样到单片机经过转化后显示在数码管上。
其设计方案如下:1、电源电路部分:单片机正常工作电压为5V,输入一个大于5V的电压,电容C3的作用是消除自激振荡,单片机正常工作电压为5V,输入的电压信号经过集成稳压器7805输出+5V电压,电容C3的作用是消除自激振荡,C4的作用滤去电路中可能存在的交流信号,C5消除高频噪声,这样可以保证输出一个+5V的直流电压,电源电路接通无误,则发光二极管发光。
2、单片机最小系统电路:看图可以知道:此电路采用的上电复位,内接方式的时钟电路的工作方式。
其运用到的IC芯片为89S51,其管脚分布如下:(1)单片机晶振的作用把放大器与作为反馈元件的晶体振荡其连接,就构成了内部自激振荡器,爱能够产生振荡时钟脉冲。
(2)单片机晶振的两个电容作用这两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发。
它会影响到晶振的谐振频率和输出幅度,一般订购晶振时候供货方会问你负载电容是多少。
晶振的负载电容=[(Cd*Cg)/(Cd+Cg)]+Cic+△C式中Cd,Cg为分别接在晶振的两个脚上和对地的电容,Cic(集成电路内部电容)+△C(PCB 上电容)经验值为3至5pf。
单片机课程设计实验报告数字电压表
哈尔滨理工大学课程设计报告书课程名称单片机课程设计题目数字电压表院(系)自动化学院班级电技12-3学号1212020301学生姓名蔡成灼指导教师王宏民辅导教师王宏民2014 年12 月25 日课程设计(论文)任务书自动化学院电子信息科学与技术专业12-3班一、课程设计(论文)题目:数字电压表二、课程设计(论文)工作自20 14 年 12 月 26 日起至 20 14 年 12 月 27 日止三、课程设计(论文) 地点: B302四、课程设计(论文)内容要求:1. 本课程设计的目的(1)进一步巩固和加深对“单片机原理及应用”课程基本知识的理解和掌握,了解51系列单片机在项目开发中的应用。
(2)学习单片机硬件和软件设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。
(3)通过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发能力,同时提倡团队合作精神。
2. 课程设计的任务及要求1) 基本要求:(1)对系统功能进行需求分析;(2)提出系统的设计方案;(3)完成硬件设计和编写源程序代码并进行必要的调试。
2) 创新要求ADC0832是双通道,由程序可以任意的选取通道进行显示。
3) 课程设计报告撰写及装订要求课程设计报告的撰写要求表述简明,图表准确。
报告按如下内容和顺序用A4纸进行打印并装订成册。
(1)封面采用统一的课程设计封面,并按要求填写好封面要求的个人信息和选题。
(2)设计任务书(3)评阅书(4)目录(5)正文(6)主要参考文献4) 课程设计完成标准要求:每人按指定题目进行设计,严禁抄袭,要求每人自己动手编写程序,采取同一组同时检查程序及运行结果,检查时同组成员每人陈述自己的分工,同一选题不同组如发现代码完全一样,则双方都作不及格处理。
(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确;(2)能正确回答设计的中老师所提问题;(3)课程设计报告书写规范整齐;(4)心得体会认真总结;(5)程序有创新性;成绩评定实行优秀、良好、中等、及格和不及格五个等级。
数字电压表实训报告
ET0=0;//定时器0关中断
TR0=0;//关闭定时器0
TH0=(65536-50000)/256;//初始化50ms
TL0=(65536-50000)%256;
count++;//定时中断的次数
if(count==20)//计数20次到1s
{
count=0;
second++;
if(second>=59)
Anjian();
}
}
六、实训心得
本次课程对单片机设计与应用使我对单片机技术有了更进一步的熟悉,实践操作和课本的知识有很大联系,但又高于课本,一个看似简单的电路,要动手把它设计出来就比较困难了,因为是设计要求我们在以后的学习中注意这一点,要把课本上所学到的知识和实际联系起来,同时通过本次电路的设计,不但巩固了所学知识,也是我们把理论与实践从真正意义上结合起来,增强了学习的综合能力。
P3_3=0;
delay();
P3_3=1;
P0=table[minute%10];//显示分的个位
P3_4=0;
delay();
P3_4=1;
P0=0x40;//显示“-”
P3_5=0;
delay();
P3_5=1;
P0=table[second/10];//显示秒的十位
P3_6=0;
delay();
sbit P30 =P3^0;
sbit P31 =P3^1;
unsigned int counter,i;
unsigned int DYZ;
unsigned int dis_code[11]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
单片机数字电压实训报告
一、实训目的1. 掌握单片机的基本原理和操作方法。
2. 学会使用单片机进行数字电压的测量。
3. 熟悉数字电压表的硬件电路设计和软件编程。
4. 提高动手实践能力和问题解决能力。
二、实训内容1. 数字电压表概述数字电压表(Digital Voltmeter,简称DVM)是一种将模拟电压信号转换为数字信号的测量仪器。
它具有测量精度高、读数直观、易于操作等优点,广泛应用于电子测量、工业自动化、科学研究等领域。
2. 硬件电路设计(1)单片机选型:选用AT89C51单片机作为核心控制器,具有丰富的片上资源,满足数字电压表设计需求。
(2)模数转换器(ADC)选型:选用ADC0809模数转换器,具有8路模拟输入端口,可实现8路电压信号的采集。
(3)电压输入电路设计:设计多路电压输入电路,包括电压分压、滤波等,确保输入电压信号稳定、准确。
(4)显示模块选择:选用LCD1602液晶显示屏,可实时显示采集到的电压值。
3. 软件设计(1)初始化程序:设置单片机工作模式、波特率、中断等参数,初始化ADC0809和LCD1602。
(2)ADC采集程序:通过单片机控制ADC0809进行电压信号的采集,将模拟电压信号转换为数字信号。
(3)数据处理程序:对采集到的数字电压信号进行处理,计算实际电压值。
(4)显示程序:将计算得到的电压值显示在LCD1602上。
4. 调试与测试(1)硬件调试:检查电路连接是否正确,元器件是否损坏,确保电路正常工作。
(2)软件调试:使用Keil软件进行程序编译、仿真和调试,确保程序运行正确。
(3)功能测试:通过实际测量,验证数字电压表的功能是否满足设计要求。
三、实训结果与分析1. 测量精度通过实际测量,数字电压表在0~5V范围内具有较高的测量精度,最小分辨率为0.019V,误差约为±0.02V。
2. 测量速度数字电压表具有较快的测量速度,可在短时间内完成电压信号的采集、处理和显示。
3. 稳定性和可靠性数字电压表电路设计合理,元器件选用合格,具有较强的稳定性和可靠性。
数字电压表设计实验报告
基于51单片机数字电压表设计实验报告一、设计要求用51单片机控制AD0808进行数模转换,当调节滑动变阻器RV1时,在数码管上显示当前数值,并用电压表测的此时电压与数码管显示电压对比,计算数字电压表的精度二、方案设计数字电压表设计框图 模拟信号可以通过改变滑动变阻器阻值以改变输入电压;A/D 转换将模拟量转换数字量,再送给单片机处理,处理的结果由数码管显示。
三、硬件设计模拟信号 51单片机 A/D 转换数码管显示proteus硬件仿真电路图四、软件设计(1)设计数码管显示电压2.50v程序设计如下(数码显示2.5)#include<reg51.h>void delayms(int x){int i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void main(){while(1){P1=0x00;P2=0xfb;P1=0xdb;delayms(10);P1=0x00;P2=0xfd;P1=0x6d;delayms(10);P1=0x00;P2=0xfe;P1=0x3f;delayms(10);}}运行结果如下:(2)设计采集总程序老师参考程序如下:/******************************************************#include <reg51.h>int AD_Result=187;sbit AD_Start=P3^0;sbit AD_EOC=P3^1;sbit AD_OE=P3^2;Unsigned char DisCode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void DelayTime10ms(unsigned int DelayValue){unsigned int x,y;for(x=0;x<DelayValue;x++)for(y=0;y<1827;y++);}void Display(){char one,ten,hundred;AD_Result=AD_Result*5.0/255*100;one=AD_Result%10;ten=AD_Result/10%10;hundred=AD_Result/100;P2=0xfb;P1=DisCode[hundred]|0x80;DelayTime10ms(1);P2=0xfd;P1=DisCode[ten];DelayTime10ms(1);P2=0xfe;P1=DisCode[one];DelayTime10ms(1);}void AD_Test(){if(AD_EOC==1){AD_OE=1;AD_Result=P0;AD_OE=0;AD_Start=0;AD_Start=1;AD_Start=0;}}void main(){AD_OE=0;AD_Start=0;AD_Start=1;AD_Start=0;while(1){Display();AD_Test();}}************************************************************************/ 自己编写程序如下:#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar A1=5,A2,A3;uchar adval;sbit ST=P3^0; //定义AD的启动start端口;sbit EOC=P3^1; //定义EOC引脚,EOC转换完成sbit OE=P3^2; //定义AD允许数据输出端uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delayms(int x){ int i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void display(){P2=0xff;P2=0xfb;P1=table[A1];delayms(2);P2=0xff;P2=0xfd;P1=table[A2];delayms(2);P2=0xff;P2=0xfe;P1=table[A3];delayms(2);}void AD_measure(){if(EOC==1){OE=1;adval=P0;OE=0;A1=adval/100;A2=adval%100/10;A3=adval%10;ST=0;ST=1;ST=0;}}void main(){OE=0;ST=0;ST=1;ST=0;while(1){AD_measure();display();}}五、总结在此次实验中遇到以下问题,首先是写显示程序,画原理图时把数码管接口顺序接反了导致显示结果出现乱码;其次在编写A/D转换程序时容易出错A/D0808引脚功能不会用;最后是显示整个量程数据时不容易理解,在这里要特别注意。
数字电压表设计报告
绪论本文将介绍一种以51单片机为核心的电压测量仪表,它能够测量电压量,并且测量结果能够通过数码管显示。
本文将就这一系统的硬件电路部分和软件程序部分分别作以介绍。
在硬件部分,本文就系统的各个组成模块的原理作了详细的介绍。
另外,在每一模块电路中都对元器件的选择作了简单的介绍。
在软件部分,详细阐述了各个模块电路的软件设计方法和设计中的细节。
本设计要求采用单片机进行控制,由于单片机的有效输入输出信号均为数字信号,而对于整个系统的前向通道有效信号均应为模拟信号,所以在设计过程中必然包括模拟量转换为数字量单元的设计。
另外,前向通道的设计还应包括对模拟信号的采集部分。
本文根据课题要求设计出0-5V的数字电压表。
第一章硬件部分的设计1.1 电路元器件选择数字电压表要求实现测定电压值并显示电压值。
这就要求数字电压表能够将电压这一模拟量转换成数字量输入到单片机,再经单片机控制LED 数码管显示电压值数值。
由于任务要求是实现本数字电压表0-5V电压测量,所以我们采用的A/D转换芯片为ADC0832,可以达到设计要求。
由于我们对AVR单片机还在学习过程中,我们用我们比较熟悉的51单片机来实现LED数码管显示功能。
1.2 ADC0832简介ADC0832是一个8位D/A转换器。
单电源供电,从+5V~+15V均可正常工作。
基准电压的范围为±10V;电流建立时间为1μS;CMOS工艺,低功耗20mW。
ADC0832转换器芯片为20引脚,双列直插式封装,其引脚排列如图1所示。
ADC0832内部结构框图如图所示。
该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存。
使用时数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级直通)形式。
1.3 ADC0832引脚功能图1 ADC0832引脚图1.4 ADC0832内部结构图逐次逼近型A/D转换器ADC0832由八路模拟开关、地址锁存与译码器、比较器、D/A转换器、寄存器、控制电路和三态输出锁存器等组成。
0-5V数字万用表实验报告(基于51单片机)
delayms(5); P0=0x00; dula=1; dula=0; P0=0x7b; wela=1; wela=0; P0=table[shi]; dula=1; dula=0; delayms(5); P0=0x00; dula=1; dula=0; P0=0x77; wela=1; wela=0; P0=table[ge]; dula=1; dula=0; delayms(5); } void main() { ulong a,A1,A2,A3,adval; wela=1; P0=0x7f;//置 CSAD 为 0,选通 ADCS 后不必再管 ADCS。 wela=0; while(1) { adwr=1; _nop_(); adwr=0;//启动 A/D 转换。 _nop_(); adwr=1; for(a=10;a>0;a--)//鉴于实验板 A/D 频率较低,启动 A/D 后留出时间进行
《 0-5V 数字万用表》实验报告
姓名 任课教师 实验地点 实验目的: 制作一个简易的数字万用表。 院系 指导教师 实验时间 学号 评阅教师 2016 年 12 月 10 日
实验要求: 要求测量电压为0-5V,显示的电压值精确到小数点后两位。
实验原理: 利用A/D转换器ADC0804将电压的模拟信号转换为数字信号,在数码管上 显示。
//转换。 { display(A1,A2,A3); } P1=0xff;//读取 P1 口之前先全赋 1。 adrd=1;//选通 ADCS。 _nop_(); adrd=0; _nop_(); adval=P1;//将读取的 A/D 数据赋给 P1 口。 adrd=1; adval=adval/255.0*500;//利用量化方法,将测量范围扩展为 0-5V,提升精 //度。 A1=adval/100; A2=adval%100/10; A3=adval%10; } } 仿真图:(移动 RV1 改变阻值,可看到数码管的现象,RP1 与单片机之间 的线需按住 Ctrl 键画, 这样可以穿过引线的圆圈 (有网络标号的 D0-D7) ) 单片机模块
单片机实习报告-数字电压表
电气信息工程学院单片机实习报告课题名称:数字电压表专业:自动化姓名:韩立岩班级学号:08-2-7指导教师:刘海波成绩:二○一一年七月一日前言随着电子技术的迅速发展,特别是随着大规模集成电路产生而出现的微型计算机,给人类生活带来了根本的改变,如果说微型计算机的出现体现了现代科学研究得到了质的飞跃,那么可以毫不夸张的说,单片机技术的出现则是给现代工业测控领域带来了一次新的技术革命。
目前,单片机以其高可靠性、高性能价格比、在工业控制系数据采集系统、智能化仪器仪表、办公自动化等诸多领域得到极为广泛的应用,并以走入家庭,从洗衣机、微波炉到音响、汽车,到处都可见单片机的踪影,因此,单片机技术开发和应用水平已逐步成为一个国家工业发展水平的标志之一。
什么是单片机呢?单片机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括CPU、随机存取存储器RAM、只读存储器ROM、基本输入\输出接口电路、定时\计数器等部件制作在一块芯片上,构成一个完整的微型计算机,从而实现微型计算机的基本功能。
单片机实质上是一个芯片。
它具有结构简单、控制功能强、可靠性高、体积小、价格低等优点,单片机技术作为计算机技术的重要分支,广泛的应用于工业控制、智能化仪器仪表、家用电器、电子玩具等各个领域目录一、题目及设计要求 (3)二、实验内容 (3)三、实验原理 (4)1、用电位计提供模拟电压 (4)2、用串行A/D TLC2543采集电压 (5)3、串行显示595完成LED显示 (9)4、LCD12864显示模块 (11)5 、单片机原理 (14)四、设计程序: (16)五、调试过程及测试结果 (24)六、实习心得 (26)七、参考文献 (28)一、课程设计的要求、目的及意义要求:采用A/D转换芯片采集0~5V连续可变的模拟电压信号,转换为8位数字信号00~FFH后,送单片机处理,并在5位液晶显示器上显示出0.000~5.000V。
数字电压表的设计实验报告
.课程设计——基于51数字电压表设计物理与电子信息学院电子信息工程1、课程设计要求使用单片机AT89C52和ADC0832设计一个数字电压表,能够测量0-5V之间的直流电压值,两位数码显示。
在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为5V;能用两位LED进行轮流显示或单路选择显示,显示精度0.1伏。
2、硬件单元电路设计AT89S52单片机简介AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS -51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级,2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
ADC0832模数转换器简介ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。
由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。
学习并使用ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。
图1芯片接口说明:·CS_ 片选使能,低电平芯片使能。
·CH0 模拟输入通道0,或作为IN+/-使用。
·CH1 模拟输入通道1,或作为IN+/-使用。
·GND 芯片参考0 电位(地)。
利用51单片机与ADC0809和数码管设计数字电压表
利用51单片机与ADC0809和数码管设计数字电压表一、课题功能描述:利用单片机AT89C51 芯片与ADC0809 芯片设计一个数字电压表,能够测量0―5V 之间的直流电压,三位数码显示。
二、程序设计本实验采用AT89C51 单片机芯片配合 ADC0809 模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1 所示。
该电路通过 ADC0809 芯片采样输入口AI0 输入的0~5V 的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7 传送给 AT89C51 芯片的F0口。
AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过P1 口传送给数码管。
同时它还通过其三位 I/O 口 P3.0、P3.1、P3.2 产生位片选信号,控制数码管的亮灭。
另外,AT89C51 还控制着 ADC0809 的工作。
其ALE管脚为 ADC0809提供了 1MHZ 工作的时钟脉冲;P2.3 控制 ADC0809 的地址锁存端(ALE); P2.4 控制 ADC0809 的启动端(START); P2.5 控制 ADC0809 的输出允许端(OE); P3.7 控制 ADC0809 的转换结束信号(EOC)。
电路原理图如下:三、器件清单:1 . AT89S51 芯片 1块2 . ADC0809 芯片 1块3 . 74HC245 芯片 1块4 . 数码管 1个5 . 6MHZ 晶振 1个6 . 30pF 电容 2个7 . 10uF 电解电容 1个8 . 复位电容 1个9 . 510Ω电阻 8个10. 10KΩ电阻 1个11. 导线若干四、程序设计1、主程序设计由于ADC0809 在进行A/D转换时需要有CKL 信号,而此时的 ADC0809 的CLK 是连接在 AT89C51 单片机的30管脚,也就是要求从30管脚输出CLK 信号供图1-2主程序流程图ADC0809 使用。
基于51单片机的数字电压表
课程设计题目数字电压表学生姓名张玉龙学号20081341056学院信息与控制学院专业测控技术与仪器指导教师葛化敏二O一一年六月三十日基于51单片机的数字电压表一、设计内容:先在proteus 上进行软件仿真设计,在仿真实现的基础上,要求完成部分硬件模块的制作和系统联调,实验内容为设计一个数字电压表,实现从模拟信号输入到数字信号输出的基本功能。
二、设计要求:采用51系列单片机和ADC 设计一个数字电压表电路,通过调节滑动变阻器改变电压,在LCD 液晶屏上显示其相应的电压值,要求电压精确到小数点后第四位,显示格式为,LCD 第一行前一段为“20081341056”(班级同学张玉龙的学号),后一段则为“V :”(电压单位);第二行的前一段为“Class 2”(班级2班),后一段则显示电压值,单位为“V ”。
三、设计原理:通过在Keil 软件对单片机AT89C52进行编程,硬件电路中单片机与ADC0804及LCD 显示屏连接。
P0与ADC0804相连接,P1与LCD 连接。
通过start()子程序启动ADC0804,通过init ()子程序初始化LCD 。
模拟信号通过ADC0804的VIN+引脚输入到ADC0804中转换为数字信号,P0获得此数字量后,经过处理得到每位的数据后,通过P1口写数据到LCD上图为基本的原理图 四、实验电路图及仿真结果:51系列 单片机电压输入五、程序代码:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit lcdrs=P3^0;sbit lcden=P3^1;sbit wrad=P3^6;sbit rdad=P3^7;uint temp,a1,a2,a3,a4,a5,num;uchar code table[]="0123456789.";//显示数字uchar code table1[]="20081341056 V:"; uchar code table2[]="Class 2";void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=100;y>0;y--);}void start()//启动AD{wrad=1;wrad=0;wrad=1;}void write_command(uchar com)//写命令{lcdrs=0;P1=com;delay(2);lcden=1;delay(2);lcden=0;}void write_data(uchar date)//写数据{lcdrs=1;P1=date;delay(5);lcden=1;delay(5);lcden=0;}void init()//lcd初始化{lcden=0;write_command(0x38);//设置16x2显示write_command(0x0c);//设置光标write_command(0x06);//写字符指针加1,光标加1write_command(0x01);//清屏}void main(){init();//LCD初始化write_command(0x80);//LCD写地址for(num=0;num<15;num++){write_data(table1[num]);delay(5);}while(1){start();//启动ADdelay(50);rdad=0; //rd低脉冲读数据delay(50);temp=P0;a1=(temp*50000/255)/10000;//区分位数,最高位 255*50000/255/10000=5.0000V a2=(temp*50000/255)%10000/1000;a3=(temp*50000/255)%1000/100;a4=(temp*50000/255)%100/10;a5=(temp*50000/255)%10;write_command(0x80+0x40);for(num=0;num<7;num++){write_data(table2[num]);delay(5);}write_command(0x80+0x49);//LCD写地址write_data(table[a1]);delay(1);write_data(table[10]);delay(1);write_data(table[a2]);delay(1);write_data(table[a3]);delay(1);write_data(table[a4]);delay(1);write_data(table[a5]);delay(1);write_data('V');delay(1);}}六、心得体会:课程设计中不得不遇到一些问题,但只要自己有恒心有毅力,终究会克服一切困难;在设计中我们要学会运用keil软件及protues软件对我们设计的电路不断地进行仿真、调试和修正,遇到程序问题时我们应该学会一段一段地去排查,最终解决所有问题;另外,还应熟练掌握每个芯片及器件如51单片机及ADC0804和LM016L每个引脚的作用和接法及各种状态的判断。
51单片机数字电压表设计
51单片机数字电压表设计51单片机数字电压表设计题目要求:1. 设计要求以单片机为核心,设计一个数字电压表。
采用中断方式,对2路0~5V的模拟电压进行循环采集,采集的数据送LED显示,并存入内存。
超过界限时指示灯闪烁。
2. 实验原理本题目本质上是以单片机为控制器,ADC0809为ADC器件的AD 转换电路,设计要求的电压显示,是对ADC采集所得信号的进一步处理。
为得到可读的电压值,需根据ADC的原理,对采集所得的信号进行计算,并显示在LED上。
本项目中ADC0809的参考电压为+5V,根据定义,采集所得的二进制信号addata所指代的电压值为:而若将其显示到小数点后两位,不考虑小数点的存在(将其乘以100),其计算的数值为:。
将小数点显示在第二位数码管上,即为实际的电压。
本示例程序将1.25 V和2.5 V作为两路输入的报警值,反映在二进制数字上,分别为0x40和0x80。
当AD结果超过这一数值时,将会出现二极管闪烁和蜂鸣器发声。
运行截图:程序代码:#include#include //定义绝对地址访问#include#define uchar unsigned char#define uint unsigned intsbit RS=P1^7; //定义LCD1602端口线sbit RW=P1^6;sbit EN=P1^5;sbit ST=P3^7; //定义0808控制线sbit OE=P3^6;sbit EOC=P1^3;sbit CLK=P1^4;sbit buzzer = P1^1; //喇叭sbit alarm = P1^2; //leduchar data chnumber; //存放当前通道号uchar disbuffer[4]={0,'.',0,0}; //定义显示缓冲区uchar data ad_data[8]={0,0,0,0,0,0,0,0}; //0808的8个通道转换数据缓冲区uint temp;//检查忙函数void fbusy(){P0 = 0xff;RS = 0;RW = 1;EN = 1;EN = 0;while((P0 & 0x80)){EN = 0;EN = 1;}}//写命令函数void wc51r(uchar j){fbusy();EN = 0;RS = 0;RW = 0;EN = 1;P0 = j;EN = 0;}//写数据函数void wc51ddr(uchar j){fbusy(); //读状态;EN = 0;RS = 1;RW = 0;EN = 1;P0 = j;EN = 0;}void init(){wc51r(0x01); //清屏wc51r(0x38); //使用8位数据,显示两行,使用5*7的字型wc51r(0x0c); //显示器开,光标开,字符不闪烁wc51r(0x06); //字符不动,光标自动右移一格}/********0808转换子函数********/void test(){uchar m;for (m=0;m<8;m++){P3=m; //送通道地址ST=0;_nop_();_nop_();ST=1;_nop_();_nop_();ST=0;//锁存通道地址启动转换_nop_();_nop_();_nop_();_nop_();while (EOC==0); //等待转换结束OE=1;ad_data[m]=P2;OE=0; //读取当前通道转换数据}}//************延时函数************void delay(uint i) //延时函数{uint y,j;for (j=0;j<i;j++){< p="">for (y=0;y<0xff;y++){;}}}//定时器/计数器T0产生0808的时钟void T0X(void)interrupt 1 using 0{CLK=~CLK;}void main(void){uchar i;uint temp1;SP=0X50;TMOD=0x02;TH0=246;TL0=246;ET0=1;EA=1;TR0=1;delay(10);init(); //lcd显示器初始化wc51r(0x80); //写入显示缓冲区起始地址为第1行第1列wc51ddr('V'); //第1行第1Vwc51ddr('A'); //第1行第2 Awc51ddr('L'); //第1行第3列显示字母Lwc51ddr('U'); //第1行第4列显示字母Uwc51ddr('E'); //第1行第5列显示字母 Ewc51ddr('0'); //第1行第6列显示数字0wc51ddr(':'); //第1行第7列显示字母:wc51r(0xC0); //写入显示缓冲区起始地址为第2行第1列wc51ddr('V'); //第2行第1Vwc51ddr('A'); //第2行第2 Awc51ddr('L'); //第2行第3列显示字母Lwc51ddr('U'); //第2行第4列显示字母Uwc51ddr('E'); //第2行第5列显示字母 Ewc51ddr('1'); //第2行第6列显示数字 1wc51ddr(':'); //第2行第7列显示字母:alarm = 0; //关闭led和报警buzzer = 0;while(1)</i;j++){<>。
单片机数字电压表设计报告
《单片机原理与接口技术》课程设计报告姓名梁家余学号 0314院系自机学院班级电气三班指导教师黄钺冯维杰王玮2012 年 06月目录4) LED显示器与单片机接口设计 (9)9.程序设计 (11)1)程序设计总方案 (11)2)系统子程序设计 (11)(1)初始化程序 (11)10.仿真 (12)1)软件调试 (12)11.显示结果及误差分析 (13)二、总结 (14)三、参考文献 (15)四、附录 (15)一、单片机数字电压表设计1.设计任务基于MCS-51系列单片机AT89C51,设计一个能测量0~5V直流电压的数字电压表 2.设计要求1)选用A/D转换器ADC0808,测定0——+5V范围内的直流电压值。
2)采集的数据送四位数码管实时显示。
3)@实现多路电压循环测量和循环显示。
4)@实现0——500mA电流的测量和显示。
5)实现功率的测量。
3. 设计思路1)根据设计要求,选择AT89C51单片机为核心控制器件。
2)A/D转换采用ADC0808实现,与单片机的接口为P1口和P2口的高四位引脚。
3)电压显示采用4位一体的LED数码管。
4)LED数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2低四位4) LED显示器与单片机接口设计 (9)9.程序设计 (11)1)程序设计总方案 (11)2)系统子程序设计 (11)(1)初始化程序 (11)10.仿真 (12)1)软件调试 (12)11.显示结果及误差分析 (13)二、总结 (14)三、参考文献 (15)四、附录 (15)产生。
4.硬件电路设计1)转换过程如下:开始时,寄存器各位清零,转换时,先将最高位置1,把数据送入A/D转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则1保留,如果转换的模拟量比输入的模拟量大,则1不保留,然后从第二位依次重复上述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的二进制数字量[5]。
- 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<reg52.h>
#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); }
}
五、实验结果
六、项目总结
通过这次实验设计,锻炼我们综合运用知识,提出问题,分析问题,及解决问题的能力。
我感慨颇多,在着手设计的这段日子里,我又学到了很多东西。
特别是理论联系实际。
我认为掌握单片机的应用及开发技术是最基本的也是必要的。
单片机是以后从事相关嵌入式研发最为基本的入门芯片。
所以学好单片机是我们电子类的必要任务。
通过这次单片机课程设计的顺利完成,离不开付老师指导,也离不开班上同学的耐心帮助。
在此,我对所有帮助过我的老师和同学表示我真挚的感谢!。