基于51单片机的模数转换(AD)实验设计

合集下载

基于51单片机和ADC0809多通道模数转换的设计与实现

基于51单片机和ADC0809多通道模数转换的设计与实现

摘要本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有非常重要的作用。

本文介绍的重点是数据采集系统,而该系统硬件部分的重心在于单片机。

硬件部分是以单片机为核心,还包括A/D模数转换模块,LCD1602显示模块部分。

8路被测电压通过模数转换器ADC0809进行模数转换,实现对采集到的数据进行模拟量到数字量的转换,并将转换后的数据通过LCD1602显示器来显示所采集的结果,并且可以通过按键来查看任意通路的电压值,整个系统具有操作方便、线路简单、测量误差小等优点。

关键词:单片机AT89S52、模数转换器ADC0809、数据采集、LCD1602显示器目录摘要 01、方案设计 (2)2、硬件电路的设计 (3)2.1单片机的最小系统设计 (3)2.2 ADC0809模数转换器设计电路 (4)2.2.1 ADC0809的结构功能 (4)2.2.2 ADC0809的工作时序 (7)2.2.3 ADC0809与AT89C52单片机的接口电路 (8)2.3 LCD1602显示电路 (8)2.4 键盘与单片机连接电路 (11)2.5系统整体电路图 (11)3、软件设计 (12)4、系统仿真和测试结果 (13)5、性能分析 (14)6、心得与体会 (15)7、参考文献 (15)附录一:源程序 (15)附录二:本科生能力拓展训练成绩评定表 (21)1、方案设计根据设计要求,采用的方案如下:硬件部分实现对8路数据采集和显示的功能,包括MCS-51单片机、ADC0809、LCD1602;软件部分实现单片机对8路输入数据的采集以及对LCD1602的显示操作。

主要设计思想:单片机P1与ADC0809相连,P0与LCD1602连接。

模拟信号通过IN0——IN7输入到ADC0809中转换为数字信号,P1获得此值后,经过处理得到每位的数据后,通过P0口写数据到LCD屏上。

数据采集电路的原理框如图1所示。

51单片机ad转换代码及仿真

51单片机ad转换代码及仿真

51单片机ad转换代码及仿真一、前言51单片机是一种广泛应用于嵌入式系统领域的微控制器,其具有低功耗、高性能、易学易用等特点。

其中,AD转换模块是其重要的功能之一,可以实现模拟信号到数字信号的转换。

本文将介绍51单片机AD 转换的相关知识和代码实现,并通过仿真验证其正确性。

二、51单片机AD转换原理1. AD转换概述AD转换(Analog-to-Digital Conversion)是指将模拟信号(如声音、图像等)转化为数字信号的过程。

在嵌入式系统中,AD转换通常用于采集外部传感器等模拟量信号,并将其转化为数字量进行处理。

2. 51单片机AD转换模块51单片机内置了一个8位AD转换模块,可以对0~5V范围内的模拟信号进行采样和转换。

该模块包含以下主要部分:(1)输入端:可接受外部0~5V范围内的模拟信号。

(2)采样保持电路:在采样期间对输入信号进行保持,以避免采样过程中信号波动。

(3)比较器:将输入信号与参考电压进行比较,并输出比较结果。

(4)计数器:对比较结果进行计数,得到AD转换的结果。

(5)控制逻辑:控制采样、保持、比较和计数等过程。

3. AD转换精度AD转换精度是指数字信号与模拟信号之间的误差,通常用位数来表示。

例如,8位AD转换器可以将模拟信号分成256个等级,即精度为1/256。

因此,AD转换精度越高,数字信号与模拟信号之间的误差越小。

4. AD转换速率AD转换速率是指单位时间内进行的AD转换次数。

在51单片机中,AD转换速率受到时钟频率和采样时间的限制。

因此,在实际应用中需要根据具体情况选择合适的时钟频率和采样时间以满足要求的转换速率。

三、51单片机AD转换代码实现以下为51单片机AD转换代码实现:```#include <reg52.h>sbit IN = P1^0; // 定义输入端口sbit OUT = P2^0; // 定义输出端口void main(){unsigned char result;while (1){ADC_CONTR = 0x90; // 打开ADCADC_CONTR |= 0x08; // 开始采样while (!(ADC_CONTR & 0x10)); // 等待采样完成result = ADC_RES; // 读取结果OUT = result; // 输出结果}}```代码解释:(1)定义输入输出端口:使用sbit关键字定义输入端口和输出端口。

51单片机课程设计 AD转换

51单片机课程设计 AD转换

成绩课程设计报告华中师范大学武汉传媒学院传媒技术学院电子信息工程2011仅发布百度文库,版权所有.AD转换要求:A.使用单片机实现AD转换B.可以实现一位AD转换,并显示(保留4位数字)设计框图:方案设计:AD转换时单片机设计比较重要的实验。

模数转换芯片种类多,可以满足不同用途和不同精度功耗等。

工作原理:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。

此地址经译码选通8路模拟输入之一到比较器。

START上升沿将逐次逼近寄存器复位。

下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。

直到A/D转换完成,EOC 变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。

当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。

硬件原理图:程序流程图:仿真图:制作实物图:AD转换模块:最小系统及显示:整体效果:调试:调试最多的是数码管显示问题扫描太慢显示会太暗和有闪烁问题,通过不断改变延迟来调整达到最佳状态。

心得体会:通过这次的实验设计特别是前期的电路设计,和芯片选择以及后期的实物焊接。

对我们专业的电路认识了很多,学到了很多。

做一个东西要选择你要的芯片的,你必须要先了解一些大体的东西当你选择好后你更要全面了解它的性能。

对于单片机硬件来说要了解芯片,你要如何去驱动他来满足你的要求。

这对于编程和看懂芯片的时序有着高要求。

毕竟现在硬件更新换代太快,必须要学习怎么去设计去编写你要的程序来控制它。

这是我这次实验最深刻的理解。

这次实验也培养了我团队合作能力积极主动沟通,遇到问题一起解决。

对于现在的我们即将走出校门的人来说意义重大。

同时这次实验也大大拓宽了我的视野我还有很多东西要去理解去学习。

原程序:#include <reg51.h> // 引用标准库的头文件#include <intrins.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intuint temp=0;sbit ST=P3^6; //启动信号sbit EOC=P3^3; //转换结束信号,连到外部中断1口,转换结束后进入外部中断sbit OE=P3^7; //输出使能//sbit ls=P2^7;sbit dig_hc595_sh_dr=P1^7; //数码管的74HC595程序sbit dig_hc595_st_dr=P1^6;sbit dig_hc595_ds_dr=P1^5;void initial_myself();void initial_peripheral();void delay_short(unsigned int uiDelayShort);void delay_long(unsigned int uiDelayLong);//void display_service();void display_drive();void dis_service(int temp);//unsigned char ucDigShow8; //第8位数码管要显示的内容//unsigned char ucDigShow7; //第7位数码管要显示的内容//unsigned char ucDigShow6; //第6位数码管要显示的内容//unsigned char ucDigShow5; //第5位数码管要显示的内容unsigned char ucDigShow4; //第4位数码管要显示的内容unsigned char ucDigShow3; //第3位数码管要显示的内容unsigned char ucDigShow2; //第2位数码管要显示的内容unsigned char ucDigShow1; //第1位数码管要显示的内容unsigned char code dig_table[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char ucDigShowTemp=0; //临时中间变量unsigned char ucDisplayDriveStep=1; //动态扫描数码管的步骤变量void dig_hc595_drive(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01);main(){initial_myself();//初始化单片机delay_long(100);initial_peripheral(); //初始化外围while(1){P0=0xff;ST=0;ST=1;ST=0;// 启动A/D转换while(EOC==0);OE=1;//EA=0;//temp=0xff;dis_service(temp);//EA=0;display_drive();//显示电压值//delay_long(1);//EA=1;OE=0;}}void dis_service(int temp){int Tp=0;Tp=temp*1.0/255*500;ucDigShow1 = dig_table[Tp / 1000];ucDigShow2 = dig_table[Tp % 1000 / 100] | 0x80;ucDigShow3 = dig_table[Tp % 100 / 10] ;ucDigShow4 = dig_table[Tp % 10 / 1];}void display_drive()//显示电压值{uchar i=1;for(i=1;i<5;i++){ switch(i){case 1: //显示第1位ucDigShowTemp=ucDigShow1;dig_hc595_drive(ucDigShowTemp,0xfe);break;case 2: //显示第2位ucDigShowTemp=ucDigShow2;break;case 3: //显示第3位ucDigShowTemp=ucDigShow3;dig_hc595_drive(ucDigShowTemp,0xfb);break;case 4: //显示第4位ucDigShowTemp=ucDigShow4;dig_hc595_drive(ucDigShowTemp,0xf7);break;/*case 5: //显示第5位ucDigShowTemp=ucDigShow5;dig_hc595_drive(ucDigShowTemp,0xef);break;case 6: //显示第6位ucDigShowTemp=ucDigShow6;dig_hc595_drive(ucDigShowTemp,0xdf);break;case 7: //显示第7位ucDigShowTemp=ucDigShow7;break;case 8: //显示第8位ucDigShowTemp=ucDigShow8;dig_hc595_drive(ucDigShowTemp,0x7f);break; */}}}//数码管的74HC595驱动函数void dig_hc595_drive(unsigned char ucDigStatusTemp16_09,unsigned char ucDigStatusTemp08_01){unsigned char i;unsigned char ucTempData;dig_hc595_sh_dr=0;dig_hc595_st_dr=0;ucTempData=ucDigStatusTemp16_09; //先送高8位for(i=0;i<8;i++){if(ucTempData>=0x80)dig_hc595_ds_dr=1;else dig_hc595_ds_dr=0;dig_hc595_sh_dr=0; //SH引脚的上升沿把数据送入寄存器delay_short(1);dig_hc595_sh_dr=1;delay_short(1);ucTempData=ucTempData<<1;}ucTempData=ucDigStatusTemp08_01; //再先送低8位for(i=0;i<8;i++){if(ucTempData>=0x80)dig_hc595_ds_dr=1;else dig_hc595_ds_dr=0;dig_hc595_sh_dr=0; //SH引脚的上升沿把数据送入寄存器delay_short(1);dig_hc595_sh_dr=1;delay_short(1);ucTempData=ucTempData<<1;}dig_hc595_st_dr=0; //ST引脚把两个寄存器的数据更新输出到74HC595的输出引脚上并且锁存起来delay_short(1);dig_hc595_st_dr=1;delay_short(1);dig_hc595_sh_dr=0; //拉低,抗干扰就增强dig_hc595_st_dr=0;dig_hc595_ds_dr=0;}void delay_short(unsigned int uiDelayShort){unsigned int i;for(i=0;i<uiDelayShort;i++){;}void delay_long(unsigned int uiDelayLong) {unsigned int i;unsigned int j;for(i=0;i<uiDelayLong;i++){for(j=0;j<500;j++){;}}}void initial_myself(){P0=0xff;P1=0xff;P2=0xff;P3=0xff;TMOD=0x02;//T1工作模式2TH0=0x14;TL0=0x00;void initial_peripheral() //初始化外围{IE=0x82; //IE.7位为1表示CPU开放中断,IE.1位也为1,表示允许定时器T0溢出中断TR0=1; //使能定时器P0=0xff; //选择ADC0809的通道7(111)(P1.0~P1.2)//ls=0;ST=0;OE=0;IT1=1; //下降沿触发EX1=1; //使能外部中断1EA=1; //允许全局中断}void counter1(void) interrupt 2 using 2{EX1=0;temp=P0;//temp=0xfe;EX1=1;}。

51单片机ad转换程序解析

51单片机ad转换程序解析

51单片机ad转换程序解析1.引言1.1 概述概述部分旨在介绍本篇文章的主题——51单片机AD转换程序,并对文章的结构和目的进行简要说明。

51单片机是指Intel公司推出的一种单片机芯片,它广泛应用于嵌入式系统中。

而AD转换则是模拟信号转换为数字信号的过程,是嵌入式系统中的重要功能之一。

本文将详细解析51单片机中的AD转换程序。

文章结构分为引言、正文和结论三个部分。

引言部分将给读者介绍本篇文章的内容和结构安排,正文部分将详细讲解51单片机AD转换程序的相关要点,而结论部分将总结正文中各个要点的内容,以便读者能够更好地理解和掌握51单片机AD转换程序的实现原理。

本文的目的在于向读者提供一份对51单片机AD转换程序的详细解析,使读者能够了解51单片机的AD转换功能以及如何在程序中进行相应的设置和操作。

通过本文的学习,读者将掌握如何使用51单片机进行模拟信号的采集和处理,为后续的嵌入式系统设计和开发提供基础。

在下一节中,我们将开始介绍文章的第一个要点,详细讲解51单片机AD转换程序中的相关知识和技巧。

敬请期待!1.2 文章结构文章结构部分主要是对整篇文章的框架和内容进行介绍和归纳,以帮助读者更好地理解文章的组织和内容安排。

本文以"51单片机AD转换程序解析"为主题,结构分为引言、正文和结论三个部分。

引言部分主要包括概述、文章结构和目的三个方面。

首先,通过对单片机AD转换程序的解析,来讲解其实现原理和功能。

其次,介绍文章的结构,帮助读者明确整篇文章的主要内容和组织方式。

再次,阐明文章的目的,即为读者提供关于51单片机AD转换程序的详尽解析和指导,帮助读者深入了解该技术并进行实际应用。

正文部分则分为两个要点,即第一个要点和第二个要点。

第一个要点可以从AD转换的基本概念入手,介绍51单片机AD转换的原理和流程。

包括输入电压的采样、AD转换器的工作原理、ADC的配置和控制等方面的内容。

在此基础上,深入解析51单片机AD转换程序的编写和调用方法,包括编程语言、寄存器的配置、数据的获取和处理等。

基于51单片机实现ADC0808数模转换与显示课程设计

基于51单片机实现ADC0808数模转换与显示课程设计

综合课程设计题目基于51单片机实现ADC0808数模转换与显示毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

51单片机ADDA转换教程

51单片机ADDA转换教程
把量化的结果用代码 (二进制或二 - 十 进制 )表示出来,称为 “ 编码 ” 。
3. 采样 - 保持电路
RF
R1
ui
T
CF
+
uo
UL
当 UL为高电平时, MOS管T导通, ui 经电阻 R1和管T向电容 CF充电 。 当 UL为低电平时, MOS管T截止, 忽略各种漏电流,电容CF上的电压得以保持 。
造成转换误差的原因主要有 : 参考电压 VREF的波动 ; 运算放大器的零点漂移 ; 模拟开关的导通内阻和导通电压 ;
电阻网络中的电阻值偏差 ;…...
10. 2. 4 D/A转换器的主要技术指标
三、D/A转换器的转换速度
为了便于定量地描述D/A转换器的转换 速度 ,定义了建立时间 tS 和转换速率 SR两 个参数 。
10. 3. 1 采样定理
在A / D转换中,因为输入的模拟量在 时间上是连续的,而输出的数字信号是离 散量,所以进行转换时只能在一系列选定 的瞬间 (亦即瞬间坐标轴上的一些规定点) 对输入的模拟信号采样,然后再把这些采 样值转换为输出的数字量 。
A / D 转换过程应包括 :采样、 保持、 量化、 编码 这四个步骤 。
§10.1 概述
模 拟 信 A/D 号
计 算 机
模 拟 D/A 信 号
A / D : Analog to Digital D / A : Digital to Analog
§10. 2 数 / 模 转换器 ( DAC )
10. 2. 1 权电阻网络型 10. 2. 2 权电流型 10. 2. 3 T型电阻网络型 10. 2. 4 D/A变换器的主要技术指标 10. 2. 5 集成 DAC 0832及其应用

基于单片机的AD转换电路与程序设计

基于单片机的AD转换电路与程序设计

基于单片机的AD转换电路与程序设计单片机(MCU)是一种集成了处理器核心、内存、输入输出接口和各种外围设备控制器等功能的集成电路。

MCU通常用于嵌入式系统,广泛应用于各个领域,例如家电、工业控制、汽车电子等。

其中,AD转换是MCU中的一个重要模块,用于将模拟信号转换成数字信号。

在应用中,常常需要将外部的温度、湿度、压力或光照等模拟信号进行转换和处理。

AD转换电路一般由模拟输入端、引脚连接、采样保持电路、比较器、取样调节电路、数字输出端等部分组成。

模拟输入端负责接收外部的模拟量信号;引脚连接将模拟输入信号引到芯片的模拟输入端;采样保持电路负责将引脚输入的模拟信号进行采样和保持,保证AD转换的准确性;比较器用于将模拟信号与参考电压进行比较,判断信号的大小;取样调节电路用于调整模拟信号的边界;数字输出端将模拟信号转换成数字信号输出给MCU。

在程序设计方面,MCU通常使用C语言进行编程。

程序设计分为初始化和数据处理两个步骤。

初始化阶段主要包括设置IO口、初始化外设、设置模拟输入通道等工作。

数据处理阶段主要包括数据采样、数值转换、数据处理和输出等工作。

下面以一个简单的温度采集系统为例进行说明。

首先,在初始化阶段,需要设置IO口和外设,以及设置模拟输入通道。

具体步骤如下:1.设置IO口:根据具体需要配置MCU的引脚功能和工作模式。

2.初始化外设:根据需要初始化ADC模块,包括设置采样频率、参考电压等参数。

3.设置模拟输入通道:选择需要转换的模拟输入通道。

接下来,在数据处理阶段,需要进行数据采样、数值转换和数据处理。

具体步骤如下:1.数据采样:使用ADC模块进行模拟信号的采样,将采样结果保存到寄存器中。

2.数值转换:将采样结果转换成数字信号,可以使用如下公式进行转换:数字信号=(ADC采样结果/采样最大值)*参考电压3.数据处理:根据具体需求进行数据处理,例如计算平均值、最大值或最小值,也可以进行滤波或校正。

我的51单片机之模数转换ADC0804的C语言和汇编编程

我的51单片机之模数转换ADC0804的C语言和汇编编程
//返回数据处理,LED 显示,Frequency 为转换频率 unsigned int DoWitchData(unsigned int Frequency) {
unsigned char AD[2];//存高低字节 unsigned int InputV;//最后处理结果 unsigned char i; InputV=ReadAD(); AD[1]=InputV&0xF0; AD[1]=AD[1]>>4; AD[0]=InputV&0x0F; InputV=ADH[AD[1]]+ADL[AD[0]]; for(i=0;i<Frequency;i++) {
//延时 void delay(unsigned char n) {
unsigned char i; for(i=0;i<n;i++) {
; } }
//AD 转换,P 口取数 unsigned char ReadAD() {
unsigned char ADData; RDA=1; WRA=1; InputPort=0xFF; WRA=0; _nop_(); WRA=1; delay(100); RDA=0; _nop_();_nop_();_nop_();_nop_();_nop_(); ADData=InputPort; _nop_();_nop_();_nop_();_nop_();_nop_(); RDA=1; _nop_(); return (ADData); }
//
{ 0 , 1, 2 , 3 , 4 , 5, 6, 7, 8,
//
9, A , b , C , d, e, f, 点, 息灯, }
sbit RDA=P3^7; sbit WRA=P3^6; sbit INTR=P3^3;

51单片机综合学习系统——AD模数转换实验篇

51单片机综合学习系统——AD模数转换实验篇

51单片机综合学习系统——AD模数转换实验篇
庄建清;徐玮
【期刊名称】《电子制作》
【年(卷),期】2008(000)008
【摘要】大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了使用SPI总线的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习AD模数转换的基本原理与应用实例。

【总页数】4页(P21-24)
【作者】庄建清;徐玮
【作者单位】无
【正文语种】中文
【中图分类】TP273.22
【相关文献】
1.51单片机综合学习系统—1602字符型液晶显示篇 [J], 徐玮
2.51单片机综合学习系统——12864点阵型液晶显示篇 [J], 孙鹏
3.51单片机综合学习系统——红外线遥控篇 [J], 徐玮
4.51单片机综合学习系统——DS18B20温度实验篇 [J], 徐玮
5.8051单片机与AD7706型A/D组成的模数转换系统 [J], 李明贵
因版权原因,仅展示原文概要,查看原文内容请购买。

51单片机AD和DA转换汇编程序

51单片机AD和DA转换汇编程序

四、实验说明1、D/A 转换是把‎数字量转换‎成模拟量的‎变换,实验台上D ‎/A 电路输出‎的是模拟电‎压信号。

要实现实验‎要求,比较简单的‎方法是产生‎三个波形的‎表格,然后通过查‎表来实现波‎形显示。

2、产生锯齿波‎和三角波的‎表格只需由‎数字量的增‎减来控制,同时要注意‎三角波要分‎段来产生。

要产生正弦‎波,较简单的方‎法是造一张‎正弦数字量‎表。

即查函数表‎得到的值转‎换成十六进‎制数填表。

D/A 转换取值‎范围为一个‎周期,采样点越多‎,精度越高些‎。

本例采用的‎采样点为2‎56点/周期。

3、8位D/A 转换器的‎输入数据与‎输出电压的‎关系为U(0∽-5V)=Uref/256×N U(-5V ∽+5V)=2·Uref/256×N-5V (这里 Uref 为‎+5V)五、实验框图六、参考程序xdata ‎ unsig ‎n ed char CS 083‎2 _at_ 0xa00‎0;void Write ‎0832(unsig ‎n ed char b){CS083‎2 = b;}void main(){Write ‎0832(0);Write ‎0832(0x80);Write ‎0832(0xff);开始否 是置计数器初‎值 查表读波形‎数据 启动D/A 改变计数器‎及表指针 转换完毕while‎(1);}/*========================================================== =*/CS083‎2 equ 0a000‎hmov dptr, #CS083‎2mov a, #00hmovx @dptr, amov a, #40hmovx @dptr, amov a, #80hmovx @dptr, amov a, #0c0hmovx @dptr, amov a, #0ffhmovx @dptr, aljmp $end硬件实验十‎三 A/D 模数转换‎实验一、实验要求利用实验板‎上的ADC ‎0809做‎A /D 转换器,实验板上的‎电位器提供‎模拟量输入‎,编制程序,将模拟量转‎换成二进制‎数字量,用8255‎的PA 口输‎出到发光二‎极管显示。

基于51单片机的数字温度计

基于51单片机的数字温度计

引言:数字温度计是一种基于51单片机的温度测量装置,它通过传感器感知环境的温度,并使用单片机将温度值转换为数字形式,并显示在液晶屏上。

本文将详细介绍数字温度计的设计原理、硬件连接、软件编程以及应用领域。

概述:数字温度计基于51单片机的设计理念,其基本原理是通过传感器将温度转换为电信号,然后通过ADC(模数转换器)将电信号转换为数字信号,最后使用单片机将数字信号转换为温度值。

同时,数字温度计还将温度值显示在液晶屏上,方便用户直观地了解环境温度。

正文内容:1. 硬件连接:1.1 使用温度传感器感知环境温度:常用的温度传感器有NTC热敏电阻和DS18B20数字温度传感器。

通过将传感器连接到51单片机的引脚上,可以实现对环境温度的感知。

1.2 连接ADC进行模数转换:ADC是将模拟信号转换为数字信号的关键部件。

通过将51单片机的引脚连接到ADC芯片的输入端,可以将模拟的温度信号转换为数字信号。

1.3 连接液晶屏显示温度值:通过将51单片机的引脚连接到液晶屏的控制引脚和数据引脚,可以将温度值以数字形式显示在液晶屏上。

2. 软件编程:2.1 初始化引脚和ADC:在软件编程中,需要初始化51单片机的引脚设置和ADC的工作模式。

通过设置引脚为输入或输出,以及设置ADC的参考电压和工作模式,可以确保硬件正常工作。

2.2 温度测量算法:根据传感器的工作原理和电压-温度特性曲线,可以编写相应的算法将ADC测得的电压值转换为温度值。

例如,对于NTC热敏电阻,可以使用Steinhart-Hart公式进行温度计算。

2.3 温度值显示:将温度值以数字形式显示在液晶屏上。

通过设置液晶屏的控制引脚和数据引脚,可以控制液晶屏的显示内容,并将温度值以数字形式显示在屏幕上。

3. 基于51单片机的数字温度计应用:3.1 家庭温度监测:数字温度计可以安装在家庭中的不同区域,实时监测室内温度,并通过数字显示提供直观的温度信息。

这对于家庭的舒适性和节能都有重要意义。

51单片机ad转换流程

51单片机ad转换流程

51单片机ad转换流程51单片机是一种广泛应用于嵌入式系统中的微控制器。

与其他单片机相比,51单片机的特点之一是其模拟到数字转换功能(AD转换),它允许将模拟信号转换为数字量,以便进行数字信号处理和控制。

在本文中,我们将以“51单片机AD转换流程”为主题,详细介绍AD转换的步骤和相关概念。

第一步:了解AD转换的基本概念模拟到数字转换(AD转换)是电子系统中一种常见的操作。

它涉及将连续的模拟信号转换为离散的数字信号,以便进行数字信号处理。

AD转换的结果通常以二进制形式表示,可以被计算机或其他数字处理设备使用。

在AD转换过程中,最重要的参数是分辨率和采样率。

分辨率是指AD转换器能够分辨的最小信号变化量,通常以比特数表示。

例如,8位AD转换器的分辨率为2^8,即256个离散的信号水平。

采样率是指AD转换器每秒钟进行的样本数量,通常以赫兹(Hz)表示。

第二步:准备硬件连接在进行AD转换之前,需要连接电源、待转换的模拟信号源和51单片机上的AD输入引脚。

具体的硬件连接方式可以根据具体的应用需求和开发板设计进行调整。

通常情况下,待转换的模拟信号将通过电阻网络与AD输入引脚相连接。

这个电阻网络起到电压分压的作用,将输入信号的幅度限制在AD转换器可接受的范围内。

开发板上的AD输入引脚通常还具有可选的电容网络,用于去除输入信号中的高频噪声。

第三步:配置AD转换器参数在开始AD转换之前,需要通过编程设置51单片机上的AD转换器参数。

这些参数包括分辨率、输入通道选择、参考电压选择和采样率等。

这些参数的设置是通过对寄存器的操作来实现的。

通过写入相应的寄存器值,我们可以选择转换的分辨率。

51单片机上的AD转换器可以支持不同的分辨率,如8位、10位或12位。

选择转换的输入通道也是一个重要的步骤。

通常情况下,AD转换器具有多个输入信道,可以同时转换多个信号。

需要根据具体的信号源,选择合适的输入通道。

参考电压的选择也要根据具体的应用需求来确定。

基于51单片机的模数转换(AD)实验设计

基于51单片机的模数转换(AD)实验设计

HEFEI UNIVERSITY单片机课程综述报告主题基于51单片机的模数转换(A/D)实验设计姓名郭丽丽专业通信工程学号**********班级11级通信(1)班指导老师汪济洲2014 年 6 月 2 日目录1.实验目的与要求 (1)1.1实验目的 (1)1.2实验要求 (1)2.实验原理 (1)2.1电路原理图 (1)2.2 Proteus7.4 软件简介 (2)3、实验步骤 (5)4、源程序代码 (5)5. 实验结果分析 (10)6.总结 (10)1.实验目的与要求1.1实验目的1.掌握A/D转换与单片机的接口方法2.了解A/D芯片ADC0809转换性能及编程方法3.通过实验了解单片机如何进行数据采集1.2实验要求1.采用查询法或中断法编程进行A/D采集;2.采集0~5V范围的电压信号(以电位器模拟被测信号),使用4位串行数码管显示0~5V数值,小数点保留三位,实现简易电压表功能。

2.实验原理2.1电路原理图熟悉8051的输入输出端口的使用方法, 本实验的电路连接如图1所示。

图1 连接电路2.2 Proteus7.4 软件简介Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。

③提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。

Proteus学习51单片机之AD转换

Proteus学习51单片机之AD转换

Proteus学习51单片机之AD转换概述模拟数字转换器(ADC)是将模拟信号转换为数字信号的设备。

我们将在本文中介绍如何在Proteus中使用51单片机进行AD转换。

首先,我们需要了解一些关于ADC的基础知识。

什么是ADC?ADC是模拟数字转换器的缩写。

它是一种将模拟信号( 例如声音或光线)转换为数字信号的设备。

数字信号可以通过数字处理器 例如计算机或嵌入式系统)进行进一步处理。

为什么需要ADC?数字设备不能直接处理模拟信号。

因此,我们需要将模拟信号转换为数字信号,以便数字设备可以处理它。

这就是ADC的作用。

如何使用ADC?ADC一般有以下几个步骤:1.(采样:使用ADC将连续的模拟信号转换为离散的数据点。

2.(量化:将采样结果转换为离散的数字值。

3.(编码:将数字值转换为二进制值。

在51单片机中,ADC转换的基本步骤是:1.(设定ADC电平:在程序中,我们需要将端口设置为读取ADC的电平。

2.(ADC模式设置:通过设定模式,来选择如何采样和量化信号。

3.(读取ADC值:读取ADC的数字输出值。

Proteus中51单片机AD转换的操作步骤下面我们将了解如何在Proteus中使用51单片机进行AD转换。

1.(创建Proteus新工程在Proteus中创建新工程。

从库中选择合适的51单片机,并将其放置在原理图中。

2.(连接一组电压源和电阻连接一组电压源和电阻,以模拟数字模拟转换器(ADC)输入信号。

3.(添加ADC模块前往“Component(Mode” 元器件模式)下,添加ADC模块。

选择合适的ADC元器件,并将其添加到工程中。

4.(连接ADC模块到单片机将ADC模块与单片机相连。

5.(配置ADC将ADC模块属性栏中的ADC模块讯号连接到单片机的相应端口上,设置ADC的属性。

6.(编写程序并上传到单片机根据需要编写程序,并上传到单片机上。

7.(调试调试程序,并检查ADC是否正常工作。

8.(监测ADC输出透过示波器或LED等设备监测ADC的输出值。

51单片机课程设计--AD转换

51单片机课程设计--AD转换

51-单片机课程设计题目:用PCF8591P芯片对电位器上的电压进行AD采样,将采到的数据用1602LCD进行显示。

姓名: 学号:学院:专业: 指导教师:目录1、PCF8591概述 (3)2、芯片介绍 (3)3、PCF8591的A/D 转换 (4)4、A/D转换程序设计流程 (5)5、1602LCD主要技术参数 (7)6、Proteus仿真原理图 (10)7、程序代码 (10)8、结语 (17)9、参考文献 (17)1、PCF8591 概述PCF8591 是一种具有 I2C 总线接口的 8 位 A/D D/A 转换芯片,在与 CPU 的信息传输过程中仅靠时钟线 SCL 和数据线 SDA 就可以实现。

I2C 总线是Philips (飞利浦)公司推出的串行总线,它与传统的通信方式相比具有读写方便,结构简单,可维护性好,易实现系统扩展,易实现模块化标准化设计,可靠性高等优点。

2、芯片介绍2.1内部结构及引脚功能描述PCF8591 为单一电源供电(2.5 6 V)典型值为 5 V,CMOS 工艺 PCF8591 有 4 路 8 位 A/D 输入,属逐次比较型,内含采样保持电路; 1 路 8 位 D/A 输出,内含有 DAC的数据寄存器 A/D D/A 的最大转换速率约为 11 kHz,但是转换的基准电源需由外部提供 PCF8591 的引脚功能如图1所示图1 PCF8591引脚功能2.2片内可编程功能设置在 PCF8591 内部的可编程功能控制字有两个,一个为地址选择字,另一个为转换控制字 PCF8591 采用典型的I2C总线接口的器件寻址方法,即总线地址由器件地址引脚地址和方向位组成 Philips (飞利浦)公司规定 A/D器件高四位地址为 1001,低三位地址为引脚地址A0A1A2,由硬件电路决定,地址选择字格式具体描述如表 2 所示因此 I2C 系统中最多可接 23=8 个具有总线接口的A/D 器件地址的最后一位为方向位 R/W,当主控器对 A/D 器件进行读操作时为1,进行写操作时为 0 总线。

51单片机ad转换代码及仿真

51单片机ad转换代码及仿真

51单片机AD转换代码及仿真1. 任务概述本文主要探讨51单片机模拟信号的AD(模数转换)过程以及相关代码的编写和仿真。

通过本文,读者将了解到51单片机的AD转换原理、AD转换的流程、具体代码实现方法以及如何使用仿真软件进行验证和调试。

2. 51单片机的AD转换原理[为了实现模拟信号到数字信号的转换,51单片机内置了一部分模拟数字转换器(ADC)。

ADC是一种电子元器件,它可以将模拟信号转换成数字信号。

模拟信号是连续的,而数字信号是离散的。

模拟信号转换成数字信号的过程叫做AD(模数转换),其原理可以简单描述如下:]1.首先,模拟信号通过模拟输入引脚进入51单片机中的ADC模块。

2.ADC模块将模拟信号进行采样,即对信号进行离散化处理,将离散化后的采样值存储在一个寄存器中。

3.采样值随后会经过数字化处理,变成具有一定精度的数字量。

4.数字量经过处理后,嵌入系统可以根据其数值进行分析、判断和控制。

3. 51单片机的AD转换流程[51单片机的AD转换流程可以分为以下几个步骤:]3.1 设置ADC模块在使用51单片机进行AD转换之前,需要先设置ADC模块的相关参数,如引脚选择、参考电压选择、时钟频率等。

这些设置可通过写入ADC相关的寄存器来完成。

3.2 启动转换设置完成后,可以通过设置一个特定的位来启动AD转换。

一旦AD转换开始,51单片机将根据设置的参数自动进行转换操作。

3.3 等待转换完成在启动AD转换后,需要等待转换完成。

此时,可以通过查询ADC模块的状态位来判断转换是否完成。

3.4 读取转换结果转换完成后,可以通过读取ADC寄存器的值来获取AD转换结果。

这个值将会代表输入模拟信号的数字化数值。

4. 51单片机AD转换的代码实现[以下给出一个简单的51单片机AD转换的代码示例。

本示例假设选用了P1口作为ADC的输入引脚,使用AVCC作为参考电压,时钟频率为12MHz。

]#include <reg52.h>// 引入51单片机的头文件sbit ADC_IN = P1^0; // 定义P1.0为ADC输入引脚void ADC_Init() {// 设置ADC参考电压为AVCCADMUX = (1<<REFS0);// 设置ADC输入通道为ADC0(P1.0)ADMUX |= (1<<MUX0);// 启用ADC模块,设置ADC时钟频率为F_CPU/8ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);}unsigned int ADC_Read() {unsigned int adc_value = 0;// 设置ADC转换开始位ADCSRA |= (1<<ADSC);// 等待转换完成while (ADCSRA & (1<<ADSC));// 读取ADC寄存器的值adc_value = ADCL;adc_value |= (ADCH<<8);return adc_value;}void main() {unsigned int adc_result = 0;ADC_Init(); // 初始化ADC模块while (1) {adc_result = ADC_Read(); // 读取ADC转换结果// 在此处对结果进行处理或输出}}在以上示例代码中,首先通过ADC_Init()函数对ADC进行初始化设置。

51单片机与ADC0809应用做AD转换(电路图附程序)

51单片机与ADC0809应用做AD转换(电路图附程序)
应用程序如下:
#include"reg52.h"
#define uchar unsigned char
sbit ST=P1^0;
sbit EOC=P1^1;
sbit OE=P1^2;
sbit CLK=P1^3;
sbit ADDCS=P1^4;
uchar AD_DATA[2];//保存IN0和IN1经AD转换后的数据
void AD()
{
ST=0;
ADDCS=0; //选择通道IN0
delay(10);
ST=1; //启动AD转换
delay(10);
ST=0;
while(0==EOC);
OE=1;
AD_DATA[0]=P2;
OE=0;
ST=0;
ADDCS=1; //选择通道IN1
delay(10);
ST=1; //启动AD转换
TH0=216; //利用T0中断产生CLK信号
TL0=216;
TR0=1; //启动定时器T0
ET0=1;
ST=0;
OE=0;
}
/***********T0中断服务程序************/
voidt0(void) interrupt 1 using 0
{
CLK=~CLK;
}
/***********AD转现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责

说明:D0~D7接51单片机的P2口(P2.0~P2.7)
ADIN1和ADIN2为通道IN0和IN1的电压模拟量输入(0~5V)
/**********延时函数************/
void delay(uchar i)

基于51单片机的数字温度计实现

基于51单片机的数字温度计实现

基于51单片机的数字温度计实现数字温度计是一种能够精确测量温度的仪器,利用数字技术将温度传感器测得的模拟信号转换成数字信号,以显示出实时温度数值。

在这个任务中,我们要使用51单片机来实现一个基于数字技术的温度计。

首先,我们需要一种温度传感器,常用的有热敏电阻传感器和数字温度传感器。

在这里,我们选择使用热敏电阻传感器,因为它价格低廉且性能稳定。

热敏电阻传感器的电阻值会随着温度的变化而发生改变,我们可以利用这个特性来测量温度。

51单片机是一种常用的微型计算机芯片,具有强大的计算和控制能力,非常适合用于实现温度计。

我们可以将热敏电阻传感器连接到单片机的模拟输入引脚上,通过读取引脚上的电压值来获取温度值。

接下来,我们需要编写51单片机的程序来实现温度的转换和显示。

首先,我们需要将模拟信号通过模数转换器(ADC)转换成数字信号。

然后,我们可以通过一定的算法将数字信号转换成对应的温度数值。

为了实现温度的显示,我们可以连接一个LCD液晶屏到51单片机上。

LCD屏幕可以显示数字和字符,我们可以在屏幕上显示实时的温度数值。

除了温度的显示,我们还可以添加一些功能来增强温度计的实用性。

例如,我们可以设置一个温度报警功能,在温度超过一定阈值时发出声音或亮起警示灯。

这样可以方便用户随时知晓温度是否正常。

另外,我们还可以为温度计添加保存数据的功能。

通过连接一个存储器芯片,我们可以将温度数据存储下来,方便后续分析和查看。

总之,基于51单片机的数字温度计实现可以通过连接热敏电阻传感器并编写相应的程序来实现温度的测量和显示。

通过添加额外的功能,例如温度报警和数据存储,可以增强温度计的实用性和功能性。

这样的温度计可以广泛应用于室内温度检测、工业控制和科研实验等领域。

单片机AD模数转换实验报告

单片机AD模数转换实验报告

单片机AD模数转换实验报告实验目的:通过单片机完成模数转换实验,了解AD模数转换的原理,掌握AD转换器的使用方法。

实验设备:1.STC89C52RC单片机开发板2.电位器3.电阻4.电容5.连接线实验原理:AD模数转换是将连续的模拟信号转换为离散的数字信号的过程。

在单片机中,通过ADC模块将模拟电压转换为数字量。

STC89C52RC单片机具有内置的10位ADC模块,可以将模拟电压转换为0-1023之间的数字量。

实验步骤:1.连接电位器、电阻和电容的引脚到单片机上。

2.在单片机的引脚配置中,将ADC0的引脚配置为模拟输入。

3.在主函数中初始化ADC模块。

4.使用AD转换函数来获取模拟电压的数字量。

5.将数字量通过串口输出。

实验结果:经过以上步骤,我们成功地将连续的模拟信号转换为了数字信号,并通过串口输出。

通过电位器、电阻和电容的调整,我们可以观察到不同的输入信号对应的数字量。

实验总结:通过本次实验,我们深入了解了AD模数转换的原理,并学会了使用单片机的ADC模块来完成模数转换。

在实验过程中,我们还发现了一些问题和注意事项。

首先,在连接电路时,需要将模拟输入连接到ADC0引脚,并在引脚配置中正确设置。

其次,在初始化ADC模块时,需要根据实际情况设置参考电压和转换速率等参数。

最后,在使用AD转换函数时,需要根据需要进行适当的调整和计算,以获取正确的数字量。

总体来说,本次实验帮助我们更好地理解了AD模数转换的原理和单片机的ADC模块的使用方法。

通过实际操作,我们掌握了实验步骤和注意事项,提高了实际操作的能力和理论知识的运用。

这对我们的电子技术学习和应用都起到了积极的促进作用。

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

HEFEI UNIVERSITY单片机课程综述报告主题基于51单片机的模数转换(A/D)实验设计姓名郭丽丽专业通信工程学号 1105021006 班级 11级通信(1)班指导老师汪济洲2014 年 6 月 2 日目录1.实验目的与要求 (1)1.1实验目的 (1)1.2实验要求 (1)2.实验原理 (1)2.1电路原理图 (1)2.2 Proteus7.4 软件简介 (2)3、实验步骤 (6)4、源程序代码 (6)5. 实验结果分析 (10)6.总结 (10)1.实验目的与要求1.1实验目的1.掌握A/D转换与单片机的接口方法2.了解A/D芯片ADC0809转换性能及编程方法3.通过实验了解单片机如何进行数据采集1.2实验要求1.采用查询法或中断法编程进行A/D采集;2.采集0~5V范围的电压信号(以电位器模拟被测信号),使用4位串行数码管显示0~5V数值,小数点保留三位,实现简易电压表功能。

2.实验原理2.1电路原理图熟悉8051的输入输出端口的使用方法, 本实验的电路连接如图1所示。

图1 连接电路2.2 Proteus7.4 软件简介Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。

③提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。

④具有强大的原理图绘制功能。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

其操作界面如下图所示:图2 Proteus操作页面2.模数转换(A/D)实验设计ADC0809简介ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

图3 ADC0809的内部逻辑结构图4 ADC0809芯片ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

ADC0809的内部逻辑结构:由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

图5 ADC0809的内部逻辑结构ADC0809各脚功能如下:D7-D0:8位数字量输出引脚。

IN0-IN7:8位模拟量输入引脚。

VCC:+5V工作电压。

GND:地。

REF(+):参考电压正端。

REF(-):参考电压负端。

START:A/D转换启动信号输入端。

ALE:地址锁存允许信号输入端。

(以上两种信号用于启动A/D转换)EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。

OE:输出允许控制端,用以打开三态数据输出锁存器。

CLK:时钟信号输入端(一般为500KHz)。

A、B、C:地址输入线。

3、实验步骤1.Proteus软件中绘制单片机实验电路;2.在Keil C软件中编制汇编或C程序,软件调试;3.在Proteus中加载实验程序,观察并记录实验结果。

4、源程序代码#include <reg52.h>//*******************引脚定义********************//sbit dis_ab=P3^0;sbit dis_clk=P3^1;sbit CLK=P3^4;sbit ST=P3^5;sbit EOC=P3^6;sbit OE=P3^7;//*****************7SEG-LED段码表****************//Unsigned char codeLedTab[21]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77, 0x7c,0x39,0x5e,0x79,0x71,0x76,0x73,0x3e,0x00, 0x40};//************************************************//unsigned char data num_1; //存储十六进制转化为两个单十六进制数的值unsigned char data num_2;unsigned char data num_3;unsigned char data num_4;void Delay(unsigned int x);void DispClk(void);void DisplaySerial(unsigned char x);void ClearLed(unsigned char x);void HexToDec(unsigned int x);void main(){unsigned long num;ST=0;OE=0;while(1){ST=1; //发高脉冲启动采样信号ST=0;do{CLK=!CLK;}//提供采样时钟信号,直到采样结束为止while(!EOC);OE=1;num=P1; //读取采样值num=5000*num/255; //将0~#FFH采样值转化为0~5V数值(0~5000)HexToDec(num); //将16进制数据,转换为10进制数据,以便于数码管显示ClearLed(4);DisplaySerial(num_4); //依次从高位到低为显示采样电压值DisplaySerial(num_3);DisplaySerial(num_2);DisplaySerial(num_1);Delay(30000); //采样延时间隔,决定采样频率 }}//********************延时子程序********************//void Delay(unsigned int x){unsigned int j;for(j=0;j<x;j++){};}//********************************//功能:串行模拟时钟注意事项:用到delay.h中的延时子程序形参:无//********************************//void DispClk(void){dis_clk=1;Delay(1);dis_clk=0;Delay(1);}//********************************//功能:发送一个数字到串行LED上形参:unsigned char x:0-20//********************************//void DisplaySerial(unsigned char x){unsigned char i;unsigned char num_serial=LedTab[x];for(i=0;i<8;i++){dis_ab=(bit)(num_serial&0x80);num_serial<<=1;DispClk();}}//********************************//功能:清串行LED显示形参:unsigned char x = 需要清显示的LED数//********************************//void ClearLed(unsigned char x){unsigned char i;for(i=0;i<(x<<3);i++){DispClk();dis_ab=0;}}void HexToDec(unsigned int x) //十六进制转十进制{num_1=x%10; //个位x=x/10;num_2=x%10; //十位x=x/10;num_3=x%10;x=x/10;num_4=x%10;}5.实验结果分析通过改变POT-LIN原件滑片的位置即可调整输入的物理模拟量,可以发现输出的数字信号即观察LED的显示效果的不同。

通过实验,会发现:(1)当POT-LIN原件上的滑片位置位于参考图的上方时,LED会全亮;(2)当POT-LIN原件上的滑片位于最下方时,LED全暗;(3)当POT-LIN原件上的滑片位于上下之间的位置时,则会有其对应的LED 显示效果。

LED显示效果如下图示:图6 LED效果图6.总结通过此次实验,让我学习了A/D 转换与单片机的接口方法。

对A/D 芯片ADC0809 转换性能及编程方法有了深入的了解,通过实验了解单片机如何进行数据采集,锻炼了编程能力。

总的来说,经过这几个星期的单片机课程的学习,使我们对单片机有了一定的了解,老师只是引导我们入门,要想深入学习还得课下花时间自己钻研。

如有侵权请联系告知删除,感谢你们的配合!。

相关文档
最新文档