基于ADC0832的单片机数据采集系统设计课程设计

上传人:沈*** 文档编号:40864638 上传时间:2021-11-17 格式:DOC 页数:42 大小:1.27MB
收藏 版权申诉 举报 下载
基于ADC0832的单片机数据采集系统设计课程设计_第1页
第1页 / 共42页
基于ADC0832的单片机数据采集系统设计课程设计_第2页
第2页 / 共42页
基于ADC0832的单片机数据采集系统设计课程设计_第3页
第3页 / 共42页
资源描述:

《基于ADC0832的单片机数据采集系统设计课程设计》由会员分享,可在线阅读,更多相关《基于ADC0832的单片机数据采集系统设计课程设计(42页珍藏版)》请在装配图网上搜索。

1、合 肥 学 院创 新 课 程 设 计 报 告题 目:基于基于 ADC0832ADC0832 的单片机数据采集系统设计的单片机数据采集系统设计系 别:_ 电子信息与电气工程系电子信息与电气工程系 _ _ _专 业:_ 通信工程通信工程_ _班 级:_ _10_10 通信通信(1)(2)(1)(2)班班_ _ _学 号:100507200_1005072032100507200_1005072032 1005072033_1005072033_姓 名:_ _ _ _ _ _导 师:_ 张大敏张大敏_ _ _ _ _ 成 绩:_ _2014 年年 01 月月 07 日日设计题目基于 ADC0832

2、的单片机数据采集系统设计设计类型导师姓名主要内容及目标基于 8 位串行模数转换器 ADC0832,设计完成一个单片机数据采集系统。要求:1、设计实现 ADC0832 模数转换电路,将单片机采集到得 05V 电压信号用数码管显示。2、要求绘制系统原理框图、电路原理图、PCB 版图和程序流程图。3、认真进行系统软硬件设计、实施、调试,观察实验结果。4、详细记录实施过程中所遇到的问题及问题产生的原因并制定解决方案。具有的设计条件器材需要相关电子元器件、实验板。实验仪器需要计算机、示波器、万用表等。计划学生数及任务计划需要 3 人1 人主要进行系统方案设计,组织实施;1 人主要进行硬件设计实施调试;1

3、 人主要进行软件设计实施调试。计划设计进程1、从接题开始收集资料、准备设计。2、第 1 周 查阅文献,制定设计方案,绘制系统原理框图、电路原理图等。3、第 2 周 绘制电路 PCB 版图,完成系统所有硬件电路和程序编制工作。4、第 3 周 系统调试和完善,同时编写完成设计报告。应用型张大敏通信技术创新课程设计通信技术创新课程设计任务书任务书摘要随着时代的进步,用指针式万用表测量小幅度直流电压已经显得有些不太方便。因为指针式的测量不够精确,随着长时间的使用可能会造成欧姆调零以及机械调零的磨损,这都会对数据的测量造成很多困难,而采用数字式电压表来测量就可以避免这种情况的发生,而且操作更加方便。下面

4、本文将介绍一种由数字电路以及单片机构成的 简易数字电压表的设计方法。 数字电压表( Digital Voltmeter)简称 DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表 本设计运用 89C52 和 ADC0832 进行 A/D 转换,根据数据采集的工作原理 ,设计实现数字电压表 ,最后完成单片机与 PC 的数据通信 ,传送所测量的电压值。该数字电压表测量电压类型是直流 ,测量范围是 0-51V(本设计量程为 0-5V)。电路包括 :数据采集电路的单片机最小化设计、单片机与PC 接口电路、单片机钟电路、复位电路等。下位机采用89C5

5、2 芯片,A/D 转换采用 ADC0832芯片。通过 RS232 行口与 PC 进行通信 ,传送所测量的直流电压数据。关关键键词词:STC89C52 单片机 ADC0832 模数转换器 LCD1602 参考文献1、余锡存等. 单片机原理及接口技术M. 西安: 西安电子科技大学出版社, 2000.2、赵亮等. 单片机 C 语言编程与实例M. 北京:人民邮电出版社,2003.3、赵晶. protel 99 高级应用M 北京: 人民邮电出版社出版,2000 年.4、梁明亮等. 单片机与 ADC0832 的接口技术J.河南科技,2006,(8):48-49.5、李庭贵等. 基于 DAC0832 和 A

6、T89S52 的信号发生器设计J.电子科技,2012,25(6):104-106.目目 录录第一章 绪 论 .11.1 系统设计任务分析.1第二章 总体方案设计与选择的论证 .12.1 单片机最小系统 .12.1.1 单片机的说明 .12.1.2 单片机的应用 .12.1.3 单片机的结构特点 .32.1.4 单片机引脚配置 .32.2 模数转换模块介绍.72.2.1 ADC0832 概述 .72.2.2 引脚功能及描述 .72.2.3 工作模式 .82.2.4 单片机对 ADC0832 的控制原理 .82.2.5 ADC0832 应用原理框图 .92.3 LCD1602 显示.102.3.1

7、 LCD1602 的基本结构 .102.3.2 LCD1602 的指令表 .11第三章 软件设计报告 .123.1 单片机软件设计.123.1.1 模数转换软件设计 .123.1.2 LCD1602 显示软件设计 .123.2 流程图设计.123.2.1 主程序流程图 .123.2.2 液晶模块流程图 .143.2.3 电压显示流程图 .153.3 原理图设计.163.4 PROTEUS 仿真图 .173.5 PCB 版图.183.6 实物图.19第四章 疑难问题及解答 .20第五章 总结与致谢 .21总结 .21致谢 .21参考文献 .22附 录 .23课程设计评语 .371第第一一章章 绪

8、绪 论论1 1. .1 1 系系统统设设计计任任务务分分析析本设计由 A/D 转换、数据处理及显示控制等组成,测量05V 范围内的输入电压值,由 LCD1602 扫描显示,最大分辨率 0.1V,误差0.02V。数字电压表的核心为 ST89C52 单片机和 ADC0832 A/D 转换集成芯片。本系统的核心控制芯片 选用的是 STC89C52RC。单片机在各个技术领域中的迅猛发展,与单片机所构成的计算机应用系统的特点有关:1 单片机构成的应用系统有较大的可靠性。2 系统构建简洁、易行,能方便的实现系统功能。3 由于构成的系统是一个计算机系统,相当多的功能由软件实现,故具有柔性特点 和优异的性能价

9、格比。第第二二章章 总总体体方方案案设设计计与与选选择择的的论论证证2 2. .1 1 单单片片机机最最小小系系统统2 2. .1 1. .1 1 单单片片机机的的说说明明单片机的原名叫 Microcontroller,即微型控制器。顾名思义,单片机有别于通用微型计算机,它是专门为控制和智能仪器设计的一种集成度很高的微型计算机。其控制功能强,有优异的性能 /价格比,有很高的可靠性。因而,单片机的应用范围在不断的扩大,它已经成了人类生活中不可缺少的工具。下面介绍单片机在几个方面的典型应用。2 2. .1 1. .2 2 单单片片机机的的应应用用(1)单片机在智能仪器中的应用2单片机广泛的用于各种

10、仪器仪表中,使仪器仪表数字化、微型化和智能化,提高它们的测量速度、测量精度和自动化程度,简化仪器仪表的硬件结构,便于使用、维修和改进,提高其性能 /价格比。(2)单片机在机电一体化产品中的应用 机电一体化是机械工业发展的方向。机电一体化产品是指,集机械技术、微电子技术、计算机技术和控制技术于一体,具有智能化特征的机电产品。例如,微机控制的数控机床、机器人等。单片机作为机电产品中的控制器,能充分的发挥它的体积小、可靠性高、功能强等优点,大大提高了机器的自动化、智能化程度。(3)单片机在过程控制中的应用过程控制是微型机应用最多、最有效的方面之一,单片机广泛的应用于过程控制。它既可以作为主机控制,也

11、可以作为分布式控制系统的前端机,对现场的信息进行实时的测量和控制。单片机可用于开关量控制、顺序控制及逻辑控制等。如锅炉控制、电机控制、机器人控制、交通信号灯控制、造纸纸浆浓度控制、纸张定量水分及厚薄控制 、雷达与导弹控制以及航天导航系统鱼雷制导系统控制等。(4)单片机在计算机网络及通信中的应用由于高性能单片机中集成有SDLC 通信接口,因而使其在计算机网络及通信设备中得到了广泛的应用。例如:Intel 公司的 8044,由 8051 单片机及 SDLC 通信接口组合而成,用高性能的串行接口单元 SIU 代替传统的 UART,采用双绞线、半双工通信形式,特别适合远距离通信。以8044 位基础组成

12、的位总线是一种高性能、低价格的分布式控制系统,传送距离可达1200m,传送速度为 2.4Mbit/s,网络节点为 28 个。此外,单片机在自动拨号无线电话网、串行自动呼叫应答设备、程控电话、无线电遥控等方面都有广泛的应用。(5)单片机在家用电器方面的应用单片机广泛的应用于家用电器产品中,例如:洗衣机、电冰箱、微波炉、电饭煲、高级智能玩具、收录机等配上单片机后,大大提高了产品的性能,倍受人们的喜爱。可以说 ,单片机在人们日常生活中应用所受到的限制主要不是技3术问题,而是创造力和技巧上的问题。2 2. .1 1. .3 3 单单片片机机的的结结构构特特点点控制电路设计是系统的控制和数据处理的核心,

13、而作为控制核心的单片机种类很多,如 PIC 等等。根据任务书的要求以及系统实际的需要,本次毕业设计 采用STC89C52RC 作为系统的微控制器芯片。特点是,STC89C52RC 的内核和 AT51 系列单片机一样,故引脚也相同 。但是 STC89C52RC 可以通过 STC_ISP 软件下载进行烧录。2 2. .1 1. .4 4 单单片片机机引引脚脚配配置置图 2.1 引脚配置图鉴于 STC89C52RC 与 MCS-51 单片机类似,现介绍 MCS-51 单片机如下文。MCS-51 单片机采用 40 引脚双列直插封装( DIP)形式。对于 CHMOS 单片机除采用 DIP 形式外,还采用

14、方形封装工艺。由于受到引脚数目的限制,所以有部分引脚具有第二功能。在单片机的 40 条引脚中,有 2 条用于主电源的引脚, 2 条外接晶体的引脚,控制或其他电源复用引脚 RST/ Vpd、ALE、和 VPP,32 条输入/输出引脚。下面就本系统用到的引脚分别说明这些引脚的名称和功能。(1)主电源引脚 V CC 和 GND4VCC:接+5V 电源GND:接电源地(2)钟电路引脚 XTAL1 和 XTAL2XTAL1:接外部晶体的一端。在单片机内部,它是反相放大器的输入端,该放大器构成了片内振荡器。在采用外部时钟电路时,对于HMOS 单片机,此引脚必须接地;对 CHMOS 单片机,此引脚作为驱动端

15、。 XTAL2:接外部晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端,振荡器的频率是晶体振荡频率。若采用外部时钟电路时,对于HMOS 单片机,该引脚输入外部时钟脉冲;对于CHMOS 单片机,此引脚应悬空。(3)信号引脚 RST/VpdRST/Vpd:复位/备用电源输入端。单片机上电后,只要在该引脚上输入24 个振荡周期( 2 个机器周期)宽度以上的高电平就会使单片机复位;若在RST 与 VCC 之间接一个 10F 的电容,而在 RST 与 GND 之间接一个 8.2K 的下拉电阻,则可实现单片机上电自动复位。RST/Vpd 具有复用功能,在主电源 VCC 掉电期间,该引脚可接上

16、 +5V 备用电源。当 VCC 下掉到低于规定的电平,而Vpd 在其规定的电压范围内时, Vpd就向片内 RAM 提供备用电源,以保持片内RAM 中的信息不丢失,复电后能继续正常运行。(4)输入/输出(I/O)引脚 P0、P1、P2 和 P3MCS-51 单片机有 4 个双向并行的 8 位 I/O 口 P0P3,P0 口为三态双向口,可驱动 8 个 TTL 电路,P1、P2、P3 口为准双向口(作为输入时,口线被拉成高电平,故称为准双向口),其负载能力为 4 个 TTL 电路。P0.0-P0.7:P0 口是一个 8 位双向 I/O 端口。在访问片外存储器时,它分时提供低 8 位地址和作 8 位

17、双向数据总线。在 EPROM 编程时,从 P0 口输入指令字节;在验证程序时,则输出指令字节(验证时,要外接上拉电阻)。P0口能以吸收电流的方式驱动8 个 LSTTL 负载。5图 2.2 P0 口 1 位结构图P1.0-P1.7:P1 口是 8 位准双向 I/O 端口。在 EPROM 编程和程序验证时,它输入低 8 位地址。 P1 口能驱动 4 个 LSTTL 负载。图 2.3 P1 口 1 位结构图P2.0-P2.7:P2 口是一个 8 位准双向 I/O 端口。在 CPU 访问外部存储器时,它输出高 8 位地址。在对 EPROM 编程和程序验证时,它输入高8 位地址。 P2口可驱动 4 个

18、LSTTL 负载。6图 2.4 P2 口 1 位结构图P3.0-P3.7:P3 口是 8 位准双向 I/O 端口。它是一个复用功能口。作为第一功能使用时,为普通 I/O 口,其功能和操作方法与 P1 口相同。作为第二功能使用时,各引脚的定义如表3-1 所示。P3 口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。 P3 口能驱动 4 个 LSTTL 负载。图 2.5 P3 口 1 位结构图表 2.1:口线 第二功能7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXD (串行口输入)TXD (串行口输出)INT0 (外部中断 0 输入)INT1(外部中断 1 输入)

19、T0 (定时器 0 的外部输入)T1 (定时器 1 的外部输入)WR (外部数据存储器“写”信号输出)RD (外部数据存储器“读”信号输出)2 2. .2 2 模模数数转转换换模模块块介介绍绍2 2. .2 2. .A AD DC C0 08 83 32 2 概概述述 ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道 A/D 转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832 可是使我们了解 A/D 转换器的原理,有助于我们单片机技术水平的提高。 ADC0832 主要特性如下: 8 位分辨率;逐次逼近式 A

20、/D 转换器;双通道 A/D 转换;输入输出电平与 TTL/CMOS 相兼容;5V 电源供电时输入电压在 05V 之间;工作频率为 250KHZ,转换时间为 32S;一般功耗仅为 15mW;8P、14PDIP(双列直插)、 PICC 多种封装;商用级芯片温宽为 0C to +70C,工业级芯片温宽为 40C to +85C; 2 2. .2 2. .2 2 引引脚脚功功能能及及描描述述 ADC0832的引脚如图所示。各引脚功能如下: 8图 2.6 ADC0832的引脚图CS:片选使能,低电平芯片使能。CH0: 模拟输入通道 0,或作为 IN+/-使用。CH1: 模拟输入通道 1,或作为 IN+

21、/-使用。GND: 芯片参考 0 电位(地)。DI :数据信号输入,选择通道控制。DO: 数据信号输出,转换数据输出。CLK :芯片时钟输入。Vcc/REF :电源输入及参考电压输入(复用)。 2 2. .2 2. .3 3 工工作作模模式式 ADC0832 为 8 位分辨率 A/D 转换芯片,其最高分辨可达 256 级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 05V 之间。芯片转换时间仅为 32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端

22、,可以轻易的实现通道功能的选择。2 2. .2 2. .4 4 单单片片机机对对 A AD DC C0 08 83 32 2 的的控控制制原原理理 正常情况下 ADC0832 与单片机的接口应为 4 条数据线,分别是 CS、CLK、DO、DI。但由于 DO 端与 DI 端在通信时并未同时有效并与单片机的接口是双向图 2.7 ADC0832 工作模式的选取9的,所以电路设计时可以将 DO 和 DI 并联在一根数据线上使用。当 ADC0832未工作时其 CS 输入端应为高电平,此时芯片禁用, CLK 和 DO/DI 的电平可任意。当要进行 A/D 转换时,须先将 CS 使能端置于低电平并且保持低电

23、平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲, DO/DI 端则使用 DI 端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前 DI 端必须是高电平,表示启始信号。在第2、3 个脉冲下沉之前 DI 端应输入 2 位数据用于选择通道功能,其功能项见官方资料。如资料 所示,当此 2 位数据为“1”、“0”时,只对 CH0 进行单通道转换。当 2 位数据为“1”、“1”时,只对 CH1 进行单通道转换。当 2 位数据为“0”、“0”时,将 CH0 作为正输入端 IN+,CH1 作为负输入端 IN-进行输入。当2 位数据为“0”、“1”时,将 CH

24、0 作为负输入端 IN-,CH1 作为正输入端 IN+进行输入。到第 3 个脉冲的下沉之后 DI 端的输入电平就失去输入作用,此后DO/DI 端则开始利用数据输出 DO 进行转换数据的读取。从第 4 个脉冲下沉开始由 DO 端输出转换数据最高位 DATA7,随后每一个脉冲下沉 DO 端输出下一位数据。直到第 11 个脉冲时发出最低位数据 DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11 个字节的下沉输出 DATA0。随后输出 8 位数据,到第 19 个脉冲时数据输出完成,也标志着一次A/D 转换的结束。最后将 CS 置高电平禁用芯片,直接将转换后的数据进

25、行处理就可以了。作为单通道模拟信号输入时 ADC0832 的输入电压是 05V 且 8 位分辨率时的电压精度为 19.53mV。如果作为由 IN+与 IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果 IN-的电压大于 IN+的电压则转换后的数据结果始终为00H。102 2. .2 2. .5 5 A AD DC C0 08 83 32 2 应应用用原原理理框框图图 图 2.8 ADC0832 时序图2 2. .3 3 L LC CD D1 16 60 02 2 显显示示2 2. .3 3. .1 1 L LC CD

26、 D1 16 60 02 2 的的基基本本结结构构1602LCD 是指显示的内容为 16X2,即可以显示两行,每行 16 个字符液晶模块(显示字符和数字)。11图 2.9 LCD1602 引脚图1602 采用标准的 16 脚接口,其中:第 1 脚:VSS 为电源地第 2 脚:VCC 接 5V 电源正极第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影” ,使用时可以通过一个 10K的电位器调整对比度)。第 4 脚:RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平0 时选择指令寄存器。第 5 脚:RW 为读写信号线,高电平

27、(1)时进行读操作,低电平 (0)时进行写操作。第 6 脚:E(或 EN)端为使能 (enable)端,高电平( 1)时读取信息,负跳变时执行指令。第 714 脚:D0D7 为 8 位双向数据端。第 1516 脚:空脚或背灯电源。 15 脚背光正极, 16 脚背光负极。2 2. .3 3. .2 2 L LC CD D1 16 60 02 2 的的指指令令表表指令 1:清显示,光标复位到地址00H 位置。指令 2:光标复位,光标返回到地址00H。指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令 4

28、:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。R/L,高向左,低向右。12指令 6:功能设置命令 DL:高电平时为 4 位总线,低电平时为 8 位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示 5x7 的点阵字符,高电平时显示5x10 的点阵字符。 (有些模块是 DL:高电平时为 8 位总线,低电平时为 4 位总线)指令 7:字符发生器 RAM 地址设置,地址:

29、字符地址 *8+字符行数。 (将一个字符分成 5*8 点阵,一次写入一行, 8 行就组成一个字符 )指令 8:置显示地址,第一行为: 00H0FH,第二行为: 40H4FH。指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令 10:写数据。指令 11:读数据。第三章 软件设计报告3 3. .1 1 单单片片机机软软件件设设计计3 3. .1 1. .1 1 模模数数转转换换 软软件件设设计计单片机对 ADC0832 模数转换模块进行初始化之后,读取电压数据。然后经过处理之后在 LCD1602 显示。该部分代码见附录。3 3.

30、.1 1. .2 2 L LC CD D1 16 60 02 2 显显示示软软件件设设计计该部分代码见附录。3 3. .2 2 流流程程图图设设计计3.2.1 主主程程序序流流程程图图13 图 3.1 主程序流程图14 3.2.2 液液晶晶模模块块 流流程程图图图 3.2 液晶模块流程图153.2.3 电电压压显显示示 流流程程图图图 3.3 电压显示流程图163 3. .3 3 原原理理图图设设计计图 3.4 电路原理图173 3. .4 4 p pr ro ot te eu us s 仿仿真真图图图 3.5 仿真图183 3. .5 5 P PC CB B 版版图图图 3.6 PCB 版图

31、193 3. .6 6 实实物物图图图 3.7 实物图20第四章 疑疑难难问问题题及及解解答答疑问 1:怎么用 Proteus 添加元器件?答:先用 Keil 软件对原程序进行了一下调试,如果程序没有错误 再进行原理图的绘制,先点击左侧device 栏上的 P 按钮,就会弹出元器件选择对话框。写上关键字就可以找到相应的元件,双击需要的元件就可以将此元件加到当前的 device 栏中,在 device 栏中选中需要放置的元件,这样就可以放置了。疑问 2:怎么进行仿真?答:用软件仿真调试工具 keil 编译程序生成文件 “基于 ADC0832 的数字电压表.hex” ,用 Proteus 打开完整

32、的原理图点芯片,在program file 一行选入 keil 生成“基于的 ADC0832 的数字电压表 .hex” 。疑问 3:怎样检测最终结果?答:首先将所有准备工作做好,其次接电源,进行观看结果状况,查看结果同时调节电位器,是否 LCD1602 显示器电压变化,如果变化则成功,否则进行检测出错原因。疑问 4:程序下载后 LCD1602 为何无显示?答:首先要排除是否是硬件及连接问题;若不是硬件问题,则检查软件代码是否与硬件相匹配,细到各个端口的引脚。最终在同学的协助下,确认了是软件代码的问题,对代码进行了修改,问题得以解决。21第五章总总结结与与致致谢谢总结总结通过这次对基于 ADC0

33、832 的单片机数据采集系统设计,让我们了解了设计电路的程序,也让我们了解了关于数据采集系统的原理与设计理念, 。通过这次学习,让我们对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。除了学会了许多专业知识外,在遇到困难时,积极地去请教我的指导老师,我们通过看现有的教材、去图书馆查阅资料、去网上搜索相关信息这些方式,不仅完成了我的毕业论文,而且大大增强了我的自学能力和独立能力。更重要的是,我拓展了思路,开阔了视野,活跃了思想。这次创新课程设计不仅使我们对相关专业知识有了更深的理解,而且还让我们认识到了理论知识对工作实践的重大意义,学会理论

34、联系实际。这次的课程设计让我们发挥主观能动性独立的查阅资料、寻找数据、设计实验方案,并将理论知识应用到实践中去。同时,通过这次设计提高了我们认识问题、分析问题、解决问题的能力。总之,这次设计既是对我们课程知识的考核,又是对我们思考问题、解决问题能力的考核,更是对我们人格品德的考验,设计让我们受益匪浅!致致 谢谢首先,我们组的三个人都是考研大军中一份子,由于忙于复习在课程设计上分配的时间不是很多,感谢张老师对我们的理解和支持;其次,在本次设计中我们遇到了很多问题,感谢在设计中对我们提供帮助的热心老师和同学们。因为有你们,本次设计才得以成功完成, Thank you!22参考文献参考文献1.单片机

35、原理及接口技术案例教程 李春法 编著 机械工业出版社 2.单片机应用系统与接口技术 丁向荣 编著 电子工业出版社 3.8051 单片机实践与应用 吴金戌 沈庆阳 郭庭青 编著 清华大学出版社 4.单片机应用新技术教程 朱宇光 编著 北京电子工业出版社 5.基于 C 语言编程 MCS51 单片机原理与应用 张陪任 编著 清华大学出版社 6.单片机微型计算机原理与接口技术 高峰 编著 北京科学出版社23附附 录录程序代码:#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件sbit CS=P34; /将 CS 位定义为 P3.4 引脚sbit CLK=

36、P10; /将 CLK 位定义为 P1.0 引脚sbit DIO=P11; /将 DIO 位定义为 P1.1 引脚/unsigned char code digit10=0123456789; /定义字符数组显示数字unsigned char code Str1=Volt=; /说明显示的是电压unsigned char code Str2=Thank.Mr.Zhang; /*以下是对液晶模块的操作程序*/sbit RS = P24; /定义端口 sbit RW = P25;sbit E= P26; /使能信号位,将 E 位定义为 P2.2 引脚sbit BF=P07; /忙碌标志位, ,将

37、BF 位定义为 P0.7 引脚24/*函数功能:延时 1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是 1 毫秒*/void delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; /*函数功能:延时若干毫秒入口参数: n*/ void delaynms(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms(); 25/*函数功能:判断液晶模块的忙碌状态返回值: result。result=1,忙碌;result=0,不忙*/bit Bus

38、yTest(void) bit result;RS=0; /根据规定, RS 为低电平, RW 为高电平时,可以读状态 RW=1; E=1; /E=1,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给 result E=0; /将 E 恢复低电平 return 0; /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数: dictate26*/void WriteInstruction (unsigned char dictate) while(BusyTest(

39、)=1); /如果忙就等待 RS=0; /根据规定, RS 和 R/W 同时为低电平时,可以写入指令 RW=0; E=0; /E 置低电平 (根据表 8-6,写指令时, E 为高脉冲, / 就是让 E 从 0 到 1 发生正跳变,所以应先置0 _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入 P0 口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E 置高电平 _nop_(); _nop_();27 _nop_(); _nop_(); /空

40、操作四个机器周期,给硬件反应时间 E=0; /当 E 由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:指定字符显示的实际地址入口参数: x*/ void WriteAddress(unsigned char x) WriteInstruction(x|0 x80); /显示位置的确定方法规定为 80H+地址码 x /*函数功能:将数据 (字符的标准 ASCII 码)写入液晶模块入口参数: y(为字符常量 )*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS 为高电平, RW 为低电平时,可以写入数据28

41、 RW=0; E=0; /E 置低电平 (根据表 8-6,写指令时, E 为高脉冲, / 就是让 E 从 0 到 1 发生正跳变,所以应先置 0 P0=y; /将数据送入 P0 口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E 置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当 E 由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:对 LCD 的显示模式进行初始化设置*/void LcdInitiat

42、e(void) delaynms(15); /延时 15ms,首次写指令时应给 LCD 一段29较长的反应时间 WriteInstruction(0 x38); /显示模式设置: 162 显示,57 点阵,8 位数据接口delaynms(5); /延时 5ms,给硬件一点反应时间 WriteInstruction(0 x38);delaynms(5); /延时 5ms,给硬件一点反应时间WriteInstruction(0 x38); /连续三次,确保初始化成功delaynms(5); /延时 5ms,给硬件一点反应时间WriteInstruction(0 x0c); /显示模式设置:显示开,

43、无光标,光标不闪烁delaynms(5); /延时 5ms,给硬件一点反应时间WriteInstruction(0 x06); /显示模式设置:光标右移,字符不移delaynms(5); /延时 5ms,给硬件一点反应时间WriteInstruction(0 x01); /清屏幕指令,将以前的显示内容清除delaynms(5); /延时 5ms,给硬件一点反应时间 /*以下是电压显示的说明*/30/*函数功能:显示电压符号*/ void display_volt(void) unsigned char i; WriteAddress(0 x01); /写显示地址,将在第 2 行第 1 列开始显

44、示 i = 0; /从第一个字符开始显示 while(Str1i != 0) /只要没有写到结束标志,就继续写 WriteData(Str1i); /将字符常量写入 LCD i+; /指向下一个字符void display3(void) unsigned char i;31 WriteAddress(0 x80+0 x41); /写显示地址,将在第 2 行第 1 列开始显示 i = 0; /从第一个字符开始显示 while(Str2i != 0) /只要没有写到结束标志,就继续写 WriteData(Str2i); /将字符常量写入 LCD i+; /指向下一个字符/*函数功能:显示电压的小数

45、点*/ void display_dot(void) WriteAddress(0 x09); /写显示地址,将在第 1 行第 10 列开始显示 WriteData(.); /将小数点的字符常量写入 LCD/*32函数功能:显示电压的单位 (V)*/ void display_V(void) WriteAddress(0 x0e); /写显示地址,将在第 2 行第 13 列开始显示 WriteData(V); /将字符常量写入 LCD/*函数功能:显示电压的整数部分入口参数: x*/ void display1(unsigned char x)WriteAddress(0 x08); /写显示

46、地址 ,将在第 2 行第 7 列开始显示WriteData(digitx); /将百位数字的字符常量写入LCD /*函数功能:显示电压的小数数部分入口参数: x33*/ void display2(unsigned char x) unsigned char i,j;i=x/10; /取十位(小数点后第一位)j=x%10; /取个位(小数点后第二位) WriteAddress(0 x0a); /写显示地址 ,将在第 1 行第 11 列开始显示WriteData(digiti); /将小数部分的第一位数字字符常量写入LCDWriteData(digitj); /将小数部分的第一位数字字符常量写入

47、LCD/*函数功能:将模拟信号转换成数字信号*/ unsigned char A_D() unsigned char i,dat; CS=1; /一个转换周期开始 CLK=0; /为第一个脉冲作准备 CS=0; /CS 置 0,片选有效 DIO=1; /DIO 置 1,规定的起始信号 34 CLK=1; /第一个脉冲 CLK=0; /第一个脉冲的下降沿,此前DIO 必须是高电平 DIO=1; /DIO 置 1, 通道选择信号 CLK=1; /第二个脉冲,第 2、3 个脉冲下沉之前, DI 必须跟别输入两位数据用于选择通道,这里选通道CH0 CLK=0; /第二个脉冲下降沿 DIO=0; /DI

48、 置 0,选择通道 0 CLK=1; /第三个脉冲 CLK=0; /第三个脉冲下降沿 DIO=1; /第三个脉冲下沉之后,输入端DIO 失去作用,应置 1 CLK=1; /第四个脉冲 for(i=0;i8;i+) /高位在前 CLK=1; /第四个脉冲 CLK=0; dat=1; /将下面储存的低位数据向右移dat|=(unsigned char)DIO; /将输出数据 DIO 通过或运算储存在 dat 最低位 CS=1; /片选无效 return dat; /将读书的数据返回 35 /*函数功能:主函数*/ main(void) unsigned int AD_val; /储存 A/D 转换

49、后的值 unsigned char Int,Dec; /分别储存转换后的整数部分与小数部分 LcdInitiate(); /将液晶初始化 delaynms(50); /延时 5ms 给硬件一点反应时间 display3();display_volt(); /显示温度说明 display_dot(); /显示温度的小数点 display_V(); /显示温度的单位 while(1) AD_val= A_D(); /进行 A/D 转换 Int=(AD_val)/51; /计算整数部分 Dec=(AD_val%51)*100/51; /计算小数部分 display1(Int); /显示整数部分36 display2(Dec); /显示小数部分 delaynms(500); /延时 250ms 37课程设计评语课程设计评语指指导导教教师师评评语语设设计计成成绩绩备备注注

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!