基于51单片机的看门狗程序
“看门狗”技术在单片机应用系统中的应用
“看门狗”技术在单片机应用系统中的应用[摘要] 在单片机应用系统中,系统往往受到外界干扰而影响工作可靠性。
“看门狗”是提高系统可靠性的非常重要的技术,因为它既可以由硬件实现,又可以由软件实现。
本文主要从硬件看门狗和软件看门狗两个方面阐明其工作原理并给出应用实例。
[关键词] 单片机应用系统;硬件看门狗;软件看门狗[Abstract] This paper introduces MCU application system can acquire noises from environment an d influnce it’s reliability during the practical work, the methods to involve noises can from hardware and software 。
Watch-dog is a importent technology in system reliability,because it can be achived from not only hadware but also software.It priefly explains the watch-dog’s principle and application through hardware watch-dog and software watch-dog and gives some examples in practical application.[Keywords] MCU application system hardware watch-dog software watch-dog1.概述单片机应用系统是由单片机系统配以相应的软件组成的用于完成某种控制功能的系统。
在实际工作中,单片机应用系统会受到外界干扰而影响其可靠性,减小干扰提高可靠性在单片机应用系统中十分重要,相应的措施有硬件措施和软件措施,因为看门狗既可以通过硬件来实现也可以通过软件来实现,所以它是解决系统抗干扰的非常重要的技术。
C51单片机看门狗电路及程序设计方案
C51单片机看门狗电路及程序设计案院系:信息工程学院年级:2010级电子一班禹豪电子一班训虎电子二班邓启新一、引言在由单片机构成的微型计算机系统中,程序的正常运行常常会因为来自外界的电磁场干扰等原因而被打断,从而造成程序的跑飞,而陷入死循环。
由此导致单片机控制的系统无法继续工作,造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片或程序,俗称"看门狗"(watchdog)(1)看门狗电路基本原理看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连**,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
*此处设计原理实际上为下文中硬件看门狗设计思路。
(2)看门狗电路一般设计式“看门狗”电路一般分为硬件看门狗与软件看门狗两种设计式。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位。
如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。
常用的WDT芯片如MAX813,5045,IMP 813等,价格4~10元不等.软件看门狗技术的原理和硬件看门狗类似,只不过是用软件的法实现(即利用单片机部定时器资源,通过编程模拟硬件看门狗工作式),以51系列为例:因在51单片机中有两个定时器,在利用部定时器资源来对主程序的运行进行监控时。
基于51单片机和CC1101的无线温度监控系统设计
基于51单片机和CC1101无线温度监控系统设计前言目前,科学技术的发展日新月异,单片机等大规模集成电路的进步与发展,温度监控技术的应用越来越广泛。
在传统微机化的温度监控系统中,均是以有线方式来实现温度监控。
传统的温度监控系统,其突出的问题是由于有线通信,线缆传输连线麻烦,需要特制接口,颇为不便,且实用性不强,成本高,造成系统的普及性降低,同时也带来了制作繁琐,外围电路复杂的缺点。
近年来,随着各种单片机及无线收发芯片的出现与推广,使得基于CC1101的无线温度监控系统的实现成为可能。
温度是工业、农业生产中常见的和最基本的参数之一,在生产过程中常需对温度进行检测和监控,采用微型机进行温度检测、数字显示、信息存储及实时控制,对于提高生产效率和产品质量、节约能源等都有重要的作用。
伴随工业科技、农业科技的发展,温度测量需求越来越多,也越来越重要。
但是在一些特定环境温度监测环境范围大,测点距离远,布线很不方便。
这时就要采用无线方式对温度数据进行采集。
利用无线技术实现数据传输比使用传统的有线电缆有不可比拟的优点,如可移动性、方便灵活性等多方面都更能满足人们的实际需要。
实现无线数据传输的方法多种多样,使用高频无线电技术、激光技术、红外技术等等均能满足无线传输要求。
本设计是以宏晶科技推出的STC89C52RC单片机作为控制核心,提出以DS18B20的单线分布式温度采集与控制系统,通过CC1101无线收发模块收发信息。
监控点将接收到主控点的信息后,经过一些处理,然后相应的监控点将采集并发送数据给主控点。
主控点通过串口将收到的温度信息回馈到上位机(PC机),从而远程实现对整个系统的检测与控制。
一.总体方案设计温度监控系统有着共同的特点:测量点多、环境复杂、布线分散、现场离监控室远等。
若采用一般温度传感器采集温度信号,则需要设计信号调理电路、A/D 转换及相应的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。
单片机看门狗的描述
单片机看门狗的描述下面是关于STC89C5XX-51 单片机看门狗的描述WDT_CONTR 位置0xE1; [-] [-] [EN_WDT] [CLR_WDT] [IDLE_WDT] [PS2] [PS1] [PS0]EN_WDT: 看门狗允许位,置1 启动看门狗,看门狗不能自动启动,需要设置该位后启动,一旦启动不能关闭(只能系统重新上电和看门狗复位可以关闭)CLR_WDT: 看门狗计数器清零位,置1 清零看门狗计数器,当计数器开始重新计数,硬件清零该位。
IDLE_WDT: 单片机IDLE 模式看门狗允许位,当IDLE_WDT=1 时,单片机在IDLE 模式(空闲模式)依然启用看门狗PS2~PS0: 看门狗定时器预分频器,下表中Prescale 表示预分频数PS2 PS1 PS0 Prescale0 0 0 20 0 1 40 1 0 80 1 1 161 0 0 321 0 1 641 1 0 1281 1 1256看门狗溢出时间:(N*Prescale*32768)/晶振频率,其中N 表示指令周期数N=12 表示12 时钟周期模式;N=6 表示6 时钟周期模式。
如N=12,晶振频率为12MHz,PS2~PS0 为100 时,溢出时间=(12*32*32768)/12=1048576us,差不多是1s。
例如:给WDT_CONTR 写入0 乘以34,即是激活看门狗,同时预分频数设为32。
喂狗过程也是一样的。
顺便说一下ATMEL-51 单片机的看门狗下面是关于ATMEL-51 单片机看门狗的描述【看门狗计数器】(watchdog timer)是一个14 位的计数器,它以机器周期(晶振频率/12)增加,当计数值计满(16383/0 乘以3FFF)了就使单片机软复位;当启动了【看门狗计数器】之后,我们需要在它计数没有满之前复位计数器强制。
单片机看门狗(Watchdog)的工作原理及其应用
单片机看门狗(Watchdog)的工作原理及其应用2010年05月16日星期日 23:00在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环。
程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。
所以,出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。
看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行。
这个时候,看门狗电路就会由于得不到单片机送来的信号。
便在它和单片机复位引脚相连的引脚上送出一个复位信号。
使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
看门狗,又叫 watchdog timer,是一个定时器电路。
一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU 正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零。
如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,是MCU复位,防止MCU死机。
看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
所以,在使用有看门狗的芯片时要注意清看门狗。
单片机看门狗程序
门狗”WDT的功能;此单片机看门狗由51hei独家提供LISTP=18F458INCLUDE”
P18F458.INC”
DEYHEQU0X20DEYLEQUDEYH+1
ORG0X00GOTOMAINORG0X30
;*************初始化子程序*****************INITIALCLRFTRISD;D口
;************单片机看门狗主程序
****************************MAINNOPCALLINITIAL;系统初始化
MOVLW0X00MOVWFPORTD;D口送00H,发光二极管亮
CALLDELAYMOVLW0XFFMOVWFPORTD;D口送FFH,发光二极管灭
LOOPGOTOLOOP;死循环,等待看门狗复位END
/*主程序*/main(){initial();/*初始化,设定看门狗的相关寄存器*/PORTD=
0X00;/*D口送00H,发光二极管亮*/DELAY();/*给予一定时间的延时*/PORTD
=0XFF;/*D口送FFH,发光二极管灭*/while(1){;}/*死循环,等待看门狗溢出
复位*/}
-------------------汇编语言版本的单片机看门狗程序----------------;此程序实现”看
单片机看门狗程序
/*此程序实现单片机”看门狗”WDT的功能*/
#include”p18f458.h”
unsignedlongi;
/*系统初始化子程序*/voidinitial(){TRISD = 0X00;/*D口设为输出*/}
/*延时子程序*/voue;}
C51单片机看门狗电路及程序设计方案解读
C51单片机看门狗电路及程序设计方案院系:信息工程学院年级:2010级电子一班刘禹豪电子一班赵训虎电子二班邓启新一、引言在由单片机构成的微型计算机系统中,程序的正常运行常常会因为来自外界的电磁场干扰等原因而被打断,从而造成程序的跑飞,而陷入死循环。
由此导致单片机控制的系统无法继续工作,造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片或程序,俗称"看门狗"(watchdog)(1)看门狗电路基本原理看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连**,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
(2)看门狗电路一般设计方式“看门狗”电路一般分为硬件看门狗与软件看门狗两种设计方式。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位。
如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。
常用的WDT芯片如MAX813,5045,IMP 813等,价格4~10元不等.软件看门狗技术的原理和硬件看门狗类似,只不过是用软件的方法实现(即利用单片机*此处设计原理实际上为下文中硬件看门狗设计思路。
内部定时器资源,通过编程模拟硬件看门狗工作方式),以51系列为例:因在51单片机中有两个定时器,在利用内部定时器资源来对主程序的运行进行监控时。
单片机应用系统中的_看门狗_电路及低成本实现
, 看 门 狗 电路 如 图 1 所 示. 图 中
! 63!
2008 年
商丘职业技术学院学报
74LS123 触发器的输入端接高电平 , 负脉冲触发 . 第一个触发器工作状态由单片机 P1 口的 P1 . 7 控制, 系统 开始工作时 , P1 . 7 向 2A 端输入一个负脉冲, 使 2Q 端产生一个正跳变, 但并不能触发第二个单稳态触发器 动作, 1Q 端仍为低电平. P1 . 7负触发脉冲的时间间隔取决于系统控制主程序运行周期 . 在单片机应用系统 应用程序设计中 , 软件流程要设计成循环结 构. 发出喂狗信号的指令包 含在主程序中, 使用 CLR P1 . 7和 SETB P1. 7 两条指令. 如果主程序运行周期小于单稳态触发器的暂态时间 , 则当单片机正常运行时 , 将不断 重新触发第二个单稳态触发器, 其输出端 2Q 端始终保持高电平, 1A 端保持高电平 , 第一个单稳态触发器就 不会产生动作. 如果单片机受到干扰 , 产生了死循环, 那么第二单稳态触发器的暂态时间内 , 就不会出现送 给 2A 端的负脉冲 , 第二个单稳态触发器脱离暂态 , 2Q 端回到低电平触发第一个单稳态触发器翻转到暂态 , 1Q 端产生脉冲信号, 使单片机可靠复位, 系统运行的可靠性大大提高.
[ 2 ] 374- 375
.
图 2 由计数器构成的 看门狗 电路
2 . 3 由门电路构成 看门狗 电路 在电路的设计中往往会有多余的门电路, 这时可以用作 看门狗 电路 , 既降低了成本, 又提高了电路的 可靠性 . 电路形式可以有很多种 , 特别在 89C1051 / 2051 的应用电路中, 利用其 P1 . 0 /P1. 1 口没有上拉电阻 的特点 , 可以用两个 CMOS 门电路 ( 本例中是六反相器 CD4069 中的两个空余反相器 ) 设计一个极简单的低 成本 看门狗 电路, 如图 3 . 由于需要的定时时间比较长 , 因此只能使用输入阻抗高的 CMOS 门电路, 当然也 ! 64!
单片机汇编语言实现看门狗
CS=0; if(bRegion==0) //write the page addr else WriteByte(cAddress); WriteByte(cData); SCK=0; // CS=1; } uchar ReadEpm(uchar cAddress,bit bRegion) /* 读入一个字节,cAddress 为读入地址,bRegion 为页 */ { uchar cData; while((ReadReg()&0x01)==1);//the device is busy CS=0; if(bRegion==0) else WriteByte(cAddress); cData=ReadByte(); CS=1; return cData; } main() { WriteReg(0x00);//set the watchdog time as 1.4s CS=1; CS=0; } //reset the watchdog
SCK=0; SCK=1; ucData<<=1; } } uchar ReadReg() { uchar ucData; CS=0; WriteByte(RDSR); ucData=ReadByte(); CS=1; return ucData; } uchar WriteReg(uchar ucData) { uchar ucTemp; ucTemp=ReadReg(); if((ucTemp&0x01)==1) //the device is busy return 0; CS=0; WriteByte(WREN);//when write the WREN, the cs must have a high level CS=1; CS=0; WriteByte(WRSR); WriteByte(ucData); CS=1; return 1; } void WriteEpm(uchar cData,uchar cAddress,bit bRegion) /* 写入一个字节,cData 为写入的数,cAddress 为写入地址,bRegion 为页 */ { while((ReadReg()&0x01)==1); //the device is busy CS=0; WriteByte(WREN); //when write the wren , the cs must have a high level CS=1; //write register //read register
MCS-51单片机“看门狗”软件设计的两种方法010903
为了减少外围器件,可以采用微处理机内部闲置的定时/计数器,配合以适当的程序就可以方便地构成“看门狗”,在PC异常时能够及时有效地强制“软复位”而恢复系统的正常运行。
2.1 基本原理
微处理机片内的一个定时器单元接收内部时钟提供的稳定脉冲,当此定时器溢出(加法型)或者为零(减法型)时提出中断请求;对应的中断服务程序使PC回到初始化程序的第一行,从而实现强制性“软复位”。程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器清零或置数,即可预防溢出中断而引起的误复位。例如:W77E58型单片机,兼容51系列单片机,它有一个很重要的特点,就是能提供一个看门狗定时器。
uchar WDTmainCount;
uint WDTintCount;
void main(void)
{
EA=0;
WDTmainCount=0;
WDTintCount=0;
//其它初始化
……
EA=1;
While(1)
{
……
WDTintCount++;
if (WDTintCount<INT_COUNT)
为了解决上述问题,可以在中断服务程序中和主程序中加上“喂狗”指令,但不能把取反指令直接放到中断服务程序和主程序中去,笔者的解决办法是把“喂狗”指令分开(如:P10=1和P10=0),然后分别插入到中断服务程序和主程序中,注意,在主程序中只能用其中一条,中断服务只能用另一条,不能混合使用
用C51举例如下:
If (WDTmainCount<MAIN_COUNT)
{
/*“喂狗”*/
////////////////////
TA=0xaa;
基于51单片机的PWM调光灯设计
摘要目前市场上的LED台灯,作为LED的绿色护眼光源产品而进行开发和研究,还是作为我国的照明推广家用型产品。
随着时代的变迁,社会的发展,节能和环保这一主题已经是当今社会必要发展的目标了、健康与人们的日常生活变得密不可分,科技的进步,也使家电更加智能化和人性化。
台灯作为家电中基础的,也是必不可少的,所以,提出PWM调光灯设计。
本设计主要是将STC89C51RC单片机作为控制核心,这是将多种功能集于一体的智能LED台灯。
该台灯具有手动、自动两种调节亮度的方式;主要的产品功能有呼吸模式、红外遥控操作等等。
硬件的设计部分为单片机控制模块、按键控制模块、照明显示模块、光敏感应模块、LED灯指示报警模块、远程遥控模块等组成。
单片机主要控制芯片型号选用STC89C51RC,LED指示报警模块选择三种颜色不同的LED指示灯来显示三种不同的工作模式,通过按键控制模块进行调整和控制工作模式和LED亮度程度,照明模块选用草帽型12白光LED,光敏感应模块采用可以对光敏信号的采集芯片ADC0832,并利用PWM调光技术对LED进行光度的自动调节。
可以通过红外遥控远距离无线遥控,通过单片机C语言编程进行软件设计,将所需的设计要求全部可以进行功能的控制。
关键词LED台灯光度PWM调光自动调节AbstractLED lamp as LED green lighting products, as the country to promote the use of green lighting products. With the development of the times,energy saving and environmental protection, health and the peopledaily life are inseparable, the progress of science and technology,also makes home appliances more intelligent and humanized. The lamp as home appliances based, so is also essential,, put forward PWM dimming the lights design.The design is based on STC89C51RC SCM as control core and multi functions in one of the intelligent LED lamp. The table lamp realizes the brightness with manual, automatic two types of regulation;respiratory mode function, but also has the function of infrared remote control. The design of the hardware part consists of MCU controlmodule, keyboard module, lighting module, photosensitive module,LED module, remote control module instruction. The MCU main control chip STC89C51RC, LED indicating module with three kinds ofdifferent colors of small LED to indicate different working modes,brightness through the key module to adjust the working mode and the LED lighting module, using 12 straw hat type white LED,photosensitive module uses ADC0832 chip implementation of a signal acquisition, automatic regulation and luminosity of LED using PWM dimming technology. Through the infrared remote control, wireless remote control, software design of the MCU C language programming,integrated control functions are realized by.Key wordLED lamp dimming automatically adjust luminosity of PWM目录第1章绪论 (5)1.1 课题研究背景 (5)1.2 系统方案的提出 (5)1.2.1 LED优势 (5)1.2.2 方案简述 (6)第2章系统方案的选择 (7)2.1 控制芯片的选择方案 (7)2.1.1 STC89C51RC (7)2.1.2 A VR单片机 (7)2.1.3 FPGA (8)2.1.4 主控制芯片的确定 (8)2.2 照明模块的选择 (8)2.2.1 三极管驱动 (8)2.2.2 PWM芯片控制 (9)2.2.3 照明方案的确定 (10)第3章硬件设计 (10)3.1 单片机STC89C51芯片简介 (10)3.2 LED驱动电路 (14)3.3 按键控制电路 (17)3.4 LED指示电路 (18)3.5自动控制电路 (18)3.5.1 光敏电路 (18)3.5.2 ADC0832模数转换 (19)第4章软件设计 (20)4.1 Keil C51 (20)4.2 Protel99SE (21)4.3 程序流程图 (22)第5章调试 (24)5.1 硬件调试 (24)5.2 软件调试 (24)第6章总结 (25)参考文献 (26)附录一:protel99se 原理图 (27)附录二:源程序 (28)前言LED照明又称固态照明,作为继白炽灯、荧光灯后的第三代照明技术,具有节能、环保、安全可靠的特点,固态显示光源是照明领域里面比较看好的发展产业,在未来十年中将传统的照明工具替换,是代表照明技术的未来。
51单片机的看门狗
“看门狗〞概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进展实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗〞(watch dog)。
参加看门狗电路的目的是使单片机可以在无人状态下实现连续工作,其工作过程如下:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过单片机的程序控制,使它定时地往看门狗芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便将它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,从而单片机将从程序存储器的起始位置重新开场执行程序,这样便实现了单片机的自动复位。
通常看门狗电路需要一个专门的看门狗芯片连接单片机来实现,不过这样会给电路设计带来复杂,STC单片机内部自带有看门狗,通过对相应特殊功能存放器的设置就可实现看门狗的应用,STC89系列单片机内部有一个专门的看门狗定时器存放器,Watch Dog Timer 存放器,其相应功能见下个知识点。
看门狗定时器存放器(WDT_CONTR)STC单片机看门狗定时器存放器在特殊功能存放器中的字节地址为E1H,不能位寻址,该存放器用来管理STC单片机的看门狗控制局部,包括启停看门狗、设置看门狗溢出时间等。
单片机复位时该存放器不一定全部被清0,在STC下载程序软件界面上可设置复位关看门狗或只有停电关看门狗的选择,大家根据需要可做出适合自己设计系统的选择。
其各位的定义如表4.2.1所示。
表1看门狗定时器存放器(WDT_CONTR)EN_WDT:看门狗允许位,当设置为“1〞时,启动看门狗。
基于51单片机的温度测量系统
目录摘要 (I)ABSTRACT (II)1 绪论 (1)1.1选题的背景 (1)1.2课题研究的目的和意义 (1)1.3本文的结构 (1)2 系统总体方案设计 (1)2.1总体方案设计 (2)2.2部分模块方案选择 (3)2.2.1单片机的选择 (3)2.2.2温度检测方式的选择 (3)2.2.3显示部分的选择 (4)2.2.4电源模块的选择 (4)3 硬件电路的设计 (4)3.1 硬件电路设计软件 (4)3.2系统整体原理图 (5)3.3单片机最小系统电路 (6)3.4单片机的选型 (7)3.5温度测量模块 (8)3.5.1 DS18B20概述 (8)3.5.2 DS18B20测温工作原理 (11)3.5.3 DS18B20温度传感器与单片机的接口电路 (12)3.6 显示模块 (13)3.7 按键以及无线遥控模块 (15)3.7.1按键的相关知识 (15)3.7.2 5伏带解码四路无线接收板模块 (16)3.8 报警及指示灯模块 (18)3.9 电源模块 (19)4 系统软件设计及仿真部分 (20)4.1软件设计的工具 (20)4.1.1程序编写软件 (20)4.1.2仿真软件 (21)4.2各模块对应的软件设计 (22)4.2.1显示模块的程序 (22)4.2.2温度测量的程序 (26)4.2.3报警系统程序 (32)4.2.4按键程序 (33)4.2.5总体程序 (35)5 实物制作 (37)5.1电源部分 (37)5.2单片机最小系统部分 (37)5.3 总体实物 (37)6 总结 (38)7 致谢 (39)参考文献 (40)附录一 (41)附录二 (49)基于单片机的温度测量系统摘要随着测温系统的极速的发展,国外的测量系统已经很成熟,产品也比较多。
近几年来,国内也有许多高精度温度测量系统的产品,但是对于用户来说价格较高。
随着市场的竞争越来越激烈,现在企业发展的趋势是如何在降低成本的前提下,有效的提高生产能力。
51单片机看门狗软件程序设计
51单片机看门狗软件设计一、设计原理单片机中有两个定时器,我们可以用这两个定时器来对主程序的运行进行监控。
可以对T1设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。
二、设计方案1、看门狗定时器T1的设置。
在初始化程序块中设置T1的工作方式,并开启中断和计数功能。
系统Fosc=12 MHz,T1为16位计数器,最大计数值为65 535,T1输入计数频率是.Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。
2、计算主控程序循环一次的耗时。
考虑系统各功能模块及其循环次数,系统设置"看门狗"定时器T1计时50 ms (T1的初值为65 536-50000=15 536=3CB0H)。
主控程序的每次循环都将刷新T1的初值。
如程序进入"死循环"而T1的初值在50 ms内未被刷新,这时"看门狗"定时器T1将溢出并申请中断。
溢出中断服务程序开始工作,将看门狗标志num加1。
当num 的值等于100时,说明看门狗定时器已经计时5s,此时,单片机I/O端口P1.0输出高电平,对程序进行复位。
3.、在此过程中,喂狗代码将被穿插于程序中循环体末尾。
当循环体结束时,喂狗代码执行,关闭定时器1、清空num并重新初始化定时器设置。
若循环体进入死循环,喂狗代码无法执行,num将一直累加至100,此时程序复位。
三、关键代码“看门狗“定时器设置程序代码如下:TMOD=0x10; //设置TMOD寄存器,定时器1设为方式1TL1=0xB0; //设置定时器初值低8位TH1=0x3C; //设置定时器初值高8位,设置为计时50msET1=1; //开定时器1溢出中断EA=1; //开总中断控制TF1=0; //定时器1溢出中断标志清零TR1=1; //开定时器1溢出中断服务程序代码如下:void int_T1() interrupt 3 using 3 //定时器1溢出中断服务程序{num++;//每溢出一次标志加1if (num==100)//当标志等于100时,即计时5s {P1=~(0x01); //P1.0输出1}}喂狗程序代码如下:TR1=0; //喂狗代码,关定时器1TL1=0xB0; //重新设置定时器初值TH1=0x3C;TF1=0;//定时器1溢出中断标志清零TR1=1; //开定时器1四、电路图。
C51单片机看门狗程序优化设计
C51单片机看门狗程序优化设计作者:窦群来源:《中国新技术新产品》2013年第14期摘要:影响单片机构的微型计算机系统正常运作的原因很多。
比如外界电磁场干扰导致微型计算机程序运行不稳定,从而导致程序的不合理运行,从而导致了运作环境的不稳定,不利于单片机控制系统的正常运行。
为了实现单片机运行状态的良好监控,我们需要看门狗进行监控,确保其单片机程序的正常运行。
关键词:看门狗;程序设计;管理深化;方案优化中图分类号:TJ43 文献标识码:A经济的发展,促进了科学技术的不断延伸,C51系统的单片机也在不断的发展,这大大满足了实际工作的需要,也不可避免的带来了一些弊端。
比如单片及芯片的抗干扰现象,这种现象不利于智能型仪表单片机系统的稳定运行。
本文就看门狗硬件电路及其设计方案展开分析,通过采取相应的措施,解决问题。
1关于看门狗的电路系统分析在实际工作中,看门狗的电路系统的应用范围是比较广泛的,它实现了单片机系统的内部相关环节的稳定运行,确保了无人监控下的程序的正常运作。
看门狗电路系统的正常运行,离不开看门狗芯片与单片机的I/O引脚环节的正常运作。
这就需要我们针对这一环节进行具体分析,I/O引脚环节的稳定性决定了看门狗系统的正常运行,该环节如果受到内外因素的干扰,是极易导致程序的不正常发展的,容易使系统陷入不良的循环中。
为此我们要实现看门狗的引脚程序环节的稳定运行,从而保证单片机的有效复位,这样保障了程序的顺利执行,保证单片机的自动复位。
(1)为了保证看门狗电路系统的稳定运行,我们要进行看门狗电路设计方式的深化,它主要包括两种环节,硬件看门狗设计环节与软件看门狗设计环节。
前者的正常运行,离不开对定时器的有效应用,从而确保主程序的有效监控,在主程序的运作过程中,我们要确保定时器的及时复位,避免下序环节出现运行故障。
软件看门狗技术模式与硬件看门狗有类似之处,它通过对软件的利用,实现程序的稳定运行。
比如对51单片机的定时器的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
while((ReadReg()&0x01)==1); //the device is busy
CS=0;
WriteByte(WREN); //when write the wren , the cs must have a high level
CS=1;
CS=0;
if(bRegion==0)
{ WriteByte(WRITE0);} //write the page addr
else
{WriteByte(WRITE1);}
WriteByte(cAddress);
WriteByte(cData);
SCK=0; //
CS=1;
}
uchar ReadEpm(uchar cAddress,bit bRegion)
{
uchar ucLoop;
for(ucLoop=0;ucLoop<8;ucLoop++)
{
if((ucData&0x80)==0) //the MSB send first
{SI=0;}
else
{SI=1;}
Hale Waihona Puke SCK=0;SCK=1;ucData<<=1;
}
}
uchar ReadReg() //read register
/*读入一个字节,cAddress为读入地址,bRegion为页*/
{
uchar cData;
while((ReadReg()&0x01)==1);//the device is busy
CS=0;
if(bRegion==0)
{WriteByte(READ0); }
else
{WriteByte(READ1);}
return 0;
CS=0;
WriteByte(WREN);//when write the WREN, the cs must have a high level
CS=1;
CS=0;
WriteByte(WRSR);
WriteByte(ucData);
CS=1;
return 1;
}
void WriteEpm(uchar cData,uchar cAddress,bit bRegion)
#define READ0 0x03 //
#define READ1 0x0b //
#define WRITE0 0x02 //
#define WRITE1 0x0a //
#define uchar unsigned char
uchar ReadByte() //read a byte from device
基于51单片机的看门狗程序
#include <reg51.h>
sbit CS= P2^7;
sbit SO= P2^6;
sbit SCK= P2^5;
sbit SI= P2^4;
#define WREN 0x06 //
#define WRDI 0x04 //
#define RDSR 0x05 //
#define WRSR 0x01 //
{
bit bData;
uchar ucLoop;
uchar ucData;
for(ucLoop=0;ucLoop<8;ucLoop++)
{
SCK=1;
SCK=0;
bData=SO;
ucData<<=1;
if(bData)
{ ucData|=0x01; }
}
return ucData;
}
void WriteByte(uchar ucData)//write a byte to device
WriteByte(cAddress);
cData=ReadByte();
CS=1;
return cData;
}
main()
{
WriteReg(0x00);//set the watchdog time as 1.4s
CS=1;
CS=0; //reset the watchdog
}
{
uchar ucData;
CS=0;
WriteByte(RDSR);
ucData=ReadByte();
CS=1;
return ucData;
}
uchar WriteReg(uchar ucData) //write register
{
uchar ucTemp;
ucTemp=ReadReg();
if((ucTemp&0x01)==1) //the device is busy