proteus课程设计(基于单片机的数据采集)
- 格式:doc
- 大小:122.50 KB
- 文档页数:11
东北石油大学毕业设计(论文)任务书题目基于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章绪论研究背景及其目的意义近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。
单片机综合设计指导书计算机学院一、综合设计目的:学习单片机的目的是能把它应用到实时控制系统以及仪器仪表和家用电器等各个领域,单片机应用技术这门课程的实验课、综合设计和毕业设计是既相互联系又有区别的三大实践性教学环节,而且是循序渐进的。
实验课是穿插在讲课过程中进行的,每讲完一部分内容,跟上一个实验,及时巩固加深学过的理论知识;综合设计是针对单片机应用技术课程结束后的一个总结,让学生自己设计出一个简单的单片机应用系统,用PROTUES完成系统仿真,然后独立搭出硬件线路,编写出相应的软件应用程序,经过调试,运行出结果。
目的是初步培养学生综合运用所学单片机理论知识的能力和应用学过的单片机理论知识解决实际问题的能力,也为最后的毕业设计打下一定的基础。
学生应提交相应的电子和打印规范文档,实验结果、程序源代码和原理图等。
通过综合设计的训练,培养学生实际分析问题、编程和动手能力,最终目标是想通过综合设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。
二、综合设计题目:1.十字路口交通灯的设计与功能实现(1)设计内容设计用单片机控制的十字路口交通灯及撞红灯报警控制系统,并实现这些功能。
(2)设计要求<1>用8255驱动三种颜色的十二只发光二极管,用软件使它们模拟十字路口交通灯的功能。
<2>当某一方向的红灯亮时,若该方向有车辆通过,则发声报警。
<3>根据时段调整路口通行和禁止通行的时间。
2.温度检测与上限报警系统的设计与实现(1)设计内容设计并实现能检测温度等模拟信号,并能产生上限报警信号的系统。
(2)设计要求<1>能对输入的0~5V模拟电压信号进行检测。
<2.>能判断所检测的信号是否越界,界限通过单片机进行设计。
<3>若信号越界则进行声、光报警。
3.电子钟的设计及定时系统的实现(1)设计内容利用单片机开发装置完成显示时,分,秒的时间显示功能,可通过键盘的任意设定,修改显示时间和闹钟时间。
电子设计应用软件训练总结报告一.任务说明(一)设计利用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的数据采集系统,结合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]。
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的单片机数据采集系统设计作者:刘艳来源:《现代电子技术》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 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)正文 (1)2.1 设计目的和意义 (1)2.2 设计方法和步骤 (1)2.2.1 数字频率计概述 (1)2.2.2 频率测量仪的设计思路与频率的计算 (1)2.2.3 基本设计原理 (2)3.1数字频率计(低频)的硬件结构设计 (2)3.1.1 系统硬件的构成 (2)3.1.2 系统工作原理图 (2)3.1.3 AT89C51单片机及其引脚说明 (3)3.2 信号调理及放大整形模块 (5)3.3 时基信号产生电路 (5)3.4 PROTEUS仿真电路图 (7)3.5 显示模块 (7)3.6 软件设计 (9)总结 (10)参考文献 (11)附录汇编源程序代码 (12)前言本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。
并且引导一种创新的思维,把学到的知识应用到日常生活当中。
在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。
全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。
正文2.1 设计目的和意义数字频率计以其可靠性高,体积小,价格低,功能全等优点,广泛用于各种智能仪器中。
这些智能仪器的操作在进行仪器校核以及测量控制的过程中,达到了自动优化,传统仪器面板上的开关和按钮被键盘所代替,测试人员在测量时只需按需要的键,省掉了许多繁琐的人工调节。
智能仪器通常能自动选择量程自动校准,这样不仅方便了操作,也提高了测量精度。
2.2 设计方法和步骤2.2.1 数字频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
一、引言电子技术、通信技术和计算机技术在迅猛地发展。
世界各大电子器件公司都在积极开发新型元件。
以微型计算机为平台,配以专用的MCU、ARM、DSP 为实现某些测量和控制功能而构成的通用或专用仪器系统,必将有大发展。
我们这个课程所设计就是用于医疗等行业的信号采集与数字滤波系统。
设计任务:●设计具备A/D 、D/A的CPU单片系统,编写控制软件,并用Proteus仿真。
●用MATLAB软件工具对所采集的数据做各种IIR、FIR数字滤波,并做性能比较。
二、课程设计内容(一)A/D、D/A的CPU单片机系统1、设计要求1)用PROTEUS 设计基于8051 或ARM 系统的采集系统,三种采样率(250Hz, 1kHz, 2kHz) 采样率,12 bit A/D, 一个D/A输出2)编制系统程序●A/D 时序控制●自定义A/D数据采集存放起始地址,数据循环存储●自定义D/A输出地址,送存储的数据再通过D/A转换,送示波器显示2、元器件的选用1)处理器●型号:8051●原理图●功能模块●功能8051作为本设计的核心处理器,其功能在于控制A/D的模数转换和转换结果的读取、RAM和DAC1208的高8位和低4位的数据存储以及DAC1208的数模转换的输出。
2)A/D●型号:MAX1240●原理图●配置电路图●时序图①模数转换时序②读取结果时序●工作过程①在=1前提下,令片选有效,同时保持SCLK为低电平,经过一个周期后,转换正式开始。
当模数转换完成后,数据输出端DOUT由低电平翻转为高电平。
所以也可通过查询DOUT的状态确定转换是否完成;②读取数据,在外部输入13个脉冲后,数据读取完成,将片选端置高电平。
只要令片选再次有效,就可以重新开始一轮新的模数转换和读取过程。
③数据读取完成后,如果仍然保持片选有效,则DOUT端始终输出低电平。
●功能A/D转换芯片,完成信号的模数转换3)D/A●型号:DAC1208●原理图●配置电路图●时序图●功能D/A转换芯片,完成信号的数模转换4)数据存储器●型号:6264●原理图●功能存储模数转换的结果,循环存储,存储空间64K 5)锁存器●型号:74LS373●原理图●功能地址锁存器,用于8051的P0口数据地址复用时锁存低八位地址6)放大器●型号:LM324●原理图●功能①构成DAC1208基本配置电路②信号输出端具有缩小放大倍数和反相功能,使得转换输出后的信号与原信号的幅度和相位尽可能相同3、硬件电路设计1)硬件设计框图2)硬件设计原理图4、系统软件设计1)软件设计框图2)软件源代码及注释ORG 0000HLJMP MAINORG 000BH;Time0中断入口地址LJMP PROGORG 0100HMAIN:MOV SP,#60HJNB P1.4,L1;p1.4若为低,250hz采样率JNB P1.5,L2; p1.5若为低,1khz采样率JNB P1.6,L3; p1.6若为低,2khz采样率L1:MOV TH0,#0F0HMOV TL0,#60H;计数器0赋初值,250hz,计数初值61536SJMP CONL2:MOV TH0,#0FCHMOV TL0,#18H;计数器0赋初值,1khz,计数初值64536SJMP CONL3:MOV TH0,#0FEHMOV TL0,#0CH;计数器0赋初值,2khz,计数初值65036SJMP CONCON:MOV TMOD,#01H;工作方式1MOV DPTR,#4000H;RAM地址0,DAC1208高八位寄存器地址的前三位取0100C0 SETB ET0;T0开中断SETB EA;CPU开中断SETB TR0;T0启动SJMP $;等待中PROG:JNB P1.4,M1JNB P1.5,M2JNB P1.6,M3M1:MOV TH0,#0F0H;重赋计数初值MOV TL0,#60HSJMP MAX1240M2:MOV TH0,#0FCHMOV TL0,#18HSJMP MAX1240M3:MOV TH0,#0FEHMOV TL0,#0HSJMP MAX1240MAX1240:MOV A,#00H;初始化累加器AMOV R7,#08H;位计数器设置为8SETB P1.3;SHDN 设置为正常模式CLR P1.1;CLK初始化为低CLR P1.2;MAX1240片选信号有效NOP ;从第二个时序开始JNB P1.0,$;等待A/D转换结束SETB P1.1MSB:CLR P1.1;CLK下降沿,开始读数据,一个脉冲读一位NOPSETB P1.1;CLK上升沿,从DOUT读出数据MOV C,P1.0;DOUT数据读入CPURLC A;A寄存器左移位DJNZ R7,MSB;循环,直到读完高八位MOV R1,A;把高八位数据存到R1MOV R7,#04H;位计数器设置为四次MOV A,#00H;初始化累加器LSB:CLR P1.1NOPSETB P1.1MOV C,P1.0RLC ADJNZ R7,LSBMOV R2,A;低四位数据送R2保存,高四位为0NOPSETB P1.2;片选信号无效CLR P1.3;SHDN置0,MAX1240进入待机模式DAC:MOV A,#00011111BMOV R3,DPHANL A,R3MOV R3,AMOV A,#01000000BORL A,R3MOV DPH,A;DPTR前三位设为010,其余位不变,得到RAM地址和DAC1208高八位地址MOV A,R1;发送高八位数据MOVX @DPTR,A;高八位存到RAM和DAC1208高八位寄存器INC DPTR;RAM地址加一MOV A,#00011111BMOV R3,DPHANL A,R3MOV DPH,A;DPTR 前三位置0,得到RAM 地址和DAC1208低四位寄存器地址 MOV A,R2;发送低四位数据MOVX @DPTR,A;低四位存到RAM 和DAC1208低四位寄存器 MOV A,#10100000B; MOV R3,DPH ORL A,R3MOV DPH,A;DPTR 前三位设为101,RAM 不使能,得到DAC1208十二位寄存器地址 MOVX @DPTR,A;十二位DA 转换 INC DPTR;RAM 地址加一 RETIEND5、 仿真结果为了展现不同采样频率对同一信号的采样结果的不同,本设计仿真的信号源的频率均采用42hz ,幅度均为1.07。
课程: Proteus学生姓名:吴亚军学生学号: 0908050140 院系:电气信息工程学院专业:电子信息科学与技术班级: 09级电技1 班任课教师:陈帅《Proteus》课程设计报告学生姓名:吴亚军学号:0908050140一、设计任务内容如下列框图,当按下K1时,显示器显示模拟信号V1的测量值;当按下K2时,显示器显示模拟信号V2的测量值。
信号源可以采用传感器或信号发生器产生。
结合Proteus完成:1、设计的硬件电路图;2、软件操作流程图;3、运行的结果界面抓图;4、附设计的程序代码。
二、设计分析在做一个单片机系统时,常常会遇到这样那样的数据采集,在这些被采集的数据中,大部分可以通过我们的I/O口扩展接口电路直接得到,而本设计要求使用51单片机,由于51单片机大部分不带AD转换器,所以模拟量的采集就必须靠外部A/D来实现。
再者,可以利用AT89C51单片机自带外部中断INT0,INT1来实现模拟数据采集通道的转换。
三、整体设计摘要:以AD0808模数转换器和AT89C51单片机为核心,进行实时电压数据采集,数据处理与显示。
本设计显示采用4位数码管(共阴),利用AT89C51单片机自带外部中断INT0,INT1来实现数据采集通道的转换,使用滑动变阻器作为采集的信息源。
采用Proteus和Keil uvision3为开发工具,软件设计采用模块化编程。
关键字:AT89C51、电压采集、ADC0808、proteus1)系统总体设计方案及实现方框图以AD0808模数转换器和AT89C51单片机为核心,进行实时电压数据采集,数据处理与显示。
本设计显示采用4位数码管(共阴),利用AT89C51单片机自带外部中断INT0,INT1来实现数据采集通道的转换,使用滑动变阻器作为采集的信息源。
系统设计方框图2)硬件设计:显示模块:LED数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
proteus单片机课程设计一、课程目标知识目标:1. 让学生掌握Proteus单片机的基本原理和功能,理解其内部结构及工作原理。
2. 使学生学会使用Proteus软件进行单片机电路设计与仿真,并能阅读相关电路图。
3. 帮助学生掌握单片机编程的基本语法和技巧,能够编写简单的控制程序。
技能目标:1. 培养学生运用Proteus软件进行单片机电路设计、仿真与调试的能力。
2. 培养学生具备分析和解决实际单片机应用问题的能力。
3. 提高学生的团队协作能力和动手实践能力。
情感态度价值观目标:1. 培养学生对单片机课程的兴趣,激发学生的学习热情和探究精神。
2. 培养学生严谨、认真、负责的学习态度,养成良好的学习习惯。
3. 增强学生的创新意识,培养敢于挑战、勇于实践的精神。
课程性质:本课程为实践性较强的课程,旨在让学生在实际操作中掌握单片机原理和应用。
学生特点:学生具备一定的电子基础和编程基础,对单片机有一定了解,但实践能力有待提高。
教学要求:结合课程性质、学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力。
在教学过程中,分解课程目标为具体学习成果,以便于教学设计和评估。
二、教学内容1. 单片机原理概述:介绍单片机的概念、发展历程、应用领域,以及Proteus 单片机的特点。
教材章节:第一章 单片机概述2. Proteus软件使用:讲解Proteus软件的安装、界面、基本操作,以及如何进行单片机电路设计与仿真。
教材章节:第二章 Proteus软件使用3. 单片机内部结构及工作原理:详细讲解Proteus单片机的内部结构、指令系统、编程模型等。
教材章节:第三章 单片机内部结构及工作原理4. 单片机编程语言及技巧:介绍单片机编程的基本语法、编程技巧,以及常用指令的应用。
教材章节:第四章 单片机编程语言及技巧5. 单片机电路设计与仿真:结合实例,讲解如何使用Proteus软件进行单片机电路设计、仿真与调试。
电子设计应用软件训练总结报告一.任务说明(一)设计利用51单片机设计一个数据采集系统,用3位数码管显示输入的电压:1 设计中自行定义电路图纸尺寸。
2 按照设计任务在Proteus6 Professional中绘制电路原理图。
3 根据设计任务的要务求编写程序,画出程序流程图,并在Proteus下进行仿真,实现相应的功能。
(二)完成设计任务后应具备的能力:1 熟练掌握Proteus软件的使用。
2 按照设计要求绘制电路原理图。
3 能够按要求对所设计的电路进行仿真。
二.原理图绘制说明电路原理图的设计与绘制是整个电路设计的基础,电路原理图的设计与绘制的流程,包括设置电路图纸、放置元器件、调整元器件的布局、放置导线等步骤。
打开PROTEUS软件,在原理图编辑窗口绘制电路图。
在该界面环境下,还有预览窗口和元件列表区。
编辑窗口用于放置元器件,进行连线,绘制原理图。
预览窗口可以显示全部原理图。
左侧工具箱中,还有供使用的工具。
首先要建立设计文件,选择合适的模板,并保存在预先建立好的文件夹中。
选择图纸,本次设计应用的是A4图纸,然后即开始进行电路原理图的绘制了。
利用软件的搜索功能在元件库中找到需要的元件,放置到图纸的合适位置,并分别设置好各个元器件的参数,再在需要的位置放置图形文本框,最后将各个元器件连接起来,这样原理图就绘制完成了。
然后对所绘制的电路原理图进行检查,如有错误就要作进一步的调整与修改,以保证原理图准确无误。
并在绘制原理图结束后,保存原理图文件同时,按照设计任务的要求必须首先在Proteus 6 Professional中绘制电路原理图。
随后,要根据设计任务的要求编写程序,并在Proteus下进行仿真,实现相应功能。
在Proteus 6 Professional中点击“Library”->“Pick Devices”可以在弹出的对话框中填写需要的元器件名称,通过这种方式,就可以找到并放置相应的器件了。
设计(论文)内容及要求:一、设计内容1、分析理解常用的单片机模拟电压测量电路系统,设计一可同时测量4路0~5V直流电压的电路,系统具有4路顺序循环采集与指定某一路采集的功能,且能通过显示出通道和电压值;2、学习Keil uVision2和proteus7电子仿真软件;3、将设计的电路通过仿真软件进行运行,并能得到正确结果;4、总结写出设计论文。
二、设计要求[1] 根据设计任务书设计内容,作出设计进度安排,写出开题报告;[2] 撰写毕业设计(论文),篇幅不少于1.5万字,图表数据完整;[3]收集查找资料,参考资料不少于六本,并于引用处标明;[4]按毕业设计(论文)规范要求,打印装订成册两本;[5]完成英语译文一篇。
三、主要参考资料[1] 谢自美. 电子线路设计*实验*测试.华中科技大学出版社.[2] 张友德等. 单片微型机原理、应用和实验.电子工业出版社.[3] 吴经国等.单片机应用技术. 中国电力出版社.[4] 李群芳.单片机微型计算机与接口技术.电子工业出版社.[5] 阉石.数字电子技术基础.高等教育出版社.[6] 黄智伟.全国大学生电子设计竞赛训练教程.电子工业出版社.[7] 周立功.单片机实验与实践.北京航空航天大学出版社.南华大学本科生毕业设计(论文)开题报告设计(论文)题目基于单片机的4通道模拟信号采集与显示系统设计(论文)题目来源其它设计(论文)题目类型软件仿真起止时间07年12月-08年5月一、设计(论文)依据及研究意义:依据:单片机I/O口的输入输出功能、AD转换原理及LCD显示原理意义:多通道的模拟信号采集与显示系统比单通道的实用范围更广二、设计(论文)主要研究的内容、预期目标:(技术方案、路线)1、主要研究内容:分析理解常用的单片机模拟电压测量电路系统,设计一可同时测量4路0~5V直流电压的电路,系统具有4路顺序采集与指定某一路采集的功能,且能通过显示屏显示出通道数的电压值。
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。
proteus的单片机课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理和功能,理解proteus在单片机设计中的应用;2. 使学生学会使用proteus软件进行单片机电路设计与仿真,并能结合教材知识分析电路图;3. 帮助学生掌握单片机编程的基本方法,能够运用C语言或汇编语言编写简单的程序。
技能目标:1. 培养学生运用proteus软件进行单片机电路设计的能力,提高实际操作技能;2. 培养学生编写和调试单片机程序的能力,提升解决问题的实际应用能力;3. 培养学生团队协作和沟通表达的能力,能够在小组合作中发挥个人优势。
情感态度价值观目标:1. 激发学生对单片机课程的兴趣,培养自主学习、探索精神和创新意识;2. 培养学生严谨、务实的科学态度,注重实践操作和理论知识的结合;3. 增强学生的环保意识和责任感,关注单片机技术在实际应用中对环境的影响。
课程性质:本课程为实践性较强的学科,注重理论与实践相结合,强调学生的动手操作能力和实际问题解决能力。
学生特点:学生具备一定的电子基础和编程知识,对单片机有一定了解,但对proteus软件的使用和实际应用尚不熟悉。
教学要求:结合教材内容,采用任务驱动、项目教学等方法,引导学生主动参与,培养实际操作能力和团队协作精神。
通过课程学习,使学生能够达到以上设定的知识、技能和情感态度价值观目标。
二、教学内容1. 单片机基础理论:介绍单片机的组成、工作原理、性能参数等,使学生建立单片机的基本概念。
教材章节:第一章 单片机概述2. proteus软件应用:讲解proteus软件的安装、界面、基本操作,以及如何在软件中绘制单片机电路图。
教材章节:第二章 proteus软件使用入门3. 单片机编程语言:介绍C语言和汇编语言的基本语法,讲解如何在Keil等开发环境中编写和调试程序。
教材章节:第三章 单片机编程基础4. 单片机电路设计与仿真:结合实例,教授如何使用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码,到此,程序结束。
这样,主程序就完成了一次模拟量采集,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 };。