黑龙江东方学院
《单片机原理及应用》结课设计报告
按键看门狗
学 部 计算机科学与电气工程
专 业 计算机科学与技术
姓 名
年 级 09级
学 号 09101207
任课教师
设计周期 3周
黑龙江东方学院《单片机原理及应用》结课设计任书
目 录
第1章 系统概述……………………………………………………………………3
1.1 设计目的和意义 ………………………………………………………….…3
1.2 设计的主要内容 ………………………………………………………….…3
第2章 设计方案……………………………………………………………………3
2.1 方案实施所需的条件 ………………………………………………….……3
2.1.1 软件条件 ………………………………………………………….….…3
2.1.2 硬件或仿真条件 …………………………………………………..……3
2.2 设计难点与解决方案 …………………………………………………….…3
2.2.1 设计难点 …………………………………………………………..……3
2.2.2 解决方案 ……………………………………………………………..…3
第3章 软件设计……………………………………………………………………4
3.1 功能模块划分 ………………………………………………………….……4
3.2 各模块程序流程及代码…………………………………………………...…6
第4章 目标系统 ………………………………………………………………..…7
4.1 仿真系统运行演示……………………………………………………………7
4.2 系统展望………………………………………………………………………7
参考文献…………………………………………………………………………….…8
第1章 系统概述
1.1 设计目的和意义
目的:贯彻落实理论联系设计的教学原则,巩固和扩大已学过的单片机及电子技术的基础知识,加强模块化设计思想的培养,养成良好的设计、编程习惯,同时也增加对本专业的兴趣,培养实际操作和编程技能,为今后专业课程的学习和走向工作岗位打下良好的基础。
意义:随着社会和经济的不断发展、人民的生活水平的不断上升、物质财富的不断增长所带来的安全问题,令人们已经不容忽视它的存在,为了维护个人或集体的利益不受损失、为了有个更好的发展环境,生产商不断努力,一款款新的防盗产品应运而生!
1.2 设计的主要内容
第一只LED仅在开始时亮,这时看门狗被启动,当第二只LED开始闪烁时,程序开始正常运行,第一只LED熄灭,程序中的定时器中断函数每隔16ms喂狗,这样使系统持续正常运行。当按下K1按钮时会停止喂狗,这模拟了程序跑飞得状态,这时定时中断函数不再正常运行,导致单片机自动重启。
第2章 研究方案
2.1 方案实施所需的条件
2.1.1 软件条件
软件平台用的是Keil、Proteus软件
语言:C语言
2.1.2 硬件条件
PC机一台,定时寄存器WDTRST和WDTRSG
2.2 设计难点与解决方案
2.2.1 设计难点
程序中的跳转指令的运用很重要,当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。
2.2.2 解决方案
通过查找书籍与有关资料及与同学讨论。
第3章 软件设计
3.1 功能模块划分
模块一:延时
模块二:主程序
模块三:定时器0中断程序
图3-1 系统功能模块图
3.2 各模块程序流程及代码
图3-2模块一流程
模块一代码:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sfr WDRST = 0xA6;
sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit K1 = P1^4;
//延时
void DelayMS(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
图3-3模块二流程
模块二代码:
void main()
{
LED1 = 0; //启动时LED1亮
LED2 = 1;
DelayMS(2000);
TMOD = 0x01; //定时器模式一
TH0 = -16000/256; //16ms定时
TL0 = -16000%256;
IE = 0x82;
WDRST = 0x1E; //在程序初始化时激活WD
WDRST = 0xE1;
while(1)
{
if(K1==0) // K1停止喂狗,观察系统是否重启,LED1被点亮
{
TR0 = 0;
LED1 = 1; //正常运行时LED1熄灭
LED2 = ~LED2; //LED2闪烁
DelayMS(200);
}
}
}
图3-4模块三流程
模块三代码:
void Timer0() interrupt 1
{
TH0 = -16000/256; //16ms定时
TL0 = -16000%256;
WDRST = 0x1E; //喂狗指令
WDRST = 0xE1;
}
第4章 目标系统
4.1 仿真系统运行演示
图4-1 仿真系统运行演示1
图4-2 仿真系统运行演示2
4.2 系统展望
单片机的工作常会不受到来自外界电磁场的干扰,不会造成程序跑飞,单片机系统可继续工作。
参考文献
[1] 赵志刚.《Protel DXP 实用教程(修订本)》.清华大学出版社.北京交通大学出版社2007年8月。
[2] 刘和平《PIC16F877X单片机实用软件与接口技术——C语言及其应用》.北京:航空航天大学出版社.20##年1月。
[3] 甘仞初《信息系统分析与设计》.北京:高等教育出版社.20##年6月。
[4] 吴洁明《软件工程应用实践教程》.北京:清华大学出版社.20##年8月。
[5] 胡汉才 单片机原理及接口技术,清华大学出版社,1996年。
[6] 苏家健《单片机原理及应用技术》,高等教育出版社,20##年11月。
[7] 张毅坤《单片微型计算机原理及应用》,西安电子科技大学出版社,1998年。
[8] 毕万新《单片机原理及接口技术》,大连理工出版社,20##年。
[9] 王时胜,姜建平,采用单片机实现PWM式D/A转换技术,电子质量,20##年。
[10]刘歌群、卢京潮、闫建国,用单片机产生7路舵机控制PWM波的方法,机械与电子。
第二篇:单片机看门狗使用
89S51看门狗功能的使用方法
在ATMEL的89S51系列的89S51与89C51功能相同,指令兼容。HEX程序无需任何转换可以直接使用。89S51只比89C51增加了一个看门狗功能。
向看门狗寄存器(WDTRST地址是0A6H)中先写入01EH,再写入0E1H,即可激活看门狗。
汇编程序如下:
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
C51程序如下:
在AT89X51.h声明文件中增加一行 sfr WDTRST = 0xA6来声明看门狗寄存器。 Main()
{
WDTRST=0x1E; //先送1E
WDTRST=0xE1; //后送E1
喂狗指令与激活相同:
WDTRST=0x1E;
WDTRST=0xE1;
注意事项:
1. 89S51的看门狗必须由程序激活后才开始工作。
2. 看门狗使用的是CPU的晶振。在晶振停振的时候看门狗也无效。
3. 89S51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为12M时每16个毫秒需喂狗一次。