《数字电压表的课程设计.doc》由会员分享,可在线阅读,更多相关《数字电压表的课程设计.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流数字电压表的课程设计.精品文档.内蒙古科技大学智能仪表综合训练设计说明书题 目:数字电压表学生姓名:薛敏杰学 号:0967112205专 业:测控技术与仪器班 级:2009-2指导教师:左鸿飞摘要 数字电压表的诞生打破了传统电子测量仪器的模式和格局。它显示清晰直观,读数准确,先进的数显技术,大大减少了因人为因素所造成的测量误差事件。他标志着电子仪器领域的一场革命,也开创了现代电子测量技术的先河。本论文重点介绍单片机、A/D转换器以及由它们构成的基于单片机的数字电压表的工作原理。该设计主要以单片机为开发平台,设计数字电压表,同时兼有环境温度的测
2、量功能。其控制系统采用STC89C52RC单片机,A/D转换采用ADC0832,其转换速度很快;显示模块采用1602液晶显示器。同时该数字电压转换主要由芯片ADC0832 A/D来完成,负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。据处理则由芯片STC89C52 来完成,其负责把ADC0832送来的数字量经过一定的数据处理,相应的显示码送到显示模块进行显示;此外,它还控制着ADC0832芯片工作。该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。关键词:数字电压表;单片机;A/D 转换;ADC0832; DS18B20; 目 录1 数字电压表概述11.1
3、数字电压表特点11.2数字电压表的发展趋势22总体方案设计32.1 数字电压表设计要求32.2 数字电压表设计思想33. 硬件设计43.1 单片机外围电路的设计43.2 A/D 转换模块73.3 LCD液晶显示模块84.软件设计104.1数字电压表系统软件设计方案确定104.2 电压读取模块的设计114.3 温度读取模块的设计114.4 显示模块的程序设计124.5 定时中断134.6 仿真调试145总结16参考文献17附录A18附录B201 数字电压表概述 数字电压表(Digital Voltmeter)简称 DVM,它是采用数字化测量技术, 把连续的模拟量(直流输入电压)转换成不连续、离散
4、的数字形式并加以显示的仪表。1.1 数字电压表特点数字电压表是诸多数字化仪表的核心与基础,以数字电压表为核心,可以扩展成各种通用数字仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,所以采用单片机式的数字电压表,变成精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片机,A/D转换器构成的数字电压表,已被 广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。因此对数字电压表作全面的了解是很有必要的。其特点如下:1.显示清晰直观,读书准确 电压表数字化,是将连续的模拟量(如直流电压表)转换成不连续的离散的数字
5、形式并加以显示。这有别于传统的以指针域刻度盘进行读数的方法,避免了读数的视差和视觉疲劳。2.显示范围宽,分辨率力高指针表的分辨力是由刻度盘的细度表达的,刻度盘在一定条件下无法分的很细,而且太细了视觉分辨也很困难,而数字显示的电压表就不会出现这样的情况。3.转入阻抗数字电压表的转入阻抗可高达(110)兆欧。转入阻抗越高,所吸收被测信号的电流就越小,所带来的附加误差极小,可以忽略。4.集成度高、功耗小、抗干扰能力强由于CMOS技术的发展,集成电路的功耗变得很小,即发热量小,这样就可以在同一块芯片上集成更多的的元件,形成大规模或超大规模集成电路。这给制造业带来了飞跃,不仅仪表小巧功能齐全,其他如手机
6、、袖珍电脑等也得以诞生。5可扩展能力强直流数字电压表本身可以扩展成交流电压表、直流电流表、峰值表、功率表等,还可以附加智能化。例如:计算、设定时间、等自动化功能。1.2数字电压表的发展趋势数字电压表出现在50年代初,60年代末发展起来的电压测量仪表,简称DVM,他采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后在通过显示器件显示。而新型的数字电压表发展主要有4个方向。(1)广泛采用新技术,不断开发新产品 (2)向模块化发展 新一代数字仪表正朝着标准模块化的方向发展。预计在不久的将来,许多数字仪表将由标准化、通用化、系列化的模块所构成,给电路设计和
7、安装调试、维修带来极大方便。 (3)多重显示仪表 为彻底解决数字仪表不便于观察连续变化量的技术难题,“数字/模拟条图”双显示仪表已成为国际流行款式,它兼有数字仪表准确度高、模拟式仪表便于观察被测量的变化过程及变化趋势的两大优点。 模拟条图大致分成三类:液晶(LCD)条图,呈断续的条状,这种显示器的分辨力高、微功耗,体积小,低压驱动,适于电池供电的小型化仪表。等离子体(PDP)光柱显示器,其优点是自身发光,亮度高,显示清晰,观察距离远,分辨力较高,缺点是驱动电压高,耗电较大。LED光柱,它是又多只发光二极管排列而成。这种显示器的亮度高,成本低,但象素尺寸较大,功耗高,驱动电路复杂。 4)制作简单
8、化。 所以数字电压表就是基于这种需求而发展起来的,是一种必不可少的电子测量仪表。2 总体方案设计2.1 数字电压表设计要求以 STC89C52RC单片机为核心器件,组成一个简单的数字电压表。采用 1 路模拟量输入,能够测量 0-10v之间的电压值。电压显示用LCD1602显示。尽量使用较少的元器件。2.2 数字电压表设计思想根据系统功能实现要求,决定控制系统采用STC89C52单片机,模数转换采用高精度的ADC0832,通过他们完成数据转换及传输是本设计的核心内容。本设计总体硬件设计方案如图2.2所示。输入电压信号经过信号调理模块调整为合适电压值后送给A/D转换模块;A/D转换模块完成转换后将
9、数字量传送给单片机用于计算;温度采集模块也将采集到的温度数据发送给单片机;单片机再根据按键状态调整显示模块的显示状态。图 2.1 系统基本方框图3. 硬件设计根据设计要求与思路,确立该系统的设计方案。硬件电路由以下几部分组成,即单片机、信号调理模块、A/D转换模块、温度采集模块、LCD1602液晶等模块。其中温度采集模块和信号调理模块都是为了是本设计更稳定跟完善添加的辅助模块,下面就不一一介绍了,主要对三大模块进行介绍。3.1单片机外围电路的设计单片机系统包括单片机,晶振电路,复位电路。该系统采用的是宏晶科技推出的STC89C52RC单片机为主控器。STC89C52RC是一种低功耗、高性能CM
10、OS8位微控制器,具有8K在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52RC为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52RC具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52RC可降至0Hz静态逻辑操作,支持2种
11、软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。单片机的引脚为固定的引脚,如VCC(40),GND(20)已经正确固定到电源和地上。X1(18),X2(19)是接晶振的引脚已经外接到11.0592MHZ和30PF的电容。RST(9)是单片机的复位引脚,通过RC回路,作为单片机的上电复位。作为P3口的第二功能端口,P3.0(10),P3.1(11)为单片机的通信引脚,和MAX232芯片连接。方便在下载程序时,只要上电复位即可完成下载的硬件操作。另外,为
12、了提高P0口的驱动能力,在P0口的各引脚上接了上拉电阻5.1K到电源VCC=5V。采用一片MAX232,为RS232与TTL电平的转换,使得可以方面使用电脑的COM口对单片机进行程序的烧录。其芯片引脚图如图3.1所示。图3.1 单片机STC89C52RC引脚电路图 2)振荡电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,设计电路如图3.2所示。图3.2 振荡电路 3)复位电路:复位电路的工作原理是通电时,电容俩端相当于短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,下降到一定程度,即为低电平,时间不少于5ms。复位后单片机才开始正常工作。单片机复位电
13、路硬件设计原理图,如图3.3所示。图3.3 复位电路硬件设计原理图 4)串口电路:单片机串口下载电路原理图,如图3.4所示图3.4 串口下载电路原理图3.2A/D 转换模块 A/D 转换器的转换精度对测量电路极其重要,它的参数关系到测量电路性 能。本设计采用双积 A/D 转换器,它的性能比较稳定,转换精度高,具有很高 的抗干扰能力, 电路结构简单, 其缺点是工作速度较低。 在对转换精度要求较高, 而对转换速度要求不高的场合如电压测量有广泛的应用。本设计我们采用的转换模块是ADC0832。ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价
14、比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832 可使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。ADC0832 特点: 8位分辨率; 双通道A/D转换; 输入输出电平与TTL/CMOS相兼容; 5V电源供电时输入电压在05V之间; 工作频率为250KHZ,转换时间为32S; 一般功耗仅为15mW; 8P、14PDIP(双列直插)、PICC 多种封装; 商用级芯片温宽为0C to +70C,工业级芯片温宽为40C to +85C;芯片接口说明: CS_ 片选使能,低电平芯片使能。 CH0 模拟输入通道0,或作为IN+/-使用。 CH1 模拟输
15、入通道1,或作为IN+/-使用。 GND 芯片参考0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用)。ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。ADC0832的硬
16、件连接十分简单,无须外界电路,只要按需要与单片机相连就可以工作了了,硬件连接图如图3.5所示。图3.5 ADC0832硬件连接原理图3.3LCD液晶显示模块 本设计我们选用LCD1602液晶显示屏来完成显示。LCD1602是一种常见的液晶显示器,最多可以显示两行ASCII字符,每行可以显示16个字符。虽然不能显示汉字,但也已经可以满足我们大部分的显示需要。该模块设计的液晶显示器的数据端口连接在了单片机的P0口,而控制端RS、RW、EN分别接单片机的P1.0、P1.1、P1.2。电源为直流5V电源。LCD1602液晶显示屏如下图3.6所示,硬件电路如图3.7所示。图3.6 LCD1602液晶显示
17、屏图3.7 1602液晶显示硬件原理图4.软件设计4.1数字电压表系统软件设计方案确定根据设计要求,系统所要完成的功能设计出如图4.1所示的功能模块图4.1数字电压表软件设计模块整个系统软件设计分为俩部分,作为主控的PC端的软件设计和作为数据采集转换的单片机终端设计。系统采用模块化编程,将各个部分功能分别实现,主要的功能程序有:电压读取模块、温度读取模块、显示模块、及中断子程序。主程序流程图如图4.2所示。图4.2 主程序流程图4.2 电压读取模块的设计电压读取模块任务由getvoltage()函数完成,要完成的任务有自动改变程控放大器的增益、读取ADC0832模数转换后得到的数据、标度变换和
18、生成显示缓存。如图4.3所示。图4.3 电压读取模块程序流程图4.3 温度读取模块的设计温度读取模块任务由read_temperature()函数完成,流程图如图4.3。图4.3 温度读取模块程序流程图4.4 显示模块的程序设计根据设计要求,设计两个变量,变量lock用于指定是否锁定显示,变量flag用于指定显示模式,即只是显示电压还是同时显示电压与温度值。流程图如图4.4。图4.4 显示模块流程图4.5 定时中断在程序运行中,定时中断的任务是实现定时扫描按键,并判断按键是否是长按。然后根据结果更改相关的显示标志。程序流程图如图4.5所示。图4.5 中断程序流程图4.6仿真调试为了使设计达到我
19、们预期的效果,所以我们现在Proteus仿真软件的帮助下进行一次仿真测试。它还可以与keil进行联调,可以更方便的调试程序错误。ProteusISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件。 它运行于 Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是: (1)现了单片机仿真和 SPICE 电路仿真相结合。具有模拟电路仿真、数字电路仿真、单 片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI 调试器、键盘和 LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 (2)支持主流
20、单片机系统的仿真。目前支持的单片机类型有:68000 系列、8051 系列、 AVR 系列、PIC12 系列、PIC16 系列、PIC18 系列、Z80 系列、HC11 系列以及各种外围芯 片。 (3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同 时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些 功能;同时支持第三方的软件编译和调试环境,如 Keil C51 uVision2 等软件。 PROTEUS 提供了实验室 无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量 上难以相比的虚拟仪器、仪表,因而也提供了培
21、养学生实践精神、创造精神的平台。如图4.6和4.7即为我们在proteus中搭建的硬件连接原理图和测量结果。图4.6 在proteus中搭建的硬件环境图4.7仿真时测量的电压就是从电位器上取出的电压5总结时光飞逝,转眼间,本次课程设计就接近尾声了,经过一段时间的不懈努力,我们终于完成了这次课程设计的任务要求。由于是初次尝试动手设计电路,以及经验的匮乏,难免遇到很多困难,如果没有老师的督促指导以及同学们的支持,很难顺利的完成此次课程设计。从开始审题到论文的顺利完成,都离不开老师、同学、朋友给以的帮助,在这里请接受我的谢意!首先,在本次课程设计的过程中,从审题、构思、资料查找到最后定稿的各个环节,
22、使我对以前学习的课程多方面知识有了深刻的认识,在论文的形成过程中通过左老师不断的给我提供不少意见,提出一些重要的可行的建议。在他们的建议下,使我们的论文内容更加完善充实,再次表示由衷的感谢! 最后,本次设计让我充分认识到自己的空想与实践的差别,认识莫眼高手低,莫闭门造车,知识都在不断更新和流动之中,而扎实的基础是一切创造的源泉,只有从本质上理解了原理,才能更好的于疑途寻求柳暗花明,实现在科学界的美好畅游和寻得创造的快乐。参考文献1 徐爱钧 智能化测量控制仪表原理与设计M 北京: 北京航空航天大学出版社, 2004,56-1232 李光飞,楼然苗单片机课程设计实例指导M 北京:北京航空航天大学出
23、 版社,2004,1-123 余永权ATMEL89 系列单片机应用技术M北京:北京航空航天大学出版社, 2002,103-1104 杨文龙 单片机原理及应用M 西安:西安电子科技大学出版社, 1998, 62-805 黄继昌电子元器件应用手册M北京:人民邮电出版社,2004,165-2046 阎石数字电子技术基础M北京:高等教育出版社,1998,475-4907 尹雪飞,陈克安. 集成电路速查大全M西安:西安电子科技大学出版社,2002 8 何立民. 单片机应用系统设计M北京:北京航空航天大学出版社,19959 张凯等. MCS-51单片机综合系统及其设计开发M 科学出版社,199610 杨文
24、龙. 单片机原理及应用M 电子科技大学出版社,1993.11 肖洪兵. 跟我学用单片机M北京:北京航空航天大学出版社,2002.812 赵晓安. MCS-51单片机原理及应用M天津:天津大学出版社,2001.3附录A数字电压表原理图PCB板实物图 附录B数字电压表源程序 #include#include#include#define uchar unsigned char#define uint unsigned intuchar flag=0,t=0;bit lock=0;/按键引脚sbit key=P17;/DS18B20引脚sbit DQ=P16; /DS18B20单总线引脚/1602引
25、脚定义sbit E=P12;/1602使能引脚sbit RW=P11;/1602读写引脚sbit RS=P10;/1602数据/命令选择引脚/adc0832引脚定义sbit clk_adc0832=P36; /ADC0832时钟sbit cs_adc0832=P20; /ADC0832片选sbit di_adc0832=P37; /ADC0832输入sbit do_adc0832=P37; /ADC0832输出/显示缓冲区char showbuf16=0;char buf4volt16=0;char buf4temper16=0;/标度变换是所用的倍数code float mult=2.004
26、01,1.00604,0.50710,0.21322,1.1315,0.636699;code float zero=27.6,27.5,27.5,27.1,268,265;/ DS18B20单总线相关* 名称 : delay()* 功能 : 延时* 输入 : 无* 输出 : 无void delay(uint j) uint i=j+1; for(;j0;j-) for(;i0;i-);* 名称 : bus_reset()* 功能 : 重置总线* 输入 : 无* 输出 : 总线状态unsigned char bus_reset()uchar presence;DQ=0;delay(15);DQ
27、=1;delay(0);presence=DQ;delay(15);return presence;* 名称 : read_bit()* 功能 : 读取一位数据* 输入 : 无* 输出 : 读取的数据uchar read_bit()DQ=0;DQ=1;delay(0);return DQ;* 名称 : write_bit()* 功能 : 写入一位数据* 输入 : 写入的一位数据* 输出 : 无void write_bit(uchar bitvalue)DQ=0;if(bitvalue=1)DQ=1;delay(2);DQ=1;* 名称 : read_byte()* 功能 : 读取一个字节数据*
28、 输入 : 无* 输出 : 读回的数据uchar read_byte()uchar i,value=0;for(i=0;i8;i+)if(read_bit()value=value|(0x01i);delay(3);return value;* 名称 : write_byte()* 功能 : 写入一个字节数据* 输入 : 写入的数据* 输出 : 无void write_byte(uchar bytevalue)uchar i,temp;for(i=0;ii;temp=temp&0x01;write_bit(temp);delay(2);* 名称 : read_temperature()* 功能
29、 : 读取温度值* 输入 : 字符数组指针* 输出 : 无void read_temperature(char *p)uchar sign;uint temp;bus_reset();write_byte(0xcc);/跳过ROM命令write_byte(0x44);/开始温度转换bus_reset();write_byte(0xcc);write_byte(0xbe);/读取温度值temp=read_byte();temp=temp|read_byte()15;if(sign0)temp=temp+1;temp=temp9;if(sign0)p0=-;elsep0=+;p1=temp/100
30、%10+48;p2=temp/10%10+48;p3=temp%10+48;p4=0xdf; p5=C; p6= ; p7= ; p8=0;/led相关* 名称 : led_delay()* 功能 : 延时,延时时间大概为5US。* 输入 : 无* 输出 : 无void led_delay()_nop_();_nop_();_nop_();_nop_();_nop_();* 名称 : bit Busy(void)* 功能 : 这个是一个读状态函数,读出函数是否处在忙状态* 输入 : 输入的命令值* 输出 : 无bit Busy(void)bit busy_flag = 0;RS = 0;RW
31、= 1;E = 1;led_delay();busy_flag = (bit)(P0 & 0x80);E = 0;return busy_flag;* 名称 : wcmd(uchar del)* 功能 : 1602命令函数* 输入 : 输入的命令值* 输出 : 无void wcmd(uchar del)while(Busy();RS = 0;RW = 0;E = 0;led_delay();P0 = del;led_delay();E = 1;led_delay();E = 0;* 名称 : wdata(uchar del)* 功能 : 1602写数据函数* 输入 : 需要写入1602的数据*
32、 输出 : 无void wdata(uchar del)while(Busy();RS = 1;RW = 0;E = 0;led_delay();P0 = del;led_delay();E = 1;led_delay();E = 0;* 名称 : L1602_init()* 功能 : 1602初始化,请参考1602的资料* 输入 : 无* 输出 : 无void L1602_init(void)wcmd(0x38);wcmd(0x0c);wcmd(0x06);wcmd(0x01);* 名称 : L1602_char(uchar hang,uchar lie,char sign)* 功能 : 改
33、变液晶中某位的值,如果要让第一行,第五个字符显示b , 调用该函数如下: L1602_char(1,5,b)* 输入 : 行,列,需要输入1602的数据* 输出 : 无void L1602_char(uchar hang,uchar lie,char sign)uchar a;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;wcmd(a);wdata(sign);* 名称 : L1602_string(uchar hang,uchar lie,uchar *p)* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开
34、始显示 ab cd ef ,调用该函数如下L1602_string(1,5,ab cd ef;)* 输入 : 行,列,需要输入1602的数据* 输出 : 无void L1602_string(uchar hang,uchar lie,uchar *p)uchar a,b=0;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;while(1)wcmd(a+);b+;if(*p = 0)|(b=16) break;wdata(*p);p+;/dac0832相关* 名称 : uchar getvalue0832(bit chann
35、el)* 功能 : 从DAC0832读取数据* 输入 : 通道号* 输出 : 无uchar getvalue0832(bit channel)uchar i,dat1=0,dat2=0;clk_adc0832=0;di_adc0832=1;cs_adc0832=0;clk_adc0832=1;clk_adc0832=0;di_adc0832=1; clk_adc0832=1;clk_adc0832=0; /第二个脉冲,模式选择di_adc0832=channel;/第三个脉冲,通道选择clk_adc0832=1;clk_adc0832=0;clk_adc0832=1;di_adc0832=1;
36、 /释放总线for(i=0;ii;for(i=0;i8;i+) /从低到高取一次if(do_adc0832)dat2|=0x01i;clk_adc0832=0;clk_adc0832=1;cs_adc0832=1;di_adc0832=1; /释放总线clk_adc0832=1;if(dat1=dat2) /校验数据是不是正确return dat1;else return 0;* 名称 : getvoltage()* 功能 : 标度变换* 输入 : 显示缓冲区指针* 输出 : 无void getvoltage(char *p) uchar i=0,j=0; unsigned int temp;
37、 float volt=0; P1=(j3)(P1&0xc7); i=getvalue0832(0); if(i127) j+; P1=(j3)(P1&0xc7); i=getvalue0832(0); if(i126) j+; P1=(j3)(P1&0xc7); i=getvalue0832(0); if(i101) j+; P1=(j3)(P1&0xc7); i=getvalue0832(0); if(i120) j+; P1=(j3)(P1&0xc7); i=getvalue0832(0); if(i113) j+; P1=(j3)(P1&0xc7); i=getvalue0832(0)
38、; volt=i*1.96078432*(multj)-zeroj; temp=volt; switch(j) case 0: case 1: if(temp/1000=0) p0= ; else p0=temp/1000+48; p1=temp/100%10+48; p2=.; p3=(temp/10%10)+48; p4= ; p5=v; p6= ; p7= ; p8= ; break; case 2: case 3: p1=temp/100%10+48; p2=.; p3=(temp/10%10)+48; p4=temp%10+48; p5=v; p6= ; p7= ; p8= ; br
39、eak; case 4: case 5: p1=temp/100%10+48; p2=(temp/10%10)+48; p3=temp%10+48; p4=m; p5=v; p6= ; p7= ; p8= ; break; default: break;* 名称 : show()* 功能 : 显示* 输入 : 无* 输出 : 无void show() if(lock!=1) if(flag=0) L1602_string(1,1,Voltage:); L1602_string(2,1,buf4volt); else L1602_string(1,1,buf4volt); L1602_string(2,1,buf4temper); else if(flag=0) L1602_char(2,8,*); else L1602_char(1,8,*); L1602