proteus课程设计(基于单片机的数据采集)
毕业设计(论文)-基于proteus的数据采集系统设计[管理资料]
![毕业设计(论文)-基于proteus的数据采集系统设计[管理资料]](https://img.taocdn.com/s3/m/1b8dce7a6529647d26285273.png)
东北石油大学毕业设计(论文)任务书题目基于proteus的数据采集处理系统专业学号姓名主要内容:1、针对基于单片机的温度的数据采集系统进行深入的研究,分析其硬件结构和优缺点;2、选择温度传感器和单片机、应用PROTEUS软件设计系统电路图和Keil软件设计系统程序;3、应用PROTEUS软件仿真实现数据采集系统。
基本要求:1、设计完善的硬件电路图;2、应用Proteus软件仿真实现3、提交规范的论文。
主要参考资料:[1] 张丹,[J].仪器仪表标准化与测量,2008(1):42-44[2] 周润景. 基于DS18B20的温度测量模块设计[M].机械工业出版社,.[3] [M].高等教育出版社,2004:58-67[4] 林祝亮,武林,,2006,完成期限:指导教师签名:专业负责人签名:年月日摘要随着微型计算机技术的飞速发展和普及,数据采集监测已成为日益重要的检测技术,广泛应用于工农业等需要同时监控温度、湿度和压力的场合。
本设计以温室环境作为研究对象,主要研究了温度数据采集系统的设计过程与仿真的实现方法。
针对该系统设计了基于单片机的温度数据采集系统的各部分电路并利用汇编语言设计了针对该系统的各个环节的子程序。
同时在Proteus环境下结合Keil uVision 2成功实现了基于单片机的温度数据采集系统的仿真调试。
该系统实现了温度数据的采集、处理、实时显示、开关量的控制输出、超限报警及系统键盘设置等功能。
此外,该系统可手动调节报警上下限,控制方便,操作简单。
本设计的仿真方法提高了系统的开发效率、缩短周期和降低成本,为单片机系统的开发提供了手段。
关键词:AT89C51;温度;proteusAbstractWith the rapid development and popularization of micro-computer technology,data acquisition monitoring has become an increasingly important detection techniquesare widely used in industry and agriculture need to monitor such as temperature, humidity and pressure of the occasion. The design and simulation implementation methods of temperature data acquisition system are introduced in this paper, which takes a green house as the research object. Each part of the circuit based on the MCU temperature data acquisition system is designed for the system and the use of assembly language to design subroutine of each link for the system. At the same time, in the Proteus environment combined with Keil uVision 2 realized the virtual simulation debugging process based on MCU temperature data acquisition system. The system verify that it is possible to realize many functions, such as temperature data acquisition, data processing , displaying on real time,the output of switching value , alarm, and the keyboard operation and so on . In addition, the system can manually adjust the alarm range, convenient control and simple operation. This design of the simulation method is proved to be an effective means which raised the development efficiency, reduced the cycle time and saved costs .Key words : AT89C51 ; temperature ; Proteus目录第1章绪论 (1)研究背景及其目的意义 (1)国内外研究现状 (2)该课题研究的主要内容 (2)本章小结 (3)第2章数据采集系统方案论证 (4)数据采集系统 (4)方案论证 (4)系统的元件介绍 (7)本章小结 (18)第3章数据采集系统原理及分析 (19)系统总体流程图 (19)系统各部分电路设计 (20)本章小结 (29)第4章软件部分 (30)仿真软件 (30)主程序设计 (34)仿真结果 (39)功能模块的调试 (41)本章小结 (42)结论 (43)参考文献 (44)致谢 (44)附录1:程序 (45)附录2:系统原理图 (56)第1章绪论研究背景及其目的意义近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。
单片机综合设计--基于PROTEUS的多功能数字电子钟的设计1

单片机综合设计指导书计算机学院一、综合设计目的:学习单片机的目的是能把它应用到实时控制系统以及仪器仪表和家用电器等各个领域,单片机应用技术这门课程的实验课、综合设计和毕业设计是既相互联系又有区别的三大实践性教学环节,而且是循序渐进的。
实验课是穿插在讲课过程中进行的,每讲完一部分内容,跟上一个实验,及时巩固加深学过的理论知识;综合设计是针对单片机应用技术课程结束后的一个总结,让学生自己设计出一个简单的单片机应用系统,用PROTUES完成系统仿真,然后独立搭出硬件线路,编写出相应的软件应用程序,经过调试,运行出结果。
目的是初步培养学生综合运用所学单片机理论知识的能力和应用学过的单片机理论知识解决实际问题的能力,也为最后的毕业设计打下一定的基础。
学生应提交相应的电子和打印规范文档,实验结果、程序源代码和原理图等。
通过综合设计的训练,培养学生实际分析问题、编程和动手能力,最终目标是想通过综合设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。
二、综合设计题目:1.十字路口交通灯的设计与功能实现(1)设计内容设计用单片机控制的十字路口交通灯及撞红灯报警控制系统,并实现这些功能。
(2)设计要求<1>用8255驱动三种颜色的十二只发光二极管,用软件使它们模拟十字路口交通灯的功能。
<2>当某一方向的红灯亮时,若该方向有车辆通过,则发声报警。
<3>根据时段调整路口通行和禁止通行的时间。
2.温度检测与上限报警系统的设计与实现(1)设计内容设计并实现能检测温度等模拟信号,并能产生上限报警信号的系统。
(2)设计要求<1>能对输入的0~5V模拟电压信号进行检测。
<2.>能判断所检测的信号是否越界,界限通过单片机进行设计。
<3>若信号越界则进行声、光报警。
3.电子钟的设计及定时系统的实现(1)设计内容利用单片机开发装置完成显示时,分,秒的时间显示功能,可通过键盘的任意设定,修改显示时间和闹钟时间。
基于Proteus的单片机数据采集系统仿真

(4)运行Keil程序,进入Project菜单Option For Target“工程名”。在Debug选项卡右栏上部的下拉菜 单中选中Proteus VSM Monitor-5 1 Driver。单击Settings 按钮,如果是在同一台PC机上运行,则IP名为127. 0.0.1;如不是,则填另一台PC机的IP地址,端口号一 定为8000。然后在Keil中编写MCU的程序。
信
I扭矩测¨ 号 l景信号h if爿
/1 \
I温度测¨ 理 土 多
控制信号
卜\
∞
妙∥ o U 主
I量信号~ l电流测¨
电 路
7
路 开 关
l量信号h
l压力测¨
模拟
专 呈 量信号 卜\
放
^
/
大 器
V
∞ ∞
l量信号h
图1系统总体结构图
2.2硬件电路设计 Proteus拥有非常完善的自带元件库,还支持第三
方元件库,利用其可以非常方便地搭建系统的硬件电
至此,Proteus与Keil的连接就完成了,并可以在 Keil中进行Debug,同时可在Proteus中通过LED、 LCD、虚拟示波器等直观地观察结果。
2数据采集系统的设计
该数据采集系统为变量泵试验台的一部分,因此 在设计阶段应充分考虑各传感器输出信号特性,对不 同类型的信号量进行特定的处理。
2.1系统总体框架
(Key Lab.矿Ministry矿Education for Province jointed Mechanical Manufacture&Automation, Zhejiang University矿Technology,Hangzhou 310014,China)
proteus课程设计(基于单片机的数据采集)

电子设计应用软件训练总结报告一.任务说明(一)设计利用51单片机设计一个数据采集系统,用3位数码管显示输入的电压:二.原理图绘制说明电路原理图主要应包含数据采集电路,AD(模数)转换电路,数据显示电路三个部分。
下面分三个部分进行说明。
(一)数据采集电路根据任务的要求,该部分电路需要对八路数据进行采集,然后输出到下一级电路,在这里,用八个显示不同电压值的电压源来构成,其输出端对应连接到AD 转换电路的输入端即可。
(二)AD(模数)转换电路根据任务的要求,本部分电路需要把数据采集电路采集到的模拟电压量转换成数字电压量,所以在这里选用一个ADC0808芯片作为AD转换电路,本部分电路需把转换之后的数字量输出到数据显示电路即可。
ADC0808是一个有8路输入的AD转换器,可以根据需要来选择使用的输入通道个数,用ABC三个端口可以控制通道的选择,这里因为需要对八路数据进行采集转换,所以,这里需要使用ADC0808所有的输入通道,通道0到7分别和电压源0到7进行连接。
转换启动信号START 和地址所存信号ALE 都是用51单片机的P2.7和P3.6口通过与非门后的输出来控制,允许输出信号OE由P2.7口和P3.7口通过与非门后的输出控制,通道选择端控制端ABC分别用单片机的P0.0,P0.1和P0.2三个端口来控制。
转换结果输出端(OUT0到OUT7)通过总线分别与51单片机的P0.7到P0.0口连接。
具体连接方式如图1所示:图1 AD转换电路的连接方式(三)数据显示电路本部分电路主要由AT89C51单片机和一个四位一体的共阴极的数码管以及电阻构成。
其中,前三个数码管用来显示采集到的电压值,后一个数码管用来显示采集数据来自哪路通道。
51单片机的P3.0,P3.1,P3.2,P3.3口分别用来控制数码管的开启和关闭,P2.0到P2.6以及P3.5分别与数码管的各段连接。
具体链接方式如图2所示:图2 数据显示电路三.流程图绘制以及说明(一)主程序流程图如图3所示:说明:程序开始执行后,首先启动ADC0808,执行AD转换,接着判断转换是否结束,如果转换没有结束,则程序原地等待,如果转换结束,ADC0808允许转换后数据输出,同时将输出数据暂存起来,此时关闭输出;同时,由单片机将接收到得数字量转换成BCD 码,再调用BCD码显示子程序来显示转换后的BCD码,到此,程序结束。
基于PROTEUS的数据采集系统的设计与仿真

基于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]。
单片机基于PROTEUS仿真的秒表的课程设计

1 引言1.1 课程设计的目的1) 通过本次课程设计加深对单片机课程的全面认识和掌握,对单片机课程的应用进一步的了解。
2) 通过本次课程设计将单片机软硬件结合起来,对程序进行编辑,校验,锻炼理论联系实际的能力。
3) 综合运用《单片机原理及应用》课程的理论知识、与设计课题相关的参考资料、基本开发仪器及工具和实验室所具有的其它软硬件环境,设计一个典型的单片机应用系统并通过仿真调试出结果。
4) 通过本次课程设计提高学生的综合能力、动手能力、文献资料查阅能力,为毕业设计和以后工作打下一个良好的基础。
1.2 课程设计的任务用Proteus仿真MCS51系列单片机及其外围电路,用它与Keil开发工具结合,搭建单片机开发平台。
设计一个单片机控制的秒表系统。
利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计秒表计时器。
基本功能要求:用AT89C51设计一个2位LED数码显示“秒表”,开始时,显示“00”:第一次按下SP1后就开始从0~9.9计时,显示精度为0.1s;第二次按SP1后,计时停止,显示当前计时值;第三次按SP1后,及时停止归零。
1.3 课程设计的要求1)硬件设计:根据任务要求,完成单片机最小系统及其扩展设计,组成功能完整的系统;2)软件设计:根据秒表的设计要求,完成控制软件的编写与调试;3)用PROTEUS ARES绘制电路原理图并生成PCB图;4)PROTEUS仿真。
2 硬件设计2.1 设计方案介绍及工作原理说明该实验要求进行计时并在数码管上显示时间,则可利用proteus仿真软件设计电路并仿真AT89C51。
使用AT89C51单片机作为核心控制部件,采用12M晶体振荡器及微小电容构成振荡电路;用两个共阴极数码显示管作为显示部分,构成数字式秒表的主体结构,配合独立式键盘和复位电路完成此秒表的计时、清零、停止各项功能。
对于时钟,它有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大。
基于LabVIEW和Proteus的单片机数据采集系统设计

基于LabVIEW和Proteus的单片机数据采集系统设计作者:刘艳来源:《现代电子技术》2013年第09期摘要:为辅助《检测技术与仪表》课程综合实验教学、改善实验教学质量,以单片机数据采集系统为例,提出了基于LabVIEW和Proteus的虚拟数据采集系统设计方法。
利用Proteus中的AT89C51单片机作为下位机,实现数据采集、数据显示及向上位机传输数据功能。
以LabVIEW软件为平台构建上位机系统,实时采集下位机数据,对采集的数据进行保存和分析处理,按需要回放存储数据。
利用Virtual Serial Port Driver 6.0虚拟的一对串口实现上位机与下位机之间的通信。
实验结果表明,设计的虚拟数据采集系统与实际系统实验结果一致。
关键词:数据采集;虚拟串口; Proteus; LabVIEW中图分类号: TN919⁃34; TP311.5 文献标识码: A 文章编号: 1004⁃373X(2013)09⁃0102⁃030 引言随着计算机技术的发展,以美国国家仪器(NI)公司的LabVIEW为代表的虚拟仪器技术应用日益广泛。
LabVIEW是一个工业标准的图形化开发环境,它结合了图形化编程方式的高性能与灵活性以及专为测试、测量与自动控制应用设计的高端性能与配置性能,是数据采集、仪器控制、测量分析与数据显示等各种测控装置研发设计过程中必要的开发工具[1]。
目前,基于LabVIEW的测控设备研发都需配置NI公司的专供数据采集卡(如PCI,GPIB,PXI,VXI等)[2⁃5],而这些数据采集卡价格昂贵,通常在数万元或数十万元以上,这使得一般普通高校开展测控技术方面的综合实验教学举步维艰。
Proteus嵌入式系统仿真与开发平台可为上述问题的解决提供技术支持[6]。
Proteus软件是由英国Labcenter electronics公司开发的,是目前世界上最先进、最完整,惟一能够对各种处理器进行实时仿真、调试与测试的EDA工具。
基于Proteus单片机实验指导书(教师使用版)

宜春学院Proteus MCS-51教学实验指导书(教师使用版)何剑锋编自动化专业实验室(2009年3月编)目录第一部分验证性实验实验一I /O口输出实验—LED流水灯实验 (7)一、实验要求 (7)二、实验目的 (7)三、实验电路及连线 (7)四、实验说明 (8)五、实验流程图 (8)六、实验步骤 (8)七、实验结果和体会 (9)八、建议 (9)实验二I/O口输入/输出实验—模拟开关灯 (10)一、实验要求 (10)二、实验目的 (10)三、实验电路及连线 (10)四、实验说明 (11)五、实验程序流程图 (11)六、实验步骤 (11)七、实验结果和体会 (12)八、建议 (12)实验三8255I/O扩展实验 (13)一、实验要求 (13)二、实验目的: (13)三、实验电路及连线 (13)四、实验说明 (14)五、实验程序流程图 (14)六、实验步骤 (14)七、实验结果和体会: (15)八、建议 (15)实验四无译码的七段数码管显示实验 (16)一、实验要求 (16)二、实验目的 (16)三、实验电路及连线 (16)四、实验说明 (16)五、实验程序流程图 (17)六、实验步骤 (17)七、实验结果和体会 (18)八、建议 (18)实验五BCD码译码的多位数码管扫描显示实验 (19)一、实验要求 (19)二、实验目的 (19)三、实验电路及连线 (19)四、实验说明 (19)五、实验程序流程图 (20)六、实验步骤 (20)七、实验结果和体会 (21)八、建议 (21)实验六独立式键盘实验 (22)一、实验要求 (22)二、实验目的 (22)三、实验电路及连线 (22)四、实验说明 (22)五、实验程序流程图 (23)六、实验步骤 (23)七、实验结果和体会 (24)八、建议 (24)实验七计数器实验 (25)一、实验要求 (25)二、实验目的 (25)三、实验电路及连线 (25)四、实验说明 (25)五、实验程序流程图 (25)六、实验步骤 (26)七、实验结果和体会 (26)八、建议 (26)实验八定时器实验 (27)一、实验要求 (27)二、实验目的 (27)三、实验电路及连线 (27)四、实验说明 (27)五、实验程序流程图....................................................................................................... .. (28)六、实验步骤 (28)七、实验结果和体会 (29)八、建议 (29)实验九单个外部中断实验 (30)一、实验要求 (30)二、实验目的 (30)三、实验电路及连线 (30)四、实验说明 (30)五、实验程序流程图 (31)六、实验步骤 (31)七、实验结果和体会 (32)八、建议 (32)实验十多个中断同时存在实验 (33)一、实验要求 (33)二、实验目的 (33)三、实验电路及连线 (33)五、实验程序流程图 (34)六、实验步骤 (34)七、实验结果和体会: (36)八、建议 (36)实验十一矩阵键盘扫描实验 (37)一、实验要求 (37)二、实验目的 (37)三、实验电路及连线 (37)四、实验说明 (37)五、实验流程图 (38)六、实验步骤 (38)七、实验结果和体会 (40)八、建议 (40)实验十二串行端口输出扩充实验 (41)一、实验要求 (41)二、实验目的 (41)三、实验电路及连线 (41)四、实验说明 (41)五、实验流程图 (42)六、实验步骤 (42)七、实验结果和体会 (44)八、建议 (44)实验十三串行端口输入扩充实验 (45)一、实验要求 (45)二、实验目的 (45)三、实验电路及连线 (45)四、实验说明 (46)五、实验流程图 (46)六、实验步骤 (46)七、实验结果和体会 (47)八、建议 (47)实验十四8051与PC之间串行通信实验 (48)一、实验要求 (48)二、实验目的 (48)三、实验电路及连线 (48)四、实验说明 (48)五、实验流程图 (49)六、实验步骤 (50)七、实验结果和体会 (51)八、建议 (51)第二部分综合性实验实验十五两8051单片机通信实验 (53)一、实验要求 (53)二、实验目的 (53)三、实验电路及连线 (53)四、实验说明 (53)五、实验流程图 (54)六、实验步骤 (54)七、实验结果和体会 (57)八、建议 (57)实验十六I2C总线——AT24Cxx存储器读写 (58)一、实验要求 (58)二、实验目的 (58)三、实验电路及连线 (58)四、实验说明 (58)五、实验流程图 (59)六、实验步骤 (61)七、实验结果和体会 (65)八、建议 (65)实验十七温度传感器DS18B20实验 (66)一、实验要求 (66)二、实验目的 (66)三、实验电路及连线 (66)四、实验说明 (66)五、实验流程图 (67)六、实验步骤 (67)七、实验结果和体会 (72)八、建议 (72)实验十八实时时钟DS1302实验 (73)一、实验要求 (73)二、实验目的 (73)三、实验电路及连线 (73)四、实验说明 (73)五、实验流程图 (74)六、实验步骤 (74)七、实验结果和体会 (81)八、建议 (81)实验十九A/D转换实验 (82)一、实验要求 (82)二、实验目的 (82)三、实验电路及连线 (82)四、实验说明 (83)五、实验程序流程图 (83)六、实验步骤 (83)七、实验结果和体会 (84)八、建议 (84)实验二十D/A转换实验 (85)一、实验要求 (85)二、实验目的 (85)三、实验电路及连线 (85)四、实验说明 (85)五、实验程序流程图 (86)六、实验步骤 (86)七、实验结果和体会 (87)八、建议 (87)实验二十一液晶显示的控制1(44780) (88)一、实验要求 (88)二、实验目的 (88)三、实验电路及连线 (88)四、实验说明 (88)五、实验程序流程图 (89)六、实验步骤 (89)七、实验结果和体会 (92)八、建议 (92)实验二十二液晶显示的控制2(KS0108) (93)一、实验要求 (93)二、实验目的 (93)三、实验电路及连线 (93)四、实验说明 (94)五、实验程序流程图 (94)六、实验步骤 (94)七、实验结果和体会 (105)八、建议 (105)第三部分设计性实验实验二十三基于Proteus的外部扩展实验 (107)一、设计任务和要求 (107)二、课题的具体工作内容 (107)三、设计分工建议: (107)四、课题成果的要求及评分意见 (107)实验二十四基于Proteus的接口技术实验 (108)一、设计任务和要求 (108)二、课题的具体工作内容 (108)三、设计分工建议: (108)四、课题成果的要求及评分意见 (108)实验二十五基于Proteus的数据采集存储测试系统仿真 (109)一、设计任务和要求 (109)二、课题的具体工作内容 (109)三、设计分工建议: (109)四、课题成果的要求及评分意见 (109)实验二十六利用单片机实现对FLASH存储器坏块的自动检测 (110)一、设计任务和要求 (110)二、课题的具体工作内容 (110)三、设计分工建议: (110)四、课题成果的要求及评分意见 (110)第一部分验证性实验实验一I /O口输出实验—LED流水灯实验一、实验要求利用51单片机及8个发光二级管等器件,构成一个流水灯单片机系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子设计应用软件训练总结报告一.任务说明(一)设计利用51单片机设计一个数据采集系统,用3位数码管显示输入的电压:二.原理图绘制说明电路原理图主要应包含数据采集电路,AD(模数)转换电路,数据显示电路三个部分。
下面分三个部分进行说明。
(一)数据采集电路根据任务的要求,该部分电路需要对八路数据进行采集,然后输出到下一级电路,在这里,用八个显示不同电压值的电压源来构成,其输出端对应连接到AD 转换电路的输入端即可。
(二)AD(模数)转换电路根据任务的要求,本部分电路需要把数据采集电路采集到的模拟电压量转换成数字电压量,所以在这里选用一个ADC0808芯片作为AD转换电路,本部分电路需把转换之后的数字量输出到数据显示电路即可。
ADC0808是一个有8路输入的AD转换器,可以根据需要来选择使用的输入通道个数,用ABC三个端口可以控制通道的选择,这里因为需要对八路数据进行采集转换,所以,这里需要使用ADC0808所有的输入通道,通道0到7分别和电压源0到7进行连接。
转换启动信号START 和地址所存信号ALE 都是用51单片机的P2.7和P3.6口通过与非门后的输出来控制,允许输出信号OE由P2.7口和P3.7口通过与非门后的输出控制,通道选择端控制端ABC分别用单片机的P0.0,P0.1和P0.2三个端口来控制。
转换结果输出端(OUT0到OUT7)通过总线分别与51单片机的P0.7到P0.0口连接。
具体连接方式如图1所示:图1 AD转换电路的连接方式(三)数据显示电路本部分电路主要由AT89C51单片机和一个四位一体的共阴极的数码管以及电阻构成。
其中,前三个数码管用来显示采集到的电压值,后一个数码管用来显示采集数据来自哪路通道。
51单片机的P3.0,P3.1,P3.2,P3.3口分别用来控制数码管的开启和关闭,P2.0到P2.6以及P3.5分别与数码管的各段连接。
具体链接方式如图2所示:图2 数据显示电路三.流程图绘制以及说明(一)主程序流程图如图3所示:说明:程序开始执行后,首先启动ADC0808,执行AD转换,接着判断转换是否结束,如果转换没有结束,则程序原地等待,如果转换结束,ADC0808允许转换后数据输出,同时将输出数据暂存起来,此时关闭输出;同时,由单片机将接收到得数字量转换成BCD 码,再调用BCD码显示子程序来显示转换后的BCD码,到此,程序结束。
这样,主程序就完成了一次模拟量采集,AD转换,BCD码转换,并最终显示的过程。
图3 主程序流程图(二)显示子程序流程图如图4所示:说明:子程序开始后,通过查表法来获取数码管要显示的数据并且暂存,接下来选通某位数码管,来显示数据,然后调用延时子程序,延时结束后关闭该位数码管,各位数码管的显示都是这样的流程,当需要显示的数据都显示完毕后,返回主程序。
图4 显示子程序流程图(三)延时子程序如图5所示:说明:首先是初始化,即赋初值。
接着判断循环是否结束,如果未结束,则继续执行,如果进行第二层循环,同样,循环未结束则继续执行,如果结束,则返回。
图6 延时子程序流程图运行结果示例图如图8所示:图8 运行示例图改变电压源的输出电压,实现采集数据的变化,采集数据即电压值由ADC0808的八个通道输入,实现模拟量到数字量的转换,再由单片机实现数字量到BCD码的转换,最后由单片机控制数码管输出,这样整个数据采集到显示的过程就实现了。
图中,数码管显示的数据即为数据采集后变换为BCD码的输出,其中,前三位现实的是AD转换后的数据,最后一位现显示的是该时刻转换的通道号,其前面的小数点使用以区分数据输出是数字电压量还是通道号的。
附录Ⅰ电路原理图图9 电路原理图附录Ⅱ源程序#ifndef __ABSACC_H__#define __ABSACC_H__#define CBYTE ((unsigned char volatile code *) 0)#define DBYTE ((unsigned char volatile data *) 0)#define PBYTE ((unsigned char volatile pdata *) 0)#define XBYTE ((unsigned char volatile xdata *) 0)#define CWORD ((unsigned int volatile code *) 0)#define DWORD ((unsigned int volatile data *) 0)#define PWORD ((unsigned int volatile pdata *) 0)#define XWORD ((unsigned int volatile xdata *) 0)#ifdef __CX51__#define FV AR(object, addr) (*((object volatile far *) (addr)))#define FARRAY(object, base) ((object volatile far *) (base))#define FCV AR(object, addr) (*((object const far *) (addr)))#define FCARRAY(object, base) ((object const far *) (base))#else#define FV AR(object, addr) (*((object volatile far *) ((addr)+0x10000L))) #define FCV AR(object, addr) (*((object const far *) ((addr)+0x810000L))) #define FARRAY(object, base) ((object volatile far *) ((base)+0x10000L)) #define FCARRAY(object, base) ((object const far *) ((base)+0x810000L)) #endif#endif#include "adc0809.c"#define LED_Data P2#define A 10#define U 11sbit LED1=P3^0;sbit LED2=P3^1;sbit LED3=P3^2;sbit LED4=P3^3;sbit dp=P3^5;#define LED_slect P3static uchar dispdata[4];void decodenum(float adv,uchar chn){uint temp;temp=(uint)(adv*100);dispdata[0]=temp/100;dispdata[1]=temp/10%10;dispdata[2]=temp%10;dispdata[3]=chn;}void select(uchar LED){switch(LED){case 0:LED1=0;break;case 1:LED2=0;break;case 2:LED3=0;break;case 3:LED4=0;break;default: LED_slect=0xff;}}void dispone(uchar LED,bit ifpoint,uchar number) //,number 0--9{select(LED);if(ifpoint)dp=1;elsedp=0;LED_Data=num[number]|0x80; delayus(200);LED_slect=0xff;}void disp(){uchar i;bit point;for(i=0;i<4;i++){if(i==1)point=0;elsepoint=1;dispone(i,point,dispdata[i]);}}#include <reg51.h>#include<absacc.h>#include "numcode.h"#define uchar unsigned char#define uint unsigned int#define adin XBYTE[0x7fff]void delayus(uint us){while(us--);}uchar ad_action(uchar chn){uchar read_data;adin=chn;delayus(6);read_data=adin;return read_data;}#ifndef __REG51_H__#define __REG51_H__/* BYTE Register */sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B;sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98; sfr SBUF = 0x99;/* BIT Register */ /* PSW */sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0; /* TCON */sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88;/* IE */sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA;sbit ET0 = 0xA9;sbit EX0 = 0xA8;/* IP */sbit PS = 0xBC;sbit PT1 = 0xBB;sbit PX1 = 0xBA;sbit PT0 = 0xB9;sbit PX0 = 0xB8;/* P3 */sbit RD = 0xB7;sbit WR = 0xB6;sbit T1 = 0xB5;sbit T0 = 0xB4;sbit INT1 = 0xB3;sbit INT0 = 0xB2;sbit TXD = 0xB1;sbit RXD = 0xB0;/* SCON */sbit SM0 = 0x9F;sbit SM1 = 0x9E;sbit SM2 = 0x9D;sbit REN = 0x9C;sbit TB8 = 0x9B;sbit RB8 = 0x9A;sbit TI = 0x99;sbit RI = 0x98;#endifunsigned char code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x3e };。