收藏 分销(赏)

基于单片机的直流电压检测系统设计-课程设计说明书.doc

上传人:胜**** 文档编号:3044216 上传时间:2024-06-13 格式:DOC 页数:28 大小:392.50KB 下载积分:10 金币
下载 相关 举报
基于单片机的直流电压检测系统设计-课程设计说明书.doc_第1页
第1页 / 共28页
基于单片机的直流电压检测系统设计-课程设计说明书.doc_第2页
第2页 / 共28页


点击查看更多>>
资源描述
山东建筑大学信息与电气工程学院学院课程设计说明书 山东建筑大学 课 程 设 计 说 明 书 题 目: 基于单片机的直流电压检测系统设计 课 程: 单片机原理及应用B课程设计 院 (部): 信息与电气工程学院 专 业: 通信工程 班 级: 通信111 姓 名: 张安珍 学 号: 2011081342 指导教师: 张君捧 完成日期: 2015年1月 25 目录 摘 要 II 正文 1 1 设计目的和要求 1 3 设计内容和步骤 2 3.1单片机电压测量系统的原理 2 3.2 单片机电压测量系统的总体设计 3 3.2.1 硬件选择 4 3.2.2 软件选择 4 3.3 硬件电路的设计 4 3.3.1 输入电路模块设计 4 3.3.2 LM7805稳压电源电路介绍 5 3.3.3 显示模块电路设计 5 3.3.4 A/D转换设计 7 3.3.5 单片机模块的简介 9 3.4系统软件的设计 12 3.4.1主程序的设计 12 3.4.2 各子程序的设计 14 总结与致谢 16 参考文献 17 附录一 系统整体电路图 18 附录二 A/D转换电路的程序 19 附录三 1602LCD显示模块的程序 21 摘 要 随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段。对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。本设计在查阅了大量前人设计的数字电压表的基础上,利用单片机技术结合A/D转换芯片ADC0832构建了一个直流数字电压表。本文首先简要介绍了单片机系统的优势,然后详细介绍了直流数字电压表的设计流程,以及硬件系统和软件系统的设计。 本文介绍了基于89S51单片机的电压测量系统设计,介绍1602LCD液晶的功能和ADC0832的转换原理。该电路设计简单,方便。该设计可以测量0~5V的电压值,并在1602LCD液晶上显示出来。 本系统主要包括三大模块:主程序模块、显示模块、A/D转换模块,绘制点哭原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路,在软件编程上,采用了c语言进行编程,开发了显示模块程序,A/D转换程序。 关键词:89S51单片机;1602LCD液晶;ADC0832 正文 1 设计目的和要求 设计目的: 电压是属于电子测量中的一个重要组成部分。了解,测出各种电压的值,有助于让我们更加安全、方便的使用电压。因为研究电压的测量值具有重要价值。 传统的指针式电压表功能单一、精度低,已经满足不了现在时代的需求,而采用单片机的数字电压表,精度高、抗干扰能力强,可扩张性强、集成方便,还可与PC实行实时通信,目前,由各种单片机和A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域。 基于单片机的电压检测系统设计,控制系统采用89S51单片机,A/D转换器采用ADC0832为主要硬件,实现数字电压表的硬件电路与软件设计。数字电 压表可以测量0~5V的输入电压值,并在1602LCD液晶模块上显示。 要求: 1.根据已知参数对输入信号特征进行分析、需求分析,选择确定单片机型号、各种外围芯片型号,完成系统硬件设计。 2.基本教学要求:每人一台计算机,计算机安装Keil、Protel等软件。 3. (利用单片机设计并制作简易的直流数字电压表,能够测出0~5V的直流电压,电路组成框图如图所示。 (1)测量精度0.02V。 (2)利用数码管或者液晶显示器显示电压值。 (3)测量范围0~5V。 3 设计内容和步骤 3.1单片机电压测量系统的原理 运算放大器是一种直流耦合﹐差模(差动模式)输入、通常为单端输出的高增益(gain)电压放大器,因为刚开始主要用于加法,乘法等运算电路中,因而得名。一个理想的运算放大器必须具备下列特性:无限大的输入阻抗、等于零的输出阻抗、无限大的开回路增益、无限大的共模排斥比的部分、无限大的频宽。最基本的运算放大器如图1-1。一个运算放大器模组一般包括一个正输入端(OP_P)、一个负输入端(OP_N)和一个输出端(OP_O)。 数模转换器数字量是用代码按数位组合起来表示的,对于有权码,每位代码都有一定的位权。为了将数字量转换成模拟量,必须将每1位的代码按其位权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得到与数字量成正比的总模拟量,从而实现了数字—模拟转换。这就是组成D/A转换器的基本指导思想。 D/A转换器由数码寄存器、模拟电子开关电路、解码网络、求和电路及基准电压几部分组成。数字量以串行或并行方式输入、存储于数码寄存器中,数字寄存器输出的各位数码,分别控制对应位的模拟电子开关,使数码为1的位在位权网络上产生与其权值成正比的电流值,再由求和电路将各种权值相加,即得到数字量对应的模拟量。 单片机硬件特性: 1、主流单片机包括CPU、4KB容量的ROM、128 B容量的RAM、 2个16位定时/计数器、4个8位并行口、全双工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。 2、系统结构简单,使用方便,实现模块化; 3、单片机可靠性高,可工作到10^6 ~10^7小时无故障; 4、处理功能强,速度快。 5、低电压,低功耗,便于生产便携式产品 6、控制功能强 7、环境适应能力强。 3.2 单片机电压测量系统的总体设计 本设计从各个角度分析了由单片机组成的数字电压表的设计过程及各部分电路的组成及其原理。框图如下: 本设计主要分为两部分:硬件电路及软件程序。而硬件电路又大体可分为单片机小系统电路、A/D转换电路、液晶显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用C语言编程。 电压是检测中最基本的测量值,主要过程是模拟信号经过输入电路调理,在经过放大电路,变换成合适范围的信号幅度,接着该信号,经过A/D转换电路转化成数字信号,数字信号既可以直接经过单片机的处理、保存,再由液晶显示器显示出来。 总体设计的内容:被测电压经过运算放大电路,可以被AD接收的电压范围,然后该信号经过ADC0832芯片A/D转换电路转化成数字信号,再经过89S51单片机的处理、保存,由1602LCD液晶模块显示出来。 该电压表可达到如下程度: (1) 电压表量程范围0V~5V; (2) 能用液晶显示电压值; (3) 测量精度可达到0.02mV。 3.2.1 硬件选择 选择89S51作为单片机芯片,选用1602LCD液晶屏来实现电压显示,由于ADC0832的基准电压由它内部本身提供,所以为了方便,我就利用ADC0832作为数模转换芯片,利用P0至P4的各个串口来进行不同设备间的连接,计算机进行汇编,H51/L仿真器,单片机多功能实验箱。 3.2.2 软件选择 本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。汇编语言的特点是占用内存单元少,执行效率高。执行速度快。但它依赖于计算机硬件,程序可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。 由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU的处理速度非常的快。用C语言来控制单片机无疑是一个理想的选择。所以在本设计中采用C语言编写软件程序。 3.3 硬件电路的设计 3.3.1 输入电路模块设计 电压测量原理如图所示,电压输入到LM358的正相端。最高输入电压可到5V ,使输入电压处于AD量程范围。LM358 构成一个电压跟随器,起到隔离前后通道的作用,其较低的输出电阻还可以提高带负载能力,输出端 接入ADC。 由于该设计精度要达到0.01mV左右,所以我们加入了LM358的放大器,来放大较小的被测电压,输入到AD转换器中,再经过单片机处理从液晶上显示出来。 如图所示,是由LM358放大器组成的,LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。 电容C5是阻容滤波,为了使得信号更稳定。 3.3.2 LM7805稳压电源电路介绍 用lm78/lm79系列三端稳压IC来组成稳压电源所需的外围元件很少,电路内部有过流、过热和调整管的保护电路,使用方便、可靠,而且价格低廉。该系列集成稳压IC型号中的lm78或lm79后面的数字代表此三端集成稳压电路的输出电压。因为三端固定集成稳压电路的使用方便,电子制作中经常采用。 这是一个输出正5V直流电压的稳压电源电路。IC采集成稳压器lm7805,C4为输出端滤波电容,D1为输入反向保护。 3.3.3 显示模块电路设计 显示模块的选择关系到整个系统设计的功能多少,我们只需要显示最后电压的数字值和电压的单位,根据各种显示器件的特点:数码管只能显示数字,不能显示单位字符,不符合本设计的要求。而点阵显示器件驱动显示软件程序编写麻烦,占用的引脚相对也较多。也不是理想的显示器件。所以在本设计中,我们考虑用液晶显示器件,虽然12864液晶比1602液晶的功能强,不过在价格方面却贵了好多。而1602液晶也足够满足本设计的需要。因此,在本设计实验我们选择1602液晶显示器件。 1602LCD分为带背光和不带背光两种,带背光的比不带背光的厚,是否带背光在应用中并无差别,1602液晶模块内部的字符发生存储器有存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的阿拉伯数字“8”的代码是00111000B(38H),显示时模块把地址38H中的点阵字符图形显示出来,我们就能看到数字“8”。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。LCD1602与单片机接口如图所示。 GND为电源地,VCC接5V电源正极,V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时则会产生“鬼影”,使用时则可以通过一个10K的电位器调整对比度)。 通过RW的高电平时读取输入电压的数字信号,再经过RW的低电平进行写操作,在LCD上显示出来。 RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。E(或EN)端为使能(enable)端。D0~D7与单片机的P0端口相接。 3.3.4 A/D转换设计 3.3.4.1 A/D电路的介绍和选择 在该设计中,模数(A/D)转换模块是一个非常重要的模块,它关系到最后数字电压表电压值的精确度。所以,A/D芯片的选择是设计过程中一个很重要的环节。 模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是将一个输入模拟电压信号转换为一个输出的数字信号。模数转换器最重要的参数是转换的精度,通常用输出的数字信号的位数的多少表示。转换器能够准确输出的数字信号的位数越多,表示转换器能够分辨输入信号的能力越强,转换器的性能也就越好。A/D转换一般要经过采样,保持,量化及编码4个过程。在实际电路中,有些过程是合并进行的,如采样和保持,量化和编码在转换过程中是同时实现的。 ADC0832是8脚双列直插式双通道A/D转换器,能分别对两路模拟信号实现模—数转换,可以用在单端输入方式和差分方式下工作。ADC0832采用串行通信方式,通过DI 数据输入端进行通道选择、数据采集及数据传送。8位的分辨率(最高分辨可达256级),可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。ADC0832是8位精度,在本设计中,为了减少数字电压表的误差率,在同类比的AD转换器中,ADC0832性价比较高,于是我就选择了ADC0832作为这次设计的AD转换器。 3.3.4.2 ADC0832与单片机的接口电路 CH0、CH1,是ADC0832的两个通道,在ADC0832的工作时,被测的电压进行通道选择进入CH0或者CH1通道,ADC0832采用串行通信方式,通过DI 数据输入端进行通道选择、数据采集及数据传送。CS,CLK,DI,DO四个是与单片机P3接口相连,只有在使能端CS为低电平时,ADC0832才开始工作,此时处理器向AD传送时钟信号,而根据DI和DO来选择需要通道的信号,传入单片机处理和保存。 在第一个时钟脉冲的下降之前DI端必须是高电平,表示开始信号。在第二、三个脉冲下将之前DI端应输入两个数据用于选择通道功能。 通道地址 通道 工作方式说明 SGL/DIF ODD/SIGN 0 1 0 0 + - 差分方式 0 1 - + 1 0 + 单端输入方式 1 1 + 当此两个数据为“1”、“0”时,只对CH0 进行单通道转换。当两个数据为“1”、“1”时,只对CH1进行单通道转换。当两个数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当两位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入。到第三个脉冲的下降之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下降沿开始由DO端输出转换数据最高位Data7,随后每一个脉冲的下降沿DO端输出下一个数据。直到第11个脉冲时发出最低位数据Data0,一个字节的数据输出就完成了。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下降沿输出Data0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平停用芯片,直接将转换后的数据进行处理就可以了。 作为单通道模拟信号输入时ADC0832的输入电压是0—5V且8位分辨率时的电压精度为19.53mV,即(5/256)V。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。 3.3.5 单片机模块的简介 单片机是指一个集成在一块芯片上的完整计算机系统,具有一个完整计算机所需要的大部分部件:CPU,内存,总线系统等。而目前常用的单片机的8位有51系列单片机,AVR单片机,PIC单片机。 应用最广的8位单片机还是intel的51系列单片机。51系列单片机的特点是:硬件结构合理,指令系统规范,加之生产历史悠久,世界有许多芯片公司都买了51的芯片核心专利技术,并在其基础上扩充其性能,使得芯片的运行速度变得更快,性价比更高。 我们在本次设计中选择了89S51芯片,正因为具有功能强、体积小、成本低、功耗小等特点,所以它可单独地完成现代工业控制所要求的智能化控制功能,能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。 89S51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 3.3.5.1 单片机小系统 单片机最小系统包括晶振电路,电源。在此模块中,单片机的晶振是12MHZ。P1端口与AD转换器连接,RS、RW、EN和P0端口与1602LCD连接。 被测电压被AD转换后从P1端口输入,由单片机进行数据的采集然后保存在RAM中。再经过单片机系统的软件程序编写,适合1602LCD的输入,则通过P1端口输出,在1602LCD上显示出来被测的电压。 3.2.5.2 89S51单片机的基本组成 (1)一个8位的微处理器(CPU)。 (2)片内256字节数据存储器RAM/SFR,用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等。 (3)片内4KB程序存储器Flash ROM,用以存放程序、一些原始数据和表格。 (4)4个8位并行I/O端口P0-P3,每个端口既可以用作输入,也可以用作输出。 (5)两个16位的定时器/计数器,每个定时器/计数器都可以设置成计数方式。 (6)具有5个中断源、两个中断优先级的中断控制系统。 (7)一个全双工UART的串行I/O口,用于实现单片机之间或单片机与PC机之间的串行通信。 (8)片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。 (9)具有节电工作方式,即休闲方式和掉电方式。 以上各个部分通过片内八位数据总线相连接。 3.3.5.3 89S51引脚及其功能 (1)XTAL1(19脚):振荡器反相放大器及内部时钟发生器的输入端。 (2)XTAL2(18脚):振荡器反相放大器的输出端。 (3)RST(9脚):复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 (4)P0口(39~32脚):P0口是一个漏极开路的8位准双向I/O端口。作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。当P0口作为输入口使用时,应先向口锁存器写入全1,此时P0口的全部引脚浮空,可作为高阻抗输入。 (5)P3口(10~17脚):P3口是一组带有内部上拉电阻的8位双向I/O多功能口。P3口输出缓冲器可驱动4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口,此时,被外部拉低的P3口将用上拉电阻输出电流。当CPU不对P3口进行SFR寻址访问时,即用作第二功能输出/输入线时,由内部硬件使锁存器Q置1。 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处低电平10ms来完成。在芯片擦除操作中,代码陈列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,89S51设有稳态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 3.4系统软件的设计 本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。汇编语言的特点是占用内存单元少,执行效率高。执行速度快。但它依赖于计算机硬件,程序可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。 由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU的处理速度非常的快。用C语言来控制单片机无疑是一个理想的选择。所以在本设计中采用C语言编写软件程序。 3.4.1主程序的设计 初始化中,主要针对89S51、ADC0832的管脚和1602LCD液晶的位选进行初始化的设置。 利用公式VOT=(unsigned int)((unsigned long)val*5000/255);得出数据显示在液晶显示器上的第一行;利用VAL= GetVal0832(1);得出的数据显示在液晶显示器上的第二行。 主程序: void main() { uchar val; init(); while(1) { val = GetVal0832(1); Vot = (unsigned int)((unsigned long)val*5000/255); //显示电压 WriteChar(0,0,'V'); WriteChar(1,0,'O'); WriteChar(2,0,'T'); WriteChar(3,0,':'); WriteChar(4,0,(Vot%10000)/1000+0x30); WriteChar(5,0,'.'); WriteChar(6,0,(Vot%1000)/100+0x30); WriteChar(7,0,(Vot%100)/10+0x30); WriteChar(8,0,(Vot%10)+0x30); WriteChar(0,1,'V'); WriteChar(1,1,'A'); WriteChar(2,1,'L'); WriteChar(3,1,':'); WriteChar(4,1,val/1000+0x30); WriteChar(5,1,(val%1000)/100+0x30); WriteChar(6,1,(val%100)/10+0x30); WriteChar(7,1,(val%10)+0x30); delay(10); } } 3.4.2 各子程序的设计 3.3.2.1 A/D程序的流程图 为了高速有效的实现通信,我们采用汇编语言编写接口程序。由于ADC0832的数据转换时间仅为32μS,所以A/D转换的数据采样频率可以很快,从而也保证的某些场合对A/D转换数据实时性的要求。数据读取程序以子程序调用的形式出现,方便了程序的移植。 程序占用资源有累加器A,工作寄存器R7,通用寄存器B和特殊寄存器CY。通道功能寄存器和转换值共用寄存器B。在使用转换子程序之前必须确定通道功能寄存器B的值,其赋值语句为“MOV B,#data”(00H~03H)。运行转换子程序后的转换数据值被放入B中。子程序退出后即可以对B中数据处理。 3.4.2.2显示程序的流程图 LCD进行初始化,从通电开始延时,先经过判忙后再进行功能设置,过一段时间后可以设置显示状态再经过延时清屏后才可以设置输入方式,具体实现过程如下图所示: LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,显示程序流程图如下: 总结与致谢 目前电子测量设备在性能、测试功能、工艺结构等各方面都取得了巨大的发展,其研制和生产正向着系统化、数字化、高性能、多功能、快速、小型等方面发展。更不用说电压的测量。拥有先进的科学实验手段,这是科学技术现代化的一个重要标志,而一个国家电子测量水平的高低,往往是反映这个国家科技水平的重要方面。所以,我们必须努力提高我们的电子测量技术,争取早日达到国际先进水平[4]。 传统的指针式电压表功能单一、精度低,已经满足不了现在时代的需求,而本次设计设计的系统具有精度高、速度快、读数方便、抗干扰能力强、可扩展性强、集成方便,还可与PC进行实时通信等优点,但同时存在一些不足,比如采样缓慢,难以操作等缺点。 单片机的应用如今已经是在工业,电子等方面展示出了它的优越性,利用单片机在设计电路逐渐成了趋势,它与外围电路再加上软件程序就可以构建任意的产品,使得本设计成为现实。随着单片机的日益发展,它必将在未来显示出更大的活力,为电子设计更多精彩。对于数字电压表而言,功能将会越来越强大,以后一定要加强单片机知识的学习。 通过本次课程设计,使我对单片机及数模电等知识的掌握和理解有了进一步加深,巩固了我在《单片机原理及应用B》课程中所学的基本理论知识和实验技能,使我对《单片机原理及应用B》课程有了更深入的了解,同时对《数字电子技术》、《模拟电子技术》等课程加深了理解,进一步激发了我对所学专业学习的兴趣;提高了我的认识和理解以及实践能力。 在设计的过程和设计说明书的撰写过程中,高老师给予了我热心的帮助和大力的支持,给我提了诸多的宝贵意见,拓宽了我的思路。在此我向老师致以崇高的敬意和衷心的感谢! 在我的学习过程中,张老师,高老师等其它老师也给了我耐心的指导和帮助。我在此对各位老师表示诚挚的感谢! 参考文献 [1] 马潮. AVR单片机嵌入式系统原理与应用实践 [M].北京: 北京航空航天大学出版社,2007. [2] 杨欣,王玉凤,刘湘黔. 51单片机应用从零开始 [M].北京: 清华大学出版社,2008. [3] 陈在平. 现场总线及工业控制网络技术[M].北京: 电子工业出版社,2008. [4] 沈建华,杨艳琴. MSP430系列16位超低功耗单片机原理与实践[M]. 北北京航空航天大学出版社,2008. [5] 张成伟. 基于嵌入式Linix的GSM/GPRS无线通信模块的设计与实现[D]. 华中科技大学 [6] 赵亮GPRS无线网络在远程数据采集中的应用计算机工程与设计.2005. 26(9). [7] 马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2003. [8] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004. [9] 雷霖. 现场总线及工业控制网络技术[M].北京: 电子工业出版社,2004. [10] 许洪华. 现场总线与工业以太网技术[M]. 北京: 电子工业出版社,2007. 附录一 系统整体电路图 附录二 A/D转换电路的程序 #include<reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int //定义液晶接口 sbit rs=P2^0; sbit lcden=P2^2; sbit rw = P2^1; // ADC0832连接端口 sbit ADC0832_CLK = P1^3; sbit ADC0832_DO = P1^5; sbit ADC0832_DI = P1^4; sbit ADC0832_CS = P1^2; uint Vot = 0; // 读ADC0832指定通道AD转换数值 uchar GetVal0832(uchar channel) { uchar i,dat=0; // 读到的数据,MSB FIRST DATA bit SGL_DIF,ODD_SIGN; // 通道选择信号 switch(channel) { case 1:SGL_DIF=1;ODD_SIGN=0;break; // 选单通道 case 2:SGL_DIF=1;ODD_SIGN=1;break; // 选单通道 case 3:SGL_DIF=0;ODD_SIGN=0;break; // CH0为+,CH1为- case 4:SGL_DIF=0;ODD_SIGN=1;break; // CH0为-,CH1为+ default:break; // 通道选择错误 } ADC0832_CS=1; // 片选无效 // 一个无效时钟周期 ADC0832_CLK=1; _nop_(); ADC0832_CLK=0; _nop_(); ADC0832_CS=0; // 片选有效,开始AD转换 // 传START BIT 信号 ADC0832_CLK=0; _nop_(); ADC0832_DI=1; // START BIT ADC0832_CLK=1; //上升沿锁住START BIT信号 _nop_(); // 传通道选择信号 ADC0832_CLK=0; _nop_(); ADC0832_DI=SGL_DIF; ADC0832_CLK=1; // 上升沿锁住SGL/DIF信号 _nop_(); ADC0832_CLK=0; _nop_(); ADC0832_DI=ODD_SIGN; ADC0832_CLK=1; // 上升沿锁住ODD_SIGN信号 _nop_(); ADC0832_CLK=0; // 此下降沿开始转换,开始读取数值 _nop_(); // 读取AD转换数值 for(i=0;i<8;i++) { ADC0832_CLK=1; // CLK为1时,DO肯定保持在稳定态 _nop_(); // 故此时可读出数据 if(ADC0832_DO) dat++; dat=dat<<1; ADC0832_CLK=0; _nop_(); } // 释放总线 ADC0832_CLK=1; _nop_(); ADC0832_CLK=0; _nop_(); ADC0832_CS=1; //读取完毕,片选无效 return dat; } 附录三 1602LCD显示模块的程序 void delay(uint x) { uint a,b; for(a=x;a>0;a--) for(b=10;b>0;b--); } //LCD1602写命令 void write_com(uchar com) { P0=com; rs=0; rw=0; lcden=0; delay(10); lcden=1; delay(10); lcden=0; } //LCD1602写数据 void write_date(uchar date) { P0=date; rs=1; rw = 0; lcden=0; delay(10); lcden=1; delay(10); lcden=0; } //LCD1602初始化 void init() { delay(200); write_com(0x38); delay(20); write_com(0x38); delay(20); write_com(0x38); delay(20); write_com(0x0c); delay(20); write_com(0x06); delay(20); write_com(0x01); delay(20); } //LCD1602指定位置显示字符 void WriteChar(uchar pox_x,uchar pox_y,uchar chr) { uchar addr=0; if( pox_y==0 ) { addr = pox_x + 0x80; } else { addr = pox_x + 0xC0; } write_com(addr); delay(10); write_date(chr); delay(10); } //LCD1602指定位置显示数值 void WriteNum(uchar pox_x,uchar pox_y,uint dat,uchar zero) { uchar b[4]; uchar i,j=0; if(dat<10000) { b[0] = (dat%10000)/1000; b[1] = (dat%1000)/100; b[2] = (dat%100)/10; b[3] = dat%10; } else { b[0] = dat/10000; b[1] = (dat%10000)/1000; b[2] = (dat%1000)/100; b[3] = (dat%100)/10; } for(i=0;i<4;i++) { if(b[i]==0) { if(zero==0) { WriteChar(pox_x+j,pox_y,b[i]+0x30); j++; } } else { WriteChar(pox_x+j,pox_y,b[i]+0x30); j++; } } } 1. 基于C8051F单片机直流电动机反馈控制系统的设计与研究 2. 基于单片机的嵌入式Web服务器的研究 3. MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究 4. 基于模糊控制的电阻钎焊单片机温度控制系统的研制 5. 基于MCS-51系列单片机的通用控制模块的研究 6. 基于单片机实现的供暖系统最佳启停自校正(STR)调节器 7. 单片机控制的二级倒立摆系统的研究 8. 基于增强型51系列单片机的TCP/IP协议栈的实现 9. 基于单片机的蓄电池自动监测系统 10. 基于32位嵌入式单片机系统的图像采集与处理技术的研究 11. 基于单片机的作物营养诊断专家系统的研究 12. 基于单片机的交流伺服电机运动控制系统研究与开发 13. 基于单片机的泵管内壁硬度测试仪的研制 14. 基于单片机的自动找平控制系统研究 15. 基于C8051F040单片机的嵌入式系统开发 16. 基于单片机的液压动力系统状态监测仪开发 17. 模糊Smith智能控制方法的研究及其单片机实现 18. 一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制 19. 基于双单片机冲床数控系统的研究 20. 基于CYG
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服