数字温度计设计报告书.doc_第1页
数字温度计设计报告书.doc_第2页
数字温度计设计报告书.doc_第3页
数字温度计设计报告书.doc_第4页
数字温度计设计报告书.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录引言1一 方案论证与比较11.1 温度传感器的选择11.2 显示模块的设计11.3 控制按键的选择2二 系统模块分析22.1 软、硬件系统分析22.2 微控制器模块52.3 温度采集模块52.4 LED 温度显示模块92.5 声光报警模块102.6 电子日历、时钟模块122.7 电子闹钟模块142.8 语音播报模块172.9 直流稳压电源模块17210 键盘扫描模块19三 调试过程分析223.1 调试仪器223.2 调试过程223.3 调试结果分析24四 总结244.1 作品总结244.2 自我总结25参考文献26致谢27引言温度是日常生活、工业、医学、环境保护、化工、石油等领域中最常遇到的一个物理量,一般采用温度计对这个物理量进行测量。传统的温度计如:水银玻璃温度计,酒精温度计等,这些温度计通常以刻度的形式表示温度的高低,必须通过读取刻度值来识别温度,即普通温度计对温度值的读取不方便,温度的显示不直观。本次设计的温度计为数字温度计,可以直接驱动数码管显示温度值,并且由单片机控制循环的采集温度信号以实现实时测温,使得温度的读取方便、直观、准确。另外本设计采用高精度的数字温度传感器,不需要A/D转换模块就可以直接与单片机相连接,减小了电路规模,降低了硬件成本,使得整个系统电路简洁、成本降低。为了满足现代仪器仪表功能集成化、智能化的发展趋势,对此温度计的功能进行了扩展,具体扩展功能如下:1 可以实现对多路温度的实时测量;2 可以实现摄氏温度与华氏温度的显示转换;3 可以任意设置上限和下限温度实现超高、低温声光报警功能;4 可以实现电子钟功能,电子钟时间可以任意设定,并且具有两个可以任意设定时间的闹钟;5 可以实现电子日历功能,日历日期可以任意设定,并且具有星期显示功能;6 可以实现电子钟整点语音报时、报温功能。综上所述此数字温度计具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。一、方案论证与比较1.1 温度传感器的选择1.1.1 方案一使用热敏电阻作为传感器,让热敏电阻与一个普通电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。用单片机收集转换后的数字信息进行处理和温度的显示。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生测量误差。1.1.2 方案二采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。综合以上两种方案分析,采用数字式温度传感器,可以得到较高的测量精度和较广的测量范围,还可以简化系统电路,以提高系统性价比。1.2 显示模块的设计1.2.1 方案一采用LCD液晶显示,由单片机驱动。此方案有美观、显示清晰多样的优点。但同时液晶显示器的驱动程序复杂,价格昂贵,从而使整个系统的性价比下降。1.2.2 方案二采用LED数码管静态显示方法,电路容易理解,驱动程序简单,但需要多片七段译码器驱动显示,增加成本,而且需要占用单片机多个I/O口,浪费系统硬件资源。1.2.3 方案三采用LED数码管动态扫描显示方法,价格低廉,只需要7个I/O口就可以同时驱动八个数码管显示,硬件利用效率高,驱动程序容易理解和编写。综合以上三种方案分析,采用LED数码管动态扫描显示方法。1.3 控制按键的选择1.3.1 方案一采用独立式按键,每个按键实现一个功能,易于控制,程序编写简单,可是需要大量占用单片机的I/O接口资源,当需要多个功能按键时,需要对单片机外扩I/O口,使得线路繁琐,增加硬件成本开支。1.3.2 方案二采用阵列式按键,可以减少对单片机I/O接口的使用,扫描MN个按键只需要占用M+N个I/O接口即可实现,降低对硬件资源的占用,但是需要编写按键扫描程序,会增加软件程序难度。比较此两种方案,采用阵列式按键。通过增加软件程序来降低硬件开支。二、系统模块分析2.1软、硬件系统分析2.1.1硬件系统框图:经过方案论证与比较,选择出最优方案的系统框图如图1所示:温度采集模块键盘输入控制模块微控制器模块自制直流稳压电源模块电子闹钟模块电子日历、时钟模块LED温度显示模块声光报警模块语音播报模块图1 总系统框图2.1.2软件程序:软件程序可以分为两大部分,第一部分为主系统,第二部分为温度计,两部分的程序流程图如图2、图3。键盘扫描子程序按下键7时星期值加1按下键8、9显示闹钟时间开始数据定义子程序定时器初始化子程序按下键0、1、2、3、4、5时日期中的年(1)、年(2)、月、日、时、分,分别加1按下键6时秒清零按下键12时加1按下键13分加1按下键14按下键12按下键13按下键15时DS18B20复位子程序向DS18B20写入子程序从DS18B20读出子程序温度值运算子程序摄氏温度显示子程序DS18B20读写子程序温度值运算子程序温度值除10子程序温度值乘18子程序温度加32子程序华氏温度显示子程序显示日期子程序 键盘功能表 年(1)年(2)月日时分清秒星期闹钟1闹钟2关闹1关闹2显温度显华度显星期显日期0123456789101112131415 图2 主程序流程图按键按键功能P0.0转换两路温度显示P0.1摄氏、华氏温度显示转换P0.2上限温度设定P0.3下限温度设定P0.4修改温度是否开始初始化子程序P0.0键按下?传感器1初始化P0.2键按下?P0.3键按下?P0.0键按下?从传感器1读出温度数据温度运算子程序对比温度按下P0.1键?下限报警上限报警华氏温度转换显示子程序低于下限超出上限传感器0初始化上限温度设定子程序下限温度设定子程序从传感器0读出温度数据否是否否否是是是上、下限之间图3 温度计程序流程图2.2 微控制器模块 温度计的控制器采用AT89C51单片机,AT89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。电路如图4。第20引脚为接地端;第40引脚为电源端;第31引脚需要接高电位使单片机选用内部程序存储器;第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号;第9脚为复位脚,当其接高电位时,单片机停止工作。P0口接两个发光二极管和一个蜂鸣器以实现声光报警功能,P1口连接一片七段译码器和一片3-8译码器以动态扫描方式同时驱动八个数码管,P2口与16个阵列式按键相连以实现对键盘的扫描。图4 AT89C51单片机接线图2.3 温度采集模块温度采集模块选用数字式温度传感器DS18B20,其可以与单片机I/O口直接连接,不需要外接A/D转换模块。DS18B20的性能特点如下:1独特的单线接口仅需要一个端口引脚进行通信; 2可通过数据线供电,电压范围为3.05.5;3温度测量范围为55125;4测温分辨率可达0.0625;5温度以9位或12位A/D转换。DS18B20采用3脚PR35封装,电路如图5所示:图5 DS18B20与单片机接口电路图DS18B20的工作是由单片机软件程序控制的,控制方法如下:1.复位操作:首先单片机应向DS18B20输送复位信号,将数据线拉低并保持480-960S再释放,然后由上拉电阻拉高16-60S,最后再由DS18B20发出响应低电平60-240S就完成复位操作。2.写操作:单片机先将数据线拉低1S以上,再写入数据。3.读操作:读数据之前,单片机应先将数据线拉低,再释放。DS18B20在数据线从高电平跳低后15S内将数据送出,单片机在15S后读取数据线。DS18B20控制程序如下:CONFIG12 EQU 7FH ;定义转换精度为12位TEMPH EQU 40H ;温度值高位TEMPL EQU 41H ;温度值低位REG2 EQU 42HREG3 EQU 43HREG4 EQU 44HDAT EQU P2.0 ;数据线ORG 0000HSJMP STARTORG 30HSTART: MOV SP,#09 MOV P1,#0FFH LCALL INIT ;调用初始化程序MAIN: MOV P0,#00H LCALL RDTEMP ;调用读温度值程序INIT: LCALL RESET ;调用复位子程序 MOV A,#0CCHLCALL WRITE ;调用写子程序 MOV A,#4EHLCALL WRITEMOV A,#CONFIG12 LCALL WRITE RETRDTEMP: LCALL RESET MOV A,#0CCH LCALL WRITE MOV A,#44H LCALL WRITE LCALL DELAY LCALL RESET MOV A,#0CCH LCALL WRITEMOV A,#0BEHLCALL WRITELCALL READMOV TEMPL,ALCALL READMOV TEMPH,ALCALL READ MOV REG2,A LCALL READ MOV REG3,A LCALL READ MOV REG4,A RETRESET:LA: SETB DAT MOV R2,#200LB: CLR DATDJNZ R2,LBSETB DAT MOV R2,#30LC: DJNZ R2,LC CLR C ORL C,DAT JC LB MOV R6,#80LD: ORL C,DAT JC LP DJNZ R6,LD SJMP LA DJNZ R6,LDLP: MOV R2,#250LF: DJNZ R2,LF RETWRITE: MOV R3,#8WR1A: SETB DAT MOV R4,#8 RRC A CLR DATWR2A: DJNZ R4,WR2A MOV DAT,C MOV R4,#30WR3A: DJNZ R4,WR3A DJNZ R3,WR1A SETB DAT RETREAD: CLR EA MOV R6,#8RD1A: CLR DAT MOV R4,#6 NOP SETB DATRD2A: DJNZ R4,RD2A MOV C,DAT RRC A MOV R5,#30RD3A: DJNZ R5,RD3A DJNZ R6,RD1A SETB DAT RET2.4 LED温度显示模块LED温度显示模块采用动态扫描显示方法电路如图6图6 LED动态扫描显示电路从图中可以观察到单片机P1口低4位连接一片七段译码器74LS47,由于74LS47是共阳极数码管的七段译码器所以要选用共阳极的数码管。单片机P1.0-P1.3的输出信号经过74LS47译码后就可以驱动数码管的段码显示相应的数字,另外在74LS47的输出与数码管之间还要接上7个470欧姆的限流电阻,以防止有过大的电流流过时烧坏数码管。P1.4-P1.6口接于3-8译码器74LS138的三个输入端,而74LS138的输出端通过三极管分别接于八个数码管的公共极。通过由P1.4-P1.6口的输出量来控制74LS138选择点亮某一个数码管。由于74LS138是低电位有效,所以应该采用PNP型的三极管来驱动数码管,在此三极管相当于一个开关的作用。依靠这两块芯片就可以控制数码管实现动态扫描显示。例如:使八个数码管显示12345678。在第一时刻输出“0001”给74LS47,让数码管显示“1”,同时输出“000” 给74LS138,选择第一个数码管工作,其余数码管不工作,这样第一时刻就只有第一个数码管显示“1”,其余数码管均不显示。同理第二时刻也只有第二个数码管显示“2”,依次类推第N时刻就只有第N个数码管显示“N”。人的肉眼只能分辨0.1秒内的变化,所以如果以每一时刻0.01秒的频率循环变化,看起来就感觉每一个数码管都被点亮了,显示“12345678”。对应的LED温度显示模块的程序如下:START:MOV P1,#00000001B CALL DELAY MOV P1,#00010010B CALL DELAY MOV P1,#00100011B CALL DELAY MOV P1,#00110100B CALL DELAY MOV P1,#01000101B CALL DELAY MOV P1,#01010110B CALL DELAY MOV P1,#01100111B CALL DELAY MOV P1,#01111000B CALL DELAY AJMP STARTDELAY: MOV R0,#250 DJNZ R0,$ RET2.5 声光报警模块为了使温度计具备高、低温度上、下限报警的能力,增加了声光报警模块。该模块工作原理如下:首先用按键设定温度上、下限数值,然后用当前显示温度数值分别与上、下限温度进行比较,一旦当前温度值高于上限温度或低于下限温度就会启动蜂鸣器和发光二极管报警。声光报警模块电路图如图7。图7 声光报警模块电路声光报警模块程序如下:DUIBI: ;上、下限对比子程序 MOV A,62H CLR C SUBB A,72H ;对比十位温度值 JC SHANGBAO JZ ZAIBI1 LJMP CHU1ZAIBI1: ;对比个位温度值 MOV A,61H CLR C SUBB A,71H JC SHANGBAO JZ SHANGBAO LJMP CHU1SHANGBAO: ;上限报警 SETB P0.6 ;启动上限报警灯(红) SETB P0.5 ;启动蜂鸣器 CALL DELAY10CHU1: MOV A,72H CLR C SUBB A,64H ;对比十位温度值 JC XIABAO JZ ZAIBI2 LJMP CHU2ZAIBI2: ;对比个位温度值 MOV A,71H CLR C SUBB A,63H JC XIABAO LJMP CHU2XIABAO: ;下限报警 SETB P0.7 ;启动下限报警灯(绿) SETB P0.5 ;启动蜂鸣器 MOV R7,#100 DJNZ R7,$ CALL DELAY10CHU2: RET2.6 电子日历、时钟模块为了实现实时播报温度、日期、时间功能就必须设计日历、时钟模块。该模块全部由软件程序来实现,步骤如下:1由定时器T0产生秒时钟,产生方法为:单片机系统由12MHz晶振提供时钟,则定时器T0的计数周期为1(12MHz/12)=1S,让计数器每次计数4000次后就产生计数益出中断,则计数器初值应设为65536-4000=61536=F060H,所以分别给TH0和TL0赋值F0、60。2开启定时器0中断,使得计数益出后产生中断,再设定产生250次中断之后就产生一个秒信号。产生秒信号的程序如下:START1: MOV TMOD,#00000001B ;设置定时器0工作方式为1 MOV TH0,#0F0H ;设定定时器初值计数每次计数4000次 MOV TL0,#60H MOV IE,#10000010B ;开启总中断和定时器0中断允许位 MOV R4,#250 ;定时250次,250X4000=1S SETB TR0AJMP START1 ;启动定时器TIM0: MOV TH0,#0F0H MOV TL0,#60H DJNZ R4,X2 MOV R4,#250 CALL CLOCK ;时钟调整子程序 CALL DISP ;时钟显示子程序X2: RETI3由秒信号来计数,当达到60后向“分”进位;分计数,当达到60后向“时”进位;时计数,当达到24后向“日”进位;日计数,日超出当月上限后进位到“月”;月计数,当月计数到达12后向“年”进位,依次实现电子日历、时钟功能。日历、时钟系统程序流程如图8定时器记数够1秒?秒加1是秒=60?分加1分=60?时加1时=24?日加1日溢出?日加1月=12?年加1否否是否是否是否是否是图8 日历、时钟系统程序流程图2.7电子闹钟模块为了提高使用价值和丰富功能,本温度计扩展了两个独立的电子闹钟作为其它功能。通过按键设定某一时间,用当前时间与该设定时间进行对比,每秒钟对比一次,一旦发现当前时间与设定时间一致则驱动蜂鸣器发出闹钟声。 实现闹钟功能的程序如下:(注:以下仅是闹钟1的程序,闹钟2的程序与此类似)ZHONG1: MOV 4AH,#00H ;存放闹钟1所设定的时间 MOV 4BH,#00H ;存放闹钟1所设定的时间NAOZHONG1: ;扫描与闹钟1有关的4键盘 MOV R3,#0FEH MOV R1,#00H MOV A,R3 MOV P2,A MOV A,P2 SETB C MOV R5,#04HLLL1: RLC A JNC KEYIN1 INC R1 DJNZ R5,LLL1 LCALL DISP1 LJMP NAOZHONG1KEYIN1: MOV A,R1 XRL A,#00H JZ XXX0 MOV A,R1 XRL A,#01H JZ XXX1 MOV A,R1 XRL A,#02H JZ XXX2 LJMP NAOZHONG1XXX0: CALL DELAY CALL DELAY MOV A,4AH ADD A,#1 DA A MOV 4AH,A CJNE A,#24H,HUI0 MOV 4AH,#00HUI0: LJMP NAOZHONG1XXX1: CALL DELAY CALL DELAY MOV A,4BH ADD A,#1 DA A MOV 4BH,A CJNE A,#60H,HUI1 MOV 4BH,#00HUI1: LJMP NAOZHONG1XXX2: LJMP SAOMIAODISP1: ;显示闹钟设定值 MOV A,4AH ANL A,#11110000B SWAP A ADD A,#00H MOV P1,A CALL DELAY1 MOV A,4AH ANL A,#00001111B ADD A,#10H MOV P1,A CALL DELAY1 MOV A,4BH ANL A,#11110000B SWAP A ADD A,#20H MOV P1,A CALL DELAY1 MOV A,4BH ANL A,#00001111B ADD A,#30H MOV P1,A CALL DELAY1 MOV P1,#01000000B CALL DELAY1 MOV P1,#01010000B CALL DELAY1 RETNAO1: ;用设定闹钟时间值与当前时间值比较 MOV A,2AH CJNE A,4AH,FANHUI MOV A,2BH CJNE A,4BH,FANHUI MOV R2,#2SHENG: ;产生闹铃声 MOV P0,#0FFH CALL DELAY MOV P0,#00H CALL DELAY DJNZ R2,SHENG CALL DELAY CALL DELAY CALL DELAYFANHUI: RET2.8语音播报模块语音播报模块采用语音芯片ISD1420构成,该芯片能够高质量地完成声音录制与还原,最大录音时间为20秒,具备分段录音功能,便于与单片机连接。语音播报模块电路如图9。图9 语音播报模块电路其中S3键为录音键,S1、S2键为播放键,A0-A7为地址选择端,将ISP1420的A0-A7直接与单片机的P1口相连,就可以实现录音地址选择功能,再将播放键接于P3.0口以实现单片机控制的实时播放功能。2.9直流稳压电源模块整个温度计系统需要+5V电源供电,采用直流稳压电源提供,但这样不便于携带,所以还设计一个自制的简易可调直流稳压电源。该电源采用三端可调稳压管LM317以及外围电路构成,可以提供+3V、+5V、+6V、+12V四种档位的电压。电源电路如图10。电源电路原理:1220V交流电经过变压器变为15V交流电,然后通过桥式整流电路和滤波电容后得到近似为直流的电信号送入LM317,电压约为18V。 图10 自制直流稳压电源 2在进入LM317之前分出一条支路,并经过一个稳压管7812得到一个稳定的12V电压提供给继电器工作。 3由一片十进制计数器4017控制四个模拟开关芯片4066。只选取4017中的“0”输出、“1”输出、“2”输出、“3”输出分别控制开关1、2、3、4,即任一时刻只能有一个开关接通,当记数到“4”时二极管D7导通复位。不同的开关接通就可以将不同的电阻接入LM317的控制脚1,从而改变控制脚1的电位,而改变LM317的输出电压,再经过大功率集成开关TWH8778输出。4开关S2为复位开关,按下后4017复位脚15脚为高电位有效,所以复位;开关S1为调压开关,接于4017的第14脚CLOCK,每按下一次使4017计数一次;S3为电压输出按钮,按下继电器吸合;S4为停止供电按钮,按下继电器不工作。 2.10键盘扫描模块由于此数字温度计功能丰富,需要很多控制开关,为了减少开关对单片机I/O口的占用,所以采用阵列式按键。键盘扫描模块电路如图11。图11 键盘扫描模块电路 键盘扫描程序流程图如图12。开始初始化输入扫描码第一列按键第二列按键NO第三列按键第四列按键NONO下一行NO超过四行NOYESYESYESYESYES防抖取出键值跳转至相应子程序图12 键盘扫描程序流程图键盘扫描程序说明:给键盘所连接的P2口赋扫描码,例如:MOV P2,#0FEH,则扫描最后一行按键。写入这个扫描码后P2口的高4位写入“1”,被设为输入状态,低4位中只有P2.0为“0”。 而P2口的高4位通过按键与低4位相连,所以此时从P2口的高4位就可以读入低4位的数据。与被按下的键相连接的高位口,读入的数据为“0”,其它高位口读入的为“1”从而识别出是哪一个按键被按下。随后再依次对P2口写入FDH、FBH、07H,分别扫描第三、第二、第一行,这样交替循环便可完成对44键盘的扫描。键盘扫描程序如下:SAOMIAO:MOV R7,#0F7H ;送入扫描码 MOV R6,#00HLL3: MOV A,R7 MOV P2,A MOV A,P2 ;读入扫描状态 SETB C MOV R5,#04H ;每行扫描的按键个数LL4: RLC A JNC KEYIN ;检测是否有按键按下 INC R6 ;按键编号 DJNZ R5,LL4 ;是否扫描完同行的4个按键 MOV A,R7 SETB C RRC A ;扫描下一行 MOV R7,A JC LL3 JMP LL2KEYIN: ;判断是哪个按键被按下 MOV A,R6 XRL A,#00H ;异或运算判断两个数据是否相等 JNZ XX0 LJMP AN0XX0: MOV A,R6 XRL A,#01H JNZ XX1 LJMP AN1XX1: MOV A,R6 XRL A,#02H JNZ XX2 LJMP AN2XX2: MOV A,R6 XRL A,#03H JNZ XX3 LJMP AN3XX3: MOV A,R6 XRL A,#04H JNZ XX4 LJMP AN4XX4: MOV A,R6 XRL A,#05H JNZ XX5 LJMP AN5XX5: MOV A,R6 XRL A,#06H JNZ XX6 LJMP AN6XX6: MOV A,R6 XRL A,#07H JNZ XX7 LJMP AN7XX7: MOV A,R6 XRL A,#08H JNZ XX8 LJMP AN8XX8: MOV A,R6 XRL A,#09H JNZ XX9 LJMP AN9XX9: MOV A,R6 XRL A,#0AH JNZ XX10 LJMP AN10XX10: MOV A,R6 XRL A,#0BH JNZ XX11 LJMP AN11XX11: MOV A,R6 XRL A,#0CH JNZ XX12 LJMP AN12XX12: MOV A,R6 XRL A,#0DH JNZ XX13 LJMP AN13XX13: MOV A,R6 XRL A,#0EH JNZ XX14 LJMP AN14XX14: MOV A,R6 XRL A,#0FH JNZ XX15 LJMP AN15XX15: LJMP SAOMIAO三、调试过程分析3.1调试仪器双路直流稳压电源一台、数字万用表一台、针式万用表一台、伟福V8仿真器一台、程序烧写器一台。3.2调试过程3.2.1电路设计设计此数字温度计时,考虑到它要实现的功能很多,而且很多功能的实现都需要微控制器才便于实现,所以选用单片机作为主控系统,同时选择了性价比较高的AT89C51单片机。AT89C51有4个8位的并行I/O口,LED显示部分需要由单片机输出控制,而键盘却要向单片机输入,再加上报警系统,电路对I/O的占用比较多,所以电路设计采用了节省I/O口的电路。比如用阵列式键盘代替了分立按键,LED显示也采用了动态扫描方式。实际电路中阵列式键盘占用P2口,LED显示占用P1口,之所以没有使用P0口是因为P0口作为输出端口使用时,需要外接上拉电阻,使得焊接量增加。最后P0用于连接声光报警模块和温度传感器DS18B20。另外P3口并没有使用,因为P3口具有复用功能,为将来扩展系统留下余地。3.2.2电路焊接电路的焊接,首先要求的就是正确。焊接过程要仔细,否则会给后期的调试带来很大的麻烦。其次要求焊接板的美观和工艺,在焊接之初,为了减少电路板上的跨线,认真考虑了元件的布局。为了美观尝试用裸线完成焊接,但地线出现了虚焊问题,使得电路没有正常工作。最终通过万用表检测出了虚焊点,补焊后解决了问题。在焊接用于动态扫描显示的八个数码管时遇到了难题,由于动态扫描显示要求将八个数码管的段码a、b、c、d、e、f、g、dp分别连接,这样跨线就非常多破坏了电路板的美观。在经过多次实践和认真思考后想出了一个解决办法:首先将导线剪成等长的短段,然后按顺序依次焊接各个数码管的引脚并将导线按一定的规则编起来,这样既完成了焊接,又保持了电路板的美观。3.2.3硬件电路调试此电路大多数功能都是由数字集成芯片和单片机软件实现的,所以硬件调试的工作量较少,只有自制直流电源和语音播报两个模块需要调试。但是在调试过程中还是出现了一些意想不到的问题。1.电路焊接完成之后上电调试,发现没有电压输出,测量发现在按下输出开关后,继电器的吸合开关没有工作,即继电器没有正常工作。分析原因可能有三种:一、继电器损坏;二、继电器引脚焊接错误;三、电路设计有问题。解决办法:首先更换了继电器,但电路依然没有电压输出,排除第一种可能原因;直接用直流稳压电源给继电器提供12V的电压,观察其引脚功能,发现该继电器内部的线圈是存在正负极的,只有线圈接上正向电压后才能正常工作,(估计可能是继电器制作时在线圈两端并上了一个保护二极管)更换线圈极性后电路成功输出,确定问题原因在于此;则第三种可能原因被排除。2.直流电源电路上电后,在低电压输出时LM317都可以正常工作,但是调节到15V档位时,输出电压只有13V。分析原因可能有三种:一、LM317的输入电压过低,没有产生足够的压降,所以没有实现稳压功能;二、LM317输出端带了一个大功率开关TWH8778,可能是该芯片作为负载对LM317的稳压产生影响;三、LM317的调压端(第1引脚)接了四个模拟开关4066,4066影响稳压效果。解决办法:首先将15V的变压器改为18V,以提高加在LM317两端的压降,结果发现输出电压最大依然为13V,第一种可能原因排除;将LM317输出端与TWH8778的连接线断开,但LM317的空载输出电压依然只能达到13V,第二种可能原因排除;将LM317的调压端(第1引脚)直过一个电阻接地并断开与4066的连接,发现LM317可以稳压输出20V,确定问题原因在于4066。最后查阅相关的芯片资料手册发现4066的最大输入电压仅为12V,当要求LM317稳压在15V时,调压端(第1引脚)电位已经超过12V,所以输出4066时会降低稳压值。3.语音播报模块电路焊接完后发现录音效果非常差。分析原因可能有二种:一、连接录音话筒的导线过长,干扰信号串入,影响录音效果;二、电路中电容容值选择不够准确,产生失真。解决办法:首先将接录音话筒的导线换成专用话筒的屏蔽线,发现录音效果得到明显改善,但是声音还是比较小;之后再将原来的104电容换成103,发现声音也变大了。确定问题原因在于话筒和电容。3.2.4软件调试本系统软件程序较长,给程序的编写和调试带来了很多困难,在调试过程中也出现了很多问题,但在多次尝试和细心修改后最终取得了成功。1.摄氏温度与华氏温度转换程序:要实现这两种温度的转换就必须首先掌握它们之间的转换规律,通过观察水银温度计的刻度,找出转换规律为:华氏温度=摄氏温度1.832通过运算子程序来完成这个公式的运算有两种方法:一、先完成乘1.8的运算,再进行加32的运算。这种方法虽然与公式相符,但是需要运用到浮点运算程序,变成难度增加,所以排除第一种方法。二、将公式进行一下变换,得到下式:华氏温度=摄氏温度108摄氏温度32,这样只需要将摄氏温度值的百位变成十位,十位变成个位,个位变成小数点后一位便可以完成除十的运算;再将运算得到的数字左移三位完成乘8的运算,最后再加上摄氏温度值和32便可以实现两种温度的转换了。2.温度值与时钟的交替显示:在程序编写初期,温度值显示程序与时钟显示程序是分开编写调试的,都调试成功之后再将两个显示程序融合到一起,但是融合后出现了意想不到的问题。由时钟显示切换到温度显示,可以正常显示,但不能将温度显示切换回时钟显示。通过仔细的排查,终于发现在时钟显示程序中设置的堆栈区域为70H,并且在定时器中断时将A和PSW压入堆栈,而在温度显示程序中又重复的将堆栈SP设为了07H,所以在返回时钟显示程序后,压入堆栈的A和PSW丢失了,没有显示。如果将温度显示程序中的堆栈设为其它值,则整个温度显示程序都需要修改。所以采用一种特殊的方法来还原中断,因为时钟显示程序中的SP初值为70H,在中断时将A和PSW压入,那么SP应为72H。在从温度显示程序跳回时钟显示程序时,应预先将SP设为72H,然后弹出原来压入A、PSW。3.电子日历程序:在调试电子日历程序时出现了一个问题,由于1-12个月,各个月的天数是变化的,所以给程序的编写带来了很大的困难。经常可以从

温馨提示

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

评论

0/150

提交评论