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

#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单片机程序流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!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转换原理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转换模块是一种基于51单片机的模块化设备,它通过将数字信号转换为模拟信号,实现了数字与模拟电路之间的数据传输。
在如今的电子系统中,数字信号处理已经变得非常普遍,但是仍然存在很多需要模拟信号进行处理的场景,因此51ad转换模块的应用非常重要。
二、基本原理51ad转换模块的基本原理是利用模数转换器(ADC)将模拟信号转换为数字信号,然后通过数模转换器(DAC)将数字信号转换为模拟信号。
这样就可以实现数字信号与模拟信号之间的转换。
1. 模数转换器(ADC)模数转换器是将模拟信号转换为数字信号的关键部件。
它通过采样和量化的方式对输入的模拟信号进行数字化处理。
具体来说,ADC首先对模拟信号进行采样,即按照一定的时间间隔对信号进行抽样。
然后,采样到的信号经过量化处理,即将连续的模拟信号转换为离散的数字信号。
最后,通过编码器将离散的数字信号转换为二进制代码,以表示原始的模拟信号。
2. 数模转换器(DAC)数模转换器是将数字信号转换为模拟信号的重要组成部分。
它通过解码器将数字信号转换为相应的模拟信号。
具体来说,DAC中的解码器将二进制代码转换为模拟信号的幅度值。
然后,这个幅度值通过一个滤波器进行平滑处理,得到最终的模拟信号。
三、工作方式51ad转换模块的工作方式可以分为输入和输出两个过程。
1. 输入过程在输入过程中,外部模拟信号通过输入端口进入模块。
首先,模拟信号经过一个低通滤波器进行预处理,滤除高频噪声和杂散信号。
然后,经过模数转换器(ADC)将模拟信号转换为数字信号。
转换后的数字信号被传输到51单片机中进行处理。
2. 输出过程在输出过程中,经过处理的数字信号从51单片机中传输到数模转换器(DAC)。
基本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转换程序解析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转换代码

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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.。