资源描述
毕 业 设 计
中文题目: 三种葡萄叶片病害的识别系统设计
学生姓名
系 别
专业班级
指导教师
成绩评定
2013年05月
目 录
1 引言 4
1.1 研究的目的和意义 4
1.2 该选题的研究现状及发展趋势 4
1.3主要研究内容 5
2 系统硬件设计 5
2.2 AT89S52最小系统 6
2.3 液晶显示模块 7
2.4矩阵键盘模块 9
2.5电源选择 10
3 知识库及推理系统设计 10
3.1知识库建立 10
3.2数据库建立 13
3.3推理系统构成 14
4 葡萄叶部病害诊断 软件系统设计 15
4.1葡萄叶部病害诊断系统流程图 15
4.2 显示汉字或图形流程图: 16
4.3系统子程序 16
4.3.1显示子程序 16
4.3.2按键子程序 17
4.3.3初始化子程序 18
4.3.4主函数 18
5 总结 21
参 考 文 献 22
附录1:相关英文文献 24
附录2:英文文献中文译文 28
摘 要
进入 21 世纪以来,信息技术已经广泛应用于生产生活的各个领域,我国农业生产正处于传统农业向现代化农业转型的重要时期。农业要实现现代化,实现生
产力质的飞跃,必须大力发展信息技术这一管理和传播手段。而作为信息技术重要内容的智能化的农作物病害诊断系统已成为精确农业研究领域的一个热点,具有广阔的应用前景和发展潜力,对于提高劳动者素质,实现农业现代化有着重要意义。
本文主要研究了人工智能、知识库建立,数据库建立,推理系统设计。以及专家系统在农业信息化领域的应用和发展现状,针对课题要求的葡萄叶部病害诊断系统提出了设计方案并予以实现。通过对经典专家系统设计方法的研究和分析发现,多知识库、多主体特性是专家系统发展的趋势。
本文研究的葡萄叶部诊断系统主要包括了知识库,数据库,推理系统设计三大模块。完成了相应的硬件电路,和软件程序编译,为了实现葡萄叶部病害的准确诊断,本文查阅了大量资料,通过与相关种植人员的讨论,建立了自己的推理系统,通过不断的调试,初步完成了葡萄叶部病害的诊断。
并且系统具有便携式、成本低的特点,对葡萄叶部病害诊断的分析提出了新的思路,对其他农作物病害诊断,分析具有参考价值,为农作物病害诊断专家系统的进一步研究奠定基础。
关键词:病害诊断 知识库 数据库 推理系统
三种葡萄叶片病害的识别系统设计
1 引言
1.1 研究的目的和意义
在对葡萄叶部病害诊断知识进行系统归纳!整理和详尽的用户需求分析的基础上,模拟了葡萄病害诊断的思维方式,采用了逻辑知识归纳的表示方法,建立了不确定性推理模型算法。本文着重围绕着以下问题开展了研究工作:
(1)在分析葡萄病害专家诊断思维模式的基础上,对葡萄病害诊断知识进行分析并确定了葡萄病害诊断因素。
(2)在分析葡萄病害专家诊断思维过程的基础上提出了采用模糊规则的不确定性推理模型算法来进行葡萄病害诊断推理,并在此基础上进行了修正,使其更复合实际诊断情况。
(3)应用该葡萄叶部疾病诊断系统,初步诊断葡萄叶部病害的几种类型。
本研究系统在农作物疾病诊断中的应用是符合我国现代农业发展状况和国际人工智能发展趋势的[1]。通过从专业的角度对农作物疾病诊断专家系统的研究,可以从根本上解决目前我国所开发的农作物疾病诊断专家系统不能适合于现地使用的问题[2],为专业人员开发相关的专家系统提供有益的资料和技术积累,并且根据对专家系统理论和专业的结合方式提供一些新的思路,通过一些农作物疾病专家系统的开发和应用解决农作物疾病专家不足问题,保证现代农业的健康发展[3]。
1.2 该选题的研究现状及发展趋势
农业专家系统(AgriculturalExpertSystem),它是运用人工智能的专家系统技术,结合农业领域特点发展起来的一门高新技术,是农业信息技术的一项重要内容[4],农业是一个很复杂的系统工程,涉及种植业和养殖业两大部分,而这两大部分又有各自不同、繁杂的分类,这就造成了农业专家系统所研究的内容也是十分复杂的,同时也就出现了各种类型的农业专家系统。农作物病虫害诊断专家系统的研究起源于1965年E.A.Feigenbaum等所开发的DENDRAL[5](一个推断化学分子结构的计算机系统)。经过接近50年的发展,专家系统技术由刚发展时不成熟阶段逐渐走向成熟阶段,也迅速拓展了它的应用范围,例化学工程、地质勘探、医疗诊断、金融决策、农业以及军事等领域。专家系统在农作物病虫害诊断方面,在70年代时,专家系统的研究开始应用于农作物病虫害的诊断,如1978年美国伊利诺斯大学开发的大豆病虫害诊断系统PLANT/ds及1983年日本千叶大学研制的番茄病虫害诊断专家系统MTCCS等。
虽然研究了这么多的农作物病虫害诊断专家系统,但是真正实用的寥寥无几。比如在1990年到2001年的CAB数据库 中,以pest diagnosis为关键词检索,仅检索到十几篇。较为成熟产品中最具有代表性的是澳大利亚昆上兰大学、国际水稻研究以及浙江大学植保系(程家安等)联合开发的用于水稻病虫害综合治理的病虫害诊断系统(RiceIPM),这个系统的内容包括了病虫害的危害特点、信息、识别特征以及防止措施防范等。
在国内,1997-1999年,浙江大学植保系与澳大利亚昆士兰大学联合开发的农作物检疫决策系统[6](QPM),该系统由知识库、LucID子系统包括Player和Builder两个子系统,它以检查表方式进行分类、鉴定。QPM系统对每个检疫对象的知识包括分类地位、图文信息、侵染和传播途径、传播途径、形态描述、为害性,生物学特性、检验方法以及防止措施、地域分布图等。农业专家系统技术应用最早的是农作物病虫害诊断系统,也是最为活跃的领域,有着良好的基础和发展前景。已经在农作物病虫害综合管理中发挥了重要的辅助决策作用有:蒋平安等的新疆棉花病虫害管理专家系统,庄铁成等的大豆病虫害诊断专家系统,于艳的黑龙江省水稻病虫害诊断专家系统,陈恺等的安徽水稻病虫害诊断专家系统等。
1.3主要研究内容
(1)基于单片机的葡萄叶部病害诊断,数据库,推理机建立;
(2)诊断信息,基于12864液晶屏逻辑显示;
(3)电路设计后进行硬件电路的焊接,进行调试;
(4)系统的原理图以及PCB图的制作。
2 系统硬件设计
系统整体设计对整个系统的开发有重要的作用,系统整体设计决定了系统的功能和特点,并且对后续的开发、升级有着重要的影响。市场上的植物病害专家系统大多基于机器视觉技术,需要强大,丰富的知识库。 但是这类仪器仪表价钱昂贵、需要专家使用,不便于种植人员使用,本文设计的仪器有价格低、便携式等优点。
2.1 硬件总体设计
硬件框图及原理图如下所示。
键盘控制电路
AT89S52
液晶显示电路
图1 系统硬件框图
图1为系统的整体结构、主要模块间的逻辑关系和大致功能。系统主要分为单片机最小系统、电源、矩阵键盘模块模块、液晶显示模块。单片机系统主要负责控制命令的解析,并控制其它模块完成相应功能;矩阵键盘模块的主要功能是进行病状信息数据的输入、液晶显示模块的主要功能是进行系统名称,病症逻辑信息,推理结果及病症图片的显示。
图2 系统原理图
2.2 AT89S52最小系统
AT89S52单片机加上晶振电路、复位电路,构成微控制器工作的最简模式,即最小系统。它其是整个系统的控制核心,完成了对系统的控制、检测和管理。结合外围电路,构成一个完整的系统。最小系统电路如图3示:
图3 最小系统原理图
2.3 液晶显示模块
本系统显示部分采用12864点阵液晶屏、接口时序;其中,模块有并行和串行两种连接方法(时序如下):8 位并行连接时序图,MPU 写资料到模块。
图4 8位并行MPU写数据时序
MPU 从模块读出资料
图5 8位并行MPU读数据时序
表1 128X64HZ 引脚说明
引脚号
引脚名称
方向
功能说明
1
VSS
-
模块的电源地
2
VDD
-
模块的电源正端
3
V0
-
LCD 驱动电压输入端
4
RS(CS)
H/L
并行的指令/数据选择信号;串行的片选信号
5
R/W(SID)
H/L
并行的读写选择信号;串行的数据口
6
E(CLK)
H/L
6 E(CLK) H/L
7
DB0
H/L
数据0
8
DB1
H/L
数据1
9
DB2
H/L
数据2
10
DB3
H/L
数据3
11
DB4
H/L
数据4
12
DB5
H/L
数据5
13
DB6
H/L
数据6
14
DB7
H/L
数据7
15
PSB
H/L
并/串行接口选择:H-并行;L-串行
16
NC
空脚
17
/RET
H/L
复位低电平有效
18
NC
-
空脚
19
LED_A
-
背光源正极(LED+5V)
20
LED_K
背光源负极(LED-OV)
2.4矩阵键盘模块
键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘,而靠软件编程来识别的称为非编码键盘;在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。本系统为了更多的输入信息并且为节省I/O口,采用4*4矩阵键盘。
原理图如图6所示:
图6 矩阵键盘
2.5电源选择
本设计中3.3V电源采用LM1117稳压模块在图7中,1引脚为5V输入端,2脚为3.3V的输出端,3引脚为地。
图7 LM1117稳压模块
3 知识库及推理系统设计
3.1知识库建立
将果树专家实际经验查询总结为主要信息点,包括需要诊断的三种病害名称,每种病害的病症特点,危害特点,受害位置,防止方法,及病斑特点图片等。
具体如图8-12所示。
图8 黑痘病病症及相关特点
图9 黑痘病病叶特点
图10 霜霉病病症及相关特点
图11 霜霉病病叶特点
图12 褐斑病病症及相关特点
图13 褐斑病病叶特点
3.2数据库建立
根据已有的知识库信息,将知识库的内容归纳逻辑化,总结如下:
表2 葡萄叶部病害信息表
病症名称
受害位置
病斑特点
影响危害
黑痘病
嫩梢,叶片,叶柄
褐色病斑变为黄色晕圈,病斑不规则,中央灰白色,稍凹陷。
危害幼嫩组织及叶片,使果实失去营养价值,枝叶干枯,停止生长。
霜霉病
叶片,叶脉
半透明油渍状病斑扩大为黄褐色病斑,潮湿时,叶背产生白色霉层。
树枝干枯脱落,停止生长。
褐斑病
叶片
边缘色深,中央略淡,病部背面有霉层
早期落叶,消弱树势影响花芽分化及第二年产量
表3 数据库信息与单片机按键对应结合
病症名称
受害位置
病斑特点
影响危害
黑痘病
1
2
3
霜霉病
4
5
6
褐斑病
7
8
9
3.3推理系统构成
查询大量葡萄病症特点,信息后,与种植人员交流协商对三种病症信息归纳推理:
每一种病有三个关键信息点确认,如受害位置,病斑特点,影响危害。三个信息点组成一个三位数,将多种组合放入系统软件程序中的一个一维数组。将归纳的病症信息离散,逻辑话与单片机建立联系。
例如:顺序按下1,4,7
按键1----受害位置:嫩梢,叶片,叶柄
按键4----病斑特点:褐色病斑变为黄色晕圈,病斑不规则,中央灰白色,稍凹陷。
按键7----影响危害:危害幼嫩组织及叶片,使果实失去营养价值,枝叶干枯,停止生长。
诊断结果为黑痘病。
逻辑数组建立:
Shujuku[]=
{147,247,347 //此病为黑痘病
158,258,268,358 //此病为霜霉病
169,167,269,267,367,369 //此病为褐斑病
157,148,248,257,348,357 //此病70%霜霉病,30%黑痘病
168,159,259,359,368 //此病50%霜霉病,50%褐斑病
149, //此病50%黑痘病,50%霜霉病
249,349 //此病50%黑痘病,50%褐斑病
}
其他数据 //输入错误
4 葡萄叶部病害诊断 软件系统设计
4.1葡萄叶部病害诊断系统流程图
系统初始化
按键扫描
病害位置显示
按键扫描
病斑位置显示
按键扫描
危害影响显示
数据整合
数据匹配
诊断信息显示
开始
结束
4.2 显示汉字或图形流程图:
开始
结束
液晶屏初始化
清屏
设置显示位置
调用显示内容
图14 显示流程图
4.3系统子程序
4.3.1显示子程序
void lcd_pos(uchar x,uchar y) //设定显示位置,在第x行,且在x行的第y个字符显示
{ uchar pos;
switch (x)
{ case 1: x=0x80; break;
case 2: x=0x90; break;
case 3: x=0x88; break;
case 4: x=0x98; break;
}
pos=x+y ;
write_12864com(pos);
}
void display0() //开机显示葡萄叶部病害诊断系统
{
uchar i;
write_12864com(0x80); //第一行显示
delay_50us(1);
for(i=0;i<16;i++)
write_12864dat(tab0[i]);
delay_50us(1);
}
4.3.2按键子程序
uchar keyscan(void) //键盘扫描函数,使用行列反转扫描法
{ uchar cord;
uchar cord_h,cord_l;//行列值中间变量
P1=0x0f; //行线输出全为0
cord_h=P1&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delay_50us(2); //去抖
if(cord_h!=0x0f)
{
cord_h=P1&0x0f; //读入列线值
P1=cord_h|0xf0; //输出当前列线值
cord_l=P1&0xf0; //读入行线值
///检测按键弹起
P1=0x0f; cord=P1&0x0f;
while(cord!=0x0f){ P1=0x0f; cord=P1&0x0f; }
return(cord_h+cord_l);//键盘最后组合码值
}
}
return(0xff); //返回该值
}
4.3.3初始化子程序
void initinal(void)
{
psb=1;
delay_50us(2);
write_12864com(0x30); //选择基本指令
delay_50us(4);
write_12864com(0x30);
delay_50us(4);
write_12864com(0x0c);
delay_50us(4);
write_12864com(0x01); //清屏指令
delay_50us(240);
write_12864com(0x06); //游标每写完一个字指针就加一
delay_50us(10);
}
4.3.4主函数
void main()
{
uchar key,num,a,b,c;
uchar k;
initinal();
display0();
HH:k=1;
while(1)
{
key=keyscan(); //调用键盘扫描,
switch(key)
{
case 0xee:num=1;break;//0 按下相应的键显示相对应的码值
case 0xde:num=2;break;//1
case 0xbe:num=3;;break;//2
case 0x7e:num=4;break;//3
case 0xed:num=5;break;//4
case 0xdd:num=6;break;//5
case 0xbd:num=7;break;//6
case 0x7d:num=8;break;//7
case 0xeb:num=9;break;//8
case 0xdb:num=10;break;//9
}
if((num!=0)&&(k==1))
{
a=num;display2(a);
k++;
}
if((a!=num)&&(k==2))
{
b=num;display2(b);
k++;
}
if((b!=num)&&(k==3))
{
c=num;display2(c);
k=1; break;
}
}
d=a*100+b*10+c;
num=a=b=c=0;
delay_50ms(10000);
display2(0);
jiance();
goto HH;
}
5 总结
本系统首先完成了葡萄叶部病害信息的收集,归纳,推理,建立了相应的知识库信息,数据库信息。其次通过软件编程将说用信息逻辑显示,逻辑推理后显示疑似病名。其次搭建了相应硬件电路,绘制了PCB图。通过本次设计熟悉了单片机开发系统的流程,熟悉了专家系统的设计流程,和规范步骤,为将来进一步完善系统做准备。
由于时间,条件和能力有限,本系统还需在以下几个方面作进一步完善:
(1)系统知识库的知识还不够完善,数据库数据还不够充分,知识整理和数据积累工作还有待进一步加强,力图能够进行细致的进行葡萄疾病诊断;
(2)目前本系统实现了葡萄病害的基本诊断,在以后的工作中,可以针对病害的特点选择相应的模型继续完善葡萄病害的诊断部分"
(3)考虑把系统投放到试点基地,和实际葡萄种植单位相结合,修改和完善系统,不断提高系统的实际应用能力。
参 考 文 献
[1]蔡自兴,徐光枯.人工智能及其应用(第二版).北京:清华大学出版社,2000.
[2]林尧瑞,张拔,石纯一专家系统理论与实践.北京:清华大学出版社,1988.
[3]余建桥,梁颖.农业数据库中知识发现的研究[J].计算机科学,1999,26(12):82-84.
[4]孔繁胜.知识库系统原理.杭州:浙江大学出版社,2000:l40-143.
[5]王耀南.计算智能信息处理技术及其应用.长沙:湖南大学出版社,1999.11.
[6]WhBaolin,XinghuoYu.FuzzyModellingandIdentifieationwithGenetieAlgorithmBasedLearning.FuzZySetsandSystems,2000,113(3):351-365.
[7]LemmonH.Comax:AnexPertsystemforeottoneroPmanagement.seienee,1986,233:29-33.
[8]吉明,王克俊.减摇鳍故障诊断专家系统.黑龙江自动化技术与应用[J],1998(3):12-14.
[9]吴玺,谭红.试论专家系统的应用及发展.计算机应用[J],2000(8):33-35.
[10]于福生.反向推理型诊断问题专家系统通用构建模型[J].系统工程理论与实践,1998(5)
[11]赵卫东,盛昭瀚,杜雪寒.基于神经网络的案例检索研究[J].东南大学学报,2000,30(3):46-50.
[12]曹存根.从专家分析实例中学习知识[J].软件学报,1994,5(6):7-9.
[13]倪志伟,蔡庆生.用神经网络来进行数据库中的知识发现[J].系统仿真学报,2000(6):22-24
致 谢
四年的大学时光很快,马上要面临毕业了,真是有些不舍。四年里,在老师的教诲下,经过学习的积累,学到了本专业的很多知识,也学会了如何做人。本次毕业设计从得到题目到查找资料到对题目的研究设定以及硬件电路板的制作和软件的调试。在这一个充满挑战和挫折,充满热情和打击的过程中,我感触颇深,这不仅是对我四年学习知识情况和我的应用动手能力的检验,而且还是对我的钻研精神,面对困难的心态,做事的毅力和耐心的考验。在这个过程中深刻的感受到了毕业设计的意义所在。
本次毕业设计要特别感谢的导师常若葵老师,她给予我精心的指导,让我顺利完成了毕业设计。同时我还要感谢测控教研室的各位老师,有了他们的支持,我才圆满的完成了任务。
今天的努力,是为了明天更加美好。
附录1:相关英文文献
附录2:英文文献中文译文
AT89C51单片机
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CCPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
主要性能参数:
与MCS-51产品指令系统完全兼容
4k字节可重擦写Flash闪速存储器
1000次擦写周期
全静态操作:OHz-24MHz
二级加密程序存储器
128X8字节内部RANT
32个可编程I/O口线
2个16位定时/计数器
6个中断源
可编程串行DART通道
低功耗空闲和掉电模式
功能特性概述:
AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至OHz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停正工作并禁正其它所有部件工作到下一个硬件复位。
引脚功能说明:
Vcc:电源电压
GND:地
PO口:PO口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“I”可作为高阻抗端用。
在访问外部数据存储器或程序存储器时,这组日线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,PO接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:P1是一个带内部上拉电阴的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑Il电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,囚为内部存在上拉电阻,某个引脚被外部信口拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,P1接收低8位地址。
P2口:P2是一个带有内部上拉电阻的8位双向I/O日,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,囚为内部存在上拉电阻,某个引脚被外部信口拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口线上的内容(也即特殊功能寄存器(CSFR)区中R2寄存器的内容),在整个访问期间小改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻阴级拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3日除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时口的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PRaG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的DO位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令ALE会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令据(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN出现。
EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址OOOOH-FFFFH)EA端必须保持低电平 (接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2:振荡器反相放大器的输出端。
时钟振荡器
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图5。
外接石英晶体(或陶瓷谐振器)及电容C1,C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF士IOpF,而如使用陶瓷谐振器建议选择40pF士IOFo
用户也可以采用外部时钟。采用外部时钟的电路如图5右图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符和产品技术条件的要求。
空闲节电模式
AT89C51有两种可用软件编程的省电模式,它们是空闲模式和掉电工作模式。这两种方式是控制专用寄存器PCON(即电源控制寄存器)中的PD(PCOV.1)和IDL(PCOV.0)位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。IDL是空闲等待方式,当IDL=1,激活空闲工作模式,单片机进入睡眠状态。如需同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。
在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持小变。空闲模式可由任何允许的中断请求或硬件复位终止。
终止空闲工作模式的方法有两种,其一是任何一条被允许中断的事件被激活,IDL (PCOV.0)被硬件清除,即刻终止空闲工作模式。程序会首先响应中断,进入中断服务程序,执行完中断服务程序并紧随RETI(中断返回)指令后,下一条要执行的指令就是使单片机进入空闲模式那条指令后而的一条指令。
其二是通过硬件复位也可将空闲工作模式终止。需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其它端口。为了避免可能对口产生意外写入,激活空闲模式的那条指令后一条指令应是一条对端口或外部存储器的写入指令。
掉电模式
在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止比掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但小改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。
34
展开阅读全文