51单片机数据采集系统
- 格式:doc
- 大小:310.50 KB
- 文档页数:18
目录第1章绪论11.1 课题选题依据和制作意义11.2 国内外研究成果的概述11.3 研究此课题的途径21.4 此设计的构成和内容2第2章系统的工作原理与结构32.1 工作原理32.2 结构框图42.3 酒精浓度检测仪的整体结构组成4第3章检测仪的硬件设计43.1 单片机的选择43.2 酒精浓度检测的设计63.2.1 MQ-3气敏传感器的结构和外形73.2.2 MQ-3灵敏度特性曲线83.2.3 MQ-3的标准工作条件和环境条件8 3.2.4酒精浓度信号的采集93.3 模数转换电路的设计103.3.1 ADC0809的特点103.3.2 模数转换电路103.4 按键设定阈值及阈值存储电路的设计11 3.5 液晶接口电路的设计113.6 声光报警电路的设计123.7 单片机与PC机串口通讯133.8 晶振电路的设计133.9 复位电路的设计143.10 附加功能电路的设计14第4章检测仪的整体原理图和实物图15第5章检测仪的软件实现165.1 A/D转换的软件实现165.2 阈值设定及显示的软件控制175.3 整体软件控制流程18第6章检测仪的软件功能调试206.1 按键修改酒精阈值程序206.2 模数转换测试206.3 液晶显示程序设计216.4 声光报警测试246.5 整体功能调试程序24第7章结论25参考文献26致谢27附录28附录A:全局变量头文件和延时模块28附录B:AD转化模块30附录C:24c08存储模块31附录D:LCD显示模块35附录E:主函数41第1章绪论1.1 选题的依据和课题的意义早在人类文明曙光初露之时,各大文明古国的酒文化就已萌芽。
数千年来,酒作为影响最广的一种饮品,与众多历史事件纠缠,也在各国各时期的文艺作品中经常出现。
过度饮酒已经造成了躯体或者精神的损害,并会带来不良的社会后果,如果饮酒时间和量达到一定的程度,饮酒者会无法控制自己的行为。
适当饮酒,可以使人心情愉悦、保持活力。
任务要求1.4路模拟量输入,输入电压范围0~5V,分辨率8位,转换时间100us,具有显示(数码管)测量结果(用10进制显示直流电压值或交流电压峰值)的功能;2.1路模拟量输出,用来分别重现4路被采信号的波形(供示波器观测)摘要本数据采集系统是基于单片机AT89C51来完成的,4路的模拟电压通过通用的8位A/D 转换器ADC0809转换成数字信号后,由单片机进行数据处理,并将处理后的数据送LED显示器显示。
再经过常用的8位D/A转换器DAC0832将数字数据转换成模拟量,供示波器观测。
一、系统的方案选择和论证根据题目基本要求,可将其划为如下几个部分:●4路模拟信号A/D转换●单片机数据处理●LED显示测量结果●D/A转换模拟量输出系统框图如图1所示:图1 单片机数据采集系统框图1、4路模拟信号A/D转换由于被测电压范围为0~5V,分辨率为8位,转换时间为100us,所以A/D转换部分,本系统选择常用的8路8位逐次逼近式A/D转换器ADC0809。
ADC0809芯片有28条引脚,采用双列直插式封装。
下面说明各引脚功能。
IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。
ALE:地址锁存允许信号,输入,高电平有效。
START:A/D转换启动信号,输入,高电平有效。
EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
基于PROTEUS的数据采集系统的设计与仿真渠丽岩【摘要】摘要:基于PROTEUS的数据采集系统,结合Keil C51软件,实现了对单片机系统进行硬件设计和软件仿真功能,不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
实验表明,使用PROTUES 对单片机的数据采集系统进行设计和仿真,结果正确可靠,而且可以有效提高开发效率。
【期刊名称】电子设计工程【年(卷),期】2014(022)004【总页数】3【关键词】数据采集系统;PROTEUS;AT89C51;Keil C51PROTEUS软件是LabCenter Electronics公司开发的EDA工具软件,它集成了高级原理图设计、混合模式SPICE电路仿真及PCB设计[1],最具特色的是它能够仿真基于单片机的电子系统。
PROTEUS不但支持MCS-51及其派生系列单片机的设计与仿真,还可以仿真基于AVR、ARM和PIC系列的嵌入式系统。
PROTEUS软件可提供各类元器库30多个,超过27 000多种元器件。
此外,对于元件库中没有的器件,用户可以依照需要自己创建。
在软件调试方面,其内部带有8051、AVR、PIC的汇编编译器,支持单片机汇编语言的编辑、编译和源代码级仿真,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源代码级仿真和调试。
PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化,这是实物演示难以达到的效果[2]。
在计算机广泛应用的今天,日益突显数据采集的重要性,它是计算机与外部世界连接的桥梁。
数据采集系统主要是将传感器采集来的模拟信号经A/D转换后形成数字信号,并通过接口电路送给处理器,然后再进行分析、传输、显示和存储等处理。
数据采集装置在工业现场和科学研究中应用广泛。
在生产过程中,应用这一装置可以对生产现场的各种参数进行采集、监控和记录,为提高产品质量、降低成本、增加生产效率提供信息和手段;在科学研究中,数据采集装置可获得大量的动态信息,是各种研究领域的有力工具,也是破解科学奥秘的重要手段之一[3]。
用8051、ADC0809设计一个8路数据采集系统《计算机控制技术》课程设计报告课题名称运用8051、ADC0809设计一个8路数据采集系统专业电子信息工程班级学生姓名1学号指导教师2012年 10月 23日1.设计目的本设计包括确定控制任务、系统总体设计、硬件系统设计、软件程序的设计等,使学生进一步学习理解计算机控制系统的组成原理、接口电路与应用程序,巩固与综合专业基础知识和相关专业课程知识,提高学生运用理论知识解决实际问题的实践技能。
(1)掌握数据采集系统的设计方法。
(2)结合8051设计一个8路数据采集系统。
2(设计内容设计一由80C51控制的A/D数据采集和控制系统,该卡具有对八个通道上0-5V 的模拟电压进行采集的能力,且可以用键盘选择装换通道,选择ADC0809作为A/D 转换芯片。
并在显示器上动态显示采集的数据。
3(设计要求(1)根据题目要求的指标,通过查阅有关资料,确定系统设计方案,并设计其硬件电路图。
(2)画出电路原理图,分析主要模块的功能及他们之间的数据传输和控制关系。
(3)用protel软件绘制电路原理图。
(4)软件设计,给出流程图。
4. 系统总体设计步骤第一步:信号调理电路第二步:8路模拟信号的产生与A/D转换器2被测电压要求为0~5V的直流电压,可通过电位器调节产生。
考虑本设计的实际需要,我选择八位逐次比较式A/D转换器(ADC0809)。
第三步:发送端的数据采集与传输控制器第四步:人机通道的接口电路第五步:数据传输接口电路用单片机作为控制系统的核心,处理来自ADC0809的数据。
经处理后通过串口传送,由于系统功能简单,键盘仅由两个开关和一个外部中断组成,完成采样通道的选择,单片机通过接口芯片与LED数码显示器相连,驱动显示器相应同采集到的数据。
经过分析,本系统数据采集部分核心采用ADC0809,单片机系统采用8051构成的最小系统,用LED动态显示采集到的数据。
数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。
1甲醇测试仪总体方案设计1.1甲醇浓度检测仪设计要求分析设计的甲醇浓度测试仪应具有如下特点:(1)数据采集系统以单片机为控制核心,外围电路带有LED显示以及键盘响应电路,无需要其他计算机,用户就可以与之进行交互工作,完成数据的采集、存储、计算、分析等过程。
(2)系统具有低功耗、小型化、高性价比等特点。
(3)从便携式的角度出发,系统成功使用了数码管显示器以及小键盘。
由单片机系统控制键盘和LED显示来实现人机交互操作,界面友好。
(4)软件设计简单易懂。
1.2甲醇浓度检测仪设计方案设计时,考虑甲醇浓度是由传感器把非电量转换为电量,传感器输出的是0-5伏的电压值且电压值稳定,外部干扰小等。
因此,可以直接把传感器输出电压值经过A/D转换器转换得到数据送入单片机进行处理。
此外,还需接人LED显示,4*4键盘,报警电路等。
其总体框图如图2.1所示。
图1.1基本工作原理图2硬件设计2.1传感器的选择本系统采用气敏传感器直接测量的是空气中的甲醇浓度。
传感器只能采对甲醇气体敏感,对其他气体不敏感,故选用MQ3型气敏传感器,这是考虑到周围空气中的气体成分可能影响传感器测量的准确性。
MQ3型气敏传感器由微型Al2O3,陶瓷管和测量电极、SnO2敏感层和加热器构成的敏感元件固定在塑料或不锈钢的腔体内,加热器为气敏元件的工作提供了必要的工作条件。
MQ3型气敏传感器有很高的灵敏度、良好的选择性、长期的使用寿命和可靠的稳定性。
传感器的标准回路有加热回路和信号输出回路两部分组成,它可以准确反映传感器表面电阻值的变化。
传感器的表面电阻RS的变化,是通过与其串联的负载电阻RL上的有效电压信号VRL输出面获得的。
负载电阻RL可调为0.5-200K。
加热电压Uh为5v。
上述这些参数使得传感器输出电压为0-5V。
MQ3型气敏传感器的结构和外形、标准回路、传感器阻值变化率与酒精浓度、外界温度的关系图如图3-3所示。
一般在测量前需将传感器预热5分钟,这个样子是为了使测量的精度达到最高,误差最小,需要找到合适的温度。
单片机原理与C51语言程序设计与基础教程课后习题答案习题填空题1.一般而言,微型计算机包括、、、四个基本组成部分。
2.单片机是一块芯片上的微型计算机。
以为核心的硬件电路称为单片机系统,它属于地应用范畴。
3.Atmel 公司生产的CMOS型51系列单片机,具有内核,用代替ROM作为程序存储器,4.单片机根据工作温度可分为、和三种。
民用级的温度范围是0℃一70℃,工业级是-40℃~85℃,军用级是-55℃-125℃(不同厂家的划分标推可能不同。
5.在单片机领域内,ICE的含义是。
选择题1.单片机的工作电压一般为V?A 5VB 3VC 1VD 4V2.单片机作为微机的一种,它具有如下特点:A 具有优异的性能价格比B 集成度高、体积小、可靠性高C 控制功能强,开发应用方便D 低电压、低功耗。
3.民用级单片机的温度范围是:A -40℃~85℃B 0℃一70℃C -55℃-125℃D 0℃一50℃4.MCS-51系列单片机最多有个中端源。
A 3B 4C 5D 65.下列简写名称中不是单片机或单片机系统的是A MCUB SCMC ICED CPU问答题1.单片机常用的应用领域有哪些?2.我们如何学习单片机这么技术?3.单片机从用途上可分成哪几类?分别由什么用处?答案填空题1.运算器、控制器、存储器、输入输出接口2.单片机嵌入式系统3.MCS-51 Flash ROM4.民用级(商业级) 工业级军用级5.在线仿真器选择题1.A2.ABCD3.B4.C5.D问答题1.单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:(1)在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
TEMP_ZH EQU 24H ;实测温度值存放单元TEMPL EQU 25HTEMPH EQU 26HTEMP_TH EQU 27H ;高温报警值存放单元TEMP_TL EQU 28H ;低温报警值存放单元TEMPHC EQU 29H ;正、负温度值标记TEMPLC EQU 2AHTEMPFC EQU 2BHK1 EQU P1.4 ;查询按键K2 EQU P1.5 ;设置/调整键K3 EQU P1.6 ;调整键K4 EQU P1.7 ;确定键BEEP EQU P3.7 ;蜂鸣器RELAY EQU P1.3 ;指示灯LCD_X EQU 2FH ;LCD 字符显示位置LCD_RS EQU P2.0 ;LCD 寄存器选择信号 LCD_RW EQU P2.1 ;LCD 读写信号LCD_EN EQU P2.2 ;LCD 允许信号FLAG1 EQU 20H.0 ;DS18B20是否存在标志 KEY_UD EQU 20H.1 ;设定按键的增、减标志 DQ EQU P3.3 ;DS18B20数据信号ORG 0000HLJMP MAINORG 0030HMAIN: MOV SP,#60HMOV A,#00HMOV R0,#20H ;将20H~2FH 单元清零MOV R1,#10HCLEAR: MOV @R0,AINC R0DJNZ R1,CLEARLCALL SET_LCDLCALL RE_18B20START: LCALL RST ;调用18B20复位子程序JNB FLAG1,START1 ;DS1820不存在LCALL MENU_OK ;DS1820存在,调用显示正确信息子程序MOV TEMP_TH,#055H ;设置TH初值85度MOV TEMP_TL,#019H ;设置TL初值25度LCALL RE_18B20A ;调用暂存器操作子程序LCALL WRITE_E2 ;写入DS18B20LCALL TEMP_BJ ;显示温度标记JMP START2START1: LCALL MENU_ERROR ;调用显示出错信息子程序 LCALL TEMP_BJ ;显示温度标记SJMP $START2: LCALL RST ;调用DS18B20复位子程序JNB FLAG1,START1 ;DS18B20不存在MOV A,#0CCH ;跳过ROM匹配命令LCALL WRITEMOV A,#44H ;温度转换命令LCALL WRITELCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#0BEH ;读温度命令LCALL WRITELCALL READ ;调用DS18B20数据读取操作子程序LCALL CONVTEMP ;调用温度数据BCD 码处理子程序LCALL DISPBCD ;调用温度数据显示子程序LCALL CONV ;调用LCD显示处理子程序LCALL TEMP_COMP ;调用实测温度值与设定温度值比较子程序LCALL PROC_KEY ;调用键扫描子程序SJMP START2 ;循环;*************************** 键扫描子程序*****************************PROC_KEY:JB K1,PROC_K1LCALL BEEP_BLJNB K1,$MOV DPTR,#M_ALAX1MOV A,#1LCALL LCD_PRINTLCALL LOOK_ALARMJB K3,$LCALL BEEP_BLJMP PROC_K2PROC_K1: JB K2,PROC_ENDLCALL BEEP_BLJNB K2,$MOV DPTR,#RST_A1MOV A,#1LCALL LCD_PRINTLCALL SET_ALARMLCALL RE_18B20 ;将设定的TH,TL值写入DS18B20LCALL WRITE_E2PROC_K2: LCALL MENU_OKLCALL TEMP_BJPROC_END:RET;*************************** 设定温度报警值TH、TL ***************************SET_ALARM:LCALL LOOK_ALARMAS0: JB K1,AS00LCALL BEEP_BLJNB K1,$CPL 20H.1 ;UP/DOWN 标记AS00: JB 20H.1,ASZ01 ;20H.1=1,增加JMP ASJ01 ;20H.1=0,减小ASZ01: JB K2,ASZ02 ;TH值调整(增加)LCALL BEEP_BLINC TEMP_THMOV A,TEMP_THCJNE A,#120,ASZ011MOV TEMP_TH,#0ASZ011: LCALL LOOK_ALARMLCALL DELAYJMP ASZ01ASZ02: JB K3,ASZ03 ;TL值调整(增加) LCALL BEEP_BLINC TEMP_TLMOV A,TEMP_TLCJNE A,#99,ASZ021MOV TEMP_TL,#00HASZ021: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP ASZ02ASZ03: JB K4,AS0 ;确定调整LCALL BEEP_BLJNB K4,$RETASJ01: JB K2,ASJ02 ;TH值调整(减少) LCALL BEEP_BLDEC TEMP_THMOV A,TEMP_THCJNE A,#0FFH,ASJ011ASJ011: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP AS0ASJ02: JB K3,ASJ03 ;TL值调整(减少)LCALL BEEP_BLDEC TEMP_TLMOV A,TEMP_TLCJNE A,#0FFH,ASJ021JMP ASJ022ASJ021: LCALL LOOK_ALARM ;MOV R5,#10LCALL DELAYJMP AS0ASJ022: CPL 20H.1JMP ASZ01ASJ03: JMP ASZ03RETRST_A1: DB " SET ALERT CODE " ,0;*********************** 实测温度值与设定温度值比较子程序**********************TEMP_COMP:MOV A,TEMP_THSUBB A,TEMP_ZH ;减数>被减数,则JC CHULI1 ;借位标志位C=1,转 MOV A,TEMPFCCJNE A,#0BH,COMPSJMP CHULI2COMP: MOV A,TEMP_ZHSUBB A,TEMP_TL ;减数>被减数,则JC CHULI2 ;借位标志位C=1,转MOV DPTR,#BJ5LCALL TEMP_BJ3CLR RELAY ;点亮指示灯RETCHULI1: MOV DPTR,#BJ3LCALL TEMP_BJ3SETB RELAY ;熄灭指示灯LCALL BEEP_BL ;蜂鸣器响RETCHULI2: MOV DPTR,#BJ4LCALL TEMP_BJ3SETB RELAY ;熄灭指示灯LCALL BEEP_BL ;蜂鸣器响RET;-----------------------------------------TEMP_BJ3: MOV A,#0CEHLCALL WCOMMOV R1,#0MOV R0,#2BBJJ3: MOV A,R1MOVC A,@A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ3RETBJ3: DB ">H"BJ4: DB "<L"BJ5: DB " !";;**************************** 显示温度标记子程序***************************TEMP_BJ: MOV A,#0CBHLCALL WCOMMOV DPTR,#BJ1 ;指针指到显示消息MOV R1,#0MOV R0,#2BBJJ1: MOV A,R1MOVC A,@A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ1RETBJ1: DB 00H,"C";******************************** 显示正确信息子程序***************************MENU_OK: MOV DPTR,#M_OK1 ;指针指到显示消息MOV A,#1 ;显示在第一行LCALL LCD_PRINTMOV DPTR,#M_OK2 ;指针指到显示消息MOV A,#2 ;显示在第一行LCALL LCD_PRINTRETM_OK1: DB " DS18B20 OK ",0M_OK2: DB " TEMP: ",0;******************************** 显示出错信息子程序***************************MENU_ERROR:MOV DPTR,#M_ERROR1 ;指针指到显示消息MOV A,#1 ;显示在第一行LCALL LCD_PRINTMOV DPTR,#M_ERROR2 ;指针指到显示消息1MOV A,#2 ;显示在第一行LCALL LCD_PRINTRETM_ERROR1: DB " DS18B20 ERROR ",0M_ERROR2: DB " TEMP: ---- ",0;****************************DS18B20复位子程序*****************************RST: SETB DQNOPCLR DQMOV R0,#6BH ;主机发出延时复位低脉冲MOV R1,#04HTSR1: DJNZ R0,$MOV R0,#6BHDJNZ R1,TSR1SETB DQ ;拉高数据线NOPNOPNOPMOV R0,#32HTSR2: JNB DQ,TSR3 ;等待DS18B20回应DJNZ R0,TSR2JMP TSR4 ; 延时TSR3: SETB FLAG1 ; 置1标志位,表示DS1820存在JMP TSR5TSR4: CLR FLAG1 ; 清0标志位,表示DS1820不存在 JMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,$ ; 时序要求延时一段时间TSR7: SETB DQRET;************************ DS18B20暂存器操作子程序***************************RE_18B20:JB FLAG1,RE_18B20ARETRE_18B20A:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEWR_SCRAPD:MOV A,#4EH ;写暂器LCALL WRITEMOV A,TEMP_TH ;TH(报警上限)LCALL WRITEMOV A,TEMP_TL ;TL(报警下限)LCALL WRITEMOV A,#7FH ;12位精度LCALL WRITERET;************************ 复制暂存器子程序*******************************WRITE_E2:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#48H ;把暂存器里的温度报警值拷贝到EEROMLCALL WRITERET;*********************** 重读EEROM子程序********************************READ_E2:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#0B8H ;把EEROM里的温度报警值拷贝回暂存器LCALL WRITERET;************************ 将自定义字符写入LCD的CGRAM中*********************STORE_DATA:MOV A,#40HLCALL WCOMMOV R2,#08HMOV DPTR,#D_DATAMOV R3,#00HS_DATA: MOV A,R3MOVC A,@A+DPTRLCALL WDATA ;写入数据INC R3DJNZ R2,S_DATARETD_DATA: DB 0CH,12H,12H,0CH,00H,00H,00H,00H;*********************** DS18B20数据写入操作子程序************************WRITE: MOV R2,#8 ;一共8位数据CLR CWR1: CLR DQ ;开始写入DS18B20总线要处于复位(低)状态MOV R3,#07DJNZ R3,$ ;总线复位保持16微妙以上RRC A ;把一个字节DATA 分成8个BIT 环移给CMOV DQ,C ;写入一位MOV R3,#3CHDJNZ R3,$ ;等待100微妙SETB DQ ;重新释放总线NOPDJNZ R2,WR1 ;写入下一位SETB DQRET;********************** DS18B20数据读取操作子程序**************************READ: MOV R4,#4 ;将温度低位、高位、TH、TL从DS18B20中读出MOV R1,#TEMPL ;存入25H、26H、27H、28H单元RE00: MOV R2,#8RE01: CLR CYSETB DQNOPNOPCLR DQ ;读前总线保持为低NOPNOPNOPSETB DQ ;开始读总线释放MOV R3,#09 ;延时18微妙DJNZ R3,$MOV C,DQ ;从DS18B20总线读得一位MOV R3,#3CHDJNZ R3,$ ;等待100微妙RRC A ;把读得的位值环移给ADJNZ R2,RE01 ;读下一位MOV @R1,AINC R1DJNZ R4,RE00RET;************************ 温度值BCD 码处理子程序*************************CONVTEMP: MOV A,TEMPH ;判温度是否零下ANL A,#08HJZ TEMPC1 ;温度零上转CLR CMOV A,TEMPL ;二进制数求补(双字节)CPL A ;取反加1ADD A,#01HMOV TEMPL,AMOV A,TEMPHCPL AADDC A,#00HMOV TEMPH,AMOV TEMPHC,#0BH ;负温度标志MOV TEMPFC,#0BHSJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;正温度标志MOV TEMPFC,#0AHTEMPC11: MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FH ;乘0.0625MOV DPTR,#TEMPDOTTABMOVC A,@A+DPTRMOV TEMPLC,A ;TEMPLC LOW=小数部分 BCDMOV A,TEMPL ;整数部分ANL A,#0F0H ;取出高四位SWAP AMOV TEMPL,AMOV A,TEMPH ;取出低四位ANL A,#0FHSWAP AORL A,TEMPL ;重新组合MOV TEMP_ZH,ALCALL HEX2BCD1MOV TEMPL,AANL A,#0F0HSWAP AORL A,TEMPHC ;TEMPHC LOW = 十位数BCDMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP A ;TEMPLC HI = 个位数BCDORL A,TEMPLCMOV TEMPLC,AMOV A,R4JZ TEMPC12ANL A,#0FHSWAP AMOV R4,AMOV A,TEMPHC ;TEMPHC HI = 百位数BCDANL A,#0FHORL A,R4MOV TEMPHC,ATEMPC12: RET;************************ 二-十进制转换子程序*****************************HEX2BCD1: MOV B,#064HDIV ABMOV R4,AMOV A,#0AHXCH A,BDIV ABSWAP AORL A,BRETTEMPDOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H ; 小数部分码表DB 05H,05H,06H,06H,07H,08H,08H,09H;********************** 查询温度报警值子程序***************************LOOK_ALARM: MOV DPTR,#M_ALAX2 ;指针指到显示信息区MOV A,#2 ;显示在第二行LCALL LCD_PRINTMOV A,#0C6HLCALL TEMP_BJ1MOV A,TEMP_TH ;加载TH数据MOV LCD_X,#3 ;设置显示位置LCALL SHOW_DIG2H ;显示数据MOV A,#0CEHLCALL TEMP_BJ1MOV A,TEMP_TL ;加载TL数据MOV LCD_X,#12 ;设置显示位置LCALL SHOW_DIG2L ;显示数据RETM_ALAX1: DB " LOOK ALERT CODE",0M_ALAX2: DB "TH: TL: ",0TEMP_BJ1: LCALL WCOMMOV DPTR,#BJ2 ;指针指到显示信息区 MOV R1,#0MOV R0,#2BBJJ2: MOV A,R1MOVC A,@A+DPTRLCALL WDATADJNZ R0,BBJJ2RETBJ2: DB 00H,"C";************************** LCD显示子程序**********************************SHOW_DIG2H: MOV B,#100DIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BMOV A,#0AHXCH A,BDIV ABADD A,#30HINC LCD_XPUSH BMOV B,LCD_XLCALL LCDP2INC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RETSHOW_DIG2L: MOV B,#100DIV ABMOV A,#0AHXCH A,BDIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BINC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RET;************************ 显示区BCD 码温度值刷新子程序**********************DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,A ;小数位MOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,A ;个位MOV A,TEMPHCANL A,#0FHMOV 72H,A ;十位MOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,A ;百位DISPBCD2: RET;*************************** LCD 显示数据处理子程序*************************CONV: MOV A,73H ;加载百位数据MOV LCD_X,#6 ;设置位置CJNE A,#1,CONV1JMP CONV2CONV1: CJNE A,#0BH,CONV11MOV A,#"-" ;"-"号显示JMP CONV111CONV11: MOV A,#" " ;"+"号不显示CONV111: MOV B,LCD_XLCALL LCDP2JMP CONV3CONV2: LCALL SHOW_DIG2 ;显示数据CONV3: INC LCD_XMOV A,72H ;十位LCALL SHOW_DIG2INC LCD_XMOV A,71H ;个位LCALL SHOW_DIG2INC LCD_XMOV A,#'.'MOV B,LCD_XLCALL LCDP2MOV A,70H ;加载小数点位INC LCD_X ;设置显示位置LCALL SHOW_DIG2 ;显示数据RET;*************************** 第二行显示数字子程序*************************SHOW_DIG2:ADD A,#30HMOV B,LCD_XLCALL LCDP2RET;*************************** 第二行显示数字子程序*************************LCDP2: PUSH ACCMOV A,B ;设置显示地址ADD A,#0C0H ;设置LCD的第二行地址LCALL WCOM ;写入命令POP ACC ;由堆栈取出ALCALL WDATA ;写入数据RET;*************************** 对LCD 做初始化设置及测试*************************SET_LCD: CLR LCD_ENLCALL INIT_LCD ;初始化 LCDLCALL STORE_DATA ;将自定义字符存入LCD的CGRAM RET;****************************** LCD初始化***********************************INIT_LCD: MOV A,#38H ;2行显示,字形5*7点阵LCALL WCOMLCALL DELAY1MOV A,#38HLCALL WCOMLCALL DELAY1MOV A,#38HLCALL WCOMLCALL DELAY1MOV A,#0CH ;开显示,显示光标,光标不闪烁 LCALL WCOMLCALL DELAY1MOV A,#01H ;清除 LCD 显示屏LCALL WCOMLCALL DELAY1RET;***************************** 清除LCD的第一行字符**************************CLR_LINE1:MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOMMOV R0,#24 ;设置计数值C1: MOV A,#' ' ;载入空格符至LCDLCALL WDATA ;输出字符至LCDDJNZ R0,C1 ;计数结束RET;************************* LCD的第一行或第二行显示字符**********************LCD_PRINT:CJNE A,#1,LINE2 ;判断是否为第一行LINE1: MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOM ;写入命令LCALL CLR_LINE ;清除该行字符数据MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOM ;写入命令JMP FILLLINE2: MOV A,#0C0H ;设置 LCD 的第二行地址LCALL WCOM ;写入命令LCALL CLR_LINE ;清除该行字符数据MOV A,#0C0H ;设置 LCD 的第二行地址LCALL WCOMFILL: CLR A ;填入字符MOVC A,@A+DPTR ;由消息区取出字符CJNE A,#0,LC1 ;判断是否为结束码RETLC1: LCALL WDATA ;写入数据INC DPTR ;指针加1JMP FILL ;继续填入字符RET;*************************** 清除1行LCD 的字符****************************CLR_LINE: MOV R0,#24CL1: MOV A,#' 'LCALL WDATADJNZ R0,CL1RETDE: MOV R7,#250DJNZ R7,$RET;**************************** LCD 间接控制方式命令写入*************************WCOM: MOV P0,A ;写入命令CLR LCD_RS ;RS=L,RW=L,D0-D7=指令码,E=高脉冲 CLR LCD_RWSETB LCD_ENLCALL DELAY1CLR LCD_ENRET;**************************** LCD 间接控制方式数据写入*************************WDATA: MOV P0,A ;写入数据SETB LCD_RSCLR LCD_RWSETB LCD_ENLCALL DELCALL DERET;************************** 在LCD的第一行显示字符**************************LCDP1: PUSH ACCMOV A,B ;设置显示地址ADD A,#80H ;设置LCD的第一行地址LCALL WCOM ;写入命令POP ACC ;由堆栈取出ALCALL WDATA ;写入数据RET;****************************** 声光报警子程序*******************************BEEP_BL: MOV R6,#100BL2: LCALL DEX1CPL BEEPCPL RELAYDJNZ R6,BL2MOV R5,#10RETDEX1: MOV R7,#180DE2: NOPDJNZ R7,DE2RET;****************************** 延时子程序*******************************DELAY: MOV R6,#50DL1: MOV R7,#100DJNZ R7,$DJNZ R6,DL1DJNZ R5,DELAYRETDELAY1: MOV R6,#25 ;延时5毫秒DL2: MOV R7,#100DJNZ R7,$DJNZ R6,DL2RETEND。
基于51单片机的温控系统设计1.引言1.1 概述概述部分的内容可以包括以下几个方面:温控系统是一种广泛应用于各个领域的实时温度控制系统。
随着科技的发展和人们对生活质量的要求提高,温控系统在工业、家居、医疗、农业等领域得到了广泛应用。
温度作为一个重要的物理量,对于许多过程和设备的稳定运行至关重要。
因此,设计一种高效可靠的温控系统对于提高工作效率和产品质量具有重要意义。
本文将基于51单片机设计一个温控系统,通过对系统的整体结构和工作原理的介绍,可以深入了解温控系统在实际应用中的工作机制。
以及本文重点研究的51单片机在温控系统中的应用。
首先,本文将介绍温控系统的原理。
温控系统的核心是温度传感器、控制器和执行器三部分组成。
温度传感器用于实时检测环境温度,通过控制器对温度数据进行处理,并通过执行器对环境温度进行调节。
本文将详细介绍这三个组成部分的工作原理及其在温控系统中的作用。
其次,本文将重点介绍51单片机在温控系统中的应用。
51单片机作为一种经典的微控制器,具有体积小、功耗低、性能稳定等优点,广泛应用于各种嵌入式应用中。
本文将分析51单片机的特点,并介绍其在温控系统中的具体应用,包括温度传感器的数据采集、控制器的数据处理以及执行器的控制等方面。
最后,本文将对设计的可行性进行分析,并总结本文的研究结果。
通过对温控系统的设计和实现,将验证51单片机在温控系统中的应用效果,并对未来的研究方向和发展趋势进行展望。
通过本文的研究,可以为温控系统的设计与应用提供一定的参考和指导,同时也为利用51单片机进行嵌入式系统设计的工程师和研究人员提供一定的技术支持。
1.2文章结构文章结构部分的内容可以包含以下内容:文章结构部分旨在介绍整篇文章的组织结构和各个部分的内容。
本篇文章基于51单片机的温控系统设计,总共分为引言、正文和结论三部分。
引言部分主要包括概述、文章结构和目的三个小节。
首先,概述部分介绍了本文的主题,即基于51单片机的温控系统设计。
基于51单片机实现ADC0808数模转换与显示LT摘要通过上学期对数据采集的学习,让我对A/D转化器有了一定的了解.A/D转换器是把采集到的采样模拟信号量化和编码后,转换成数字信号并输出的一种器件.而现在A/D转换电路已集成在一块芯片上.本课程设计采用芯片是ADC0808.ADC0808是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
本课程设计以AT89C51单片机为核心,实现ADC0808的数模转换与显示,然后把转换后的结果显示在数码管上。
关键字:数据采集,A/D转化器,ADC0808,逐次逼近式,单片机目录一、设计目的 (1)二、设计要求和设计指标 (1)三、设计内容 (1)3.1 芯片简介 (1)3.1.1 A/D转换模块 (1)3.1.2 AT89C51单片机的结构原理与引脚功能 (4)3.2电路设计 (7)3.3程序设计 (9)四、本设计改进建议 (11)五、总结 (12)六、主要参考文献 (12)附录 (12)一、设计目的本课程设计的目的就是要锻炼学生的实际动手能力。
在理论学习的基础上,通过完成一个具有综合功能的小系统,使学生将课堂上学到的理论知识与实际应用结合起来,对电子电路、电子元器件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立设计单片机应用系统的开发设计工作打下一定的基础。
二、设计要求和设计指标以AT89C51单片机为核心,实现ADC0808的数模转换与显示。
转换后的结果显示在数码管上。
三、设计内容3.1 芯片简介3.1.1 A/D转换模块ADC0808是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制[1]逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
(1)ADC0808的内部逻辑结构由下图3-1-1可知,ADC0808由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
51单片机定时器设置51单片机,也被称为8051微控制器,是一种广泛应用的嵌入式系统。
它具有4个16位的定时器/计数器,可以用于实现定时、计数、脉冲生成等功能。
通过设置相应的控制位和计数初值,可以控制定时器的启动、停止和溢出等行为,从而实现精确的定时控制。
确定应用需求:首先需要明确应用的需求,包括需要定时的时间、计数的数量等。
根据需求选择合适的定时器型号和操作模式。
设置计数初值:根据需要的定时时间,计算出对应的计数初值。
计数初值需要根据定时器的位数和时钟频率进行计算。
设置控制位:控制位包括定时器控制寄存器(TCON)和中断控制寄存器(IE)。
通过设置控制位,可以控制定时器的启动、停止、溢出等行为,以及是否开启中断等功能。
编写程序代码:根据需求和应用场景,编写相应的程序代码。
程序代码需要包括初始化代码和主循环代码。
调试和测试:在完成设置和编程后,需要进行调试和测试。
可以通过观察定时器的状态和输出结果,检查定时器是否按照预期工作。
计数初值的计算要准确,否则会影响定时的精度。
控制位的设置要正确,否则会导致定时器无法正常工作。
需要考虑定时器的溢出情况,以及如何处理溢出中断。
需要考虑定时器的抗干扰能力,以及如何避免干扰对定时精度的影响。
需要根据具体应用场景进行优化,例如调整计数初值或控制位等,以达到更好的性能和精度。
51单片机的定时器是一个非常实用的功能模块,可以用于实现各种定时控制和计数操作。
在进行定时器设置时,需要注意计数初值的计算、控制位的设置、溢出处理以及抗干扰等问题。
同时需要根据具体应用场景进行优化,以达到更好的性能和精度。
在实际应用中,使用51单片机的定时器可以很方便地实现各种定时控制和计数操作,为嵌入式系统的开发提供了便利。
在嵌入式系统和微控制器领域,51单片机因其功能强大、使用广泛而备受。
其中,定时器中断功能是51单片机的重要特性之一,它为系统提供了高精度的定时和计数能力。
本文将详细介绍51单片机定时器中断的工作原理、配置和使用方法。
单片机多路数据采集控制系统课程设计报告叶醒Xb09610118 余希Xb09610120一、设计目的运用单片机原理及其应用等课程知识,根据题目要求进行软硬件系统的设计和调试,从而加深对本课程知识的理解,把学过的比较零碎的知识系统化,比较系统的学习开发单片机应用系统的基本步骤和基本方法,使学生应用知识能力、设计能力、调试能力以及报告撰写能力等有一定的提高。
二、设计要求用8051单片机设计数据采集控制系统,基本要求如下:基本部分:1.可实现8路数据的采集,假设8路信号均为0~5V的电压信号。
2.采集数据可通过LCD显示,显示格式为[通道号] 电压值,如[01] 4.5。
3.可通过键盘设置采集方式:单点采集、多路巡测、采集时间间隔。
4.具有异常数据声音爆晶功能:对第一路数据可设置正常数据的上限值和下限值,当采集的数据出现异常,发出报警信号。
选作功能:1.异常数据音乐报警。
2.可输出8路顺序控制信号,设每路顺序控制信号为一位,顺序控制的流程为:三、总体设计我们选择单片机与A/D转换芯片结合的方法实现本设计。
使用的基本元器件是:A T89C52单片机,ADC0809模数转换芯片,LCD显示器,按键,电容,电阻,晶振等。
数字电压测量电路由A/D转换、数据处理及显示控制等组成。
A/D转换由集成电路ADC0809完成。
ADC0809具有8路拟输入端口,地址线(23~- 25脚)可决定对哪一路模拟输入作A/D换。
22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。
6脚为测试控制,当输入一个2uS宽高电平脉冲时,就开始A/D转换。
7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。
9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出。
10脚为0809的时钟输入端。
单片机的P1.5~P1.7、P3端口作1602液晶显示控制。
P2端口作A/D转换数据读入用,P0端口用作0809的A/D 转换控制。
课程设计报告书设计任务书一、设计任务1一秒钟采集一次。
2把INO口采集的电压值放入30H单元中。
3做出原理图。
4画出流程图并写出所要运行的程序。
二、设计方案及工作原理方案: 1. 采用8051和ADC0809构成一个8通道数据采集系统。
2. 能够顺序采集各个通道的信号。
3. 采集信号的动态范围:0~5V。
4. 每个通道的采样速率:100 SPS。
5.在面包板上完成电路,将采样数据送入单片机20h~27h存储单元。
6.编写相应的单片机采集程序,到达规定的性能。
工作原理:通过一个A/D转换器循环采样模拟电压,每隔一定时间去采样一次,一次按顺序采样信号。
A/D转换器芯片AD0809将采样到的模拟信号转换为数字信号,转换完成后,CPU读取数据转换结果,并将结果送入外设即CRT/LED显示,显示电压路数和数据值。
目录第一章系统设计要求和解决方案第二章硬件系统第三章软件系统第四章实现的功能第五章缺点及可能的解决方法第六章心得体会附录一参考文献附录二硬件原理图附录三程序流程图第一章系统设计要求和解决方案根据系统基本要求,将本系统划分为如下几个部分:●信号调理电路●8路模拟信号的产生与A/D转换器●发送端的数据采集与传输控制器●人机通道的接口电路●数据传输接口电路数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。
系统框图如图1-1所示1.1 信号采集分析被测电压为0~5V 直流电压,可通过电位器调节产生。
1.1.1 信号采集多路数据采集系统多采用共享数据采集通道的结构形式。
数据采集方式选择程序控制数据采集。
程序控制数据采集,由硬件和软件两部分组成。
,据不同的采集需要,在程序存储器中,存放若干种信号采集程序,选择相应的采集程序进行采集工作,还可通过编新的程序,以满足不同采样任务的要求。
如图1-3所示。
程序控制数据采集的采样通道地址可随意选择,控制多路传输门开启的通道地址码由存储器中读出的指令确定。
即改变存储器中的指令内容便可改变通道地址。
由于顺序控制数据采集方式缺乏通用性和灵活性,所以本设计中选用程序控制数据采集方式。
采集多路模拟信号时,一般用多路模拟开关巡回检测的方式,即一种数据采集的方式。
利用多路开关(MUX )让多个被测对象共用同一个采集通道,这就是多通道数据采集系统的实质。
当采集高速信号时,A/D 转换器前端还需加采样/保持(S/H)电路。
待测量一般不能直接被转换成数字量,通常要进行放大、特性补偿、滤波等环节的预处理。
被测信号往往因为幅值较小,而且可能还含有多余的高频分量等原因,不能直接送给A/D 转换器,需对其进行必要的处理,即信号调理。
如对信号进行放大、衰减、滤波等。
通常希望输入到A/D 转换器的信号能接近A/D 转换器的满量程以保证转换精度,因此在直流电流电源输出端与A/D 转换器之间应接入放大器以满足要求。
本题要求中的被测量为0~5V 直流信号,由于输出电压比较大,满足A/D 转换输入的要求,故可省去放大器,而将电源输出直接连接至A/D 转换器输入端。
多路数据采集输入通道的结构图1-4所示。
图1-3 程序控制数据采集原理 图1-1 一般系统框图图1-4 多路数据采集输入通道结构ADC0809是TI公司生产的8位逐次逼近式模数转换器,包括一个8位的逼近型的ADC部分,并提供一个8通道的模拟多路开关和联合寻址逻辑,为模拟通道的设计提供了很大的方便。
用它可直接将8个单端模拟信号输入,分时进行A/D转换,在多点巡回监测、过程控制等领域中使用非常广泛,所以本设计中选用该芯片作为A/D转换电路的核心。
1.2.1 单片机系统分析1.复位电路单片机在开机时都需要复位,以便中央处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。
51的RST引脚是复位信号的输入端。
复位电平是高电平有效,持续时间要有24个时钟周期以上。
本系统中单片机时钟频率为6MHz则复位脉冲至少应为4us。
在MCS-51单片机系列芯片中,用8051或8751芯片可以构成最小系统。
因为8051和8751是片内有ROM/EPROM的单片机,用这种芯片构成的单片及最小系统简单、可靠。
8051构成的最小系统特点:●受集成度所限,只能用于小型控制单元。
●有可供用户使用的大量的I/O口线。
●仅有芯片内部的存储器,故存储器的容量有限。
●8051的应用软件要依靠半导体掩膜技术植入,适于在大批量生产的应用系统中使用。
第二章硬件系统2.1 信号调理电路信号调理的任务将被测对象的输出信号变换成计算机要求的输入信号。
对于多通道数据采集系统的输入通道,设置多路选择开关,可降低硬件开销。
如图2-1所示。
为避免小信号通过模拟开关造成较大的附加误差,在传感器输出信号过小时,每个通道应设前置放大环节(本文可不加以考虑)。
图2-1 信号调理过程2.2 数据采集电路把连续变化量变成离散量的过程称为量化,也可理解为信号的采样。
把以一定时间间隔T 逐点采集连续的模拟信号,并保持一个时间t ,使被采集的信号变成时间上离散、幅值等于采样时刻该信号瞬时值的一组方波序列信号,即采样信号。
2 ADC0809内部功能与引脚介绍分辨率和精度在第一章中已作了相应的计算和分析。
ADC0809八位逐次逼近式A /D 转换器是一种单片CMOS 器件,包括8位模拟转换器、8通道转换开关和与微处理器兼容的控制逻辑。
8路转换开关能直接连通8个单端模拟信号中的任何一个。
其内部结构如图2-2所示。
1.ADC0809主要性能◆ 逐次比较型◆ CMOS 工艺制造◆ 单电源供电◆ 无需零点和满刻度调整◆ 具有三态锁存输出缓冲器,输出与TTL 兼容◆ 易与各种微控制器接口◆ 具有锁存控制的8路模拟开关◆ 分辨率:8位◆ 功耗:15mW◆ 最大不可调误差小于±1LSB (最低有效位)◆ 转换时间(500CLK f KHz =)128us◆ 转换精度:0.4%±◆ ADC0809没有内部时钟,必须由外部提供,其范围为10~1280kHz 。
典型时钟频率为640kHz2.引脚排列及各引脚的功能,引脚排列如图2-3所示。
图2-2 ADC0809内部结构各引脚的功能如下:IN0~IN7:8D0~D7:8位转三态输出,D7是最高位,D0是最低位。
A、B、C:通道CBA=000时,CBA=111时,ALE:地址锁存信号在上升沿处把A、B、C 的状态锁存到内部的多路开关的地址锁存器中,从而选通8路模拟信号中的某一路。
START:启动转换信号输入端。
从START端输入一个正脉冲,其下降沿启动ADC0809开始转换。
脉冲宽度应不小于100~200ns。
EOC:转换结束信号输出端。
启动A/D转换时它自动变为低电平。
OE:输出允许端。
CLK:时钟输入端。
ADC0809的典型时钟频率为640kHz,转换时间约为100μs。
REF(-)、REF(+):参考电压输入端。
ADC0809的参考电压为+5V。
VCC、GND:供电电源端。
ADC0809使用+5V单一电源供电。
当ALE为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译码。
在START上升沿时,所有的内部寄存器清零,在下降沿时,开始进行A/D转换,此期间START应保持低电平。
在START下降沿后10us左右,转换结束信号变为低电平,EOC为低电平时,表示正在转换,为高电平时,表示转换结束。
OE为低电平时,D0~D7为高阻状态,OE为高电平时,允许转换结果输出。
2.2.3 ADC0809与MCS-51系列单片机的接口方法ADC0809与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式,本题中选用中断接口方式。
由于ADC0809无片内时钟,时钟信号可由单片机的ALE信号经D触发器二分频后获得。
ALE引脚得脉冲频率是8051时钟频率的1/6。
该题目中单片机时钟频率采用6MHz,则ALE输出的频率是1MHz,二分频后为500Hz,符合ADC0809对频率的要求。
由于ADC0809内部设有地址锁存器,所以通道地址由P0口的低3位直接与ADC0809的A、B、C相连。
通道基本地址为0000H~0007H。
其对应关系如表2-1所示。
表2-1 0809输入通道地址1 0 1 IN51 1 0 IN61 1 1 IN7控制信号:将P2.7作为片选信号,在启动A/D转换时,由单片机的写信号和P2.7控制ADC的地址锁存和启动转换。
由于ALE和START连在一起,因此ADC0809在锁存通道地址的同时也启动转换。
在读取转换结果时,用单片机的读信号RD和P2.7引脚经或非门后,产生正脉冲作为OE信号,用一打开三态输出锁存器。
START信号和OE信号的逻辑表达式为当8051通过对0000H~0007H(基本地址)中的某个口地址进行一次写操作,即可启动相应通道的A/D转换;当转换结束后,ADC0809的EOC端向8051发出中断申请信号;8051通过对0000H~0007H中的某个口地址进行一次读操作,即可得到转换结果。
第3章软件系统ORG 0000hMOV r1,#20h ;取数20h送 r1中MOV r2,#8h ; channel number! ;取数8h送r2中MOV TL0,#0h ;启动 TL0MOV TH0,#0b8h ;设置定时初值THO;MOV tmod,#1h ;选择工作方式1clr et0 ;清零setb tr0 ;启动T0工作MOV scon,#40h ;设置串口工作方式1MOV dptr,#78ffh ;取源数据地址送dptr loop: MOV a,r2 ;将r2中的数据送累加器a中SUBB a,r1 ;将r1中的数据与a中数据进位减法运算jnz loop2 ;结果不为零则转loop2MOV r1,#0h ;对r1清零MOV dptr,#78ffh ;取源数据地址送dptrMOV r1,#0h ;对r1清零MOV dptr,#78ffh ;取源数据地址送dptrloop1: jnb tf0,loop1 ;定时器无溢出则转入loop1clr tf0 ;对tf0清零MOV TL0,#0h ;对tlo清零MOV TH0,#0b8h ;设置定时初值TH0loop2: MOVx @dptr,a ;start A/D ;启动模数转换器loop3: jb p1.0,loop3 ;p1.0为1则转loop3loop4: jnb p1.0,loop4 ;check flag ;p1.0为0则转loop4MOVx a,@dptr ;读取结果MOV @r1,a ;保存结果inc dph ; ;选取下一个inc r1 ;计数器减1ljmp loop ;返回到loopend整个系统软件设计分为两个部分,作为主控的PC端的软件设计及作为数据采集器的单片机终端节点的软件设计。