51单片机的AD转换

合集下载

51单片机AD转换代码及仿真的新标题

51单片机AD转换代码及仿真的新标题

51单片机AD转换代码及仿真的新标题新标题:深入解析51单片机的AD转换代码及仿真观点和理解:51单片机是一种应用广泛的嵌入式微控制器,具有强大的功能和灵活性。

其中,AD转换是其重要的功能之一,被广泛应用于模拟信号的数字化处理。

本文将深入探讨51单片机的AD转换代码及仿真,从简单到复杂、由浅入深地介绍相关的概念、原理和编程代码,旨在帮助读者更全面、深入地理解这一重要的主题。

文章结构:I. 引言A. 介绍51单片机的AD转换功能的重要性B. 概述本文的结构和目标II. 51单片机的AD转换基础A. 什么是模拟信号和数字信号?B. AD转换器的基本原理和功能C. 51单片机中常用的AD转换器类型和特点III. 了解AD转换的代码实现A. AD转换的基本操作步骤B. 通过中断实现AD转换C. 通过轮询实现AD转换D. 不同方式的AD转换代码的优劣比较IV. AD转换的常用功能扩展A. 多通道的AD转换B. 不同精度的AD转换C. 参考电压的选择和设置D. AD转换相关的溢出处理和校准V. 51单片机AD转换的仿真与调试A. 常见的仿真工具和方法介绍B. 使用仿真工具进行AD转换代码的调试C. 常见问题的排查和解决方法VI. 总结与展望A. 回顾本文所涵盖的内容和观点B. 对51单片机AD转换的未来发展进行展望在本文中,我们将从理论到实践,从基础到进阶,系统地介绍51单片机的AD转换功能。

通过深入理解其原理、学习相关的编程代码,并通过仿真工具进行实际调试,读者将能够掌握51单片机AD转换的各个方面。

这将使读者能够更好地应用这一功能来解决实际问题,并为将来的项目开发打下坚实的基础。

字数:3096字。

51单片机的AD转换程序

51单片机的AD转换程序

#include "reg51.h"#include "intrins.h"#define FOSC 18432000L#define BAUD 9600typedef unsigned char BYTE; //定义了一个unsigned char的同义词BYTE typedef unsigned int WORD; //定义了一个unsigned int 的同义词WORD /*Declare SFR associated with the ADC */sfr ADC_CONTR = 0xBC; //AD转化控制寄存器,地址是0xBCsfr ADC_RES = 0xBD; //8位AD转换结果寄存器sfr ADC_LOW2 = 0xBE; //AD转化低2位结果寄存器sfr P1ASF = 0x9D; //P1口中的相应位作为模拟功能使用时的控制寄存器/*Define ADC operation const for ADC_CONTR*/#define ADC_POWER 0x80 //ADC电源控制位#define ADC_FLAG 0x10 //ADC 完成标志#define ADC_START 0x08 //ADC 启动控制位//AD转换速度选择#define ADC_SPEEDLL 0x00 //540 clocks#define ADC_SPEEDL 0x20 //360 clocks#define ADC_SPEEDH 0x40 //180 clocks#define ADC_SPEEDHH 0x60 //90 clocksvoid InitUart();void SendData(BYTE dat);void Delay(WORD n);void InitADC();BYTE ch = 0; //ADC channel NO.void main(){InitUart(); //Init UART, use to show ADC resultInitADC(); //Init ADC sfrIE = 0xa0; //Enable ADC interrupt and Open master interrupt switch//Start A/D conversionwhile (1);}/*----------------------------ADC 中断处理----------------------------*/void adc_isr() interrupt 5 using 1{ADC_CONTR &= !ADC_FLAG; //清除ADC中断标志位SendData(ch); //Show Channel NO.SendData(ADC_RES); //Get ADC high 8-bit result and Send to UART//if you want show 10-bit result, uncomment next line// SendData(ADC_LOW2); //Show ADC low 2-bit resultif (++ch > 7) ch = 0; //切换到下一通道ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;}/*----------------------------Initial ADC sfr----------------------------*/void InitADC( ){P1ASF = 0xff; //设置P1口全部为ADC通道ADC_RES = 0; //清除高8位缓冲数据ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;Delay(2); //打开ADC}/*----------------------------Initial UART----------------------------*/void InitUart(){SCON = 0x5a; //8 bit data ,no parity bitTMOD = 0x20; //工作方式寄存器,8位初值自动重新装入定时器TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrateTR1 = 1; //T1开始运行}/*----------------------------Send one byte data to PCInput: dat (UART data)Output:-----------------------------*/void SendData(BYTE dat){while (!TI); //WaitTI = 0; //ClearSBUF = dat; //Send}/*----------------------------Software delay function----------------------------*/void Delay(WORD n){WORD x;while (n--){x = 5000;while (x--); } }。

ad模数转换51单片机程序流程

ad模数转换51单片机程序流程

ad模数转换51单片机程序流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 初始化:配置 ADC 相关的寄存器,如选择 ADC 通道、设置转换精度等。

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关键字定义输入端口和输出端口。

51ad转换模块原理

51ad转换模块原理

51ad转换模块是一种常见的模块化电子设备,广泛应用于各种电子系统中。

该模块的主要功能是将数字信号转换为模拟信号,以便与模拟电路进行交互。

在本文中,我们将详细介绍51ad转换模块的原理和工作方式。

一、引言51ad转换模块是一种基于51单片机的模块化设备,它通过将数字信号转换为模拟信号,实现了数字与模拟电路之间的数据传输。

在如今的电子系统中,数字信号处理已经变得非常普遍,但是仍然存在很多需要模拟信号进行处理的场景,因此51ad转换模块的应用非常重要。

二、基本原理51ad转换模块的基本原理是利用模数转换器(ADC)将模拟信号转换为数字信号,然后通过数模转换器(DAC)将数字信号转换为模拟信号。

这样就可以实现数字信号与模拟信号之间的转换。

1. 模数转换器(ADC)模数转换器是将模拟信号转换为数字信号的关键部件。

它通过采样和量化的方式对输入的模拟信号进行数字化处理。

具体来说,ADC首先对模拟信号进行采样,即按照一定的时间间隔对信号进行抽样。

然后,采样到的信号经过量化处理,即将连续的模拟信号转换为离散的数字信号。

最后,通过编码器将离散的数字信号转换为二进制代码,以表示原始的模拟信号。

2. 数模转换器(DAC)数模转换器是将数字信号转换为模拟信号的重要组成部分。

它通过解码器将数字信号转换为相应的模拟信号。

具体来说,DAC中的解码器将二进制代码转换为模拟信号的幅度值。

然后,这个幅度值通过一个滤波器进行平滑处理,得到最终的模拟信号。

三、工作方式51ad转换模块的工作方式可以分为输入和输出两个过程。

1. 输入过程在输入过程中,外部模拟信号通过输入端口进入模块。

首先,模拟信号经过一个低通滤波器进行预处理,滤除高频噪声和杂散信号。

然后,经过模数转换器(ADC)将模拟信号转换为数字信号。

转换后的数字信号被传输到51单片机中进行处理。

2. 输出过程在输出过程中,经过处理的数字信号从51单片机中传输到数模转换器(DAC)。

基本C51单片机的AD转换实验

基本C51单片机的AD转换实验

基本C51单片机的A/D转换实验1.实验目的掌握A/D转换芯片ADC0809与单片机的接口方法及ADC0809芯片性能;了解单片机实现数据采集的方法。

2.实验设备及器件PC机一台单片机综合创新实验箱一台8孔排线一根杜邦线3根3.实验内容编写一段程序,通过ADC0809实现单片机对模拟输入通道电压的采集,使采集到的数据显示在数码管上。

4.实验步骤①用1根杜邦线将J200的左针与D3区J44的CH0相接,或者不连,因为印刷板上已连通。

连接一下只是增加学生的感性认识(注意:标CH0的实际是ADC0809的IN7);②将D4区的J2用杜邦线与B7区J100相连(注意:B7区此时必须将拨码开关向下拨,B8区J58短路帽断开,拨码开关向下拨,否则显示有问题);③用两根杜邦线将D4区的J4中的P34、P35与B7区J102的BIT0、BIT1相连;④运行编写好的软件程序,调节电位器,仿真观察显示的是否变化。

ALE AD启动、使能电路图3.12 A/D转换接口电路图5.参考程序/*位码分别接P34和P35 ,段码P1口,其它接线同以前*/AD EQU 30HBAI EQU 31HSHI EQU 32HGEW EQU 33HAD1 EQU 34HORG 0000HLJMP MAINMAIN: MOV A,#00HMOV DPTR,#7F07HMOVX @DPTR,AMOV R6,#0aHDELAY: NOPNOPNOPDJNZ R6,DELAYMOVX A,@DPTRMOV AD,AACALL DISPJMP MAINDISP: MOV A,ADMOV B,#5DIV ABMOV B,#10DIV ABMOV BAI,AMOV A,BMOV SHI,AD0: MOV R0,#100D1:MOV A,BAIMOV DPTR,#TAB1MOVC A,@A+DPTRMOV P1,ACLR P3.4ACALL D1MSSETB P3.4MOV A,SHIMOV DPTR,#TABMOVC A,@A+DPTRMOV P1,ACLR P3.5ACALL D1MSSETB P3.5DJNZ R0,D1RETD1MS: MOV R6,#2DSS: MOV R7,#0FFHDJNZ R7,$DJNZ R6,DSSRETTAB1: DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,80H TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00HENDC51例程:#include "reg51.h"#define THCO 0xee#define TLCO 0x0unsigned char codeDuan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00}; //共阴极数码管-9段码表unsigned char Data_Buffer[4]={10,0,0,0};float AdValue;sbit P34=P3^4; //四个数码管的位码口定义sbit P35=P3^5;sbit P36=P3^6;sbit P37=P3^7;/**************************************************/sbit ADWR=P1^0;sbit RS=P1^1;sbit CS=P1^2;sbit Add1=P1^3;sbit Add2=P1^4;sbit Add3=P1^5;sbit EOC=P1^6;sbit LED=P1^7;/**************************************************/ void Sysinit();void AD_Start(void);void LED_Fresh();void delay_ms(unsigned int x);void main(){ unsigned int i;Sysinit();Add1=0;Add2=0; //模拟量通道输入选择Add3=0;while(1){AD_Start();while(!EOC);LED=!LED;RS=0;AdValue=P0;LED_Fresh();RS=1;for(i=0;i<40000;i++);}}void Timer0_ISR() interrupt 1{static unsigned char Bit=0;TH0=THCO;TL0=TLCO;Bit++;if(Bit>=4)Bit=0;P34=0;P35=0;P36=0;P37=0;//关位码P2=Duan[Data_Buffer[Bit]];switch(Bit){case 0: P34=0;break;case 1: P35=0;break;case 2: P36=0;break;case 3: P37=0;break;}}void LED_Fresh(){unsigned int temp;temp=AdValue;Data_Buffer[1]=temp/100;Data_Buffer[2]=temp/10%10;Data_Buffer[3]=temp%10;}void Sysinit(){TMOD=0x11; //定时器0初始化TH0=THCO;TL0=TLCO;TR0=1;ET0=1;EA=1;}void AD_Start(void){ADWR=1;CS=0;delay_ms(1);ADWR=0;delay_ms(1);ADWR=1;}void delay_ms(unsigned int x){unsigned char y;for(x;x>0;x--)for(y=110;y>0;y--); }。

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单片机AD转换代码

51单片机AD转换代码

OE EQU P1.0//给特定的符号名赋值EOC EQU P1.1ST EQU P1.2CLK EQU P1.3SHU EQU 30HTEMP EQU 31HORG 0000H ;起始指令AJMP MAINORG 000BHCPL CLK ;i这是在定时器中翻转CLK,也就是给ADC提供时钟。

RETIORG 0100HMAIN:MOV SP,#60H ;这个是设置堆栈的位置,否则默认的堆栈肯定会被冲掉MOV TMOD,#02H ;设置T0工作于外启动,定时,方式2MOV TH0,#14HMOV TL0,#00H ;给定时器赋初值,X=M-T/TmMOV IE,#82H ;IE初始化SETB TR0 ; 启动定时器T0MOV A,#3FHMOV P1,A ;选通模拟量输入通道3MOV SHU,#0SCAN:CLR STSETB STCLR ST ;人为地在ST引脚上产生脉冲,给ADC一个开始脉冲,告诉它启动AD 转化M0: JNB EOC,M0 ;EOC是AD转换结束的标志,可作为转换结束中断的请求信号SETB OE ; OE是数字量输出允许信号输入,高电平有效MOV A,#0FFHMOV P3,AM1: MOV A,P3MOV SHU,A ;把转换出来的数给SHULCALL CHANGELCALL DISPCLR OE ;使能ADC,让它能够工作,看来这个ADC是低电平使能AJMP SCANDISP:MOV R0,#TEMPMOV R2,#00HDISP1:MOV A,R2MOV DPTR,#TAB1MOVC A,@A+DPTRMOV P2,A ;把选通的那一个管的数给P2口MOV A,@R0MOV DPTR,#TABMOVC A,@A+DPTR ;取字符MOV P0,A ;A就输出MOV R5,#5ACALL DELAYINC R0INC R2CJNE R2,#3,DISP1 ;扫描显示MOV P0,#00HRETCHANGE: ;把数字分成百、十和个位MOV A,SHUMOV B,#100DIV ABMOV TEMP,AMOV A,BMOV B,#10DIV ABMOV TEMP+1,AMOV TEMP+2,BRETDELAY: ;延时MOV R6,#1DELAY0:MOV R7,#100DJNZ R7,$DJNZ R6,DELAY0DJNZ R5,DELAYRETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;字形码表TAB1: DB 0FDH,0FBH,0F7H ;选通数吗管的通道END。

51单片机的AD转换

51单片机的AD转换

51单片机的AD转换姓名:史旭超学号:0845531133 专业:电子信息工程摘要:AD转换器是一种能把输入模拟电电压或电电流变成与它成正比的数数字量,即能把被控对对象的各种模拟信息变成计计算机可以识别的数字信息。

在单片机测控系统中,被采集的实时信号多为连续变化的模拟量,由于单片机只能处理数字量,所以就需要将连续变化的模拟量转换成数字量,即A/D转换。

本次设计中AD转换器选用ADC0809,将其与单片机,8255共同构成转换电路。

关键词:ADC0809 单片机8255 汇编语言一、芯片介绍1.A/D转换芯片0809引脚与功能简介ADC0809是由美国国家半导体公司推出的8位逐次逼近式A/D转换器,包括8位模/数转换器、8通道多路转换器和与微处理器兼容的控制逻辑。

8通道多路转换器能直接连通8个单端模拟信号中的一个。

ADC0809与C51单片机有3种接口方式:查询方式、中断方式和等待延时方式。

每采集一次一般需100us。

中断方式下,A/D转换结束后会自动产生EOC信号。

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

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

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

(2) ADC0809引脚结构功能D7-D0:8位数字量输出引脚。

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

VCC:+5V工作电压。

GND:地。

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

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

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

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

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

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

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转换

/*****************************************************************//* *//*名称:AD转换+LCD12864显示程序*/ /*功能: 1 AD转换,二进制转换成十进制*/ /* 2 显示英文,数字,符号,图片。

*//*难度等级:高*//*****************************************************************/#include <reg52.h>#include <string.h>#define uchar unsigned char/**********引脚定义*********/sbit lck = P3^5;//锁存信号sbit addr0 = P1^4;sbit addr1 = P1^5;sbit addr2 = P1^6;sbit cs138 = P1^7;/********常用命令及参数定义********/#define DISPON 0x3f#define DISPOFF 0x3e#define DISPFIRST 0xc0#define SETX 0x40#define SETY 0xb8#define LCDBUZY 0x80#define L 0x00#define R 0x40#define LIMIT 0x80/**********全局变量************/uchar cbyte;uchar data statu;bit xy;/**************函数******************/void WrL(uchar x);void WrR(uchar x);void Lcmcls(void);void Lcminit (void);void Putpicture();void delay(unsigned int time);void VtoH8x16change(uchar *hzbuf);void Puthalf(uchar *strch,uchar row,uchar col);void Wrdata(uchar x,uchar row,uchar col);void Locatexy(uchar row,uchar col);void vWrite8x16Character(uchar *ch,uchar row,uchar col,bit flag);uchar ADC0804();extern uchar code char_Table[95][16];extern unsigned char code picture[];/***************微秒级延时*****************/void delay(unsigned int time){ unsigned int i;for(i=0;i<time;i++);}/***********主程序***************/void main(void){ uchar i,j,k;float voltage,decimal;unsigned int intvolt,tofloat;addr0 = 1;addr1 = 0;addr2 = 1;//ULN2003片选地址P0 = 0x00;//断开继电器A,Bcs138 = 1;cs138 = 0;//数据锁存到U18(74HC574)Lcminit();//LCD初始化Putpicture();//显示界面图片while(1){voltage = ADC0804();voltage = voltage * 0.0391;//将二进制字节数据变成实际电压值10/256 = 0.0196 intvolt = voltage;//取整数部分tofloat = intvolt;decimal = voltage - tofloat;//取小数部分decimal = decimal * 100;//小数部分取两位i = intvolt % 0x0a + '0';//整数部分个位intvolt = decimal;j = intvolt % 0x0a + '0';//小数部分低位intvolt = intvolt / 0x0a;k = intvolt % 0x0a + '0';//小数部分高位vWrite8x16Character(&char_Table['V'-0x20][0],3,112,0);//显示电压单位vWrite8x16Character(&char_Table[j-0x20][0],3,104,0);//显示小数低位vWrite8x16Character(&char_Table[k-0x20][0],3,96,0); //显示小数高位vWrite8x16Character(&char_Table['.'-0x20][0],3,88,0); //显示小数点vWrite8x16Character(&char_Table[i-0x20][0],3,80,0);//显示整数位delay(5000);}}/*******************0804转换程序********************/uchar ADC0804(){ uchar adc0804value;addr0 = 1;addr1 = 1;addr2 = 0;//输出AD0804片选地址。

51单片机AD转换.TXT

51单片机AD转换.TXT

org 0000h
ajmp main
ORG 000BH ;定时器T0的入口
AJMP DISP ;显示程序
org 0080h
main:
MOV SP,#5FH ;设置堆栈
FIRST EQU P2.4 ;第一位数码管的位控制
SECOND EQU P2.5 ;第二位数码管的位控制
THEER EQU P2.6 ; 第三位数码管的位控制
DISPBUF EQU 5AH ;显示缓冲区为5AH和5BH
Adc_Demo:
lcall Adc_Start
lcall delay1ms
lcall adc_read
MOV B,#100 ;AD转换出的值除100商为百位数
DIV AB ; 取百位数 余数在B寄存器
MOV DISPBUF,A ;把百位存入百位寄存器DISPBUF
MOV R0,A
MOV A,@R0 ;根据计数器的值取相应的显示缓冲区的值
MOV DPTR,#DISPTAB ;字形表首地址
MOVC A,@A+DPTR ;取字形码
MOV P0,A ;将字形码送P0位(段口)
;//定义ADC的连接端口
ad_cs equ P3.6 ;芯片选择
ad_wr equ P2.0 ;转换开始
ad_rd equ P3.7 ;RD=LOW,数字信号输出
ad_input_port equ p1 ;定义数据位
Counter EQU 59H ;计数器,显示程序通过它得知现正显示哪个数码管
mov r7,#10
MM:mov rபைடு நூலகம்,#50
djnz r6,$ ;2us

51单片机基于pcf8591芯片的AD转换

51单片机基于pcf8591芯片的AD转换
{
int voltage;
initIIC();
uart_init();
cmg();
while(1)
{
voltage=read(0x43);//跟据芯片,这里可以有四种数据0x40 0x41 0x42 0x43 分别对应着四个通道
UART_Send_Byte('0'+voltage/51); //模拟电压转换
UART_Send_Byte('.');
UART_Send_Byte('0'+voltage/10);
UART_Send_Byte('\n');
Delay1ms(500);
write_byte(PCF8591+1); //把最后一位变成1,读
respons();
date=read_byte();
stop();
return date;
}
void main()
{
;
;
}
/**
* UART初始化
* 波特率:9600
*/
void uart_init(void) //串口初始化
{
TMOD = 0x21; // 定时器1工作在方式2(自动重装)
SCON = 0x50; // 10位uart,允许串行接受
delay();
}
uchar read_byte()
{
uchar i,k;
SCL=0;
delay();
SDA=1;
delay();
for(i=0;i<8;i++)

51单片机AD转换和串口收发子程序代码

51单片机AD转换和串口收发子程序代码
return(ad); //返回转换结果
}
单片机控制串口无线收发的子程序代码
/**************************************
SCON^7——SM0,与SM1一起构成串口通信方式选择;
SCON^6——SM1;
SCON^4——REN,允许接收位,1为允许接收;
D_IN=(bit)(port&0x80); //送控制字
CLOCK=1; //上升沿
delay(1);
Ct;<=1; //控制字左移一位(下一循环送控制字下一位)
SCON^1——TI,发送中断标志位,发送结束后由硬件自动置1,复位需软件;
SCON^0——RI,接收中断标志位,接收结束后由硬件自动置1,复位需软件;
PCON^7——SMOD,波特率增倍位,1为增倍,0为不增倍;
IE^7——EA,中断允许总控制位,1为CPU开放中断,0为屏蔽所有中断请求;
TR1=1; //启动定时器1
ES=0; //禁止串行中断
}
/**************************************
名称:send
功能:发送一个字节
输入参数:待发送的字节
输出参数:无
*************************************/
单片机控制A/D转换子程序代码
/**************************************
名称:read2543
功能:TLC2543驱动模块
输入参数:port通道号
输出参数:ad转换值
*************************************/

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单片机adc转换流程

简述51单片机adc转换流程

简述51单片机adc转换流程英文版Brief Introduction to the ADC Conversion Process of the 51 MicrocontrollerThe 51 microcontroller is a popular choice for embedded systems due to its simplicity, reliability, and widespread availability. Among its many features, the microcontroller often includes an Analog-to-Digital Converter (ADC) that converts analog signals into digital formats, enabling precise control and data acquisition. In this article, we will briefly describe the ADC conversion process of the 51 microcontroller.1. Overview of ADC:An ADC converts analog signals, which continuously vary in amplitude, into digital signals represented by discrete values. The 51 microcontroller's ADC typically has a specific number of bits, determining the resolution of the conversion. For example,an 8-bit ADC can represent 256 discrete levels, while a 10-bit ADC can represent 1024 levels.2. The ADC Conversion Process:Initialization: Before performing an ADC conversion, the microcontroller needs to be initialized. This involves setting up the ADC module, configuring the input channels, selecting the desired resolution, and enabling the ADC.Start Conversion: Once initialized, the microcontroller can start the ADC conversion process. This usually involves setting a specific control bit to initiate the conversion.Sampling: During the sampling phase, the ADC captures the analog signal at the selected input channel. The duration of this phase depends on the ADC's sampling rate and the characteristics of the analog signal.Quantization: The captured analog signal is then quantized, which means it is rounded off to the nearest discrete level based on the ADC's resolution. For example, if the ADC is 8-bit,the analog signal will be rounded off to one of the 256 possible levels.Digital Output: After quantization, the ADC outputs the digital representation of the analog signal. This digital value can be read by the microcontroller for further processing or transmitted to other systems.3. Conclusion:The ADC conversion process in the 51 microcontroller involves initialization, starting the conversion, sampling the analog signal, quantizing it, and finally outputting the digital value. This process enables the microcontroller to process and respond to analog signals accurately, making it suitable for a wide range of applications in embedded systems.中文版简述51单片机ADC转换流程51单片机因其简洁性、可靠性和广泛的应用性,在嵌入式系统中备受欢迎。

c51单片机程序-AD转换

c51单片机程序-AD转换

ADC_FLAG 置 1 转换结束)
ADC_CONTR &=~0x10;
//
ADC_FLAG 软件置零
sum +=ADC_RESL;//来自SUM 存电压值}
sum>>=3;
//左移 3 位,除以,求平均值。。。看书
return (uchar)sum;
//强制转换将 sum 转换为 uchar 形式
}
uchar
0x09,0x08,0x08,0x08,0x07,0x07,0x07,0x06,0x06,0x06,0x05,0x05,0x05,0x04,0x04,0x04,
0x04,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
uchar i; uint sum=0;
for(i=0;i<8;i++)
{
ADC_CONTR |=0x08;
//


BIT3=0x08(ADC_STARTAD)开启转换
delayus(1);
P1ASF = 0X02;
while((ADC_CONTR&0x10) == 0x00);
//
等待转换结束(等
0x24,0x24,0x23,0x23,0x22,0x22,0x21,0x21,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1d,
0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x18,0x18,0x18,0x17,
0x34,0x33,0x33,0x32,0x32,0x31,0x31,0x30,0x30,0x2f,0x2f,0x2e,0x2e,0x2d,0x2d,0x2c,
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机的AD转换姓名:史旭超学号:0845531133 专业:电子信息工程摘要:AD转换器是一种能把输入模拟电电压或电电流变成与它成正比的数数字量,即能把被控对对象的各种模拟信息变成计计算机可以识别的数字信息。

在单片机测控系统中,被采集的实时信号多为连续变化的模拟量,由于单片机只能处理数字量,所以就需要将连续变化的模拟量转换成数字量,即A/D转换。

本次设计中AD转换器选用ADC0809,将其与单片机,8255共同构成转换电路。

关键词:ADC0809 单片机8255 汇编语言一、芯片介绍1.A/D转换芯片0809引脚与功能简介ADC0809是由美国国家半导体公司推出的8位逐次逼近式A/D转换器,包括8位模/数转换器、8通道多路转换器和与微处理器兼容的控制逻辑。

8通道多路转换器能直接连通8个单端模拟信号中的一个。

ADC0809与C51单片机有3种接口方式:查询方式、中断方式和等待延时方式。

每采集一次一般需100us。

中断方式下,A/D转换结束后会自动产生EOC信号。

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

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

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

(2) 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:地址输入线。

图2 ADC0809引脚分布(3)ADC0809通道选择ALE为地址锁存允许输入线,高电平有效。

当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。

A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。

通道选择表如下表所示:C B A 选择的通道0 0 0 IN00 0 1 IN10 1 0 IN20 1 1 IN31 0 0 IN41 0 1 IN51 1 0 IN61 1 1 IN7图3 ADC0809通道选择表2.C51单片机引脚功能(1)电源:① VCC - 芯片电源,接+5V;② VSS - 接地端;(2)时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

(3)控制线:控制线共有4根,ALE/PROG:地址锁存允许/片内EPROM编程脉冲① ALE功能:用来锁存P0口送出的低8位地址② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

PSEN:外ROM读选通信号。

RST/VPD:复位/备用电源。

① RST(Reset)功能:复位信号输入端。

② VPD功能:在Vcc掉电情况下,接备用电源。

EA/Vpp:内外ROM选择/片内EPROM编程电源。

① EA功能:内外ROM选择端。

② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

(4)I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。

P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

图4 C51单片机引脚图3.8255引脚图及功能描述(1)8255共有40个引脚,采用双列直插式封装,各引脚功能如下:RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。

PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。

PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。

端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。

CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。

RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。

WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。

D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

Vcc:+5V电源。

片选端:A1,A0 8,9 地址总线的最低2位。

用于决定断口地址:如A1A0为00,是A口:A1A0 为01,是B口:A1A0为10,是C口:A1A0 是11,是控制字寄存器D7~D0 27~34 双向数据总线, PA7~PA0 37~40 1~4 A口的8位I/O引脚, PB7~PB0 25~18 B口的8位I/O引脚,PC7~PC0 10~13 17~14 C口的8位I/O 引脚GND:地线。

(2)8255的三种工作方式方式0(基本输入/输出方式):这种工作方式不需要任何选通信号。

A口,B口及C口的两个4位口中任何一个端口都可以由程序设定为输入或者输出。

作为输出口时,输出数据被锁存:作为输入口,输入数据不锁存。

方式1( 选通输入/输出方式):在这种工作方式下,A,B,C三个口分为两组。

A组包括A口和C口的高四位,A口可由编程设定为输入口或者输出口,C口的高四位则是用来作为A口输入/输出操作的控制和同步信号:B组包括B口和C口的低四位,B口可由编程设定为输入口或者输出口,C口的低四位则是用来作为B口输入/输出操作的控制和同步信号。

A口和B口的输入或者输出的数据都被锁存。

方式2( 双向传送方式)在这种方式下,A口可以用于双向传送,C口的PC3~PC74用来作为输入/输出的控制同步信号。

应该注意的是,只有A口允许用作双向传送,这时B口和PC0~PC2则可编程为方式0或者方式1工作。

(3)编程控制字8255A 的编程选择是通过对控制口输入控制字的方式实现的。

控制字有方式选择控制字和C口置位/复位控制字。

方式选择控制字:其格式如下表6所示:C口置位/复位控制字:C口具有位操作功能,把一个置位/复位控制字送入送入8255A的控制寄存器(控制口)就能把C口的某一位置1或者清0而不影响其他位的状态。

二、设计方法主要由三大模块组成:A/D转换模块,8051单片机模块和8段译码显示模块。

首先,通过实验箱产生0---5V可调电压;然后,将0---5V可调电压输入A/D转换进行数模转换,将0---5V的模拟量转换成00H-----FFH的数字信号,出入到单片机中;最终通过发光二极管L1-L8显示出转换结果。

由于ADC0809 A/ D转换器转换结束后会自动产生EOC信号(高电平有效),取反后将其与单片机的INT0相连,可以用中断方式读取A/ D转换结果。

三、程序设计mode equ 89h ; 方式0,PA,PB输出,PC输入CS0809 equ 8000hPortA equ 9000hPortB equ 9001hPortC equ 9002hCAddr equ 9003horg 0000Hmov dptr,#CAddrmov a,#modemovx @dptr,amov dptr, #CS0809mov a, #12Hmovx @dptr, aloop:Mov TMOD,#01hMov TH0,#0B1HMov TL0,#0E0HSETB TR0Loop1:JNB TF0,Loop1CLR TF0Loop2:movx a, @dptrmov r7,#500dly:mov dptr,#PortAmovx @dptr,adjnz r7,dlyljmp 0000hEnd四、小结首先设计电路前要对ADC0809、8255和单片机的引脚以及功能有充分的了解,然后要熟悉整个电路元器件的工作方式、原理,最后要对汇编语言有一定的认识并且能够运用。

在设计整个电路过程中不仅让我回顾了单片机课堂上所学的知识,而且进一步加深了对模电、数电知识的了解,培养了我运用所学知识解决实际问题的能力。

五、参考文献(1)陈红卫.微型计算机基本原理与接口技术(第二版)[M].北京:科学出版社,2009:155-163,233-237.(2)何立民.单片机高级教程应用与设计(第二版)[M].北京:北京航空航天大学出版社,2007:47-50.(3)郭天祥.51单片机C语言教程[M].北京:电子工业出版社,2009:9-12. (4)边春远,李文涛等.C51单片机典型模块设计与应用[M].北京:机械工业出版社,2008:25-28.(5)姜志海.单片机原理及应用[M].北京:电子工业出版社,2005:193-195. (6)陈洪财.单片机C语言和汇编语言实用开发技术[M].哈尔滨:哈尔滨工程大学出版社,2008:193-196.(7)夏路易.单片机技术基础教程与实践[M].北京:机械工业出版社,2008:101-104.(8)朱善君,孙新亚等.单片机接口技术与应用[M].北京:清华大学出版社,2005:206-217.(9)徐玮,沈建良等.单片机快速入门[M].北京:北京航空航天大学出版社,2008:250-259.(10)王秋爽,曾昭龙等.单片机开发基础与经典设计实例[M].北京:机械工业出版社,2008:101-104.。

相关文档
最新文档