基于单片机控制的红外防盗报警器的设计_第1页
基于单片机控制的红外防盗报警器的设计_第2页
基于单片机控制的红外防盗报警器的设计_第3页
基于单片机控制的红外防盗报警器的设计_第4页
基于单片机控制的红外防盗报警器的设计_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE33毕业设计(论文)题目:红外线报警器的设计姓名:学号:专业:电子信息科学与技术系别:电子信息指导教师:起止日期:2021-2——2021-6防盗报警系统的设计本设计就是为了满足预防抢劫、盗窃等意外事件的需要而设计的果园防盗报警系统。目前市面上主要有压力触发式防盗报警器、开关电子防盗报警器和压力遮光触发式防盗报警器等各种报警器,但这几种比较常见的报警器都存在一些缺点。本系统采用了热释电红外传感器,它的制作简单、成本低,安装比较方便,而且防盗性能比较稳定,抗干扰能力强、灵敏度高、安全可靠。这种防盗器安装隐蔽,不易被盗贼发现。同时它的信号经过单片机系统处理后方便和PC机通信,便于多用户统一管理。本设计主要包括硬件和软件设计两个部分。硬件部分包括单片机控制电路、红外探头电路、驱动执行报警电路、LED控制电路等部分组成。处理器采用51系列单片机AT89S51。整个系统是在系统软件控制下工作的。软件部分可以划分为以下几个模块:数据采集、键盘控制、报警和显示等子函数。[关键词]:单片机、红外传感器、数据采集、报警电路。目录1.绪论 1

1.1前言 1

1.2设计任务与要求 12.热释电红外传感器概述 22.1PIR传感器简单介绍 22.2PIR的原理特性 22.3PIR结构特性 33.AT89S51单片机概述 63.1AT89S51单片机的结构 63.1.1管脚说明 83.1.2主要特性 113.1.3振荡器特性 113.2AT89S51单片机的工作周期 123.3AT89S51单片机的工作过程和工作方式 133.4AT89S51的指令系统 164.方案设计 184.1系统概述 184.2总体设计 194.3系统硬件选择 194.4硬件电路实现 204.5软件的程序实现 215.结论概述 275.1主要结论 275.2结束语 27致谢 28参考文献 29基于单片机控制的红外防盗报警器的设计1.绪论前言人们生活水平不断提高,对私有财产的保护意识在不断的增强,因而对防盗措施提出了新的要求。本设计就是为了满足预防抢劫、盗窃等意外事件的需要而设计的果园防盗报警系统。目前,葡萄已成为农民增收的主要经济作物,但每年葡萄成熟季节,由于多种因素使得成熟的葡萄遭受损失或毁坏。为了防止葡萄受损或被盗,果农通常在葡萄园周围铺上铁丝网,一来可用于葡萄挂果,二来可以防盗。一旦有异常,铁丝网牵动葡萄树就会发出声音,提醒守园人,有外客造访。这些铁丝网还可以直接阻止一些动物的侵袭。一般,夜晚最易失窃,这就需要守园人整夜守着葡萄园子,一旦听到风吹草动就得出去巡查。无疑给守园人造成了极大的困扰,休息时间没有保障,长期精神紧张。因此,配置一套经济实用的葡萄园专用防盗报警系统是非常必要的。就目前市面上装备主要有压力触发式防盗报警器、开关电子防盗报警器和压力遮光触发式防盗报警器等各种报警器,但这几种比较常见的报警器都存在一些缺点:(一)压力触发式防盗报警器由于压力板式安装在垫子内,当主机停止工作,很容易失报和误报,其可靠性低。(二)开关式电子防盗报警器一般只有一个定点,有效范围小,而且各种开关也易坏,失报和误报率就高,不可靠。(三)遮光式触发防盗报警器在受到太阳光照射就会引起误报,同时若遮住了光也会引起误报,所以这种报警器的可靠性也不高。还有,就闭路监控电路防盗系统而言:它的安装线路复杂,而且技术要求比较高,价格也比较昂贵,不利于广泛利用。本系统采用了热释电红外传感器,它的制作简单、成本低,安装比较方便,而且防盗性能比较稳定,抗干扰能力强、灵敏度高、安全可靠。这种防盗器安装隐蔽,不易被盗贼发现,同时它的信号经过单片机系统处理后方便和PC机通信,便于多用户统一管理和用户操作。设计任务与要求(1)该设计主要包括硬件和软件设计两个部分。模块划分为数据采集、键盘控制、报警和显示等模块子函数。(2)本红外线防盗报警系统由热释电红外传感器、智能报警器、单片机控制电路、LED控制电路及相关的控制管理软件组成。用户终端完成信息采集、处理、数据传送、功能设定、本地显示、本地报警等功能。终端由中央处理器、输入模块、输出模块、通信模块、功能设定模块等部分组成。(3)系统可实现功能。为了探测移动人体,通常使用双元件型热释电红外传感器,在这种传感器内部,两个敏感元件反相连接,当人体静止时两元件极化程度相同,互相抵消。但人体移动时,两元件极化程度不同,净输出电压不为0,从而达到了探测移动人体的目的。因此可把报警系统设置在外出布防状态,使探测器工作。当有人闯入时,热释电红外传感器将探测到动作,设置在监测点上的红外探头将人体辐射的红外光谱变换成电信号,经放大电路、比较电路送至门限开关,打开门限阀门送出TTL电平至AT89S51单片机,经单片机处理运算后驱动执行报警电路使警号发声。(4)红外线具有隐蔽性,在露天防护的地方设计一束红外线可以方便地检测到是否有人。此类装置设计的要点:其一是能有效判断是否有人员活动;其二是尽可能大地增加防护范围。当然,系统工作的稳定性和可靠性也是追求的重要指标。至于报警可采用声光信号。2.1方案讨论如何使用传感器来简单地实现移动人员检测呢?在设计这样的系统时,应该记住两个目标:一是低功率,二是低成本。这两者都是在设计移动检测系统时需要考虑的关键因素。1.选择传感器传感器是指能感受规定的被测量并按照一定的规律转换成可用信号的器件或装置,通常由敏感元件和转换元件组成。传感器是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。它是实现自动检测和自动控制的首要环节。防盗报警系统的前端探测部分主要是各种类型的探测器,其中最主要的是入侵探测器。入侵探测器通常由传感器、信号处理器和输出接口组成,入侵探测器主要包括有主动红外入侵探测器、被动红外入侵探测器、微波入侵探测器、微波和被动红外复合入侵探测器、超声波入侵探测器、振动入侵探测器、音响入侵探测器、磁开关入侵探测器、超声和被动红外复合入侵探测器等,其中最常用的是被动红外探测器。被动红外探测器的组成:被动红外探测器主要是探测接收外界的红外辐射,探测器本身不发射任何能量,而只对人体发出的红外线波段敏感。人体辐射的红外光波长是3~50μm,其中8~14μm占46%,峰值波长在9.5μm,所以被动红外探测器主要是接收波长8~14μm的红外辐射。工作原理被动红外探测器基本工作原理是:当防范区域内有人体移动时,人体发出的红外线经过光学透镜聚焦到热释电红外传感器上,热释电红外传感器感应到红外线信号,输出热电信号,输出的热电信号非常微弱,并且夹杂着很多干扰信号,为此需要设计特殊的热电信号处理电路,在放大热电信号的同时,滤除掉造成干扰的杂波信号。由于要检测是否有活动的人员,所以通过研究各种类型的传感器,比较各类传感器的优点、缺点和合理性,最终确定本设计选择的传感器是双元件热释红外传感器。其基本原理为:当防范区域内有人体移动时,人体发出的红外线经过光学透镜聚焦到热释电红外传感器上,热释电红外传感器感应到红外线信号,输出热电信号,输出的热电信号非常微弱,并且夹杂着很多干扰信号,为此需要设计特殊的热电信号处理电路,在放大热电信号的同时,滤除掉造成干扰的杂波信号。2.热释电红外传感器2.1热释电红外线传感器简介热释电红外线传感器是80年代发展起来的一种新型高灵敏度探测元件,它能以非接触形式检测出人体辐射的红外线能量的变化,并将其转化成电压信号输出。将这个电压信号加以放大,便可驱动各种控制电路,如作电源开关控制、防盗防火报警、自动检测等。热释电红外线传感器应用电路如下:为了探测移动人体,通常使用双元件型热释电红外传感器,在这种传感器内部,两个敏感元件反相连接,当人体静止时两元件极化程度相同,互相抵消。但人体移动时,两元件极化程度不同,净输出电压不为0,从而达到了探测移动人体的目的。2.2PIR的原理特性热释电红外线传感器主要是由一种高热电系数的材料,如锆钛酸铅系陶瓷、钽酸锂、硫酸三甘钛等制成尺寸为2*1mm的探测元件。在每个探测器内装入一个或两个探测元件,并将两个探测元件以反极性串联,以抑制由于自身温度升高而产生的干扰。由探测元件将探测并接收到的红外辐射转变成微弱的电压信号,经装在探头内的场效应管放大后向外输出。为了提高探测器的探测灵敏度以增大探测距离,一般在探测器的前方装设一个菲涅尔透镜,该透镜用透明塑料制成,将透镜的上、下两部分各分成若干等份,制成一种具有特殊光学系统的透镜,它和放大电路相配合,可将信号放大70分贝以上,这样就可以测出10-20米范围内人的行动。

菲涅尔透镜利用透镜的特殊光学原理,在探测器前方产生一个交替变化的“盲区”和“高灵敏区”,以提高它的探测接收灵敏度。当有人从透镜前走过时,人体发出的红外线就不断地交替从“盲区”进入“高灵敏区”,这样就使接收到的红外信号以忽强忽弱的脉冲形式输入,从而强其能量幅度。

人体辐射的红外线中心波长为9-10um,而探测元件的波长灵敏度在0.2-20um范围内几乎稳定不变。在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为7-10um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器。一旦人侵入探测区域内,人体红外辐射通过部分镜面聚焦,并被热释电元接收,但是两片热释电元接收到的热量不同,热释电也不同不能抵消,经信号处理而输出电压信号。在该探测技术中,所谓“被动”是指探测器本身不发出任何形式的能量,只是靠接收自然界能量或能量变化来完成探测目的。被动红外报警器的特点是能够响应入侵者在所防范区域内移动时所引起的红外辐射变化,并能使监控报警器产生报警信号,从而完成报警功能。PIR结构特性及安装图1是一个双探测元热释电红外传感器的结构示意图。使用时D端接电源正极,G端接电源负极,S端为信号输出。该传感器将两个极性相反、特性一致的探测元串接在一起,目的是消除因环境和自身变化引起的干扰。它利用两个极性相反、大小相等的干扰信号在内部相互抵消的原理来使传感器得到补偿。对于辐射至传感器的红外辐射,热释电传感器通过安装在传感器前面的菲涅尔透镜将其聚焦后加至两个探测元上,从而使传感器输出电压信号。制造热释电红外探测元的高热电材料是一种广谱材料,它的探测波长范围为0.2-20μm。为了对某一波长范围的红外辐射有较高的敏感度,该传感器在窗口上加装了一块干涉滤波片。这种滤波片除了允许某些波长范围的红外辐射通过外,还能将灯光、阳光和其它红外辐射拒之门外。当人体辐射的红外线通过菲涅尔透镜被聚焦在热释电红外传感器的探测元上时,电路中的传感器将输出电压信号,然后使该信号通过一个由C1、C2、R1、R2组成的带通滤波器,该滤波器的上限截止频率为16Hz,下限截止频率为0.16Hz。由于热释电红外传感器输出的探测信号电压十分微弱(通常仅有1mV左右),而且是一个变化的信号,同时菲涅尔透镜的作用又使输出信号电压呈脉冲形式(脉冲电压的频率由被测物体的移动速度决定,通常为0.1-10Hz左右),所以应对热释红外传感器输出的电压信号进行放大。本设计运用集成运算放大器LM324来进行两级放大,以使其获得足够的增益。本设计所用的热释感器就采用这种双探测元的结构。其工作电路原理及设计电路如图2所示,在VCC电源端利用C1和R2来稳定工作电压,同样输出端也多加了稳压元件稳定信号。当检测到人体移动信号时,电荷信号经过场效应管FET放大后,经过C2,R1的稳压后使输出变为高电位,再经过三极管Q2的转化,输出OUT为低电平。图2热释电红外传感器原理图

被动红外探测器光学系统的类型被动红外探测器光学系统包括菲涅尔透镜、抛物面反射镜、遮挡片三种类型。图双元红外传感器示意图菲涅尔透镜作用有两个:一是聚焦作用,即将热释的红外信号折射(反射)在PIR上;第二个作用是将警戒区内分为若干个明区和暗区。菲涅尔透镜是凸透镜,将物体的红外影像投射在热电元件表面。热释电红外传感器其热释电器件及前置放大电路封装在圆型金属帽内,金属帽顶部方型开孔镶嵌有抗冷白光的硅红外滤光片,底部有金属引脚,分别为电源引脚,地线引脚,热电信号输出脚。热释电器件是热释电传感器的核心元件,是将热辐射变为电流的动态能量转换元件,热释电器件的电特征属性是一个以热电晶体薄膜为电介质的平板电容器,随着温度的改变,热电晶体表面自发极化电荷其规模具有跟随变化的性质,即热辐射可引起该电容器的电容量变化,从而可利用这一特性来探测变化的热辐射。热释电红外传感器包括单元、双元、四元三种类型。现在主要使用的是双元和四元传感器。被动红外传感器优缺点优点主要为:1、本身不发射任何类型辐射,安全可靠;2、价格低廉。缺点主要为:1、容易受各种热源、阳光源干扰;2、受环境温度限制,环境温度和人体温度接近时,灵敏度下降;针对被动红外探测器存在的缺点,可以采用不同的措施来避免产品误报和漏报现象。一方面是采用新技术来加强抗干扰能力;另一方面是在安装方面加以注意。4、安装方向产品在安装过程中还需要注意安装方向,由于透镜的光学特性决定横切探测区域比较敏感,所以产品安装时要注意入侵方向与探测器视场的夹角,最好成90o垂直,这样就可以保证有人入侵时能最大程度横切探测区域。3.AT89S51单片机概述3.1AT89S51单片机的结构AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。图3-1为AT89S51单片机的基本组成功能方块图。有图可见,在这一块芯片上,集成了一台微型计算机的主要组成部分,其中包括CPU、存储器、可编程I/O口、定时器/计数器、串行口等,各部分通过内部总线相连。下面介绍几个主要部分。外时钟源外部事件计数时钟电路程序存储器4KBROM时钟电路程序存储器4KBROM数据存储器256BRAM/SFR2×16位定时器/计数器AT89S51CPU64KB总线扩展控制器并行I/O串行口中断控制系统图3-1AT89S51功能方块图1.中央处理器(CPU)中央处理器是单片机最核心的部分,是单片机的大脑和心脏,具有运算和控制功能。AT89S51的CPU是一个字长为8位的中央处理单元,即它对数据的处理是按字节为单位进行的。2.数据存储器(内部RAM)芯片中共有256B的RAM单元,但其中后128个单元(80H-0FFH)被专用寄存器占用,能作为寄存器提供用户使用的只是前128个单元(00-7FH),用于存放可读写的数据。因此常说的内部数据存储器是指前128个单元,简称内部RAM。3.程序存储器(内部ROM)芯片内部有4KB的掩膜ROM,可用于存放程序、原始数据和表格等,因此称为程序存储器,简称内部ROM。4.定时器/计数器出于控制应用的需要,芯片内部共有两个16位的定时器/计数器以实现定时或计数功能,并以其定时或计数结果对单片机进行控制。5.并行I/O口AT89S51共有4个8位的I/O口(P0、P1、P2、P3口),可以实现数据的并行输入/输出。6.串行口AT89S51有1个全双工的可编程串行口,以实现单片机和其他设备之间的串行数据传送。该串行口功能较强,既可以作为全双工异步通信收发器使用,也可以作为同步移位寄存器使用。7.中断控制系统AT89S51的中断系统功能较强,可以满足一般控制应用的需要。它共有5个中断源:2个外部中断源/INTO和/INT1;3个内部中断源,即2个定时/计数中断,1个串行口中断。8.时钟电路AT89S51单片机芯片内部有时钟电路,但石英晶体和微调电容需要外接。时钟电路为单片机产生时钟脉冲序列,系统允许的最高晶振频率为12MHz。9.内部总线上述部件只有通过内部总线将其连接起来才能构成一个完整的单片机系统。总线在图中以带箭头的空心线表示。系统的地址信号、数据信号和控制信号分别通过系统的三大总线—地址总线、数据总线和控制总线进行传送,总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。由上所述,AT89S51虽然是一块芯片,但它包括了构成计算机的基本部件,因此可以说它是一台简单的计算机。AT89S51较详细的内部结构如图3-2所示。图3-2AT89S51内部结构框图3.1.1管脚说明AT89S51是一种高效微控制器。采用40引脚双列直插封装(DIP)形式,如图3-3所示。AT89S51单片机是高性能单片机,因为受引脚数目的限制,所以有不少引脚具有第二功能。图3-3AT89S51引脚图图3-4SMT的封装图VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。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口也可作为AT89S51的一些特殊功能口,如下表所示:

P3口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。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:来自反向振荡器的输出。3.1.2主要特性:·与MCS-51兼容

·4K字节可编程闪烁存储器寿命:1000写/擦循环

数据保留时间:10年

·全静态工作:0Hz-24Hz

·三级程序存储器锁定

·128*8位内部RAM

·32可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路3.1.3振荡器特性(1)XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。(2)芯片擦除整个EPROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦除操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.2AT89S51单片机的工作周期单片机有了硬件和软件就可以在控制器发出的控制信号作用下有条不紊地工作,控制信号必须定时发出,为了定时计算机内部必须有一个准确的定时脉冲。这种定时脉冲是由晶体振荡器产生的,并组成下面几种工作周期,如图3-6所示。这种定时脉冲是由晶体振荡器产生的,并组成下面几种工作周期,如图1.2所示。图3-6振荡周期、状态周期、机器周期和指令周期振荡周期:是指为单片机提供时钟脉冲信号的振荡源的周期。即由单片机的晶体振荡器产生的时钟脉冲的周期。状态周期:每个状态周期为振荡周期的2倍,是振荡周期经二分频后得到的。在一个状态周期中有两个时钟脉冲,通常称它为P1、P2。机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个振荡周期。在一个机器周期内,CPU可以完成一个独立的操作。指令周期:它是指CPU完成一条操作所需的全部时间。控制部件是单片机的神经中枢,以主振频率为基准(主振周期即为振荡周期),控制器控制CPU的时序,对指令进行译码,然后发出各种控制信号,它将各个硬件环节组织在一起。一般情况下,算术逻辑操作发生在时相P1期间,而内部寄存器之间的传送发生在时相P2期间,这些内部时钟信号无法从外部观察,故用XTAL2引脚振荡信号作参考。3.3AT89S51单片机的工作过程和工作方式单片机工作过程遵循现代计算机的工作原理(冯·诺依曼原理),即程序存储和程序控制。存储程序是指人们必须事先把计算机的执行步骤序列(即程序)及运行中所需的数据,通过一定的方式输入并存储在计算机的存储器中。程序控制是指计算机能自动地逐一取出程序中的指令,加以分析并执行规定的操作。单片机的工作方式有:复位、程序执行、掉电保护和低功耗、编程、校验与加密等方式。1.复位方式通过某种方式,使单片机内各寄存器的值变为初始状态的操作称为复位。复位方式是单片机的初始化操作。单片机除了正常的初始化外,当程序运行出错或由于操作错误而使系统处于死循环时,也需要按复位键重启机器。MCS—51单片机复位后,程序计数器PC和特殊功能寄存器复位的状态如图3-7所示。复位不影响片内RAM存放的内容,而ALE在复位期间将输出高电平。由图3-7可以看出,复位后:(1)(PC)=0000H表示复位后程序的入口地址为0000H,即单片机复位后从0000H单元开始执行程序;(2)(PSW)=00H,其中RS1(PSW.4)=0,RS0(PSW.3)=0,表示复位后单片机选择工作寄存器0组;(3)(SP)=07H表示复位后堆栈在片内RAM的08H单元处建立;(4)P0口~P3口锁存器为全1状态,说明复位后这些并行接口可以直接作输入口,无须向端口写1。定时器/计数器、串行口、中断系统等特殊功能寄存器复位后的状态对各功能部件工作状态的影响。能部件工作状态的影响。图3-7PC与SFR复位状态表单片机在时钟电路工作以后,在RST/VPD端持续给出2个机器周期的高电平时就可以完成复位操作。例如使用晶振频率为12MHz时,则复位信号持续时间应不小于2us。复位方法一般有上电自动复位和外部按键手动复位以及“看门狗”复位三种类型。前两种见图3-8所示。“看门狗”电路则是一种集成有单片机的电源监测、按键复位以及对程序运行进行监控,防止程序“跑飞”而出现死机而设计的电路。图3-8(a)上电复位电路;(b)上电/外部复位电路2.程序执行方式程序执行方式是单片机的基本工作方式。由于复位后PC=0000H,因此程序执行总是从地址0000H开始,为此就得在0000H处开始的存储单元安放一条无条件转移指令,以便跳转到实际程序的入口去执行。3.待机方式待机方式也称空闲方式,是一种节电工作方式。在待机工作方式中,振荡器保持工作,时钟脉冲继续输出到中断、串行口、定时器等功能部件,使它们继续工作,但时钟脉冲不再送到CPU,因而CPU停止工作。4.掉电方式掉电方式,也被称为停机方式。在掉电方式中,振荡器工作停止,单片机内部所有功能部件停止工作。它同样是一种为降低功耗而设计的节电工作方式。待机方式和掉电方式都是为了进一步降低功耗而设计的节电工作方式,它们特别适合于电源功耗要求很低的应用场合。这类系统往往是直流供电或停电时依靠备用电源供电,以维持系统的持续工作。CHMOS型单片机的节电方式是由特殊功能寄存器PCON控制,其具体使用可参考相关书籍和手册。空闲和掉电模式外部引脚状态如下图3-9所示:图3-9空闲和掉电模式外部引脚状态5.编程和校验方式对于内部集成有EPROM可以进入编程或校验方式。(1)内部EPROM编程编程时,时钟频率应定在3-6MHz的范围内,其余各有关引脚的接法和用法如下:P1口和P2口的P2.0~P2.3为EPROM的4k地址输入,P1为8位地址;P2.4~P2.6以及PSEN应为低电平;P0口为编程数据输入;P2.7和RST应为高电平;RST的高电平可为2.5V,其余的都以TTL的高低电平为准;EA/VPP端加+21V的编程脉冲,此电压要求稳定,不能大于21.5V,否则会损坏EPROM在出现正脉冲期间,ALE/PROG端加上50ms的负脉,完成一次写入。(2)EPROM程序校验在程序的保险位未设置前,无论在写入的当时或写入以后,均可将片上程序存贮器的内容读出进行检验,在读出时,除P2.7脚保持为TTL低电平之外,其他引脚与写入EPROM的连接方式相同。要读出的程序存贮器单元地址由P1口和P2口的P2.0~P2.3送入,P2口的其他引脚及保持低电平,ALE、EA和RST接高电平,检验的单元内容由P0口送出。在检验操作时,需在P0的各位外部加上电阻10kΩ。(3)程序存贮器的保险位AT89S51内部有一个保险位,亦称保密位,一旦将该位写入便建立了保险,就可禁止任何外部方法对片内程序存贮器进行读写。将保险位写入以建立保险位的过程与正常写入的过程相似,仅只P2.6脚要加TTL高电平而不是像正常写入时加低电平,而P0、P1和P2的P2.0~P2.3的状态随意,加上编程脉冲后就可使保险位写入。保险位一旦写入,内部程序存贮器便不能再被写入和读出校验,而且也不能执行外部存贮器的程序。只有将EPROM全部擦除时,保险位才能被一起擦除,也才可以再次写入。通过以上对单片机硬件系统的简单介绍,应该已经掌握了单片机的内部结构及工作的原理和过程,但是单片机要实现它的强大控制功能特性,只有硬件是不能工作的,还必须依靠它的指令才能发挥单片机的强大作用。下面介绍单片机的指令系统。AT89S51的指令系统1.机器指令的编码格式指令是规定计算机进行某种操作的命令,一条指令只能完成有限的的功能,为使计算机完成一定的或复杂的功能就需要一系列指令。计算机能够执行的各种指令的集合称为指令系统。单片机的主要功能也是有指令系统体现的。机器指令通常由两部分组成,即操作码和操作数(或操作数地址)。操作码用于规定指令的操作功能,如加、减、乘、除等。操作数是指参与操作的数据,它可能是一个具体的数据,也可能是地址或符号。2.汇编语言指令格式汇编指令由操作码或伪操作码、目的操作数和源操作数构成,标准书写格式如下:[标号:]操作码/伪操作码[操作数][;注释](1)[]表示该项为可选项。(2)标号:又称指令地址符号。它是用户设定的符号,代表着该指令所在的地址。(3)操作码/伪操作码:是英文缩写的指令助记符。它规定了指令的操作功能,它所对应的汇编语句称为指令性语句,在汇编后有具体的目标代码。而伪操作码说明汇编程序如何完成汇编工作,任何一条指令都必须有操作码或伪操作码,不得省略。(4)操作数:是指参加操作的数据或数据所在的地址。在指令系统中,操作数可以是1个、2个或3个,也可以没有。不同功能的指令,操作数作用不同。例如,传送指令多数有两个操作数,写在左边的称为目的操作数(表示操作结果存放的单元地址),写在右边的称为元操作数(支出操作数的来源)。例如,一条传送指令的书写格式为:MOVA,#10H;表示将#10H存储单元的内容送到累加器A中。操作码/伪操作码和操作数之间必须用空格分开,操作数与操作数之间必须用逗号分开。(5)注释:是为该条指令作的说明,以便于阅读。3.寻址方式寻址方式包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址等共7种寻址方式,且每一种寻址方式所涉及的存储器空间各有不同。指令中的源操作数可以使用七种寻址方式中的任何一种,但是目的操作数只能使用寄存器寻址、寄存器间接寻址、直接寻址和位寻址四种方式。4.指令系统在单片机指令系统中,根据功能不同将指令分为数据传送类指令、算数运算类指令、逻辑运算及移位类指令、控制转移类指令和位操作类指令等五大类,共计111条指令。4.方案设计4.1系统概述本系统采用了热释电红外传感器,它的制作简单、成本低,安装比较方便,而且防盗性能比较稳定,抗干扰能力强、灵敏度高、安全可靠。这种防盗器安装隐蔽,不易被盗贼发现,同时它的信号经过单片机系统处理后方便和PC机通信,便于多用户统一管理和用户操作。为了探测移动人体,通常使用双元件型热释电红外传感器,在这种传感器内部,两个敏感元件反相连接,当人体静止时两元件极化程度相同,互相抵消。但人体移动时,两元件极化程度不同,净输出电压不为0,从而达到了探测移动人体的目的。该设计包括硬件和软件设计两个部分。模块划分为数据采集、键盘控制、报警和显示等模块子函数。电路结构做成可划分为:热释电红外传感器、家庭智能报警器、单片机控制电路、LED控制电路及相关的控制管理软件组成。用户终端完成信息采集、处理、数据传送、功能设定、本地显示、本地报警等功能。就此设计的核心模块来说,单片机就是设计的中心单元,所以此系统也是单片机应用系统的一种应用。单片机应用系统也是有硬件和软件组成。硬件包括单片机、输入/输出设备、以及外围应用电路等组成的系统,软件是各种工作程序的总称。单片机应用系统的研制过程包括总体设计、硬件设计、软件设计、在线调试等几个阶段,就本设计来说也包括这些过程。它们的进程框图如图4-1所示。开始开始确定设计方案确定设计方案硬件设计软件设计硬件设计软件设计联机仿真调试联机仿真调试排除故障排除故障系统运行系统运行完成研制完成研制图4-1单片机应用系统研制过程框图4.2总体设计从设计的要求来分析该设计包含如下结构:热释电红外传探头电路、报警电路、单片机、复位电路、LED显示控制电路及相关的控制管理软件组成;它们之间的构成框图如图4-2总体设计框图所示:CPUAT89C51复位电路信号检测电路LED数字显示报警执行电路LED发光显示放大驱动驱动驱动图4-2总体设计框图处理器采用51系列单片机AT89C51。整个系统是在系统软件控制下工作的。设置在监测点上的红外探头将人体辐射的红外光谱转换成电信号,经过放大电路、比较电路送至门限开关,打开门限阀门送出TTL电平至AT89C51单片机。在单片机内,经过软件查询、识别判决等环节实时发出入侵报警状态控制信号。驱动电路将控制信号放大并推动声光报警设备完成相应动作。当报警延迟10s一段时间后自动解除,也可人工手动解除报警信号,然后通过LED显示报警次数,当警情消除后复位电路使系统复位,或者是在声光报警10s钟后有定时器实现自动消除报警。4.3系统硬件选择从以上的分析可知在本设计中要用到如下器件:AT89S51、热释电红外传感器、LED、按键、反相器74LS04、蜂鸣器等一些单片机外围应用电路,以及单片机的手工复位电路等等。所需元器件如下:编号名称型号数量R1、R6电阻4.7K2R2、R3、R7~R10电阻220R6R4、R5电阻10K2C1、C2电容30pF2C3、C4、C5(极性)电容47uF3D1~~D6发光二极管LED2绿4红Q1、Q2三极管9015/80502U1、U2集成电路AT89S51、74LS041、1Y1石英晶振12MHZ1K1、K2按键*2LS蜂鸣器8R1Tantou热释电传感器3TR1DS1共阴数码管DISPLAY1JP电源接头3OT14.4硬件电路实现经分析本设计的电路原理图如下图4-3所示图4-3基于单片机控制的红外防盗报警器原理图4.5软件的程序实现按上述工作原理和硬件结构分析可知系统主程序工作流程图如下图4-4所示;入口入口初始化初始化监测外部有无信号输入监测外部有无信号输入NY显示报警的次数且启动声光报警电路开始报警显示报警的次数且启动声光报警电路开始报警声光报警是否持续10秒声光报警是否持续10秒N声光报警结束,LED显示出报警次数声光报警结束,LED显示出报警次数是否还有检测信号等待下次报警是否还有检测信号等待下次报警YN结束结束图4-4主程序工作流程图本主程序实现的功能是:当单片机检测到外部热释点传感器送来的脉冲信号后,表示有人闯入监控区,从而经过单片机内部程序处理后,驱动声光报警点路开始报警,报警持续10秒钟后自动停止报警,同时显示出报警次数以便人们查询,然后程序开始循环工作,检测是否还有下次触发信号,等待报警从而使报警器进入连续工作状态。同时,利用中断方式可以实现报警持续时间未到10秒时,用手工按键停止的声光报警的作用。手工按键停止报警中断服务程序工作流程图,如下图4-5所示;中断源发出中断申请中断源发出中断申请关中断、保护现场关中断、保护现场INTO/端有输入信号关闭报警INTO/端有输入信号关闭报警恢复现场、关中断恢复现场、关中断中断返回中断返回图4-5中断服务程序工作流程图1.主程序清单如下:ORG0000HLJMPMAINORG0003HLJMPPINT0ORG0200HMAIN:MOVIE,#81H;CPU开放中断,/INT0允许中断SETBIT0;外部中断为边沿触发方式MOVSP,#30H;指针入口地址MOVR0,#00HSETBP3.0CLRP3.1MOVP1,#0FFH;使P1口全部置1MOVP2,#00H;P2口清零CLRP1.2LP:JNBP1.0,LA;监测输入信号,是否有输入信号LA:ACALLDELAY;延时消抖JNBP1.0,ALARM;再次监测输入信号,若有输入信号转入报警子程序AJMPLPDELAY:MOVR1,0AAHLD2:MOVR2,0BBHLD1:NOPDJNZR2,LD1DJNZR1,LD2RETALARM:SETBP1.2;开始报警使运行正常绿指示灯熄灭,红灯和声报警启动MOVA,#00HINCR0;报警次数加一CJNER0,#0AH,LP1MOVR0,#00HLP1:MOVA,R0;显示报警次数MOVDPTR,#TABMOVCA,@A+DPTRMOVP2,ATAB:DB3FH,06H,5BH,4FHDB66H,6DH,7DH,07HDB7FH,6FH;10S钟定时:MOV50H,#14H;1S循环次数20MOV51H,#0AH;10S循环次数MOVTMOD,#01H;定时器T0定时方式1MOVTL0,#0B0H;置50ms定时初值MOVTH0,#3CHSETBTR0;启动T0L2:JBCTF0,L1;查询记数溢出SJMPL2L1:CPLP3.0CPLP3.1MOVTL0,#0B0H;重新赋值MOVTH0,#3CHDJNZ50H,L2;未到1S继续循环CPLP3.0CPLP3.1MOV50H,#14HDJNZ51H,L2;未到10S继续循环SETBP3.0;10s到关闭报警CLRP3.1CLRP1.2;报警结束,正常运行绿指示灯亮LJMPLP;循环,继续工作END其中,10秒钟的定时采用定时器T0定时工作在方式1,单片机晶振Fosc=12MHz,所以机器周期T=12×t0=12×(1/12MHz)=1us设定时器T0初始值为X,则:(2∧16-X)×1us=50ms从而可知定时器T0初始值X=65536-50000=15536=3CB0H,在此用50H、51H单元分别进行1秒和10秒的计数,它们内的赋值分别为14H、0AH,T0的初值置为TL0=0B0H、TH0=3CH。2.外部中断INTO服务程序:PINT0:CLREX0;外部中断0服务程序开始,屏蔽外部中断PUSHPSWPUSHACCJNBP3.2,LN;监测是否有中断输入LN:LCALLDELAY;延时消抖JNBP3.2,LN1AJMPLN2;无中断输入,中断返回LN1:SETBP3.0CLRP3.1CLRP1.2;使报警结束,绿指示灯亮POPACCPOPPSWSETBEX0;开放外部中断0LCALLLP;在中断继续检测是否有输入信号LN2:RETI以上程序所编写的程序,通过Keil编译软件已经编译通过,同时运行效果已经通过仿真软件Proteus仿真,可以达到预定设计的目的,仿真效果图如下图4-6所示;图4-6结果仿真效果图通过仿真图可以看出,该设计程序的结果达到了预期的目的,通过多次调试和修改,且在程序设计过程中应考虑到各方面的干扰以及输入输出信号在工作中的不稳定因素,都应该在程序设计或硬件外围电路中对这些干扰和不稳定因素进行消除和稳定。在本设计中已经对外部输入信号和按键中断进行了软件消抖和防干扰处理,本设计在设计过程中,应该考虑的问题和因素都已经进行了对应的处理,所以,一些隐患在设计过程中都已经消除了,根据仿真实现了设计功能,同时,根据原理图作出相应的PCB图,如下图4-7所示;图4-7报警器PCB效果图根据PCB图做出电路板,按照PCB图的线路元器件的连接即可焊接出报警器成品,然后对焊接后的成品进行修正、测试,可以达到预期的目的,既当报警器工作时,当人体移动到距离报警器0—10M范围时,即可触发报警器工作,当持续报警10S钟后自动停止报警,也可以手工按键解除报警;在报警的同时也可以显示出报警的次数,以供人员查阅。所以,此次设计的报警器灵敏度高,操作简单、灵活、易用。5.结论概述5.1主要结论本课题研究设计了一种基于单片机技术的无线智能防盗报警器。该防盗报警器通过以AT89S51单片机为工作处理器核心,外接热释电红传感器,它是一种新颖的被动式红外探测器件,能够以非接触方式探测出人体发出的红外辐射,并将其转化为相应的电信号输出,同时能有效的抑制人体辐射波长以外的红外光线与可见光的干扰,平时传感器输出低电平,当有人在探测区范围内移动时输出低电平变为高电平,此高电平输入单片机,作为单片机的外部触发信号处理,经单片机内部软件编程处理后,单片机输出控制信号,驱动声光报警电路开始报警,同时通过显示电路显示出报警次数,以便人们识别了解报警情况。该报警器的最大特点就是使用户能够操作简单、易懂、灵活;且安装方便、智能性高、误报率低,同时它的信号经过单片机系统处理后方便和PC机通信,便于多用户统一管理。随着现代人们安全意识的增强以及科学技术的快速发展,相信报警器必将在更广阔的领域得到更深层次的应用。5.2结束语到目前为止我的毕业设计也即将告一段落了,在这次的毕业设计中,自己也学习到了很多以前没有经历过的知识,让我更加清楚了理论知识和实践能力的差别,了解到自己的短处,培养了我的独立思考能力,进一步提高了自己在实际设计过程中研究问题、发现问题、解决问题的能力,同时,也发现了自己的不足之处,和一些问题的存在,并有待进一步学习和发展,让自己在未来的工作和学习之中更快的适应和提高自己。致谢在毕业设计即将结束之即,再次对帮助过我的同学、和教诲过我的各位老师表示忠心的感谢,特别是我的指导教师李鉴老师,在我的毕业设计过程中给了我很大的帮助和细心指导,李老师不但知识广博、治学严谨、实践经验丰富,而且宽厚待大,和蔼可亲,让我受益非浅,再次表示感谢。同时,也感谢系里面给我们提供了非常难得的学习实验机房环境。一并表示感谢。参考文献[1]元增民.单片机原理与应用.—长沙:国防科学大学出版社2021[2]刘仁宇.单片微型计算机原理及应用.—西安:西安电子科技大学出版社.2021[3]马忠梅.单片机外围电路设计—北京:北京航空航天大学出版社2021[4]李光飞.传感器技术与应用.—北京:北京航空航天大学出版社2021[5]尹勇、王洪成.单片机开发环境μVision2的使用指南.--北京:北京航空航天大学出版社2021.1[6]范立南.PROTUES仿真软件实例使用指南.—北京:电子工业出版社2021.6[7]李全利.单片机原理及接口技术.--北京:北京航空航天大学出版社2021.1[8]坎特编著.WindowsWDM开发指南[M].孙义,马莉波等译.--西安:西安电子科技大学出版社,2021.9[9]徐爱钧、彭秀华.单片机高级语言C51应用程序设计.--北京:北京航空航天大学出版社2021.1[10]薛均义、张彦斌.MCS-51系列单片微型计算机及其应用.--西安:西安交通大学出版社2021.1[11]楼然苗.51系列单片机设计实例.—北京:北京航空航天大学出版社2021.4[12]黄智伟.传感器应用设计实例制作.—北京:电子工业出版社2021.4[13]唐桃波、陈玉林.基于AT89C51的智能无线安防报警器[J].电子设计应用,2021,(6):49~51[14]Compaq,Intel,Microsoft,NEC.UniversalSerialBusSpecificationV1.1[S].2021[15]Philips,Augest.PDIUSBDI2DataSheet[EB].2021PAGE1

中南民族大学学生课程设计报告课程名称:C程序设计语言选题名称:通讯录管理年级:专业:信息管理与信息系统学号:姓名:指导教师:完成地点:管理学院综合实验室完成日期:1.课程设计的目的为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。此外通过课程设计提高逻辑思考能力和解决实际问题的能力。程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。其次课程设计有利于治学态度的培养。程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。本程序设计具有通讯信息的录入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。可运用于小的管理软件。软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。2.设计方案论证2.1设计思路建立一个函数,用来添加、显示、删除、查询通讯录等信息,完成通讯录的功能。主函数可以调用六个子函数,分别完成添加记录、显示记录、删除记录、查询记录、退出系统等功能。在主函数中可以以1、2、3、4、0数字键分别可以执行某个功能模块。退出程序删除记录查询记录显示退出程序删除记录查询记录显示记录添加记录通讯录管理系统 2.2程序设计2.2.1根据图1定义数据类型建立函数typedefstruct { charscore;/*编号*/ charname[10];/*姓名*/ charnum[15];/*号码*/ charemail[20]; /*邮箱*/ charage[8]; /*年龄*/ charadds[20]; /*住址*/ }Person;2.2.2主函数及其流程图Y定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序的功能。每次使用都会调用主函数。主函数主要是利用switch语句对数据进行处理,流程图如下:Y添加记录选择1开始N选择2YYYYNNNN退出系统查询记录删除记录显示记录选择0选择4选择3添加记录选择1开始N选择2YYYYNNNN退出系统查询记录删除记录显示记录选择0选择4选择3结束结束2.2.3增加函数及其流程图.添加通讯录记录流程图:.显示通讯录记录流程图:.删除通讯录记录流程图:.查询通讯录记录流程图:2.3源程序#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct { charscore;/*编号*/ charname[10];/*姓名*/ charnum[15];/*号码*/ charemail[20]; /*邮箱*/ charage[8]; /*年龄*/ charadds[20]; /*住址*/ }Person;Personpe[80];intmenu_select() { charc; do{ system("cls"); printf("\t\t*****通讯录*****\n"); printf("\t\t┌───────┐\n"); printf("\t\t│1.添加记录│\n"); printf("\t\t│2.显示记录│\n"); printf("\t\t│3.删除记录│\n"); printf("\t\t│4.查询记录│\n"); printf("\t\t│0.退出程序│\n"); printf("\t\t└───────┘\n"); printf("\t\t请您选择(0-4):"); c=getchar(); }while(c<'0'||c>'4'); return(c-'0'); }intInput(Personper[],intn){ inti=0; charsign,x[10]; while(sign!='n'&&sign!='N') { printf("\t编号:"); scanf("\t%d",&per[n+i].score); printf("\t姓名:"); scanf("\t%s",per[n+i].name); printf("\t年龄:"); scanf("\t%s",per[n+i].age); printf("\t电话号码:"); scanf("\t%s",per[n+i].num); printf("\t通讯住址:"); scanf("\t%s",per[n+i].adds); printf("\t电子邮箱:"); scanf("\t%s",per[n+i].email); gets(x); printf("\n\t是否继续添加?(Y/N)"); scanf("\t%c",&sign); i++; } return(n+i);}voidDisplay(Personper[],intn){ inti; printf("\n");/*格式*/ printf("编号姓名年龄电话号码通讯地址电子邮箱\n"); printf("\n"); for(i=1;i<n+1;i++) { printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); if(i>1&&i%10==0) { printf("\t\n"); printf("\t"); system("pause"); printf("\t\n"); } } printf("\n"); system("pause");}intDelete_a_record(Personper[],intn){ chars[20]; inti=0,j; printf("\t请输入想删除记录中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return(n); } for(j=i;j<n-1;j++) { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t\t\t已经成功删除!\n"); return(n-1);}voidQuery_a_record(Personper[],intn){ intm; printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1姓名│\n");printf("\t│2电话│\n");printf("\t│3地址│\n");printf("\t│4返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){ printf("输入错误,请重新选择:"); scanf("%d",&m); } if(m==1) { chars[20]; inti=0; printf("\t请输入想查询的姓名:"); scanf("\t%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t此人编号:%d\n",per[i].score); printf("\t此人年龄:%s\n",per[i].age); printf("\t电话号码:%s\n",per[i].num); printf("\t通讯地址:%s\n",per[i].adds); printf("\t电子邮箱:%s\n",per[i].email); }; if(m==2) { chars[20]; inti=0; printf("\t请输入想查询的电话:"); scanf("\t%s",s); while(strcmp(per[i].num,s)!=0&&i<n)i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t此人编号:%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年龄:%s\n",per[i].age); printf("\t通讯地址:%s\n",per[i].adds); printf("\t电子邮箱:%s\n",per[i].email); }; if(m==3) { chars[20]; inti=0; printf("\t请输入想查询的地址:"); scanf("\t%s",s); while(strcmp(per[i].adds,s)!=0&&i<n)i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t此人编号:%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年龄:%s\n",per[i].age); printf("\t电话号码:%s\n",per[i].num); printf("\t电子邮箱:%s\n",per[i].email); };}voidChange(Personper[],intn){ chars[20]; inti=0; printf("\t请输入想修改的记录中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t编号:"); scanf("\t%d",&per[i].score); printf("\t姓名:"); scanf("\t%s",per[i].name); printf("\t年龄:"); scanf("\t%s",per[i].age); printf("\t电话号码:"); scanf("\t%s",per[i].num); printf("\t通讯住址:"); scanf("\t%s",per[i].adds); printf("\t电

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论