单片机课程设计__电子密码锁报告

时间:2024.4.1

基于单片机控制的电子密码锁

摘要:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用 关键词:AT89S51,AT24C02, 电子密码锁,矩阵键盘

一、 引言

随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。

设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。

二、方案论证与比较

方案一:采用数字电路控制。其原理方框图如图1-1所示。

单片机课程设计电子密码锁报告

图2-1 数字密码锁电路方案

采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。

电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。

密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输 1

入次数锁定电路。

方案二:采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图1-2所示。

图2-2单片机控制方案

通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。

三、电路的功能单元设计

1.开锁机构

通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如图2-1所示。

单片机课程设计电子密码锁报告

图3-1密码锁开锁机构示意图

当用户输入的密码正确而且是在规定的时间(普通用户要求在12s内输入正确的密码,管理员要求在5s输入正确的密码)输入的话,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。其实际电路如图2-2所示。

电路驱动和开锁两级组成。由D5、R1、T10组成驱动电路,其中T10可以选择普通的小功率三极管如9014、9018都可以满足要求。D5作为开锁的提示;由D6、C24、T11组成。其中D6、C24是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。T11可选用中功率的三极管如8050,电磁锁的选用要视情况而定,但是吸合力要足够且由一定的余量。

单片机课程设计电子密码锁报告

2

在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。

单片机课程设计电子密码锁报告

来自微控

图3-2密码锁开锁机构电路图

2.按键电路设计

由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口

时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图2-3所示。

图3-3 行列式键盘原理电路图

每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。

对照图2-3所示的44键盘,说明线反转个工作原理。

首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。

判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。

单片机课程设计电子密码锁报告

3

按键的操作面板如图图2-3所示。共计数字键10个,功能键6个。键盘上还有3个指示灯和一个蜂鸣器。

图3-4 按键操作面板示意图

10个数字键用来输入密码,另外6个功能键分别是:CLR、EN、F1、F2、F3、F4。其中CLR键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入。EN键的功能是确认输入的密码。F1是管理模式切换键,当用户不小心三次输入密码都没有正确,键盘被锁定,这个时候就可以启动管理模式,使用管理员的密码来开门。F2是用来进入修改密码的状态。F3用来关闭显示器,一来可以节省电量,另外也可以防止不法分子偷窥密码。F4用来作电铃。

上面的3个指示灯L1、L2、L3是用来指示操作的状态:L1锁定及输入指示状态灯,正常的情况下显示红色,当键盘动作的时候,L1灯开始闪动,当键盘处于锁定状态时,指示灯也显示红色。L2开门指示灯,当用户在规定的时间内正确的输入了密码,此灯转变为绿色,表示开门,否则不显示。L3是管理员状态指示灯,当按下F1后,指示灯自动点亮。

面板上还有一个蜂鸣器,其中一个功能是用来指示操作的按键是否在成功的按下;另外一个功能是当用户输入密码错误的次数超过了3次,鸣笛以示报警。

3.显示电路设计

本系统设计的显示电路是为了给使用者以提示而设置的。考虑到为了节约单片机的口资源,本系统的显示采用串行显示的方式,只使用单片机的两个串行口,就可以完成单片机的显示功能,显示电路的电路原理图如图2-5所示。

电路设定:当程序检测在5分钟内没有按键操作的时候,就关闭显示。这个功能使用程序来实现的,一旦没有按键动作就启动一个定时器,检测在5分钟内没有按键动作的时候,启动一个程序,关闭显示,这样可以达到节省电能的目的。

从单片机串口输出的信号先送到左边的移位寄存器(74HC164),由于移位脉冲的作用,使数据向右移,达到显示的目的。移位寄存器74HC164还兼作数码管的驱动,插头1(header1)接电源,插头2(header2)接数据和脉冲输出端。电路中的三个整流管D1~D3的作用是降低数码管的工作电压,增加其使用寿命。

单片机课程设计电子密码锁报告

4

5

单片机课程设计电子密码锁报告

单片机课程设计电子密码锁报告

单片机课程设计电子密码锁报告

单片机课程设计电子密码锁报告

单片机课程设计电子密码锁报告

图3-5 显示器原理图

显示器主显示几个字符,给用户提供指示见图2-6所示。

图3-6 a关闭状态

图3-6 b 开锁状态

图3-6 c 密码输入及修改状态

图3-6 d 密码输入错误后的提示

图3-6 e密码在规定的时间内输入错误次数超过3次后的锁定状态

5

单片机课程设计电子密码锁报告

4.AT24C02掉电存储单元的设计

掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。其电路如图2-5所示。

单片机课程设计电子密码锁报告

P2.6P2.5

图3-7 掉电存储电路原理图

图中R8、R10是上拉电阻,其作用是减少AT24C02的静态功耗,由于AT24C02的数据线和地

址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。

每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。

5.密码锁的电源电路设计

为了防止停电情况的发生,本电路后备了UPS电源,它包括市电供电电路,停电检测电路,电子开关切换电路,蓄电池充电电路和蓄电池组成。电源电路图如图2-8所示。

单片机课程设计电子密码锁报告

7805

图3-8 市电供电电路

220V市电通过变压器降压成12V的交流电,再经过整流桥整流,7805稳压到5V送往电子切换电路,由于本电路功耗较少,所以选用10W的小型变压器。

由R8,R9,R6,R7及IC14构成电压比较器,正常情况下,V+<V- IC14输出高电平,继电器的常闭触点和市电相连;当市电断开,V+>V- IC14输出高电平,由T3,T4构成的达林顿管使继电器J开启,将其常开触电将蓄电池和电路相连,实现市电和蓄电池供电的切换,保证电子密码锁的正常工作(视电池容量而定持续时间)。其电路图如下图6所示:

6

蓄电池 A2

5V 直流电源 A1

图3-9 停电检测及电子开关切换电路

T1,T2构成的蓄电池自动充电电路,它在电池充满后自动停止充电,其中D1亮为正在充电,D2为工作指示。由R4,R5,T1构成电压检测电路,蓄电池电压低,则T1,T2导通,实现对其充电;充满后,T1,T2截止,停止充电,同时D1熄灭,电路中C4的作用是滤除干扰信号。其电路图如图7所示:

单片机课程设计电子密码锁报告

单片机课程设计电子密码锁报告

图3-10 蓄电池自动充电电路

6.设计总框图

图3-11总体设计框图

7.设计总体电路图

7

单片机课程设计电子密码锁报告

VC图3-12 总体电路图

四、程序设计

1.模块介绍

该计程计价系统的软件设计分为以下几个模块:

(1)主程序模块

主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。主程序的流程图如下所示。

(2)键盘扫描及识别子程序

键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。其程序流程如图 所示.

(3)调电存储服务程序

当比较密码的时候,需要读AT24C02程序,将存储在芯片内的数据读到RAM中,然后和输入的密码相比较。当修改密码的时候,需要把输入的密码保存到AT24C02中,其程序流程如图 所示.

(4)显示子程序

由于是分屏显示数据,所以就要用到5个显示子程序,分别是:关闭状态显示子程序(DIS_A)、开锁状态显示子程序(DIS_B)、密码输入及修改状态显示子程序(DIS_C)、密码输入错误后的提示子程序(DIS_D)。密码在规定的时间内输入错误次数超过3次后的锁定状态显示子程序(DIS_E).

2.程序流程图

(1)主程序流程图如图3-1所示。

8

单片机课程设计电子密码锁报告

单片机课程设计电子密码锁报告

图4-1 主程序流程图 图4-2 修改密码流程图

五、总结

由于使用的是单片机作为核心的控制元件,以及灵敏的霍尔开关型器件,是本出租车计价器具有功能强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。

但是在我们设计和调试的过程中,也发现了一些问题,譬如计价的金额位数有限,实际的里程可能会很远,会超出我们的显示范围。

计价器的设计还不够人性化,比如加上语音的提示功能,可能会更有生命力。

Abstract

A new intelligent milometer base on a microcontroller can count the sum. By taking full use of the processor 89s51 and E?PROM (AT24C02) and sensor of magnetism, it can count the sum of fully distance and the course of development.

单片机课程设计电子密码锁报告

9


第二篇:基于单片机的电子密码锁设计_单片机课程设计报告


目  录

1、  引言…………………………………………………………… 1

2、  设计要求……………………………………………………… 2

3、  硬件电路设计…………………………………………………  3

     3.1  设计方案的选择……………………………………………  3

     3.2  主要元器件简介……………………………………………  4

3.3  硬件系统结构………………………………………………  8

4、  程序设计………………………………………………………  13

5、  总结……………………………………………………………  15

参考文献……………………………………………………………… 16

附件一:电路原理图及作品实物图………………………………… 17

附件二:程序清单…………………………………………………… 18


1、引言

1.1  单片机密码锁课程设计报告摘要

随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,安全性能低,无法满足人们的需要。针对这些锁具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下:

1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。

2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。

3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。

4) 无活动零件,不会磨损,寿命长。

5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。

6) 电子密码锁操作简单易行,一学即会。

随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了真真的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现了越来越多的电子密码锁。

由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。可以看出组合使用电子信息是电子密码锁以后发展的趋势。

本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超次锁定、管理员解密、修改用户密码的功能。除上述基本的密码锁功能外,还具有掉电存储、声光提示等功能,依据实际的情况还可以添加其他功能。本系统成本低廉,功能实用。

1.2   关键词

单片机    密码锁    课程设计   报警


2、设计要求

2.1   设计任务

    设计一种基于单片机的密码锁。

2.2  设计要求

1)密码用键盘输入(4~8位);

2)用户可预置密码(4~8位),并永久保存;

3)用LED数码管或LCD显示密码值,密码设置成功或开锁后显示“******”;

4)密码输入成功后,开锁(用绿色的LED亮);密码输入错误时数码管或LCD提示错误信息,并且红色的LED亮;三次输入错误后,扬声器报警;

2.3  设计报告要求

说明设计作品的功能、特点、应用范围;

方案对比,确定方案。

电路设计、电路工作原理、技术指标测试;

编程方法、程序框图及关键程序清单。

课程设计总结。


3、硬件电路设计

3.1  设计方案的选择

3.1.1   方案一:采用数字电路控制

用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作。采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差。故不采用。

 

3.1.2   方案二:采用以单片机为核心的控制方案

由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些的还有一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素。基于以上因素本设计选用单片机STC89C52作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602显示器用于显示作用。当用户需要开锁时,先按键盘开锁键之后按键盘的数字键0-9输入密码。密码输完后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后可以设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。

可以看出方案二控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案。


3.2  主要元器件简介

3.2.1  主控芯片   单片机STC89C52

   1、宏基公司生产的STC89系列单片机,高速、低功耗、新增在系统/在应用可编程(ISP,IAP)功能。

2、特点:40个引脚,8k Bytes Flash片内程序存储器,512 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。STC89C52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

STC89C52芯片引脚

3、STC89C52引脚功能说明:

Vcc:电源电压

GND:地

P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。

P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。在访问8位地址的外部数据存储器(如执行:MOVX @Ri 指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。Flash 编程或校验时,P2也接收高位地址和其它控制信号。

P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。

RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。WDT益出将使该引脚输出高电平,设置SFR AUXR 的 DISRTO 位(地址8EH)可打开或关闭该功能。DISRTO 位缺省为RESET输出高电平打开状态。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:第当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位禁位后,只有一条MOVX 和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。

PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的PSEN信号。

EA/VPP:外部访问允许。欲使CPU公访问外部程序存储器(地址0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程电压Vpp。

XTAL1:振荡器反相放大器及内部时钟发生器的输入端。

XTAL2:振荡器反相放大器的输出端。


3.2.2  外部存储芯片  AT24C02(ATMLU830)

AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5 V)、擦写次数多(大于10000次)、写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。 AT24C02正是运用了I2C规程,使用主/从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。

注:本设计采用的是同功能芯片ATMLU830,只命名方式不同,其功能与24C02完全相同。

AT24C02引脚图

管脚描述

A0 A1 A2:器件地址选择

SDA:串行数据/地址

SCL:串行时钟

WP:写保护

Vcc:+1.8V  6.0V 工作电压

GND:地

AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在STC89C52的作品板上,第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,和单片机的P3.5连接。第6脚SCL为串行时钟输入线,和单片机的P3.4连接。SDA和SCL都需要和正电源间各接一个4.7K的电阻上拉。第7脚需要接地。


3.2.3  显示器件  LCD1602液晶显示器

现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。

1602型LCD的接口信号说明

1602型LCD的主要技术参数如下表所示:

                       1602型LCD的主要技术参数

基本操作程序:

读状态:输入:RS=L,RW=L,  E=H                         输出:D0~D7=状态字

读数据:输入:RS=H,RW=H, E=H                               输出:无

写指令:输入:RS=L,RW=L, D0~D7=指令码,E=高脉冲   输出:D0~D7=数据

写数据:输入:RS=H,RW=L, D0~D7=数据,  E=高脉冲   输出:无


3.3  硬件系统结构

3.3.1  设计原理

本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。

本系统共有两部分构成,即硬件部分与软件部分。其中硬件部分由电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、密码设置程序、EEPROM读写程序和延时程序等组成。

                            单片机电子密码锁原理框图


3.3.2  硬件总体构成

在确定了选用什么型号的单片机后,就要确定在外围电路,其外围电路包括电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,根据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择字符型液晶显示LCD1602,密码存储部分选用AT24C02芯片来完成。其原理图如(附录一)所示。

3.3.2.1 电源部分

密码锁主控制部分电源需要用5V直流电源供电,本设计直接留出电源端提供外置电源输入接口,可以使用外置5V稳压直流电源供电,亦可以使用电脑USB接口供电。

3.3.2.2   键盘输入部分

由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,设置功能等。键盘的每个按键功能在程序设计中设置。其大体功能(看键盘按键上的标记)及与单片机引脚接法如下图所示:

键盘输入部分原理图


3.3.2.3  密码外存部分

用EPROM芯片AT24C02存储密码。AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5 V)、擦写次数多(大于10000次)、写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。AT24C02正是运用了I2C规程,使用主/从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向 。其接线如下图所示:

                        密码存储电路原理图

3.3.2.4  复位部分

单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择如图4-6所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻 上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1通过R放电。当电容C1放电结束后,RST端的电位为高电平。由于RST为高电平,CPU处于复位状态,松手后,电容C1充电,RST端电位下降,CPU脱离复位状态。R5的作用在于限制按键按下瞬间电容C1的放电电流,避免产生火花,以保护按键触电。

复位电路原理图

3.3.2.5   晶振部分

STC89C52引脚XTAL1和XTAL2与晶体振荡器及电容C按下图所示方式连接。晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C1、C2取值范围在5~30pF之间。根据实际情况,本设计中采用12MHZ做为系统的外部晶振。电容取值为30pF。

晶振电路原理图


3.3.2.6   显示部分

为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。只有接通电源后,显示器才处于开启状态。否则显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下键盘上的OPEN按键后利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时,按下确认OK键,然后用LCD显示相关的提示信息。以下是显示部分接线图。

显示电路原理图

3.3.2.7   受控开锁部分

此处利用声光模拟密码锁电路得控制效果,当密码输入正确时,绿灯亮,反之则红灯亮,连续输入错误则蜂鸣器鸣叫报警。在实际应用中可将绿灯换成电磁阀来实现电能向动能的转换来实现实际的问题。

                           声光指示电路

4、程序设计

本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。

主要程序设计流程图如下所示:

4.1   主程序流程图


4.2    密码操作流程图

     

密码设置流程图                            开锁操作流程图

4.3    按键功能流程图


5、总结

本设计从经济实用的角度出发,采用宏基公司生产的STC89系列STC89C52单片机与低功耗CMOS型E2PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路并用C语言编写主控芯片的控制程序,设计了一款可以多次更改密码具有报警功能的电子密码锁。设计基本可行可以达到设计目地。使用单片机制作的电子密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有一定的实用性。该电路设计还具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能。由于设计此电路的时间较仓促,其中还有些许未考虑周全的因素,还需要继续的改进和完善。


参考文献

[1] 石文轩,宋薇.基于单片机MCS一51的智能密码锁设计[M].武汉工程职业技术学院学报,2004,(01);

[2] 祖龙起,刘仁杰.一种新型可编程密码锁[J].大连轻工业学院学报,2002,(01);

[3] 叶启明.单片机制作的新型安全密码锁[J].家庭电子,2005,(10);

[4] 郭海英.基于单片机的电子安全密码锁的设计[M].现代电子技术,2005,(13);

[5] 李明喜.新型电子密码锁的设计[J].机电产品开发与创新,2004,(03);

[6] 董继成.一种新型安全的单片机密码锁[J].电子技术,2004,(03);

[7] 祖龙起,刘仁杰,孙乃凌.一种新颖的电子密码锁[J].电子世界,2001,(10);

[8] 李明喜.新型电子密码锁的设计[J].机电产品开发与创新,2004,(03);

[9] 杨茂涛.一种电子密码锁的实现[J].福建电脑,2004,(08);

[10] 瞿贵荣.实用电子密码锁[J].家庭电子,2000,(07);

[11] ATmega.ATmega8L-8AC,2006,(01);

[12] Wireless World,1998,vol、84,No、1509,p69;

[13] 王千.实用电子电路大全[M],电子工业出版社,2001,p101;

[14] 何立民.单片机应用技术选编[M],北京:北京航空大学出版社,1998;

[15] 李华.MCS-51系列单片机使用接口技术[M],北京航空航天大学出版社,1993;

[16] 彭为.单片机典型系统设计实例精讲[M],北京:电子工业出版社,2006;

[17] 潘永雄.新编单片机原理与应用[M],西安:西安电子科技大学出版社,2003;

[18] 童诗白,华成英,模拟电子技术基础[M],北京:高等教育出版社,2000;

[19] 阎石主.数字电子技术基础[M],北京:高等教育出版社,1998;

[20] 樊昌信,曹丽娜.通信原理[M],北京:国防工业出版社,2007;

[21] 李瀚荪.电路分析基础[M],北京:高等教育出版社1991;


附件一:电路原理图作品实物图

                               1、电路原理图


2、作品实物图


附件三:程序清单

主程序


//**********家庭电子锁 ************/

//**********C语言版***************/

//**********20##年 1月************/

#include <REG52.H>

#include <string.h>

#include <port.h>

#include <1602.h>

#include <24c02.h>

#include<keyscan.h>

uchar code  a0[]={"Password Setting"};

uchar code a1[]={"welcome to here"} ;

uchar code  a2[]={"input password:"};

uchar code a4[]={"input length:"};

uchar code a5[]={"wait for ......"};

uchar code a6[]={"secret is saving"};

uchar code a7[]={"wait for ......"};

uchar code a8[]={"secret is OK"};

uchar code a9[] ={"Setting completed"};

uchar code a10[] ={"secret is ERROR"};

uchar code a11[] ={"setting serect"};

uchar code b1[]={"Families lock"};

uchar code b2[]={"Password"};

uchar code  c1[]={"Open the door  "};

uchar code  c2[]={"Welcome host   "};

uchar code  c3[]={"who are you ?  " };

uchar code  c4[]={"I don't know you"};

uchar code  c5[]={"Password ERROR!"};

bit FLAG1,FLAG2,FLAG3,FALG4;

uchar idata set1[11]={0,0,0,0,0,0,0,0,0,0,0};

uchar idata set2[11]={0,0,0,0,0,0,0,0,0,0,0};

 enum jian{enter=10,cancel,open,setserect} ;

/////////////////////////////////////////

//     用户密码设置user(); 

// 密码输入  inputserect() 

// 开锁显示  OPENLOCK()

//密码读入readserect() 

//*******************密码读入 

 void readserect()

 { int i;

 for(i=0;i<read_random(20);i++)

         {

       set1[i]= read_random(i) ;

    }

 }

 void yanzh1()

 {

 clear();

 write1602(0,0,a8);

 write1602(0,1,a5);

 delay(1000);

 clear();

 write1602(0,0,c1);

 write1602(0,1,c2);

    delay(1000);

    delay(1000);

       clear();

 }

  void yanzh2()

 {

 

 write1602(0,0,a10);

 write1602(0,1,a5);

 delay(1000);

 write1602(0,0,c3);

 write1602(0,1,c4);

   delay(1000);

    delay(1000);

              clear();

 }

 void clear1()

 { int i;

 for(i=0;i<16;i++)

 {wcom(0xc0+i);

 wdata(0x20);}

 }

///////////////////////////////////////////////////////

// 开锁函数

void openlock()

{

uchar i=0,m,j=0;

 m=read_random(20) ;

readserect();

next:  key=18;

i=0;

j++;

 while(key==18)

           //矩阵键盘

{

 while(flag)

   keydown();

   flag=1;

if(key!=18) {

 wcom(0xc0+i)      ;//显示输入密码

 wdata('*');

 set2[i]=key+0x30;

 i++;

 }

 if(key==enter){ key=0;i=0;}

 else

 key=18;

  }

 for(i=0;i<m;i++)

 if(set1[i]!=set2[i]&&j!=3) {for(i=0;i<m;i++) set2[i]=0; RED=0;  GREEN=1; clear();  write1602( 0,0, c5); delay(1000);clear(); write1602( 0,0, a2); goto next;    }

 

 if(j==3) {j=0;clear(); yanzh2();BEEP=0;RED=0; GREEN=1;}

 else

 { yanzh1(); GREEN=0;RED=1;  }

}

///////////////////////////////////////////////////

///////////////////////////////////////////////////

useserect()

{

uchar i=0 ;

write1602(0,0,a0);

    write1602(0,1,a5);

       delay(1000);

       clear();

write1602(0,0,a2);

           key=18;

         while(key==18)

           //矩阵键盘

{  while(flag)

   keydown();

   flag=1;

 if(key!=18) {

 wcom(0xc0+i)      ;//显示输入密码

 wdata(key+0x30);

 write_byte(i,key+0x30); //密码存储 

 i++;

 }

 write_byte(20,i-1); //密码存储 

if(key==enter) key=0;

 else

 key=18;

  }

  clear();

  write1602(0,0,a6);

  write1602(0,1,a7);

       delay(1000);

       clear();

}

/////////////////////////////////////////////////// 

void main()

 {

/////显初始化

 init();

while(1)

 {

write1602(0,0,b1);

write1602(0,1,a1);

   while(flag)

   keydown();

   flag=1;

switch(key)

  {

 case   open:            { clear();  write1602( 0,0, a2);        openlock();    break; }

 case  setserect :  {          useserect();    break; }

  }

  }


单片机引脚定义:

sbit  RS  =  P1^0;       //RS数据命令选择端,高电平数据,低电平命令

sbit RW   = P1^1;      //RW读写选择端,高电平读操作,低电平写操作

sbit  E =   P1^2;      //E使能控制端,E高电平跳变为低电平时LCD执行命令

sbit SDA = P3^5;

sbit SCL = P3^4;

sbit  DB       = P2;             //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口

sbit date1602 =P0;

sbit k1= P3^6;

sbit k2=  P3^7;

sbit k3=  P1^5;

sbit BEEP=P1^3;  //报警器

sbit RED=P1^5;

sbit GREEN=P1^4;


24C02存取程序C代码


#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

#define OP_WRITE 0xa0          // 器件地址以及写入操作

#define OP_READ  0xa1           // 器件地址以及读取操作

void  delayNOP() {_nop_();_nop_();_nop_();_nop_();}

void delayms(uint ms) 

// 延时子程序

{

   uchar k;

   while(ms--)

   {

      for(k = 0; k < 90; k++);

   }

}

/**********************************************************/

void start()

 //开始位

{

   SDA = 1;

   SCL = 1;

   delayNOP();

   SDA = 0;

   delayNOP();

   SCL = 0;

}

/**********************************************************/

void stop()

 // 停止位

{

   SDA = 0;

   delayNOP();

   SCL = 1;

   delayNOP();

   SDA = 1;

}

/********************************************写操作*************/

uchar shin()

// 从AT24C02移出数据到MCU

{

   uchar i,read_data;

   for(i = 0; i < 8; i++)

   {

    SCL = 1;

    read_data <<= 1;

    read_data |= SDA;

    SCL = 0;

   }

    return(read_data);

}

/*************************************************读操作*********/

bit shout(uchar write_data) 

// 从MCU移出数据到AT24C02

{

   uchar i;

   bit ack_bit;

   for(i = 0; i < 8; i++)   // 循环移入8个位

   {

     SDA = (bit)(write_data & 0x80);

    _nop_();

    SCL = 1;

    delayNOP();

    SCL = 0;

    write_data <<= 1;

   }

   SDA = 1;                     // 读取应答

   delayNOP();

   SCL = 1;

   delayNOP();

   ack_bit = SDA;

   SCL = 0;

   return ack_bit;            // 返回AT24C02应答位

}

/**********************************************************/

void write_byte(uchar addr, uchar write_data)

// 在指定地址addr处写入数据write_data

{

   start();

   shout(OP_WRITE);

   shout(addr);

   shout(write_data);

   stop();

   delayms(10);          // 写入周期

}

/**********************************************************/

/**********************************************************/

uchar read_current()

// 在当前地址读取

{

   uchar read_data;

   start();

   shout(OP_READ);

   read_data = shin();

   stop();

   return read_data;

}

/**********************************************************/

uchar read_random(uchar random_addr)

// 在指定地址读取

{

   start();

   shout(OP_WRITE);

   shout(random_addr);

   return(read_current());

}

/*********************************************************

 void write_byte( uchar addr, uchar write_data); //在任意地址传送数据

 void fill_byte(uchar fill_size,uchar fill_data); //填充数据初始化

 uchar read_random(uchar random_addr);// 在指定地址读取*///////////////////////////////////////


1602基本操作头文件:


/******LCD1602基本操作函数********/

/**********************************/

#define uchar unsigned char

 delay(int x)

{

int tt ,i;

for(tt=1;tt<=x;tt++)

for(i=1;i<125;i++);

  }

 //写指令

void wcom(char com)

{

RS=0;

RW=0;

E=1;

P0 =com;

delay(5);

E=0;

}

//写数据

void wdata(char  data1)

{RS=1;RW=0;

E=1;

P0=data1;

delay(5);

E=0;

}

 void clear()

{ wcom (0x01);}

void rehome()

 { wcom(0x02); }

void  mode(bit x)

 {if(x==1)wcom(0x38);          //两行5*8 mode

 else wcom(0x34);  }         //一行5*10 mode}

void on_off(bit x)

{

  if(x==1)wcom(0x0f);           //显示开,光标开,光标闪烁

  else wcom(0x0c);             //显示开,光标关

}

//按指定位置显示一个字符

void OutputInformation(uchar X, uchar Y, uchar DData)

 {

  Y &= 0x1;

  X &= 0xF;

  if (Y) X = X |0x40;

            X = X |0x80;

wcom(X) ;

 wdata(DData);

 }

 void  writeone(uchar X )

 {

  

 wcom(0xc0+X)    ;

 wdata('*');

 }

//按指定位置显示一串字符 

void write1602(uchar X, uchar Y, uchar code *DData)

{

  uchar ListLength,j;

  ListLength = strlen(DData);

  Y &= 0x1;

  X &= 0xF;

      if (X <= 0xF)

        {

         for(j=0;j<ListLength;j++)

            {

             OutputInformation(X, Y, DData[j]);

             X++;}

  }

}

void init()

{

clear();          //清屏

rehome();

mode(1);          //模式设置

on_off(0);         //显示设置

wcom(0x06);    //移动方式

}



键盘扫描模块程序:

//键盘扫描4*4


#include <intrins.h>

#define     uchar unsigned char

#define     uint unsigned int

 uchar lk=0;

uchar key=0,key1=0,key2=0,key3=0,flag=1;

unsigned char code key_code[]={ 0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77 };

uchar  keyscan()

{uchar  scan1,scan2,keycode,j;

P2=0xf0;

scan1=P2;

   if((scan1&0xf0)!=0xf0)           //判键是否按下

   {       BEEP=0;

     delayms(30);                   //延时30ms

     scan1=P2;

     if((scan1&0xf0)!=0xf0)         //二次判键是否按下

     {

        P2=0x0f;

        scan2=P2;

        keycode=scan1|scan2;         //组合成键编码

        for(j=0;j<=15;j++)

        {

           if(keycode== key_code[j])  //查表得键值

           {  scan1=P2;

                  while(scan1!=0x0f)

                     scan1=P2;

                     flag=0;

                      BEEP=1;

               return(j);

               

           

           }

        }

     }

   }

else 

{P2=0xff;

return (16); }

}

  void  keydown()

{uchar temp;

 P2=0x0f;

 temp =P2;

if((temp&0x0f)!=0x0f)

{key= keyscan(); }

}

void dananjian( uchar jiemian,uchar kongzhi,uchar kongzhi1)

{

if(k1==0)

{

 delay(10);

 if(k1==0)

 key1++;   clear();

  if(key1==jiemian) key1=0;

 while(k1==0);

}

   if(k2==0)

{

 delay(10);

 if(k2==0)

 key2++;

    clear();

 if(key2==kongzhi) key2=0;

 while(k2==0);

}

   if(k3==0)

{

 delay(10);

 if(k3==0)

 key3++;

 if(key3==kongzhi1) key3=0;

 while(k3==0);

}

}


更多相关推荐:
单片机电子时钟课程设计报告

基于单片机电子时钟的设计绪论单片机自20世纪70年代问世以来以其极高的性能价格比受到人们的重视和关注应用很广发展很快单片机体积小重量轻抗干扰能力强环境要求不高价格低廉可靠性高灵活性好开发较为容易由于具有上述优点...

单片机电子时钟的设计报告

单片机电子时钟的设计目录1引言12设计任务与要求221设计题目222设计要求23系统的功能分析与设计方案331系统的主要功能332系统的设计方案333数码管显示工作原理434电路硬件设计5341设计原理框图53...

51单片机电子时钟课程设计报告

JINGCHUUNIVERSITYOFTECHNOLOGY单片机原理及应用课程设计报告题目电子时钟专业电气工程及其自动化班级20xx级电工2班学号20xx401020xx2姓名王贞指导教师邹云峰提交日期20xx...

单片机课程设计数字钟实验报告

单片机课程设计电子钟一实现功能1能够实现准确计时以数字形式显示时分秒的时间2小时以24小时计时形式分秒计时为60进位能够调节时钟时间3闹钟功能一旦走时到该时间能以声或光的形式告警提示4能够实现按键启动与停止功能...

基于单片机的电子时钟课程设计报告

目录一、引言二、设计课题三、系统总体方案四、系统硬件设计1.硬件电路原理图2.元件清单五、系统软件设计1.软件流程图2.程序清单六、系统实物图七、课程设计体会八、参考文献及网站九、附录一.引言单片机因将其主要组…

单片机课程设计报告—LED显示电子钟

单片机原理及其接口技术课程设计报告课题LED显示的电子钟姓名学号院系自动控制与机械工程学院班级指导教师20xx年6月目录一课程设计目的3二课程设计要求3三设计内容4四硬件设计需求51硬件系统各模块功能51单片机...

单片机课程设计实验报告_LCD电子时钟

单片机原理与应用课程名称单片机原理与应用设计题目电子钟院系电子信息工程学院班级自动化设计者全宏宇指导教师一设计目标LCD显示电子钟的基本功能1实现时钟功能2实现闹铃功能3实现秒表功能4具有一定的计时精度LCD显...

数字电子钟课程设计报告

课程设计课程名称题目名称专业班级学生姓名学号指导教师单片机课程设计电子钟电子信息科学2班XXX511020XXXXXX本设计是一种基于AT89C51单片机控制的数字万年历设计它具有多项显示和控制功能能用LCD实...

数字电子钟课程设计报告

目录摘要3关键词3一设计任务与要求4二方案设计与论证4方案一4方案二5三硬件单元电路设计与参数计算51电源电路52按键电路53时钟电路54驱动电路55LED显示电路56单片机电路6四软件设计与流程图10五总原电...

单片机电子时钟设计

单片机电子时钟设计课程设计论文任务书1单片机电子时钟设计2单片机电子时钟设计指导教师签字学生签字3单片机电子时钟设计4单片机电子时钟设计5单片机电子时钟设计目录摘要1第一章电子时钟的设计211电子时钟简介212...

单片机课程设计论文 电子时钟设计

课程设计论文题目名称电子时钟设计课程名称单片机原理与接口技术学生姓名学号系专业电气工程系电气类指导教师20xx年7月2日课程设计论文任务书1指导教师签字学生签字2课程设计论文评阅表学生姓名学号系别电气工程系专业...

单片机电子时钟实验报告

课程设计报告设计题目:电子时钟设计指导教师:姓名:学号:班级:专业:日期:20**-1-5控制电路的C语言源程序10单片机电子时钟摘要:单片机即单片微型计算机。(Single-ChipMicrocomputer…

单片机电子时钟课程设计报告(31篇)