单片机课程设计修改版oc
- 格式:doc
- 大小:1.06 MB
- 文档页数:26
单片机c语言课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理和结构,理解C语言在单片机编程中的应用。
2. 培养学生运用C语言进行单片机程序设计和调试的能力。
3. 使学生了解单片机外围设备的接口技术,并能结合实际需求进行简单系统设计。
技能目标:1. 培养学生运用Keil等开发工具进行单片机C语言编程,完成程序设计、编译、下载和调试。
2. 培养学生分析问题和解决问题的能力,能够针对实际应用场景设计单片机控制系统。
3. 提高学生的动手实践能力,通过课程设计,独立完成一个具有实际应用价值的单片机控制系统。
情感态度价值观目标:1. 培养学生积极的学习态度,激发对单片机及嵌入式系统开发的兴趣。
2. 培养学生的团队合作意识,学会在项目中进行有效沟通和协作。
3. 增强学生的创新意识,鼓励他们在课程设计中勇于尝试新思路、新技术。
课程性质分析:本课程为单片机C语言课程设计,侧重于实践操作和实际应用,旨在帮助学生将所学理论知识与实际工程相结合,提高解决实际问题的能力。
学生特点分析:学生已具备一定的单片机原理和C语言基础,具有一定的编程和动手能力。
在此基础上,通过课程设计,提高学生的综合应用能力和创新能力。
教学要求:1. 结合课本内容,注重理论与实践相结合,强化学生的动手实践能力。
2. 以项目为导向,引导学生主动探索,培养学生的问题分析和解决能力。
3. 注重团队合作,培养学生的沟通能力和协作精神。
4. 关注学生的个体差异,实施差异化教学,提高全体学生的学习效果。
二、教学内容1. 单片机基础理论:回顾51单片机的结构、原理及其外围设备的工作原理,重点复习I/O口编程、定时器、中断系统等内容。
教材章节:第一章至第三章2. C语言编程基础:巩固C语言基本语法,包括数据类型、运算符、控制语句、函数等,结合单片机编程需求进行讲解。
教材章节:第四章至第六章3. 单片机C语言编程实践:学习使用Keil开发工具进行单片机C语言编程,掌握程序设计、编译、下载和调试的全过程。
摘要近几年,单片机在各个领域得到广泛的应用。
从工业到人们的日常生活,大部分的科技产品都是通过单片机来控制。
在它问世之前,自动控制设备得不到广泛的应用,这是因为控制设备的体积庞大,耗电量大,价格昂贵。
在第一台微处理器成功研制不久,第一个单片机就问世了。
因为其小巧的体积,低功耗,以及高效的性能,单片机受到了大家的欢迎。
本设计利用Atmel公司的AT89C52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用C语言进行软件编程,并用Proteus软件进行演示、验证。
主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C52芯片为核心,辅以必要的电路,构成了一个单片机的数字电子时钟。
它的计时周期为24小时,显满刻度为“23时59秒”,且配有4个独立按键,可以灵活地调节时间和日期,并具有一定的扩展性。
关键词:单片机;数字电子钟;数码管驱动显示电路。
目录1简介 (1)1.1基于单片机的数字钟介绍 (1)1.2本系统的特点和功能介绍 (2)2 硬件设计 (3)2.1总体设计方案 (3)2.1.1 AT89C51的介绍 (3)2.2硬架结构设计 (5)2.2.1 51单片机的最小系统 (5)2.2.2显示部分设计 (5)2.2.3电源部分设计 (7)2.2.4报时部分的设计 (8)2.2.5键盘部分的设计 (8)2.2.6总体硬件电路图 (9)2.6.7 proteus仿真 (9)3软件部分 (10)3.1部分设计思想的说明 (10)3.2 C语言、keil、proteus的介绍 (11)3.2.1 C语言 (11)3.2.2 keil (12)3.2.3 proteus (12)3.3参考程序 (13)总结 (24)参考文献 (24)1简介1.1基于单片机的数字钟介绍1.单片机的介绍:“单片机”就是将计算机的基本部件集成到一块芯片上,包括CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、并行口(Parallel Port)、串行口(Serial Port)、定时器/计数器(Timer/Counter)、中断系统(Interrupt System)、系统时钟及系统总线等。
单片机电子时钟摘要:在日常生活中,电子时钟与我们密切相关,在很多地方都会用到电子时钟。
除了专用的时钟、计时显示牌外,许多应用系统常常也带有实时时钟显示,如各种智能化仪器仪表、工业过程控制系统以及家用电器等。
实现电子时钟的方法有多种,通过前面我们对单片机基本理论及相关知识的学习,在这里,要求用单片机为主控制芯片设计一简单的单片机电子时钟。
近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
关键词:电子时钟;单片机;计时SCM Electronic ClockAbstract:In our daily life, the electronic clock is closely related to the electronic clock which will be used in many places. In addition to a dedicated clock, timing licenses, there are many applications which often with real-time clock display, such as a variety of intelligent instrumentation, industrial process control systems and home appliances. There are many ways to realize the Electronic clock, through the front of learning our SCM basic theory and related knowledge, here, the microcontroller-based control chip design a simple single-chip electronic clock. With the development of computer penetration in the social field and LSI in recent years, the using of microcontroller applications is constantly go deeper, because it has the features of a small size, low power consumption, cheap, reliable, easy to use. Therefore it is particularly suitable for the control of the system, more and more widely used in automatic control, Intelligent instruments, data acquisition, and military products and home appliances, SCM often used as a core component in the structure, according to the specific hardware and software for application-specific object characteristics combined to make perfect.Keywords:electronic clock; microcontroller; timing目录第一章引言 (1)1.1课程设计的目的 (1)1.2课程设计内容 (1)第二章总体方案设计 (2)2.1 总体思想--方案论证 (2)2.2方案的选择 (2)第三章硬件系统设计 (4)3.1总电路设计 (4)3.2器件的介绍 (4)3.3单元模块设计 (6)第四章软件系统设计 (9)4.1软件程序思想 (9)4.2主程序及流程图 (9)4.3子程序及流程图 (12)第五章系统仿真 (16)5.1 KEIL 51介绍 (16)5.2 PROTEUS介绍 (20)5.3仿真过程及仿真结果 (28)第六章结束语 (29)致谢 (30)参考文献 (31)第一章引言1.1课程设计的目的本次设计中以单片机的发展过程和发展方向为背景,介绍了单片机的输入输出的工作原理和操作方法,中断的工作原理和操作方法,74LS164译码器的工作原理和与LED连接的方法。
单片机课程设计学院:通信与电子工程学院班级:电子082班学号:姓名:同组成员:指导老师:日期: 2011年12月22日摘要根据交通灯的设计原理及要求,通过总体设计交通灯原理接线图,综合应用单片机原理、微机原理、微机接口技术等方面的知识,结合单片机仿真系统的使用方法,通过软硬件结合,使用89C52单片机来设计出符合要求的交通灯控制系统。
完成由单片机89C52、发光二极管、 LED数字显示器、开关、部分电阻及电容组成的交通灯控制系统。
系统除基本交通灯功能外,还具有倒计时、显示时间设置、LED信息显示等功能。
关键词:单片机交通灯数码管目录摘要 (2)目录 (3)第1章交通灯的背景及发展 (4)1.1 交通灯的历史 (4)1.2交通灯国内外发展概况 (5)第2章单片机控制交通系统总体设计 (7)2.1单片机交通控制系统通行方案设计 (7)2.2单片机交通控制系统的功能要求 (8)2.2.1 倒计时显示 (8)2.2.2 车流量检测及调整 (8)2.2.3时间手动设置 (8)2.3单片机交通控制系统的基本构成及原理 (9)第3章系统硬件电路的设计 (10)3.1系统硬件总电路构成及原理 (10)3.1.1 AT89C52简介 (10)3.2系统硬件电路构成 (13)3.2.1系统工作原理 (13)3.2.2车流量检测电路及模拟 (15)3.2.3八段LED数码管 (16)3.2.4其它器件 (17)第4章系统软件程序的设计 (18)4.1程序主体设计流程 (18)4.2子程序模块设计 (19)参考文献 (23)心得体会 (24)第1章交通灯的背景及发展1.1 交通灯的历史交通是城市经济活动的命脉,对城市经济发展、人民生活水平的提高起着十分重要的作用。
城市交通问题是困扰城市发展、制约城市经济建设的重要因素。
城市道路增长的有限与车辆增加的无限这一对矛盾是导致城市交通拥挤的根本原因。
城市街道网络上的交通容量的不断增加,表明车辆对道路容量的要求仍然很高,短期内还不可能改变。
单片机课程设计单片机课程设计15篇单片机课程设计1课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
这次实习让我受益匪浅,无论从知识上还是其他的各个方面。
上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。
但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。
在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。
团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近四星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在XXX、XXX、老师的辛勤指导下,终于游逆而解。
单片机C语言程序设计课程设计1. 课程设计简介单片机是嵌入式系统中的重要组成部分,其主要任务是控制和操作外围设备,实现各种功能。
本课程为单片机C语言程序设计课程设计,旨在帮助学生深入理解单片机的工作原理和编程方法,提高学生的计算机编程能力和实际操作能力。
2. 课程设计目标本课程设计旨在让学生能够:•熟练掌握单片机硬件结构和工作原理•掌握单片机C语言程序设计的基本方法和技巧•能够独立完成简单的单片机控制项目设计和实现•能够运用所学知识解决实际问题3. 课程设计内容本课程设计内容主要包括以下几个方面:3.1 单片机基础知识介绍单片机的基本结构、主要特点、工作原理和基本应用领域。
3.2 单片机开发环境介绍单片机开发所需的硬件和软件环境,并进行基本的配置和使用说明。
3.3 单片机C语言程序设计基础•学习C语言程序的基本语法和结构•熟悉单片机C语言程序设计的基本思想和方法•实践编写简单的单片机C语言程序3.4 实际应用案例介绍单片机在各种实际应用场景中的具体应用,并引导学生独立完成相应的案例项目设计和实现。
4. 课程设计形式本课程设计采用“理论 + 实践”相结合的形式进行教学,主要分为以下几个环节:4.1 理论讲解教师进行理论讲解,介绍单片机的基本知识和基本编程思想。
4.2 实验操作学生进行实验操作,通过实际操作掌握单片机的应用和编程技能。
4.3 项目设计学生进行项目设计,将所学的知识应用到实际项目中,提高学生的设计和创新能力。
4.4 报告展示学生进行项目报告展示,将自己的成果展示给其他同学和老师,并进行评价和讨论。
5. 课程设计考核本课程设计采用综合考核方式进行评价,主要包括以下几个环节:5.1 实验报告学生按照要求撰写实验报告,包括实验目的、实验原理、实验步骤、实验结果和思考问题等内容。
5.2 项目设计报告学生独立完成项目设计报告,包括项目简介、设计思路、实现方法、实验结果和应用展望等内容。
5.3 学习笔记要求学生认真对课程内容进行总结和笔记,并按时提交。
宝鸡文理学院单片机技术课程设计说明书I/O口的扩展与应用目录1. 概述.............................................................................................. 错误!未定义书签。
2. 分项说明...................................................................................... 错误!未定义书签。
2.1 XXXXXX.................................... 错误!未定义书签。
2.2 XXXXXX.................................... 错误!未定义书签。
3. 分项说明...................................................................................... 错误!未定义书签。
3.1 XXXXXX.................................... 错误!未定义书签。
3.2 XXXXXX.................................... 错误!未定义书签。
4. 结束语.......................................................................................... 错误!未定义书签。
参考文献........................................................................................... 错误!未定义书签。
附录........................................................................................... 错误!未定义书签。
单片机课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理和结构,理解其工作流程。
2. 使学生了解并熟练运用单片机的编程语言,如C语言或汇编语言。
3. 帮助学生掌握单片机外围电路的设计与搭建,使其能独立完成简单的电路系统。
技能目标:1. 培养学生运用单片机解决实际问题的能力,提高创新思维和动手实践能力。
2. 培养学生具备查阅资料、分析问题、设计方案、调试程序等综合技能。
情感态度价值观目标:1. 培养学生对单片机课程的兴趣,激发学习热情,形成自主学习、合作学习的良好习惯。
2. 培养学生具备团队协作精神,学会与他人分享、交流、合作,提高沟通能力。
3. 培养学生关注科技发展,了解单片机在现实生活中的应用,增强社会责任感和创新意识。
课程性质分析:本课程为单片机课程设计,旨在让学生在掌握理论知识的基础上,通过实际操作,提高解决实际问题的能力。
学生特点分析:学生已具备一定的电子技术基础和编程能力,对单片机有一定了解,但实践经验不足,需要通过本课程加强实践操作和综合运用。
教学要求:1. 理论与实践相结合,注重培养学生的动手能力。
2. 引导学生主动思考,发现问题,解决问题。
3. 创设实际情境,提高学生的学习兴趣和参与度。
4. 注重培养学生的团队协作能力和沟通能力。
二、教学内容1. 单片机原理及结构:介绍单片机的组成、工作原理,重点讲解CPU、存储器、输入输出接口等部分。
参考教材章节:第一章 单片机概述2. 单片机编程语言:学习C语言和汇编语言的基础知识,掌握编程技巧,能独立编写简单的单片机程序。
参考教材章节:第二章 单片机编程语言3. 单片机外围电路设计:讲解并实践常用外围电路的设计与搭建,如LED 灯、蜂鸣器、数码管等。
参考教材章节:第三章 单片机外围电路设计4. 单片机程序下载与调试:学习使用编程器、仿真器等工具,掌握程序下载、调试方法。
参考教材章节:第四章 单片机程序下载与调试5. 实践项目:设计并实现几个实际项目,如温度控制器、智能小车、智能家居系统等,锻炼学生解决实际问题的能力。
《单片机原理与应用》课程设计报告题目:多功能电子钟姓名:学号:学院:机械与电子工程专业: 电子信息工程班级: 1420601Z指导教师:李跃忠一、设计任务及要求时钟按键不超过4个,上电后可进行正常走时,能够显示时、分、秒,走时误差每天不能超过5秒。
要求具有切换显示,可以显示年、月、日以及对应星期。
时钟应具备调时功能,并有对应调时位的闪烁提示。
时钟要求具有秒表功能和闹钟功能,秒表误差要求不超过1ms,闹钟要求能够准点报时并自动解除。
二、设计思路及规划时钟采用8位数码管动态译码显示,用独立键盘做为功能键。
上电后时钟能够正常运行,此时按下K2按键数码管切换显示年、月、日,稍作延时后显示对应星期,再次延时后将自动切换至时、分、秒的时钟显示;日期的切换显示不影响时钟的正常走时。
按下K1按键进入调时功能,此时K1为调时切换键,K2为调时按键,调时过程中时钟暂停运行。
按下K3按键进入闹钟设定功能,K3为时、分切换键,K2为设定键;闹钟设定的过程中不影响时钟的正常走时。
按下K4按键进入秒表功能,按下K2开始计数,再次按下K2为停止计数,此时若按下K4则可清除当前的计数,若按下K2则延续计数,当数值清零后,可重复上述步骤也可以按K4退出秒表功能;秒表功能不影响时钟的正常走时。
三、硬件电路图四、程序流程图1、主函数流程图2、时钟中断和秒表计数中断流程图3、调时以及闹钟设定流程图五、程序源代码#include<reg51.h>unsigned char WeiXuan[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; unsignedcharDuanXuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77, 0x7c,0x39,0x5e,0x79,0x71,0x00,0x40,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0 xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1,0x80}; //0~F以及消隐和显示"—" unsigned char a,b,c,d,e,f,h,a1,k,k1,c2,d2,a3,b3,c3,d3;unsigned int g;sbit FM=P1^0;sbit T=P1^1;sbit Tz=P3^2;sbit NY=P1^1;sbit NZTZ=P3^3;sbit NZ=P1^2;sbit js=P1^1;sbit JS=P1^3;void Xians(char a,char b);void SSSM();void SSSM1();void SSSM2();void SSSM3();void main(){unsigned int i,j,i1=0,j1=0,i2,j2,i3;IP=0x03; //设置中断优先级EA=1; //中断总开关EX0=1; //外部中断0允许位IT0=0; //外部中断0为低电平触发EX1=1; //外部中断1允许位IT1=0; //外部中断1为低电平触发ET0=1; //定时器、计数器0允许位TMOD=0x11; //设定定时器、计数器0、1的工作方式为方式1 TH0=(65536-50000)/256; //定时器、计数器装载初值50ms TL0=(65536-50000)%256;ET1=1; //定时器、计数器1允许位TH1=(65536-10000)/256; //定时器、计数器装载初值10ms TL1=(65536-10000)%256;TR0=1; // 启动定时计数器0TR1=0; //关闭定时计数器1a=b=c=d=0;c2=1;d2=0;e=f=1;g=2000;h=6;a1=17;FM=0; //蜂鸣器NY=1; //年月日NZ=1; //闹钟JS=1; //计数while(1){if(d==d2&&c==c2) //检测是否到达定时时间NZ=0;if(NZ==0) //用于定时提醒{for (i2=1;i2>0;i2--){for (j2=38;j2>0;j2--){for(i3=130;i3>0;i3--);}}for (i2=1;i2>0;i2--){for (j2=38;j2>0;j2--){FM=~FM;for(i3=100;i3>0;i3--);}}}if(NY==0){i=11000;while(i--);if(NY==0){for(i=100;i>0;i--)for(j=5;j>0;j--)SSSM1();for(i=100;i>0;i--)for(j=5;j>0;j--)SSSM2();}}if(JS==0) //计时部分{i=11000;while(i--);if(JS==0) {i1=1;}}while(i1){if(js==0){i=11000;while(i--);if(js==0&&j1==0) {TR1=1;j1=1; i=11000;while(i--);}if(js==0&&j1==1) {TR1=0;j1=2; i=11000;while(i--);}if(js==0&&j1==2) {TR1=1;j1=1; i=11000;while(i--);}}if(JS==0){i=11000;while(i--);if(JS==0&&j1==2) {a3=b3=c3=d3=0;j1=0;i=11000;while(i--);}if(JS==0&&j1==0) {j1=0;i1=0;}}SSSM3();//计时部分}SSSM();}}void Xians(char a,char b) //用于动态显示下的位选、段选以及消隐{ unsigned char i=100;P2=WeiXuan[a];P0=DuanXuan[b];while(i--); //不精确延时0.1ms,用于改善数码管亮度P0=DuanXuan[16]; //用于动态显示的消隐}void SSSM() //用于时间的实时扫描显示{Xians(0,d/10);Xians(1,d%10);Xians(2,a1);Xians(3,c/10);Xians(4,c%10);Xians(5,a1);Xians(6,b/10);Xians(7,b%10);}void SSSM1() //用于年月日的实时扫描显示{Xians(0,g/1000);Xians(1,g%1000/100);Xians(2,g%100/10);Xians(3,g%10+18);Xians(4,f/10);Xians(5,f%10+18);Xians(6,e/10);Xians(7,e%10);}void SSSM2() //用星期的实时扫描显示{Xians(0,16);Xians(1,16);Xians(2,16);Xians(3,16);Xians(4,16);Xians(5,16);Xians(6,0);Xians(7,h);}void SSSM3(){Xians(0,d3/10);Xians(1,d3%10+18);Xians(2,c3/10);Xians(3,c3%10+18);Xians(4,b3/10);Xians(5,b3%10+18);Xians(6,a3/10);Xians(7,a3%10);}void DSQJSQ0 (void) interrupt 1 //实时中断{TH0=(65536-50000)/256; //计数重装TL0=(65536-50000)%256;a++;if(a==10) {a1=16;}if(a==20) {a1=17;b++;a=0;FM=~FM;}if(b==60) {c++;b=0;NZ=1;} //秒if(c==60) {d++;c=0;} //分if(d==24) {e++;h++;d=0;} //时if(h==8) {h=0;}if((g%4==0&&g%100!=0)||(g%100==0&&g%400==0)) // 闰年年月日{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){f++;e=1;}}else {if(f==2) {if(e==30){f++;e=1;}}else {if(e==31){f++;e=1;}}}}else //非闰年年月日{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){f++;e=1;}}else {if(f==2) {if(e==29){f++;e=1;}}else {if(e==31){f++;e=1;}}}}if(f==13) {g++;f=1;}}void JSZD(void) interrupt 3{TH1=(65536-10000)/256; //计数重装TL1=(65536-10000)%256;a3++;if(a3==100) {b3++;a3=0;}if(b3==60) {c3++;b3=0;}if(c3==60) {d3++;c3=0;}}void TIAOSHI (void) interrupt 0{unsigned int i,j;i=10000;while(i--);a1=17;k=0;while(k==0) //秒调时循环{unsigned char b1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) b=b+1;}if(b==60)b=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,d/10);Xians(1,d%10);Xians(2,a1);Xians(3,c/10);Xians(4,c%10);Xians(5,a1);Xians(6,b1);Xians(7,b1);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) b=b+1;}if(b==60)b=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM();}}while(k==1) //分调时循环{unsigned char c1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) c=c+1;}if(c==60)c=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,d/10);Xians(1,d%10);Xians(2,a1);Xians(3,c1);Xians(4,c1);Xians(5,a1);Xians(6,b/10);Xians(7,b%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) c=c+1;}if(c==60)c=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM();}}while(k==2) //时调时循环{unsigned char d1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) d=d+1;}if(d==24)d=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,d1);Xians(1,d1);Xians(2,a1);Xians(3,c/10);Xians(4,c%10);Xians(5,a1);Xians(6,b/10);Xians(7,b%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) d=d+1;}if(d==24)d=0;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM();}}while(k==3) //年调时循环{unsigned char g1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) g=g+1;}if(g==2101)g=2000;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,g1);Xians(1,g1);Xians(2,g1);Xians(3,g1+18);Xians(4,f/10);Xians(5,f%10+18);Xians(6,e/10);Xians(7,e%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) g=g+1;}if(g==2101)g=2000;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM1();}}while(k==4) //月调时循环{unsigned char f1=16;i=100;{ if(T==0){ j=11000;while(j--);if(T==0) f=f+1;}if(f==13)f=1;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,g/1000);Xians(1,g%1000/100);Xians(2,g%100/10);Xians(3,g%10+18);Xians(4,f1);Xians(5,f1+18);Xians(6,e/10);Xians(7,e%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) f=f+1;}if(f==13)f=1;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM1();}}while(k==5) //日调时循环{unsigned char e1=16;i=100;{ if(T==0){ j=11000;while(j--);if(T==0){e=e+1;if((g%4==0&&g%100!=0)||(g%100==0&&g%400==0)) // 闰年{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){e=1;}}else {if(f==2) {if(e==30){e=1;}}else {if(e==31){e=1;}}}}else //非闰年{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){e=1;}}else {if(f==2) {if(e==29){e=1;}}else {if(e==31){e=1;}}}}}}if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,g/1000);Xians(1,g%1000/100);Xians(2,g%100/10);Xians(3,g%10+18);Xians(4,f/10);Xians(5,f%10+18);Xians(6,e1);Xians(7,e1);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0){e=e+1;if((g%4==0&&g%100!=0)||(g%100==0&&g%400==0)) // 闰年{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){e=1;}}else {if(f==2) {if(e==30){e=1;}}else {if(e==31){e=1;}}}}else //非闰年{if(f==1||f==3||f==5||f==7||f==8||f==10||f==12){if(e==32){e=1;}}else {if(f==2) {if(e==29){e=1;}}else {if(e==31){e=1;}}}}}}if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM1();}}while(k==6) //星期调时循环{unsigned char h1=16;i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) h=h+1;}if(h==8)h=1;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}Xians(0,h1);Xians(1,h1);Xians(2,h1);Xians(3,h1);Xians(4,h1);Xians(5,h1);Xians(6,h1);Xians(7,h1);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) h=h+1;}if(h==8)h=1;if(Tz==0){ j=11000;while(j--);if(Tz==0) k=k+1;}SSSM2();}}}void NZDSSZ (void) interrupt 2 {unsigned int i,j;i=10000;while(i--);a1=17;k1=0;while(k1==0) //分设定循环{i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) c2=c2+1;}if(c2==60)c2=0;if(NZTZ==0){ j=11000;while(j--);if(NZTZ==0) k1=k1+1;}Xians(0,16);Xians(1,16);Xians(2,16);Xians(3,d2/10);Xians(4,d2%10);Xians(5,17);Xians(6,16);Xians(7,16);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) c2=c2+1;}if(c2==60)c2=0;if(NZTZ==0){ j=11000;while(j--);if(NZTZ==0) k1=k1+1;}Xians(0,16);Xians(1,16);Xians(2,16);Xians(3,d2/10);Xians(4,d2%10);Xians(6,c2/10);Xians(7,c2%10);}}while(k1==1) //时设定循环{i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) d2=d2+1;}if(d2==24)d2=0;if(NZTZ==0){ j=11000;while(j--);if(NZTZ==0) k1=k1+1;}Xians(0,16);Xians(1,16);Xians(2,16);Xians(3,16);Xians(4,16);Xians(5,17);Xians(6,c2/10);Xians(7,c2%10);}i=100;while(i--){ if(T==0){ j=11000;while(j--);if(T==0) d2=d2+1;}if(d2==24)d2=0;if(NZTZ==0){ j=11000;while(j--);if(NZTZ==0) k1=k1+1;}Xians(0,16);Xians(2,16);Xians(3,d2/10);Xians(4,d2%10);Xians(5,17);Xians(6,c2/10);Xians(7,c2%10);}}}。
摘要随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。
本文介绍了一种应用 AT89S52单片机设计的防盗自动报警电子密码锁系统。
经实验验证该系统具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可作为产品进行开发,应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,所以电子密码锁凭着比较强的实用性、锁密匙量大,又要制造简单;既安全可靠,又成本低廉;既保密性强,又实用性广,在密码锁的巨大市场上占有一席之地。
本文讲述了基于AT89S52单片机的“电子密码锁”的设计与实现,首先在绪论中介绍了此系统的简介、研究本系统的目的和意义。
此后,本文在第二、三、四章论述了系统整体结构框图,系统各模块功能,论述了系统工作原理并对所使用各种芯片的功能与特性进行了介绍、系统硬件设计;在第五章中重点剖析了软件设计开发的过程。
而在最后一章简述了本次设计的总结,个人感受。
此外,通过对系统软硬件的不断调试,进一步完善功能,同时也加深了对单片机、LCD液晶显示器、电路设计等方面知识。
关键词: 单片机;AT89S52;电子密码锁; LCD显示1.密码锁1.1密码锁的介绍安全问题是现代社会各界普遍关注的焦点之一。
在现实生活中,很多场合都用到了电子密码锁,比如说门禁系统,银行账户管理,保险箱等等地方都要用到电子密码锁,而且对其要求也很高。
所以高安全性能密码锁的研究就成了一个必需的话题。
近几年各种安全产品(如指纹识别、卡辨识、红外防盗等)已相继问世,但这类产品的特点是针对特定指纹或有效卡。
只能适用于保密要求高或供个人使用的保险箱保险柜等,虽然这些产品安全性高,但其生产成本高,携带、安装及使用不方便,这在一定程度上限制了这类产品的普及和推广。
随着单片机的迅速发展,其应用领域越来越广,如消费电子、家用电器、办公设备、商业营销设备、工业控制和机电一体化控制系统、智能测量仪表以及汽车与航空航天电子系统中都广泛采用了单片机。
51系列单片机由于具有可靠性好,以及扩展控制功能强等优点,成为国内目前应用最广泛的一种8为单片机之一。
随着单片机的应用领域越来越广泛,可以看出其的优越性和可靠性,所以将其应用到保密和安全方面是必然的,也是相当可靠,相当有意义的,基于单片机的电子密码锁的研究在保护财产和人身安全方面可以给人们带来更多更好的选择。
本文介绍的是一种由单片机编程控制实现的多功能密码锁,这种电路设计具有密码输入有效提示、错误指示、控制开锁电平、控制报警电路、密码修改等功能。
可在意外泄密的情况下及时修改密码,密码可以是1-16位,保密性强、灵活性高、特别适用于家庭、办公室学生宿舍及宾馆等场所,具有社会推广价值。
1.2电子密码锁发展趋势从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。
键盘式电子密码在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。
但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。
当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。
因此,为了发扬优点、克服弱点,键盘式电子密码也在不断发展中,如“任意设定密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新;而“自动更改密码”技术使得本次输入的密码将自动更改成下次应输入的密码,更改的规律不为他人所知,因而不怕旁观者窥测;独出心裁的“键盘乱序显示”技术使得键盘上的固定键位每次显示出的字符不固定,并且显示的窄小角度只能由操作者正面看得到,因而即使旁观者看见操作动作也难以窥测出密码;“多重密码设定”技术使得单组密码不一定有效,适合多人分权使用,需要输入两组以上的密码才被认可,大大提高了保密性,如果限定输入这些密码的先后顺序或时间区段,则保密性还可提高。
在输入密码的过程中,为了限制试探密码的企图,通常输入错误码若干次或若干时间内输入不正确,即“封锁”键盘,不再接受输入操作。
总之,尽管新式电子防盗锁层出不穷,但键盘式电子密码防盗锁仍然“老树发新芽”,不仅在市场上居于主流地位,而且,还经常作为其他类型电子防盗锁的辅助输入手段。
电子防盗锁广泛应用于金融业,其根本的作用是“授权”,即被“授权”的人才可以存取钱、物。
广义上讲,金融业的“授权”主要包括以下三种层次的内容:1、授予保管权,如使用保管箱、保险箱和保险柜;2、授予出入权,如出入金库、运钞车和保管室;3、授予流通权,如自动存取款。
目前,金融行业电子防盗锁的应用主要集中在前两个层面上。
当然,以上所说的授权技术再高超,都必须由精良的“锁具”担当承载结构部件,实现开启、闭锁的功能,而且承担实体防护作用,抵抗住或尽量延迟破坏行为,让电子防盗锁“软、硬不吃”。
一般情况下,锁具防盗的关键是锁身外壳、闭锁的部件(如伸缩的锁舌或锁栓、锁扣盒锁扣板以及依靠电磁力直接闭锁的电磁部件等)的强度(应有足够的机械强度和刚度,能够承受一定数值、一定方向的静压力和冲击力以及力矩)、锁止型式(能承受某些方式和工具的作用)、配合间隙(防止采用机械的、电子的方法探入锁具内部而被开启)和布局(将薄弱的、与锁的开启直接相关的零部件和电路置于壳体保护之下,并且不易被识别出来)。
提高电子防盗锁之防护能力的必然途径是报警,在金融业的许多场所有人值守、有电视监控,具有报警功能,可以综合物理防范和人力防范两种作用。
报警的前提是具备探测功能,根据电子防盗锁的使用场所和防护要求,可选择多种多样的探测手段。
在中国的城市金融业中,实现联网报警已经成为对各金融网点的基本要求。
根据国内外的实践经验,金融业实行安全防范风险等级很有必要,即依据使用的防盗报警器材的性能、安装布局和人员值守状况等,可以评估被防护物或区域的防护能力,得出风险等级,其中,电子防盗锁的性能至关重要。
1.3设计原理单片机电子锁是以51系列单片机为核心,配以相应硬件电路,完成密码的设置、存贮、识别和显示、驱动电磁执行器并检测其驱动电流值、接收传感器送来的报警信号、发送数据等功能。
单片机接收键入的代码,并与存贮在EEPROM中的密码进行比较,如果密码正确,则驱动电磁执行器开锁;如果密码不正确,则允许操作人员重新输入密码,最多可输入三次;如果三次都不正确,则单片机通过通信线路向智能监控器报警。
单片机将每次开锁操作和此时电磁执行器的驱动电流值作为状态信息发送给智能监控器,同时将接收来自传感器接口的报警信息也发送给智能监控器,作为智能化分析的依据。
为了防止通信线路的人为破坏和电磁执行器因某种原因造成流过电磁线圈的电流过大而烧毁线圈,可以加入电流监视技术模块采用MAXIM公司生产的电流/电压转换芯片MAX471。
该芯片能将被测电流I转化成对地输出电压U,且有测量范围大、精度高、输出电压U和被测电流I成正比等特点。
电流监视器输出电压送A/D转换器,单片机通过读取A/D转换结果,获知线路中电流的变化情况,通过分析及时发现异常,发出报警信号。
本设计因为使用了LED灯替代电磁执行器,所以没有采用该保护。
1.4实现功能在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。
本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。
到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。
本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。
基于以上思路,本次设计使用 ATMEL公司的 AT89C51 实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1)密码通过键盘输入,若密码正确,则将锁打开。
(2)报警、锁定键盘功能。
密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过 3 次,蜂鸣器报警并且锁定键盘。
电子密码锁的设计主要由三部分组成:4×4 矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。
另外系统还有 LED 提示灯,报警蜂鸣器等。
密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:(1)密码输入功能:按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。
(2)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。
(3)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。
主要的设计实施过程:首先,选用 ATMEL公司的单片机 AT89C51,以及选购其他电子元器件。
第二步,使用protel设计硬件电路原理图。
第三步,使用Keil uVision3 软件编写单片机的 C 语言程序、仿真、软件调试。
第四部,使用 PROTEUS 软件进行模拟软、硬件调试。
最后,联合软、硬件调试电路板,完成本次课程设。
1.5研究的主要内容本设计采用的是串行的EEPROM芯片,使用I2C总线传输数据,这样可以少占用单片机的端口,I2C总线是由PHILIPS公司开发一种简单、双向二线制同步串行总线。