首页 单片机直流电压检测系统设计

单片机直流电压检测系统设计

举报
开通vip

单片机直流电压检测系统设计目录TOC\o"1-5"\h\z摘要IIHYPERLINK\l"bookmark4"\o"CurrentDocument"设计目的1HYPERLINK\l"bookmark6"\o"CurrentDocument"设计要求2HYPERLINK\l"bookmark10"\o"CurrentDocument"设计内容3系统需求分析3硬件选择3软件选择4硬件电路的设计4输入电路模块设计4LM7805稳压电源电路介绍5显示模块电路设计6A/D转换设计7单片机模块的简介103.3系统软件的设计13主程...

单片机直流电压检测系统设计
目录TOC\o"1-5"\h\z摘要IIHYPERLINK\l"bookmark4"\o"CurrentDocument"设计目的1HYPERLINK\l"bookmark6"\o"CurrentDocument"设计要求2HYPERLINK\l"bookmark10"\o"CurrentDocument"设计内容3系统需求分析3硬件选择3软件选择4硬件电路的设计4输入电路模块设计4LM7805稳压电源电路介绍5显示模块电路设计6A/D转换设计7单片机模块的简介103.3系统软件的设计13主程序的设计14各子程序的设计15HYPERLINK\l"bookmark14"\o"CurrentDocument"总结与致谢17HYPERLINK\l"bookmark16"\o"CurrentDocument"参考文献18HYPERLINK\l"bookmark18"\o"CurrentDocument"附录一系统整体电路图19HYPERLINK\l"bookmark20"\o"CurrentDocument"附录二A/D转换电路的程序20HYPERLINK\l"bookmark22"\o"CurrentDocument"附录三1602LCD显示模块的程序22摘要本设计在查阅了大量前人设计的数字电压表的基础上,利用单片机技术结合A/D转换芯片ADC0832构建了一个直流数字电压表。本文首先简要介绍了单片机系统的优势,然后详细介绍了直流数字电压表的设计流程,以及硬件系统和软件系统的设计。本文介绍了基于89S51单片机的电压测量系统设计,介绍1602LCD液晶的功能和ADC0832的转换原理。该电路设计简单,方便。该设计可以测量0~5V的电压值,并在1602LCD液晶上显示出来。本系统主要包括三大模块:主程序模块、显示模块、A/D转换模块,绘制点哭原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路,在软件编程上,采用了c语言进行编程,开发了显示模块程序,A/D转换程序。关键词:电压测量;A/D转换;89S51单片机1设计目的电压是属于电子测量中的一个重要组成部分。了解,测出各种电压的值,有助于让我们更加安全、方便的使用电压。因为研究电压的测量值具有重要价值。传统的指针式电压表功能单一、精度低,已经满足不了现在时代的需求,而采用单片机的数字电压表,精度高、抗干扰能力强,可扩张性强、集成方便,还可与PC实行实时通信,目前,由各种单片机和A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域。基于单片机的电压 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 系统设计,控制系统采用89S51单片机,A/D转换器采用ADC0832为主要硬件,实现数字电压表的硬件电路与软件设计。数字电压表可以测量0~5V的输入电压值,并在1602LCD液晶模块上显示。2设计要求1•根据已知参数对输入信号特征进行分析、需求分析,选择确定单片机型号、各种外围芯片型号,完成系统硬件设计。基本教学要求:每人一台计算机,计算机安装Keil、Protel等软件。(利用单片机设计并制作简易的直流数字电压表,能够测出0〜5V的直流电压,电路组成框图如图所示。显示电压值TA\D|rH主世器(刃車片机)声音授电压值(选知测量精度0.02V。利用数码管或者液晶显示器显示电压值测量范围0〜5V。3设计内容3.1系统需求分析本设计从各个角度分析了由单片机组成的数字电压表的设计过程及各部分电路的组成及其原理。框图如下:图2.2.1数字电压表原理框图本设计主要分为两部分:硬件电路及软件程序。而硬件电路又大体可分为单片机小系统电路、A/D转换电路、液晶显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用C语言编程。电压是检测中最基本的测量值,主要过程是模拟信号经过输入电路调理,在经过放大电路,变换成合适范围的信号幅度,接着该信号,经过A/D转换电路转化成数字信号,数字信号既可以直接经过单片机的处理、保存,再由液晶显示器显示出来。总体设计的内容:被测电压经过运算放大电路,可以被AD接收的电压范围,然后该信号经过ADC08325片A/D转换电路转化成数字信号,再经过89S51单片机的处理、保存,由1602LCD液晶模块显示出来。该电压表可达到如下程度:电压表量程范围0V〜5V;能用液晶显示电压值;测量精度可达到0.02mV,3.1.1硬件选择选择89S51作为单片机芯片,选用1602LCD液晶屏来实现电压显示,由于ADC0832的基准电压由它内部本身提供,所以为了方便,我就利用ADC0832(乍为数模转换芯片,利用P0至P4的各个串口来进行不同设备间的连接,计算机进行汇编,H51/L仿真器,单片机多功能实验箱。软件选择本设计是硬件电路和软件编程相结合的设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。汇编语言的特点是占用内存单元少,执行效率高。执行速度快。但它依赖于计算机硬件,程序可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU勺处理速度非常的快。用C语言来控制单片机无疑是一个理想的选择。所以在本设计中采用C语言编写软件程序。硬件电路的设计3.2.1输入电路模块设计电压测量原理如图所示,电压输入到LM358的正相端。最高输入电压可到5V,使输入电压处于AD量程范围。LM358构成一个电压跟随器,起到隔离前后通道的乍用,其较低的输出电阻还可以提高带负载能力,输出端接入ADC。.1U11CKvcc—R6l«'由于该设计精度要达到O.OImV左右,所以我们加入了LM358的放大器,来放大较小的被测电压,输入到AD转换器中,再经过单片机处理从液晶上显示出来。如图所示,是由LM358放大器组成的,LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。电容C5是阻容滤波,为了使得信号更稳定。LM7805稳压电源电路介绍用Im78/lm79系列三端稳压IC来组成稳压电源所需的外围元件很少,电路内部有过流、过热和调整管的保护电路,使用方便、可靠,而且价格低廉。该系列集成稳压IC型号中的Im78或Im79后面的数字代表此三端集成稳压电路的输出电压。因为三端固定集成稳压电路的使用方便,电子制作中经常采用。DIvccIC采集成稳压器lm7805.这是一个输出正5V直流电压的稳压电源电路C4为输出端滤波电容,D1为输入反向保护。323显示模块电路设计显示模块的选择关系到整个系统设计的功能多少,我们只需要显示最后电压的数字值和电压的单位,根据各种显示器件的特点:数码管只能显示数字,不能显示单位字符,不符合本设计的要求。而点阵显示器件驱动显示软件程序编写麻烦,占用的引脚相对也较多。也不是理想的显示器件。所以在本设计中,我们考虑用液晶显示器件,虽然12864液晶比1602液晶的功能强,不过在价格方面却贵了好多。而1602液晶也足够满足本设计的需要。因此,在本设计实验我们选择1602液晶显示器件。1602LCD分为带背光和不带背光两种,带背光的比不带背光的厚,是否带背光在应用中并无差别,本次设计采用带背光的。1602液晶模块内部的字符发生存储器有存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的阿拉伯数字“8”的代码是00111000B(38H),显示时模块把地址38H中的点阵字符图形显示出来,我们就能看到数字“8”。LCD1602与单片机接口如图所示。BGVCCBGGKDLCDlfiC^T134-O67redddddddd第0脚:GCD为地电源。第1脚:VCC接5V正电源。第2脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第3脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第4脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第5脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第6〜13脚:D旷D7为8位双向数据线。第14脚:背光源正极。第15脚:背光源负极。3.2.4A/D转换设计3.241A/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.242ADC0832与单片机的接口电路VCCCl3K——44►81C4VCC£csCHOgCLKCHIQDIGNDVDO♦U2CH0CH1是ADC0832勺两个通道,在ADC0832勺工作时,被测的电压进行通道选择进入CH0或者CH1通道,ADC0832采用串行通信方式,通过DI数据输入端进行通道选择、数据采集及数据传送。CS,CLK,DI,D0四个是与单片机P3接口相连,只有在使能端CS为低电平时,ADC0832t开始工作,此时处理器向AD传送时钟信号,而根据DI和DO来选择需要通道的信号,传入单片机处理和保存。在第一个时钟脉冲的下降之前DI端必须是高电平,表示开始信号。在第二、三个脉冲下将之前DI端应输入两个数据用于选择通道功能。通道地址通道工作方式说明SGL/DIFODD/SIGN0100+-差分方式01-+1101++单端输入方式当此两个数据为“1”、“0”时,只对CH0进行单通道转换。当两个数据为“1”、“1”时,只对CH1进行单通道转换。当两个数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当两位数据为“0”、“T时,将CH0乍为负输入端IN-,CH1作为正输入端IN+进行输入。到第三个脉冲的下降之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出D0进行转换数据的读取。从第4个脉冲下降沿开始由DO端输出转换数据最高位Data7,随后每一个脉冲的下降沿DO端输出下一个数据。直到第11个脉冲时发出最低位数据Data0,—个字节的数据输出就完成了。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下降沿输出Data0。随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平停用芯片,直接将转换后的数据进行处理就可以了。作为单通道模拟信号输入时ADC0832勺输入电压是0—5V且8位分辨率时的电压精度为19.53125mV即量化间隔为(5/256)V。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。3.2.5单片机模块的简介单片机是指一个集成在一块芯片上的完整计算机系统,具有一个完整计算机所需要的大部分部件:CPU内存,总线系统等。而目前常用的单片机的8位有51系列单片机,AVR单片机,PIC单片机。应用最广的8位单片机还是intel的51系列单片机。51系列单片机的特点是:硬件结构合理,指令系统规范,加之生产历史悠久,世界有许多芯片公司都买了51的芯片核心专利技术,并在其基础上扩充其性能,使得芯片的运行速度变得更快,性价比更高。我们在本次设计中选择了89S51芯片,正因为具有功能强、体积小、成本低、功耗小等特点,所以它可单独地完成现代工业控制所要求的智能化控制功能,能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。89S51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS位微处理器,俗称单片机。该器件采用ATME高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATME的89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.2.5.1单片机小系统51悵::喪事ICffvecP1.0P]]PU[ATOiPOODljKnfAD2曲上PlJ(AD泗3P1.4(AD4:M4P)5[MOSI)(AD诃,d审gP1.*(SCKJ卑虫57TT:1站呼:1P3XT1){AJ01K-;(A)]>K3?3*{Tg)a;阳fXvpp>XT.U.1XTAL2vccKSTGNDNED;叭4肥■■:X5?{TmgiALEPKCG173ATE9M]C=^J_|b10KI1±2t单片机最小系统包括晶振电路,电源。在此模块中,单片机的晶振是12MH乙P1端口与AD转换器连接,RSRWEN和P0端口与1602LCD连接。被测电压被AD转换后从P1端口输入,由单片机进行数据的采集然后保存在RAM中。再经过单片机系统的软件程序编写,适合1602LCD的输入,则通过P1端口输出,在1602LCD上显示出来被测的电压。89S51单片机的基本组成(1)一个8位的微处理器(CPU。(2)片内256字节数据存储器RAM/SFR用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等。(3)片内4KB程序存储器FlashROM用以存放程序、一些原始数据和表格。(4)4个8位并行I/O端口P0-P3,每个端口既可以用作输入,也可以用作输出两个16位的定时器/计数器,每个定时器/计数器都可以设置成计数方式。具有5个中断源、两个中断优先级的中断控制系统。—个全双工UART勺串行I/O口,用于实现单片机之间或单片机与PC机之间的串行通信。片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接具有节电工作方式,即休闲方式和掉电方式。以上各个部分通过片内八位数据总线相连接。89S51引脚及其功能51EAVPFP3.4{TC)?3.3aNTL)P32OXT0)>XTAL13CTAL2P3.7LRD;両P1.0PHPl2Pl.3Pl4P1.5CMOSL-P1.6(MISO;-P1.7(SCK)(ADCyPC.CCWl)P0.1(AD2jP0.2(ADSjPO.3(4.■PO.i{.W6)P0.6VCCGND(RXD??3.C(TXD)P3.1ALEPROG(ASJP2.0(ASJP21(A11JP23(A12)P2.4(A13)P2.5(A14)P2r6(A15JP2.74020XTAL1(19脚):振荡器反相放大器及内部时钟发生器的输入端。XTAL2(18脚):振荡器反相放大器的输出端。RST(9脚):复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。P0口(39〜32脚):P0口是一个漏极开路的8位准双向I/O端口。作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。当P0口作为输入口使用时,应先向口锁存器写入全1,此时P0口的全部引脚浮空,可作为高阻抗输入。P3口(10〜17脚):P3口是一组带有内部上拉电阻的8位双向I/O多功能口。P3口输出缓冲器可驱动4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口,此时,被外部拉低的P3口将用上拉电阻输出电流。当CPU不对P3口进行SFR寻址访问时,即用作第二功能输出/输入线时,由内部硬件使锁存器Q置1。整个PERO阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处低电平10ms来完成。在芯片擦除操作中,代码陈列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,89S51设有稳态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU亭止工作。但RAM定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.3系统软件的设计本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。汇编语言的特点是占用内存单元少,执行效率高。执行速度快。但它依赖于计算机硬件,程序可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU的处理速度非常的快。用C语言来控制单片机无疑是一个理想的选择。所以在本设计中采用C语言编写软件程序。3.3.1主程序的设计开始初始化调用StS序初始化中,主要针对89S51、ADC0832勺管脚和1602LCD液晶的位选进行初始化的设置。利用公式VOT=(unsignedint)((unsignedIong)val*5000/255);得出数据显示在液晶显示器上的第一行;利用VAL=GetVal0832(1);得出的数据显示在液晶显示器上的第二行。主程序:voidmain(){ucharval;init();while(1){val=GetVal0832(1);Vot=(unsignedint)((unsignedIong)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.3.2各子程序的设计3.321A/D程序的流程图为了高速有效的实现通信,我们采用汇编语言编写接口程序。由于ADC0832的数据转换时间仅为32卩S,所以A/D转换的数据采样频率可以很快,从而也保证的某些场合对A/D转换数据实时性的要求。数据读取程序以子程序调用的形式出现,方便了程序的移植。程序占用资源有累加器A,工作寄存器R7,通用寄存器B和特殊寄存器CY。通道功能寄存器和转换值共用寄存器B。在使用转换子程序之前必须确定通道功能寄存器B的值,其赋值语句为“MOVB,#data”(00H~03)运行转换子程序后的转换数据值被放入B中。子程序退出后即可以对B中数据处理。3.322显示程序的流程图LCD进行初始化,从通电开始延时,先经过判忙后再进行功能设置,过一段时间后可以设置显示状态再经过延时清屏后才可以设置输入方式,具体实现过程如下图所示:LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,显示程序流程图如下:结束总结与致谢在高焕兵老师与胡秀蒙老师的悉心指导下,我顺利完成了本次课程设计。在实验中我认识到单片机的应用如今已经是在工业,电子等方面展示出了它的优越性,利用单片机在设计电路逐渐成了趋势,它与外围电路再加上软件程序就可以构建任意的产品,使得本设计成为现实。随着单片机的日益发展,它必将在未来显示出更大的活力,为电子设计更多精彩。对于数字电压表而言,功能将会越来越强大,以后一定要加强单片机知识的学习。通过本次课程设计,使我对单片机及数模电等知识的掌握和理解有了进一步加深,巩固了我在《单片机原理及应用》课程中所学的基本理论知识和实验技能,使我对《单片机原理及应用》课程有了更深入的了解进一步激发了我对所学专业学习的兴趣;提高了我的认识和理解以及实践能力。在设计的过程和设计说明书的撰写过程中,高老师与胡老师给予了我热心的帮助和大力的支持,给我提了诸多的宝贵意见,拓宽了我的思路。在此我向老师致以崇高的敬意和衷心的感谢!参考文献马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社,2007.杨欣,王玉凤,刘湘黔.51单片机应用从零开始[M].北京:清华大学出版社,2008.沈建华,杨艳琴.MSP430系列16位超低功耗单片机原理与实践[M].北北京航空航天大学出版社,2008.马忠梅•单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2003.胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004.王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社.2006.蒋焕文,孙续编著.电子测量.第二版[M].北京:中国计量出版社,1988.杨吉祥,詹宏英编著.电子测量技术基础[M].南京:东南大学出版社,1999.陈杰美,古天祥编.电子仪器[M].北京:国防工业出版社,1986.张乃国编,电子测量技术[M].北京:人民邮电出版社,1985.刘君华编著.现代检测技术与测试系统设计[M].西安:西安交通大学出版,1999.李广第.单片机基础[M].北京:北京航空航天大学出版社,1999.徐惠民、安德宁.单片微型计算机原理接口与应用.[M].北京:北京邮电大学出版社,1996何立民.中一片机高级教程[M].北京:北京航空航天大学出版社.2000.徐江海•中一片机实用教程[M]北京:机械工业出版社,2006.康华光,陈大钦.电子技术基础(模拟部分)[M]北京:i}}等教育出版社,1999.孟庆浩,翟振铎,孙冰A/D转换器MC14433实际应用中若干问题的探讨[J].天津理工学院学报,1996.附录一系统整体电路图町ri・IKI■!|E『MkhHh-cKnn^.UhL!l~~附录二A/D转换电路的程序#include#include#defineucharunsignedchar#defineuintunsignedint//定义液晶接口sbitrs=P2A0;sbitIcden=P2A2;sbitrw=P2A1;//ADC083连接端口sbitADC0832_CLK=P1A3;sbitADC0832_DO=P1A5;sbitADC0832_DI=P1A4;sbitADC0832_CS=P1A2;uintVot=0;//读ADC0832旨定通道AD转换数值ucharGetVaI0832(ucharchanneI){uchari,dat=0;//读到的数据,MSBFIRSTDATAbitSGL_DIF,ODD_SIGN;//通道选择信号switch(channeI){case1:SGL_DIF=1;ODD_SIGN=0;break;//选单通道case2:SGL_DIF=1;ODD_SIGN=1;break;//选单通道case3:SGL_DIF=0;ODD_SIGN=0;break;//CH0为+,CH1为-case4:SGL_DIF=0;ODD_SIGN=1;break;//CH0为-,CH1为+defauIt:break;//通道选择错误}ADC0832_CS=1;//片选无效//一个无效时钟周期ADC0832_CLK=1;_nop_();ADC0832_CLK=0;_nop_();ADC0832_CS=0;//片选有效,开始AD转换//传STARTBIT信号ADC0832_CLK=0;_nop_();ADC0832_DI=1;//STARTBITADC0832_CLK=1;//上升沿锁住STARTBIT信号_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_SIG信号_nop_();ADC0832_CLK=0;//此下降沿开始转换,开始读取数值_nop_();II读取AD转换数值for(i=0;i<8;i++){ADC0832_CLK=1;IICLK为1时,DC肯定保持在稳定态_nop_();II故此时可读出数据if(ADC0832_DO)dat++;dat=dat<<1;ADC0832_CLK=0;_nop_();}II释放总线ADC0832_CLK=1;_nop_();ADC0832_CLK=0;_nop_();ADC0832_CS=1;II读取完毕,片选无效returndat;附录三1602LCD显示模块的程序voiddelay(uintx){uinta,b;for(a=x;a>0;a--)for(b=10;b>0;b--);}//LCD1602写命令voidwrite_com(ucharcom){P0=com;rs=0;rw=0;lcden=0;delay(10);lcden=1;delay(10);lcden=0;}//LCD1602写数据voidwrite_date(uchardate){P0=date;rs=1;rw=0;lcden=0;delay(10);lcden=1;delay(10);lcden=0;}//LCD1602初始化voidinit(){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指定位置显示字符voidWriteChar(ucharpox_x,ucharpox_y,ucharchr){ucharaddr=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指定位置显示数值voidWriteNum(ucharpox_x,ucharpox_y,uintdat,ucharzero){ucharb[4];uchari,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++;}
本文档为【单片机直流电压检测系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_072127
暂无简介~
格式:doc
大小:341KB
软件:Word
页数:0
分类:
上传时间:2019-11-18
浏览量:11