还剩29页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计电热水器控制系统课程名称单片机原理及应用技术学生学院信息工程学院专业测控技术与仪器计算机测控班级2010级1班学号3110002441学生姓名彭港健指导教师邓耀华/王桂棠2012年06月21日摘要在本次课程设计中,根据课题要求,我们组员通过查找资料、分析、讨论,最终确定下本方案本方案主要功能是实时检测水温,当温度低于60度是自动加热,高于90度是停止加热,实现智能控制热水器的储水量在满足基本功能的前提下,为了能使电路简单,反应快速,并尽量减低成本电源选用5V直流电压而从方案设计、分析,比较确定方案,到确定参数,并在原来的基础上考虑添加扩展功能,理论计算分析,以及电路原理图的绘制,电路板的焊接调试,最后的撰写设计报告,我们小组各成员一起协商讨论,分工合作,终于圆满地完成了本次的课程设计关键词单片机,温度传感器,LED灯,数码管,智能控制AbstractInthiscoursedesignaccordingtothetopicrequestwemembersthroughthesearchdata____ysisdiscussionandfinallydeterminedthatthisscheme.HisowncauseoftheNE555andthecircuitnon-contactswitchcircuitalarm____ogcircuitsandpowercircuitfourparts.The__infunctioniscleverwaytorealizetheelectricfanprotectionandalarmnamelyinhandtouchestheelectricfanmetalshellfanwouldimmediatelyloseelectricandalsoissuedthealarmhaswarnednottotouch;Whenpeoplele__eafewsecondsafteraboutmetalshellfansautoreplyoperation.Meetingthebasicfunctionofthepremiseinordertoenablecircuitis______andquickresponseandtrytoredu__costs.Choose6Vdcpowersupplyvoltage.Andtheschemedesign____ysisdeterminedschemetodeterminetheparametersAndconsideraddingextendedonthebasisoforiginalfeaturestheoretical____ysisandcircuitsche__ticsdrawingweldinganddebuggingofcircuitboardthefinalwrittendesignreportourconsultationswiththemembersofthegroupDivisionandfinallysuc__ssfullycompletedthiscoursedesign.Keywords:Single-chipmicrocomputerTemperaturesensorLEDlights目录TOC\o1-3\h\z\u摘要IAbstractII目录III前言1一.方案详解2二.原理流程图4图3热水系统Protuse仿真原理图5三.器件清单6四.元器件简介
73.1芯片DS18B207的主要特性7的外形和内部结构8工作原理
83.2元件__52特性介绍10五.小组作品功能展示14六.热水系统控制源程序18七.遇到的问题与解决方法25八.个人心得体会26前言科学技术的快速发展往往能给人们的生活带来很多便利,科学技术的产物——热水器,就是其中一个随着人们生活水平的日益提高,热水器正在走进每一个家庭我国近年来产量增长最快的家电产品之一,也正在不断发展和改进,日益满足人们生活的需求我们这次做的是一个电热水控制系统,是通过芯片__51对热水器进行加热和加水控制,从而实现热水器的基本功能一.方案详解设计目标及方案选择方案一以AT__C51单片机为控制中心的智能热水系统目前家电市场上的电热水器有连续水流式,具有加热速度快和体积小的优点,但需要的功率大,大多数家庭供电线路难以承受,而且市场上传统的机械式电热水器控制功能不完善,而且精度低、可靠性差,因此电热水器的智能化成为必然趋势采用单片机来实现电热水器的智能化,主要是因为其采用面向控制的指令系统,实时控制功能特别强CPU可以直接对I/O口进行输入、输出操作及逻辑运算,并且具有很强的位处理能力,能有针对性的结局由简单到复杂的各类控制任务单片机作为嵌入式应用的微型计算机,由于其出色的性价比,极强的实用性,它取得了巨大的发展以AT__C51单片机为控制中心的智能电热水器AT__C51单片机具有结构简单、控制能力强、可靠性高、体积小__低等优点在许多行业都得到了广泛的应用下面为硬件实现电路框图图1基于AT__C51控制的智能热水器方案二PIC16C72单片机为控制器件的智能电热水器PIC16C72是美国微芯公司推出的8/11位单片机,采用宽字节单周期指令,哈佛双总线和RISC结构,其数据吞吐量最高可达6MIPS,这几乎是其它大多数8位微控制器速度的4倍,128脚封装的PIC16C72单片机内集成了以下主要功能;2KB片内ROM程序存储器,128KB数据存储器;22位I/O线;5路8位A/D转化器以PIC16C72为控制芯片的电热水器,虽然功能很强大,但是存在一些很需要改进的地方中断的现场保护是中断应用中一个很重要的部分由PIC16C72的指令系统中设的W寄存器和STATUS寄存器内容警校现场保护1然后再中断服务程序中对马达,继电器进行控制1漏电检查__在中断里给出,而每50ms进入一次中断,所以发生漏电时最多50ms即可切断电源1入口中断保护控制马达控制继电器如果用直流对电机进行控制,其转速太快,过调量过大,容易引起振荡通过以上两种设计方法的比较来看,实现电热水器的智能控制可以有很多种方法,可以采用可编程程序控制器PLC,各种单片机来师兄,但考虑到成本控制和软硬件实现难度,我们组采用方案一的控制系统设计,可以进一步提高电热水器的智能作用,能够保证持续的热水供应,并能够在异常情况下自动断电本方案还实现对热水器水量的控制,当热水器水量较少的时候,通过处理,发出加热__给外部电路,进行加水,同时点亮加水指示灯当热水器内部容器水位达到一定的高度是,也就是谁快要满的时候,处理器发出一个停止加水的__给外部电路,同时加水指示灯变暗,这样实现了对热水器的水位控制二.原理流程图图2热水系统流程图图3热水系统Protuse仿真原理图三.器件清单表1元件清单表名称规格数量温度传感器DS18B201个单片机STC__C52RC1个4位数码管HSN3642S2个8位锁存器74HC5732个电阻R1~R930010个电阻R10R111K2个电阻R
124.7k1个晶振—1个LED发光二极管绿色2个压电陶瓷片—1片电容C122nf1个电容C21nf1个直流电源5~6V1个铜电线—若干四.元器件简介
3.1芯片DS18B20数字温度传感器DS18B20介绍图4温度传感器DS18B20封装DS18B20的主要特性
1.
1、适应电压范围更宽,电压范围
3.0~
5.5V,在寄生电源方式下可由数据线供电
1.
2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
1.
3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
1.
4、DS18B20在使用中不需要任何__元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
1.
5、温范围-55℃~+125℃,在-10~+85℃时精度为±
0.5℃
1.
6、可编程的分辨率为9~12位,对应的可分辨温度分别为
0.5℃、
0.25℃、
0.125℃和
0.0625℃,可实现高精度测温
1.
7、在9位分辨率时最多在
93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
1.
8、测量结果直接输出数字温度__,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
1.
9、负压特性电源极性接反时,芯片不会因发热而烧毁,但不能正常工作DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成64位光刻ROM、温度传感器、非挥发的温度__触发器TH和TL、配置寄存器DS18B20的外形及管脚排列如下图1:DS18B20引脚定义1DQ为数字__输入/输出端;2GND为电源地;3VDD为外接供电电源输入端(在寄生电源接线方式时接地) 图5DS18B20内部结构图DS18B20工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750msDS18B20测温原理如图3所示图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲__送给计数器1高温度系数晶振随温度变化其振荡率明显改变,所产生的__作为计数器2的脉冲输入计数器1和温度寄存器被预置在-55℃所对应的一个基数值计数器1对低温度系数晶振产生的脉冲__进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲__进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值 图6DS18B20测温原理框图DS18B20有4个主要的数据部件
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码64位光刻ROM的排列是开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的
(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例用16位符号扩展的二进制补码读数形式提供,以
0.0625℃/L__形式表达,其中S为符号位这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于
0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于
0.0625即可得到实际温度例如+125℃的数字输出为07D0H,+
25.0625℃的数字输出为0191H,-
25.0625℃的数字输出为FE6FH,-55℃的数字输出为FC90H
(3)DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM后者存放高温度和低温度触发器TH、TL和结构寄存器
(4)配置寄存器该字节各位的意义如下低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式在DS18B20出厂时该位被设置为0,用户不要去改动R1和R0用来设置分辨率,如下表所示(DS18B20出厂时被设置为12位)表2温度分辨率设置表R1R0分辨率温度最大转换时间009位
93.75ms0110位
187.5ms1011位375ms1112位750ms表3RAM指令表指令约定代码功能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为
93.75ms)结果存入内部9字节RAM中读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的
3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据__暂存器48H将RAM中第
3、4字节的内容__到EEPROM中重调EEPROM0B8H将EEPROM中内容恢复到RAM中的第
3、4字节读供电方式0B4H读DS1820的供电模式寄生供电时DS1820发送“0”,外接电源供电DS1820发送“1”
3.2元件__52特性介绍图7元件__52实物图__C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于__C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合__C52内置8位__处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出I/O口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路此外,__C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能__C52有PDIP40pin和PLCC44pin两种封装形式表4主要功能特性标准MCS-51内核和指令系统片内8kROM(可扩充64kB外部存储器)32个双向I/O口256x8bit内部RAM(可扩充64kB外部存储器)3个16位可编程定时/计数器时钟频率
3.5-12/24/33MHz向上或向下定时计数器改进型快速编程脉冲算法6个中断源
5.0V工作电压全双工串行通信口布尔处理器—帧错误侦测4层优先级中断结构—自动地址识别兼容TTL和CMOS逻辑电平空闲和掉电节省模式PDIP40和PLCC44封装形式管脚说明VCC供电电压GND接地P0口P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流当P0口的管脚第一次写“1”时,被定义为高阻输入P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高P1口P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故在FLASH编程和校验时,P1口作为第八位地址接收P2口P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入并因此作为输入时,P2口的管脚被外部拉低,将输出电流这是由于内部上拉的缘故P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容P2口在FLASH编程和校验时接收高八位地址__和控制__P3口P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流当P3口写入“1”后,它们被内部上拉为高电平,并用作输入作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故P3口作为AT__C51的一些特殊功能口,管脚备选功能图8__C52芯片的管脚说明P
3.0RXD(串行输入口)P
3.1TXD(串行输出口)P
3.2/INT0(外部中断0)P
3.3/INT1(外部中断1)P
3.4T0(计时器0外部输入)P
3.5T1(计时器1外部输入)P
3.6/WR(外部数据存储器写选通)P
3.7/RD(外部数据存储器读选通)RST复位输入当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间ALE/PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节在FLASH编程期间,此引脚用于输入编程脉冲在平时,ALE端以不变的频率周期输出正脉冲__,此频率为振荡器频率的1/6因此它可用作对外部输出的脉冲或用于定时目的然而要注意的是每当用作外部数据存储器时,将跳过一个ALE脉冲如想禁止ALE的输出可在SFR8EH地址上置0此时,ALE只有在执行MOVX,MOVC指令是ALE才起用另外,该引脚被略微拉高如果微处理器在外部执行状态ALE禁止,置位无效/PSEN外部程序存储器的选通__在由外部程序存储器取指期间,每个机器周期两/PSEN有效但在访问外部数据存储器时,这两次有效的/PSEN__将不出现/EA/VPP当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)XTAL1反向振荡放大器的输入及内部时钟工作电路的输入XTAL2来自反向振荡器的输出五.小组作品功能展示下面是各个情况下的实物图展示图9系统实物图与标识1)当水温低于设定温度时,加热指示灯变亮,同时模拟发送加热__给外部加热电路如图8所示图10当水温低于设定温度时当水温大于设定温度时,加热指示灯变暗,同时模拟发送停止加热__给外部电路如图9所示图11当水温大雨设定温度时3)当液面低于水位A时,模拟设定水位A出的等于高电平,加水指示灯变亮,同时模拟发送加水__给外部电路如图10所示图12当水位低于预定液位时4)当液面到达水位B时,模拟设定水满,加水指示灯变暗同时模拟发送停止加水__给外部电路如图11所示图13当液位到达预定水位时图14直流电源本设计除了使用U__插口供电之外,还可用5~6V直流电(干电池)供电,便于携带六.热水系统控制源程序ORG0000HLJMP__IN1ORG0003H;外部中断0入口(设定温度的个位)LJMPZINT0ORG0013H;外部中断1入口(十位)LJMPZINT1TMPLEQU29H;读取温度值的低八位TMPHEQU28H;读取温度值的高八位FLAG1EQUF0;片段存在脉冲的标志位WELAEQUP
2.7;数码管位选锁存器使能端DULAEQUP
2.6;数码管段选锁存器使能端LED_1EQUP
1.0;加热指示LED灯DATAINBITP
3.7;1820数据总线__IN1:SETBIT0;外部中断0下降沿触发SETBEA;开中断控制SETBEX0;开外部中断0SETBIT1;外部中断1下降沿触发SETBEX1;开外部中断1CLRLED_1;LED指示灯亮(初始状态)CLRWELACLRDULAMOV74H#0;设定温度小数为0MOV75H#0;设定温度个位MOV76H#9;设定温度十位(初始90)MOV77H#10__IN:LCALLNO_WATERLCALLGET_TEMPER;从1820获得当前水温LCALLCVTTMP;计算转换LCALLDISP;显示设定温度和当前水温LCALLCTRL_TMPL;加热控制AJMP__IN;循环;************1820初始化**************INIT_1820:SETBDATAIN;NOPCLRDATAIN;芯片复位MOVR1#3;等待复位完成(480us)TSR1:MOVR0#107;DJNZR0$;DJNZR1TSR1;SETBDATAIN;复位完成(后15~60us会出现存在脉冲低电平)NOPNOPNOPNOPNOPMOVR0#25H;TSR2:JNBDATAINTSR3;检测是否有‘存在脉冲’DJNZR0TSR2;否,重复检测CLRFLAG1;标志位置0SJMPTSR7;TSR3:SETBFLAG1;是,标志位置1NOP;MOVR0#117;延时等待TSR6:DJNZR0$;TSR7:SETBDATAIN;CPU与1820达成协议,可以进行通信RET;**********获得当前水的温度值*********GET_TEMPER:SETBDATAIN;LCALLINIT_1820;复位JBFLAG1TSS2;是否有存在脉冲?NOPRETTSS2:MOVA#0CCH;是,跳过ROM命令,不对芯片ROM编码做出反应LCALLWRITE_1820;1820写命令MOVA#44H;温度转换指令LCALLWRITE_1820;1820写命令ACALLDL1MS;LCALLINIT_1820;重读一次MOVA#0CCH;LCALLWRITE_1820;1820写命令MOVA#0BEH;读1820RAM指令(温度值)LCALLWRITE_1820;写命令LCALLREAD_18200;读操作RET;读完毕;*************1820写命令***************WRITE_1820:MOVR2#8;CLRC;WR1:CLRDATAIN;MOVR3#6;DJNZR3$;RRCA;MOVDATAINC;MOVR3#23;DJNZR3$;SETBDATAIN;NOPDJNZR2WR1;SETBDATAIN;RET;*************1820读操作***************READ_18200:MOVR4#2;MOVR1#29H;RE00:MOVR2#8;RE01:CLRC;SETBDATAIN;NOPNOPCLRDATAIN;NOPNOPNOPSETBDATAIN;MOVR3#9;RE10:DJNZR3RE10;MOVCDATAIN;读取MOVR3#23;RE20:DJNZR3RE20;RRCA;A带进位循环右移DJNZR2RE01;循环8次MOV@R1A;储存当前温度值29HDECR1;重复读一次,温度值存在28HDJNZR4RE00;RET;**********读到的两字节温度数据合成单字节(带符号)*********CVTTMP:MOVATMPH;ANLA#80H;JZTMPC1;最高位是否为1?是,温度为负,否温度为正CLRC;是,为负温度进位清零MOVATMPL;求负温度值低八位补码CPLA;取反ADDA#1;+1,得到补码MOVTMPLA;储存(温度个位和小数)MOVATMPH;CPLA;取反ADDCA#0;反码与进位相加MOVTMPHA;求得温度十位(二进制)MOV73H#0BH;符号位为负(OBH段选)SJMPTMPC11;TMPC1:MOV73H#0AH;否,正温度,符号位不显示TMPC11:MOVATMPL;ANLA#0FH;屏蔽高4位,求得小数MOVDPTR#TMPTAB;段选首地址MOVCA@A+DPTR;取段选码(小数)MOV70HA;存在70HMOVATMPL;求个位ANLA#0F0H;屏蔽低四位SWAPA;交换高低位MOVTMPLA;重新储存MOVATMPH;求十位和百位ANLA#0FH;SWAPA;交换高低位ORLATMPL;合成一个字节;**********转换成十进制数***********H2BCD:MOVB#100;A除以100DIVAB;JZB2BCD1;商是否为0?MOV73HA;否,商(百位)给73HB2BCD1:MOVA#10;商(百位)为0,余数除以10,求得十位XCHAB;DIVAB;MOV72HA;十位MOV71HB;个位(除以10的余数)CLRCINC71HINC71HMOVA71HCJNEA#10NEXTNEXT:JNCDK1SJMPTMPC12DK1:MOVA71HSUBBA#10MOV71HAINC72HTMPC12:NOPDI__CD:MOVA73H;ANLA#0FH;屏蔽高四位CJNEA#1DI__CD0;百位是否等于1?温度超过100SJMPDI__CD1;是,结束计算DI__CD0:MOVA72H;百位为0(72H为十位)ANLA#0FH;屏蔽高四位JNZDI__CD1;十位不为0,跳B2BCD1执行计算MOVA73H;十位为0显示符号位MOV72HA;0给十位MOV73H#0AH;最高位DI__CD1:RETTMPTAB:DB0112334456678899;水温小数码表;****************显示程序******************************DISP:MOVDPTR#TAB;码表首地址MOVR0#77H;显示指针(选择亮哪一位数)MOVR1#01H;扫描字(选择亮哪一个数码管)DISP1:CLRWELA;关段、位选CLRDULA;MOVA@R0;要显示的内容MOVCA@A+DPTR;取码表MOVP0A;写入CJNER0#71HNEXT;是否需要加小数点?(水温和设定温度的个位)CLRP
0.7;71H,水温个位NEXT:CJNER0#75HNODP;DP:CLRP
0.7;75H,设定温度个位NODP:SETBDULA;开段选CLRDULA;锁存(准备显示的数据)MOVAR1;取位选MOVP0A;SETBWELA;开位选CLRWELA;锁存(已显示)LCALLDL5MS;延时DECR0;下一个要显示的数MOVAR1;JBACC.7OVER;最后一位显示完毕?否,返回显示下一位数RLA;下一个选中的数码管(循环左移)MOVR1A;SJMPDISP1OVER:RET;显示完毕TAB:DB0C0H0F9H0A4H0B0H99HDB92H82H0F8H80H90H0FFH0BFH;0~
9、符号位码表;****************加热控制****************CTRL_TMPL:MOVA73H;最高位CJNEA#1DD2;水温超过100?A=1SJMPLEDH;是,指示灯灭,停止加热DD2:MOVA72H;否,温度不超过100,当前水温十位(72H)CJNEA#0AHDD3;十位不等于0时(A=0AH),比较水温与设定温度MOVA72H;DD3:MOVA76H;比较十位CJNEA72HDDH;当前温度十位与设定温度十位是否相等?SJMPDDL;是,比较个位DDH:JNCPLAY1;设定温度十位是否大于当前温度十位?是,跳PLAY1SJMPLEDH;否,跳LEDH(指示灯灭,停止加热)DDL:MOVA75H;十位相等,比较个位CJNEA71HDDL1;个位是否相等?SJMPLEDH;是,停止加热,指示灯灭DDL1:JNCPLAY1;十位相等,设定温度个位是否大于当前温度(未超)?是,跳PLAY1LEDH:SETBLED_1;水温已超过设定温度,加热指示灯灭RET;PLAY1:MOVA72HSUBBA#6JNCTTTCLRLED_1;加热指示灯亮,加热TTT:CLRCRET;;**********加水控制****************NO_WATER:JBP
3.1ST_ADDJBP
3.0OV_ADDST_ADD:CLRP
1.1RETOV_ADD:SETBP
1.1RET;************1ms延时程序**************DL1MS:MOVR6#14H;DL1:MOVR7#100;DJNZR7$;DJNZR6DL1;RET;************5ms延时程序**************DL5MS:MOVR6#150;DL5:MOVR7#250;DJNZR7$;DJNZR6DL5;RET;************中断程序0(个位设定)***********ZINT0:PUSHACC;保存AINC75H;十位+1MOVA75H;CJNEA#10ZINT01;=9?MOV75H#0;是,归零ZINT01:POPACC;否RETI;************中断程序1(十位设定)************ZINT1:PUSHACC;保存AINC76H;个位+1MOVA76H;CJNEA#10ZINT11;=9?MOV76H#0;是,归零ZINT11:POPACC;否RETIEND七.遇到的问题与解决方法问题1仿真过程中数码管(动态显示)显示错乱解决方法延时过长导致,把延时时间调小问题2无法从1820芯片读取温度数据解决方法程序错误所致,纠正错误,调整初始化程序问题3实物显示错乱解决方法实物连线与原理图有别,修改程序问题4实物键盘抖动较为严重解决方法使用查询方式变成消抖(未实施)八.个人心得体会在本次课程设计中,我主要负责程序的设计无论是在仿真过程还是实物调试过程中都遇到了不少问题例如,一开始我对1820还不是很熟悉,还不了解采集回来的温度主要是前两个字节,而且第一个字节的低八位是小数部分,所就盲目的计算,导致显示错乱一通后来我认真的看了1820的资料,了解其工作原理和特性之后,再重新编程,经过几次修改后,终于正确显示了虽然这花去了我很多的时间,也说明了我对知识掌握的还不够,但也值得再有就是实物的操作,一开始导入程序也有问题,原来在仿真中能实现的,实物中未必能实现这让我一下子感觉到很大的__感,眼看答辩时间一步一步接近,我必须加快脚步然后和大家一起研究究竟问题出现在哪里,经过几番讨论,发现我们的程序存在很多漏洞,所以大家各自修改自己的模块,最后成功的导入了程序,各方面的功能都正常但我们似乎还不满足于现状,经过讨论,决定添加一些功能,于是又进入一番奋斗,但由于原件有问题,最终未能实现这个过程中,我深深的明白到分工合作的重要性一个团队如果没有团结协作,想要取得很大的成功是不可能的,一个人的力量再大也只是一个人而已幸好,我们组的人都十分的有团结意识,大家都出自己该出的那份力,所以课程设计完成得要比预期要快一些,有赖于大家的齐心协力另外就是交流,组员与组员之间,有交流和少交流区别是很大的,我们就是因为经常讨论商量,所以问题往往很快被解决,如果一个人想要花上更多的时间过程中遇到很多不懂,就去问一些基础比较好的同学,经常去问他们,麻烦他们感觉有点不好意思,不过,我们真的很感谢他们的热心帮助十.____
[1]吴黎明等.
2005.单片机原理与应用技术.科学出版社.
[2]周立功等.
2003.80C51单片机速成与实战.北京____大学出版社.
[3]何立民等.
1993.MSC-51系列单片机应用系统设计.北京____大学出版社.
[4]潘永雄等.
2003.新编单片机原理与应用.西安电子科技大学.
[5]张洪润,马平安等.
2002.单片机原理及应用.科学出版社.。