C51单片机看门狗电路及程序设计方案
- 格式:doc
- 大小:78.00 KB
- 文档页数:14
中国科学技术大学业余无线电协会编目 录§1 前言 (1)§2 单片机简介 (2)2.1 数字电路简介 (2)2.2 MCS-51单片机简介 (2)2.3 Easy 51 Kit Pro简介 (5)2.4 Easy 51 Kit Pro电路功能分析 (5)§3 MCS-51单片机的C语言编程 (8)3.1 汇编语言 (8)3.2 建立你的第一个C项目 (8)3.3 生成hex文件 (12)3.4 Keil C语言 (14)3.5 单片机I/O (18)3.6 中断 (25)3.7 定时器/计数器 (27)3.8 定时器的应用举例 (29)3.9 外部中断 (34)3.10 串行通信 (38)3.11 定时器2 (43)3.12 看门狗 (47)3.13 空闲模式和掉电模式 (50)§4 MCS-51单片机C语言编程应用进阶 (51)4.1 扫描式键盘 (51)4.2 EEPROM芯片AT93C46的读写 (55)4.3 Keil C的高级使用 (63)§5 编写高质量的单片机C程序 (64)5.1 文件结构 (64)5.2 程序的版式 (66)5.3 单片机程序命名规则与变量选择 (70)5.4 表达式和基本语句 (73)5.5 函数设计 (77)5.6 单片机程序框架 (79)附图:Easy 51 Kit Pro电路图(最小系统板) (80)附图:Easy 51 Kit Pro电路图(学习板) (81)§1 前言什么是单片机,目前还没有一个确切的定义。
普通认为单片机是将CPU、RAM、ROM、定时器/计数器以及输入输出(I/O)接口电路等计算机主要部件集成在一块芯片上,这样所组成的芯片级微型计算机称为单片微型计算机(Single Chip Microcomputer)。
简称为单片微机或单片机。
利用单片机程序,可以实现对硬件系统的小型化的智能控制。
单片机自动清洁机器人设计(电路图+原理图+流程图+源程序)-课程设计单片机自动清洁机器人设计最近在电视看到一款能够遥控移动的吸尘器,圆形的和遥控汽车差不多,我感觉到如果再不把自己的想法写出来,自己的创意会被很多人实现,我几年前就想设计一款能够打扫卫生的机器人,直到看到电视里的那个东西,我意识到,我要自己做一个出来。
移动机构是清洁机器人的主体,决定了清洁机器人的运动空间,一般采用轮式结构。
传感器系统一般采用超声波传感器、红外光电传感器、接触传感器等构成多传感器系统。
随着近年来控制技术、传感技术以及移动机器人技术等技术的迅速发展,智能清洁机器人控制系统的研究和开发已具备了坚实的基础和良好的发展前景。
吸尘系统在原理上与传统立式吸尘器相同,主要是在结构设计上更多考虑结构尺寸、集成度以及一些辅助机构的合理布置和利用,以此来提高能源利用率和工作效率。
现在的智能清洁机器人通过软硬件的合理设计,使其能够自动避开障碍物,实现一般家居环境下的自主清洁工作。
它的主要功能有: 1 能够自动熟悉地形,了解房间布局,感知自己的方位,记录和分析环境卫生状况,容易脏的地方多打扫,干净的地方少打扫,节省能源。
2能够自动补充能量。
当检测到电源不足时,自动找到电源,并充电。
充电结束自动专为待机状态。
3当垃圾装满后自动打包,并将垃圾放到主人指定的地点。
4能够检测主人是否在家,只有当主人不在家时,才出来打扫卫生,主人在家时机器人休息。
保证不影响主人的正常生活。
可行性分析:1应用超声波测距和滚轮定位就可以测到自己的位置,给据吸入垃圾量的多少,就可以分析出,那干净那里脏.2应用简单的空中加油技术就可以把自动充电搞定。
检测电源能量多少,和是否充满就更简单了.3垃圾打包只用简单的打包技术就可以解决.4机器人上装上热释红外探测器就知道主人在不在了..5剩下的功能,好多玩具里都有,只要把吸尘器和遥控车结合起来就搞定了1 系统整体方案设计1.1 制作清洁机器人的任务与要求:任务: 清洁机器人在场地上任意运动并吸尘,当遇到障碍物时,可自主避开障碍物绕道继续运动(轨迹由团队设定)。
基于51单⽚机的智能家居控制系统设计摘要智能家居是时代发展的产物,是住户想享受快速⽹上冲浪、便捷实时的通讯、安全防范、丰富娱乐⽣活、便捷的⽣活家居管理,优质物业管理等智能化住宅所特有的⽣活⽅式,使忙碌⼀天的⼈们真正体会到智慧家带来的⽣活乐趣。
本设计以STC89C52RC单⽚机为核⼼设计数字时钟和智能窗帘:通过光敏电阻检测光线强弱,当光线强度达到⼀定的程度时,通过单⽚机控制电机将窗帘拉上,否则打开窗帘。
另外⽤点阵显⽰时间和当前室内温度,由于下午⼗点后基本属于睡眠时间,故忽略光线强度,拉上窗帘并⾃动切换到⼿动模式,以节约电能,待第⼆天起床再将其切换⾄⾃动模式。
由于⼀般电机⽆法⾃主精确定位,需要辅助器件构成⼀个闭环系统才能精确的控制窗帘的张合程度,故本设计采⽤步进电机控制,通过齿轮变速,精确控制窗帘的张合程度,避免窗帘由于过度的张合造成损害,同时由于减少了辅助器件,节省了能源。
同时,本设计还选⽤DS12C887时钟芯⽚,该芯⽚内部⾃带锂电池,即使在断电的情况下仍然能继续⼯作。
该芯⽚有内置晶振,能够提供准确的时间,正常⼯作状态下⼯作⼀个⽉误差为+ 1分钟。
芯⽚内部带有闹钟功能,带有世纪寄存器,能够解决世纪问题,还有闰年补偿能多项功能。
⽐只利⽤晶振驱动的电⼦时钟功能更强⼤,时间更准确。
关键词:单⽚机;智能窗帘;时钟芯⽚AbstractIntelligent furniture is outcome of the developing time. It is a special lifestyle with which residents can enjoy fast online surfing, convenient communication, safety guard and which can enrich residents’ entertainment, make their furnishing management more convenient and which can optimize their property management. It can provide people who have been busy for a whole day with entertainment that intelligent ones bring to them. These are designs called digital clock and intelligent curtain that center on STC89C52RC MCU. It detects whether the light is hard or not through photosensitive electric resistance. When light is hard to some level, the curtain is closed under the control of the MCU on the generator, and is opened on the contrary. In addition, it shows time and the present indoor’s temperature with dot matrix. Light can be neglected after 10 o’clock pm when most people have fallen asleep. At this time, the curtain is closed and get to be under manual mode, so as to cut down electricity consumption, it was not turned to automatic mode until residents’ getting up in the morning. Commonly seen generators are not able to fix precisely, they can form a closed loop system to realize precise control on curtains only with the help of some assistant devices. Thus, this design precisely controls curtains under the control of steering engines and with gears to alter the speed. By that, curtains are protected from damages by over-operation. At the same time, less assistant devices are used and energy consumption is cut down. Meanwhile, the design selectsDS12C887 chips which contain lithium cells themselves and which can continue operating even when it is out of electricity. Such chips contain some internally installed crystal that can provide precise time with only one minute’s error within one month when operating normally. Such chips also have alarm function and century register. Thus, they can solve century problem. This design is much stronger and preciser than any electric clocks using only crystal to operate.Keywords: MCU; intelligent curtain; clock chip设计说明基于单⽚机的智能家居控制系统设计是在指导⽼师给出的任务书并在其指导下完成的。
单片机复位电路设计一、概述影响单片机系统运行稳定性的因素可大体分为外因和内因两部分:1、外因射频干扰,它是以空间电磁场的形式传递在机器内部的导体<引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰;电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。
2、内因振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定。
起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。
二、复位电路的可靠性设计1、基本复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
图1所示的RC复位电路可以实现上述基本功能,图3为其输入-输出特性。
但解决不了电源毛刺<A 点)和电源缓慢下降<电池电压不足)等问题而且调整 RC 常数改变延时会令驱动能力变差。
左边的电路为高电平复位有效右边为低电平 Sm为手动复位开关Ch可避免高频谐波对电路的干扰。
图1 RC复位电路图2所示的复位电路增加了二极管,在电源电压瞬间下降时使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。
图3所示复位电路输入输出特性图的下半部分是其特性,可与上半部比较增加放电回路的效果图2 增加放电回路的RC复位电路使用比较电路,不但可以解决电源毛刺造成系统不稳定,而且电源缓慢下降也能可靠复位。
图4 是一个实例当 VCC x (R1/(R1+R2> > = 0.7V时,Q1截止使系统复位。
Q1的放大作用也能改善电路的负载特性,但跳变门槛电压 Vt 受 VCC 影响是该电路的突出缺点,使用稳压二极管可使 Vt 基本不受VCC影响。
见图5,当VCC低于Vt(Vz+0.7V>时电路令系统复位。
No:毕业设计说明书题目:基于51单片机简易计算器的设计系别:自动化工程系专业:机电一体化技术*名:***学号: ************指导老师:***职称:副教授2013年6月简易计算器是一种非常广泛日常工具,对现代社会越来越流行。
它可以进行一些简易的计算。
本系统提供详细的时、分、秒、年、月、日的时间信息,同时还可进行简易的计算信息,还具有时间校准等功能。
该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
本系统硬件部分由AT89S52单片机、LCD1602液晶屏、键盘、指示灯系统等部分构成。
软件部分在keil环境下用C51语言编写,包括时间设置、时间显示、简易计算显示等。
关键字:AT89S52;液晶屏LCD1602;键盘Simple calculator is a very broad everyday tool for modern society is more and more popular. It can carry on some simple calculation. This system provides detailed, minutes and seconds, year, month, day time information, and at the same time but also for simple calculation information, but also has time calibration etc. Function. This circuit AT89S52 SCM as the core, power consumption is small, can be in 3 V of low-pressure work, voltage can choose 3 ~ 5 V voltage power supply. This system hardware part AT89S52 SCM by LCD1602 LCD screen, keyboard, indicator system, part. Software in under the environment of keil with C51 language, including time set, time display, simple calculation shows, etc. In the programming process found on existing knowledge to finish writing task difficult, the teachers and students of help to finish the program part of the code.Keyword:AT89S52;AT89S52 devices; LCD1602 LCD screen; keyboard引言众所周知单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
T89C2051是精简版的51单片机,精简掉了P0口和P2口,只有20引脚,但其内部集成了一个很实用的模拟比较器,特别适合开发精简的51应用系统,毕竟很多时候我们开发简单的产品时用不了全部32个I/O口,用AT89C2051更合适,芯片体积更小,而且AT89C2051的工作电压最低为2.7V,因此可以用来开发两节5号电池供电的便携式产品。
本文以ATMEL公司生产的51系列家族的AT89S51和AT89C2051两种单片机来讲解,两种单片机是目前最常用的单片机,其中 AT89S51为标准51单片机,当然其功能比早期的51单片机更强大,支持ISP在系统编程技术,内置硬件看门狗。
一、AT89S51单片机引脚介绍AT89S51有PDIP、PLCC、TQFP三种封装方式,其中最常见的就是采用40Pin 封装的双列直接PDIP封装,外形结构下图。
芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口(见右图)左边那列引脚逆时针数起,依次为1、2、3、4。
40,其中芯片的1脚顶上有个凹点(见右图)。
在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。
1、主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线2、外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端3、控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
芯片实物图片芯片引脚功能4、可编程输入/输出引脚(32根)AT89S51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
目录摘要 (1)Abstract (2)1.绪论 (3)1.1设计数据采集及其频谱分析电路的意义 (3)1.2数据采集及其频谱分析的主要功能 (3)2.数据采集硬件电路设计 (4)2.1方案选择及设计思想 (4)2.2设计方案的框图 (5)2.3工作原理 (5)2.4电路中主要芯片的引脚对应的功能 (6)2.4.1主控芯片AT89C51 (6)2.5原理图及连接关系 (8)2.5.1数据输入模块 (8)2.5.2模数转换模块 (8)2.5.3 主控电路 (9)3.数据采集软件设计 (11)3.1系统模块层次图 (11)3.2程序流程 (11)3.3程序源代码 (11)4.频谱分析硬件电路设计 (15)4.1方案论证 (15)4.2频谱分析硬件电路设计 (17)4.2.1数据采集 (17)4.2.2运算核心设计 (17)4.2.3控制核心设计 (18)4.2.4示波器显示部分设计 (20)4.2.5供电设计 (21)5.频谱分析软件电路设计 (24)5.1单片机部分 (24)5.2 FPGA部分 (25)5.3 测试说明 (28)5.3.1单频信号的频谱测试 (28)5.3.2调幅信号的频谱测试 (28)5.3.3调频信号的频谱测试 (28)5.3.4信号识别准确度测试 (29)5.3.5测试结果分析 (29)总结 (30)致谢 (32)摘要本毕业设计数据采集部分采用的是单片机AT89C51和模数转换芯片ADC0808采集系统。
用电位器模拟输入电压,经过AT89C51控制ADC0808将输入模拟电压转换成数字信号,频谱分析部分是基于外差原理的数字式频谱分析,系统采用XlinxVIRTEX-II100万门的FPGA,将本振扫频、混频、放大、低通滤波、提取峰值等工作全部通过数字化实现。
控制方面,有凌阳16位单片机SPCE061A作为控制核心,实现人机接口和最后频谱图的模拟示波器显示。
本论文主要描述了硬件设计部分和软件设计部分,硬件部分更是详细分析了本数据采集及其频谱分析的各个部分的电路原理,以及各个模块之间的线路连接。
C51单片机看门狗电路及程序设计方案
院系:信息工程学院 年级:2010级 电子一班 刘禹豪 电子一班 赵训虎 电子二班 邓启新 一、 引言 在由单片机构成的微型计算机系统中,程序的正常运行常常会因为来自外界的电磁场干扰等原因而被打断,从而造成程序的跑飞,而陷入死循环。由此导致单片机控制的系统无法继续工作,造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片或程序,俗称"看门狗"(watchdog) (1)看门狗电路基本原理 看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连**,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段 进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。 (2)看门狗电路一般设计方式 “看门狗”电路一般分为硬件看门狗与软件看门狗两种设计方式。 硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位。如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813,5045,IMP 813等,价格4~10元不等. 软件看门狗技术的原理和硬件看门狗类似,只不过是用软件的方法实现(即利用单片机
* 此处设计原理实际上为下文中硬件看门狗设计思路。 内部定时器资源,通过编程模拟硬件看门狗工作方式),以51系列为例:因在51单片机中有两个定时器,在利用内部定时器资源来对主程序的运行进行监控时。可以对T1(或T0)设定一定的定时时间(设定的定时值要小于主程序的运行时间),当产生定时中断的时候对一个变量进行赋值(此变量在主程序运行的开始已有一个初值)。当主程序运行至最后时对此变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。 考虑到设计要求,本设计采用软件看门狗设计思路。
二、 看门狗电路整体设计思路 根据设计要求,本设计利用C51单片机内部自带的定时器1进行编程,并配合少量电路实现“看门狗“电路功能。整个设计分为软件部分与硬件部分,如下: (1) 软件部分设计原理: 软件设计分为三部分:“看门狗“定时器设置程序、溢出中断服务程序和喂狗代码。 1.1设计思路: 1)在主程序开头,“看门狗“定时器设置程序设置定时器1计时50ms。 2)当定时达50ms时,定时器1产生溢出中断,溢出中断服务程序开始工作,将看门狗标志num加1。当num的值等于100时,说明看门狗定时器已经计时5s,此时,单片机I/O端口P1.0输出高电平,对程序进行复位。 3)在此过程中,喂狗代码将被穿插于程序中循环体末尾。当循环体结束时,喂狗代码执行,关闭定时器1、清空num并重新初始化定时器设置。若循环体进入死循环,喂狗代码无法执行,num将一直累加至100,此时程序复位。 注:喂狗代码放置位置可根据num预计数值进行调整:当num门限值较小,即看门狗计数时间较短时,喂狗代码可放于程序中各循环体之后或均匀分布于整个主程序中。当num门限值较大,即看门狗计数时间较长时,喂狗代码可放于程序主循环体末尾。但是需注意看门狗计数时间必须长于正常工作时间,以免非正常复位。 1.2软件设计流程图:
以下为三部分详细程序设计 1.3“看门狗“定时器设置程序: “看门狗“定时器设置程序对定时器1进行设置。设定时器1为工作方式1。设
START 主程序 定时器1 定时器1设置 开定时器1 寄存器累加 溢出中断 中断服务程序 num+1 num=100? 复位 循环 喂狗代码
Yes No M为工作方式1下,定时器最大计数值,可知M=65536。所以,设定时器1的初值为X,则初值X与机器周期I机及定时时间T的关系为: (M-X)T机 = T (1) 其中:T机 =12个时钟周期 =12 /fosc。所以,定时器1的初值为: X = M-T/ T机 (2) 因此,当T1工作于方式1,定时时间为50ms,时钟频率fosc=12MHz时,可知: X=M- T/ T机 = 65536-50000/1 =15536=3CB0H 所以,“看门狗“定时器设置程序清单(c语言)如下: TMOD=0x10; //设置TMOD寄存器,定时器1设为方式1 TL1=0xB0; //设置定时器初值低8位 TH1=0x3C; //设置定时器初值高8位,设置为计时50ms ET1=1; //开定时器1溢出中断 EA=1; //开总中断控制 TF1=0; //定时器1溢出中断标志清零 TR1=1; //开定时器1
1.4溢出中断服务程序: 溢出中断服务程序为定时器1溢出中断服务程序,每执行一次,num加1,并判断num是否达到100,即计时5s。若已达到5s,I/O口P1.0输出复位信号。 溢出中断服务程序清单(c语言)如下: void int_T1() interrupt 3 using 3 //定时器1溢出中断服务程序 { num++; //每溢出一次标志加1 if (num==100) //当标志等于100时,即计时5s { P1=~(0x01); //P1.0输出1 } }
1.5喂狗代码: 喂狗代码主要功能为暂时关定时器1,定时器1寄存器清零,看门狗标志num清零和重新开启定时器1. 喂狗代码程序清单(c语言)如下: TR1=0; //喂狗代码,关定时器1 TL1=0xB0; //重新设置定时器初值 TH1=0x3C; TF1=0; //定时器1溢出中断标志清零 TR1=1; //开定时器1
1.6完整测试程序清单 完整测设程序分为两部分,以一个正向运行一次的流水灯程序和逆向无限循环流水灯程序组成。在正向进行一次流水灯程序时,看门狗代码不会复位单片机;逆向无限循环流水灯程序时,延时5s,看门狗复位单片机。完整测试程序清单(c语言)如下: #include "reg51.h" #include "stdio.h" unsigned int i,num; //设置变量 unsigned char temp;
void delay(unsigned int t); //声明delay函数 int main() { num=0; //看门狗复位标志 P1=~(0x00); //将P1口赋值为0 TMOD=0x10; //设置TMOD寄存器,定时器1设为方式1 TL1=0xB0; //设置定时器初值低8位 TH1=0x3C; //设置定时器初值高8位,设置为计时50ms ET1=1; //开定时器1溢出中断 EA=1; //开总中断控制 TF1=0; //定时器1溢出中断标志清零 TR1=1; //开定时器1
temp=0x01; //流水灯状态标志 for(i=0;i<8;i++) //流水灯程序(1) { P0=~temp; //点亮P0口对应的LED delay(100); temp<<=1; //点亮的LED灯前移一位 }
TR1=0; //喂狗代码,关定时器1 TL1=0xB0; //重新设置定时器初值 TH1=0x3C; TF1=0; //定时器1溢出中断标志清零 TR1=1; //开定时器1
while(1) //流水灯程序(2) { //倒序,无限循环 temp=0x80; for(i=0;i<8;i++) { P0=~temp; delay(100); temp>>=1; } } TR1=0; //喂狗代码 TL1=0xB0; TH1=0x3C; TF1=0; TR1=1; num=0;
return 0; }
void delay(unsigned int t) //延时子程序 { register unsigned int bt; for(;t;t--) for(bt=0;bt<255;bt++); }
void int_T1() interrupt 3 using 3 //定时器1溢出中断服务程序 { num++; //每溢出一次标志加1 if (num==100) //当标志等于100时,即计时5s { P1=~(0x01); //P1.0输出1 } } 完整测试程序清单(c语言反汇编版)如下: Q0000: LJMP Q00AB Q0003: PUSH ACC INC 0AH MOV A,0AH JNZ Q000D INC 09H Q000D: XRL A,#64H ORL A,09H JNZ Q0016 MOV P1,#0FEH Q0016: POP ACC RETI NOP NOP LJMP Q0003 Q001E: CLR A MOV 09H,A MOV 0AH,A