AT89C51单片机的电子表设计 精品

合集下载

基于AT89C51单片机的可调式电子时钟设计

基于AT89C51单片机的可调式电子时钟设计

摘要电子时钟主要是利用了电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。

对当前的电子时钟开发手段进行了比较和分析,最终确定了采用单片机技术实现的电子时钟。

本次课题介绍了以AT89C51单片机为主控芯片的可调式电子时钟,功耗小,能在3V的低压工作。

时钟芯片采用美国DALLAS公司提供的具有涓细电流低功耗的DS1302。

它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。

显示部分采用LCD1602液晶显示,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,与普通数码管相比功耗较小,硬件连接简单,较直观。

软件使用高级C语言编程,具有灵活的可移植性,同时该时钟具有按键可调的功能,能够对日期时间调整。

本设计说明书首先介绍的是总体方案设计,接着是硬件设计,本部分详细的介绍了各模块的工作原理及相互的连接,再接着介绍了软件设计部分,最后是仿真调试。

经仿真验证,该设计能满足所有的功能。

关键词:可调式;AT89C51;DS1302;C语言ABSTRACTElectronic clock basically is to use the electronic technology will clock electronic, digital, has the clock accurate, small volume, friendly interface, can be expanded performance is strong and other characteristics, are widely used in life and work. On the current development of the electronic clock means were compared and analyzed, finally determined by single chip microcomputer technology to the electronic clock. This subject introduces the AT89C51 as the controller chip adjustable electronic clock, power consumption is small, can be in 3 V of low-pressure work. The clock chip adopt American DALLAS company has Juan fine current DS1302 of low power consumption. It can be to year, month, day, Sunday, when, minutes and seconds for the time, also has a leap year compensation and other functions, and the DS1302 long service life and small error. Show LCD1602 part adopts LCD display, LCD screen shows powerful, can show a large text, graphics, show diversity, clearly visible, compared with common digital tube power consumption is small, hardware connect a simple, more intuitive. Senior software use the C programming language, has the flexible portability, and the clock is the key adjustable function to adjust to a time and date. The design manual introduced is first overall design, then the hardware design. This part describes in detail the modules and working principle of the mutual connection, then introduces the design of the software in part, and finally the simulation test. The simulation results, this design can meet all functions.Keywords: adjustable;AT89C51;DS1302;C language目录绪论 (1)1 总体方案设计 (2)1.1设计要求 (2)1.2总体设计框图 (2)1.3 芯片的选择 (2)2硬件设计与实现 (4)2.1电路图 (4)2.1.1 Protel连接图 (4)2.1.2 硬件概述 (4)2.1.3 工作原理 (5)2.2主要单元电路的设计 (5)2.2.1 单片机主控制模块 (5)2.2.2时钟信号产生模块 (6)2.2.3 液晶显示模块 (8)3 软件设计 (11)3.1设计主程序流程图 (11)3.1.1 DS1302读写操作 (12)3.1.2 LCD1602初始化 (12)3.1.3 时间调整子程序 (12)3.2延时函数 (12)4 综合仿真 (13)4.1编辑工具KEIL U V ISION3 (13)4.1.1 软件安装 (13)4.1.2 创建工程 (13)4.1.3 代码编辑 (13)4.2仿真软件P ROTEUS (14)4.3软件仿真 (14)结论 (16)参考文献 (17)附录 (18)致谢 (27)绪论20世纪末,电子技术获得了飞速的发展,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

基于AT89C51单片机的数字电压表设计

基于AT89C51单片机的数字电压表设计
3、
AT89C51提供以下标准功能:4KB得Flash闪速存储器,12构,一个全双工串行通信口,片内震荡器及时钟电路,同时,AT89C51可降至0Hz静态逻辑操作,并支持两种软件可选得节电工作模式.空闲方式停止CPU得工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存RAM中得内容,但震荡器停止工作并禁止其她所有工作直到下一个硬件复位。AT89C51采用PDIP封装形式,引脚配置如图3-1所示。
2
(1)根据设计题目,选择AT89C51单片机为核心控制器件。
(2)A/D转换采用ADC0808实现,连接单片机得P1口与P3口得四位引脚。
(3)电压显示采用4位一体得LED数码管。
(4)LED数码管得段码输入由端口P0产生;位码输入用端口P2产生。
2
本设计选择AT89C51单片机作为核心控制器件。A/D转换采用ADC0808来实现。输入采用0~5V得直流电压源,电压显示采用4位一体得LED数码管,LED数码管得段码输人由端口P0输出,位码输人由端口 P2输出。
硬件电路设计由6个部分组成: A/D转换电路,AT89C51单片机系统,LED显示系统、时钟电路、复位电路以及测量电压输入电路.硬件电路设计如图2-1所示。
图2—1 系统设计框图
第3章
3
3
AT89C51就是美国ATMEL公司生产得低电压,高性能CMOS8位单片机,片内含有4KB得可反复擦写得只读程序存储器与128字节得随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准得MCS-51指令集与输出管脚相兼容,由于将多功能8位CPU与闪烁存储器组合在单个芯片中,ATMEL得AT89C51就是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉得方案。

基于AT89C51单片机的电子表设计

基于AT89C51单片机的电子表设计

课程设计说明书课程:单片机应用技术课程设计题目:基于AT89C51单片机的电子表设计姓名:学号专业:机械设计制造及其自动化班级:2011级院系:工学院机械系指导老师:朱煜钰课程设计时间:2014.10.27至2014.11.10黄河科技学院课程设计任务书工学院机械系机械设计制造及其自动化专业 11 级班学号姓名指导教师朱煜钰题目: 基于AT89C51单片机的电子表设计课程: 单片机应用技术课程设计课程设计时间 2014年 10月27 日至2014年11 月 10 日共 2 周课程设计工作内容与基本要求(设计要求、设计任务、工作计划、所需相关资料)(纸张不够可加页)1.设计要求利用AT89C51单片机作为微控制器,在数码管通过一个控制键转换来显示相应的时间和日期,能通过多个控制键用来实现时间和日期的调节。

2. 设计任务与要求2.1系统硬件电路设计根据该系统设计的功能要求选择所用元器件,设计硬件电路。

要求用Proteus 绘制整个系统电路原理图。

2.2软件设计根据该系统要求的功能进行软件设计,绘制整个系统的软件流程图;根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求逐条加以注释。

2.3 Proteus仿真用Proteus对系统软硬件进行仿真调试并通过。

2.4 编写设计说明书内容包括任务书、设计方案分析、硬件部分设计、软件部分设计、调试结果整理分析、设计调试的心得体会等,字数不少于5000字;硬件部分设计要绘制整个系统电路原理图,对各部分电路设计原理做出说明;软件设计部分要(用visio2003画图软件)绘制整个系统框图及各部分的软件流程图,列出程序清单,逐条加以注释,并注明各程序功能块的功能。

3.工作计划4.主要参考资料单片机课程设计指导书皮大能北京理工大学出版社2012.7 8051单片机实践与应用吴金戎清华大学出版社2003.8 单片机技术基础教程与实践夏路易电子工业出版社2008.1单片机原理及应用张毅刚高等教育出版社 2012.11基于Proteus的单片机系统设计与仿真实例蒋辉平机械工业出版社2007.7…指导老师签字:日期:基于AT89C51单片机的电子表设计1.设计目的(1).将所学的单片机原理与系统设计中的相关的知识应用于实践;(2).掌握单片机应用系统主要环节的设计、调试方法;(3).培养创新意识,提高动手能力和分析问题、解决问题的能力。

AT89C51单片机电子时钟设计资料(word文档良心出品)

AT89C51单片机电子时钟设计资料(word文档良心出品)

AT89C51单片机电子时钟设计学院:专业:学号:学生:目录1 电子时钟 (4)1.1 电子时钟简介 (4)1.2 电子时钟的基本特点 (4)1.3 电子时钟的原理 (4)2 单片机识的相关知识 (4)2.1单片机简介 (4)2.2 单片机的特点 (5)2.3 AT89C51单片机介绍 (5)3 设计方案的选择 (7)3.1计时方案 (7)3.2 显示方案 (7)3.3 数码管显示工作原理 (8)3.4 键盘电路设计 (9)3.5 主控模块AT89C51 (9)4 系统软件设计 (9)附录 (12)摘要:单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。

单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。

由于具有上述优点,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。

这次设计通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。

关键词:单片机;电子时钟;AT89C511 电子时钟1.1 电子时钟简介本设计采用AT89C51单片机,以汇编语言为程序设计的基础,设计一个用六位数码管显示时、分、秒的时钟。

现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零,从而达到计时的功能,是人民日常生活不可缺少的工具。

1.2 电子时钟的基本特点现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

毕业设计(论文)-基于AT89C51单片机的电子时钟的设计与实现

毕业设计(论文)-基于AT89C51单片机的电子时钟的设计与实现

重庆信息技术职业学院毕业设计题目电子时钟的设计与实现选题性质: 设计□报告□其他院系电子工程学院专业电子信息工程技术班级 09 级(2)班学号学生姓名指导教师教务处制年月日20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。

对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。

数码管显示的时间简单明了而且读数快、时间准确显示到秒。

而机械式的依赖于晶体震荡器,可能会导致误差。

数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

数字钟的精度、稳定度远远超过老式机械钟。

在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。

在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。

数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。

关键字:数字电子钟、单片机、AT89C51、LED数码显示摘要 (I)目录 (II)第1章绪论 (1)1.1数字电子钟的背景 (1)1.2数字电子钟的意义 (1)1.3数字电子钟的应用 (2)第2章整体设计方案 (3)2.1单片机的选择 (3)2.2单片机的基本结构 (4)第3章数字钟的硬件设计 (9)3.1最小系统设计 (9)3.2LED显示电路 (12)第4章数字钟的软件设计 (14)4.1系统软件设计流程图 (14)4.2数字时钟的仿真图 (20)4.3设计主程序 (21)第5章系统仿真 (23)5.1PROTUES软件介绍 (23)5.2电子钟系统PROTUES仿真 (23)第6章调试与功能说明 (22)6.1硬盘调试 (22)6.2系统性能测试与功能说明 (22)6.3系统时钟误差分析 (22)总结 (23)参考文献 (24)第1章绪论1.1 数字电子钟的背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

AT89C51单片机电子时钟设计说明

AT89C51单片机电子时钟设计说明

AT89C51单片机电子时钟设计目录1 电子时钟 (4)1.1 电子时钟简介 (4)1.2 电子时钟的基本特点 (4)1.3 电子时钟的原理 (4)2 单片机识的相关知识 (4)2.1单片机简介 (4)2.2 单片机的特点 (5)2.3 AT89C51单片机介绍 (5)3 设计方案的选择 (7)3.1计时方案 (7)3.2 显示方案 (7)3.3 数码管显示工作原理 (8)3.4 键盘电路设计 (9)3.5 主控模块AT89C51 (9)4 系统软件设计 (9)附录 (12)摘要:单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。

单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。

由于具有上述优点,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。

这次设计通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。

关键词:单片机;电子时钟;AT89C511 电子时钟1.1 电子时钟简介本设计采用AT89C51单片机,以汇编语言为程序设计的基础,设计一个用六位数码管显示时、分、秒的时钟。

现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零,从而达到计时的功能,是人民日常生活不可缺少的工具。

1.2 电子时钟的基本特点现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

基于-单片机AT89C51的电子时钟的课程设计汇本

基于-单片机AT89C51的电子时钟的课程设计汇本

机械与电子工程学院课程设计报告课程名称传感器技术设计题目数字电子钟所学专业名称自动化班级自动化111班学号2011210985学生姓名叶明昭指导教师磊2014年5月12日目录第一章电子时钟11.1电子时钟简介 (1)1.2电子时钟的基本特点 (1)1.3电子时钟的原理 (1)第二章单片机识的相关知识22.1单片机简介 (2)2.2单片机的发展史 (2)2.3单片机的特点 (3)2.489C51单片机介绍 (3)第三章控制系统的硬件设计63.1单片机型号的选择 (6)3.2数码管显示工作原理 (6)3.3键盘电路设计 (7)3.4系统工作原理 (7)3.5整个电路原理图 (9)第四章控制系统的软件设计94.1程序设计 (9)4.2程序流程图 (12)4.3伟福硬件仿真器简介 (14)4.4仿真图及结果分析 (15)第五章附录程序17第六章结束语19参考文献 (20)第一章电子时钟1.1 电子时钟简介本作品采用Atmel公司的AT89C51单片机,以汇编语言为程序设计的基础,设计一个用四位数码管显示时、分的时钟。

现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。

从而达到计时的功能,是人民日常生活补课缺少的工具。

1.2 电子时钟的基本特点现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

1.3 电子时钟的原理该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。

基于AT89C51的电子定时闹钟设计

基于AT89C51的电子定时闹钟设计

单片机课程设计题目名称:基于AT89C51的电子定时闹钟设计专业班级:测控1404学生姓名:高博学号:201423030418指导教师:郭广灵单片机系统课程设计任务书1 系统概述 (5)1.1单片机技术和数字钟简介 (5)1.2设计本电子定时闹钟的目的 (6)1.3本电子定时闹钟的功能和特点介绍 (6)2方案论证 (6)2.1总体方案 (6)2.2 AT89C51的优越性 (7)3硬件设计 (7)3.1系统的原理方框图 (7)3.2 主电路 (8)3.3 I/O分配 (8)3.4 I/O接线图 (9)4 软件设计 (10)4.1主流程 (10)4.2闹钟的实现 (11)5 系统调试 (11)6 设计心得 (12)7 参考文献 (13)8 源程序 (13)1 系统概述1.1单片机技术和数字钟简介单片机是单片微型计算机的简称,它是一种特殊的计算机。

它特别适合于控制领域,故又称为微控制器MCU(micro control unit). 采用了嵌入系统,通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器CPU,存储器和I/O接口电路等。

单片机集成度高、功能强、通用性好,而且体积小、重量轻、能耗、低价格便宜,只要和适当的软件及硬件设备相结合,便可成为一个独立的单片机控制的功能系统,单片机也成为目前测量控制应用系统的优选机种和新电子产品的关键部件。

目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。

单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。

从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。

这种软件代替硬件的控制技术也称为微控制技术,和传统控制技术相比有革命性的进步。

时钟是将小时、分种、秒种显示于人的肉眼的计时装置。

而单片机模块中最常见的正是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

基于AT89C51单片机的数字电压表设计

基于AT89C51单片机的数字电压表设计
图3—1 AT89C51引脚图
AT89C51芯片得各引脚功能为:
P0口:这组引脚共有8条,P0、0为最低位.这8个引脚有两种不同得功能,分别适用于不同得情况,第一种情况就是89C51不带外存储器,P0口可以为通用I/O口使用,P0、0-P0、7用于传送CPU得输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入得可靠性;第二种情况就是89C51带片外存储器,P0、0—P0、7在CPU访问片外存储器时先传送片外存储器得低8位地址,然后传送CPU对片外存储器得读/写数据。P0口为开漏输出,在作为通用I/O使用时,需要在外部用电阻上拉。
ADDA,ADDB,ADDC,其对应关系如表3-2所示:
表3-2 ADC0808通道选择表
地址码
对应得输入通道
C
B

0
0



1
1

0
0
1


0
1

0
1
0
1
0
1
0

IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
START:START为“启动脉冲”输入法,该线上正脉冲由CPU送来,宽度应大于100ns,上升沿清零SAR,下降沿启动ADC工作。
EA:片外存储器访问选择线,可以控制89C51使用片内ROM或使用片外ROM,
若EA=1,则允许使用片内ROM,若EA=0,则只使用片外ROM。
PSEN:片外ROM得选通线,在访问片外ROM时,89C51自动在PSEN线上产生一个负脉冲,作为片外ROM芯片得读选通信号。
RST:复位线,可以使89C51处于复位(即初始化)工作状态.通常89C51复位有自动上电复位与人工按键复位两种.

基于at89c51的电子时钟设计

基于at89c51的电子时钟设计

课程设计2:设计一个数字时钟。

要求如下:1.利用51开发板上LED数码管,LED灯,按键等设备,设计一个电子时钟。

2.电子钟使用4位数码管显示小时(24小时制)和分钟,秒可以使用LED灯或其他形式表现。

3.具有设置时钟功能,设置时间时,时间停止计时。

需要设置的位置数码管处于闪烁状态,如你想设置小时的数值时,显示小时的数码管需要处于闪烁状态,而显示分钟的数码管不可以处于闪烁状态,应处于正常显示状态。

4.按键可以选择独立键盘或矩阵键盘。

5.其他扩展功能(选做,能力强的可以做):如闹钟,时制切换等。

一.key.c#include "reg52.h"#include "key.h"extern unsigned char min_flag ;//标志位,控制分数码管闪烁extern unsigned char hour_flag ;//标志位,控制时数码管闪烁extern unsigned char shi ;extern unsigned char fen ;unsigned char key_flag = 0;//标志位,有按键被按下unsigned char key_con = 0;//控制位,控制按键(K1)被按下/*独立按键P12连接到51单片机P1端口k1对应的端口为P1.3k2对应的端口为P1.2k3对应的端口为P1.1k4对应的端口为P1.0*/code unsigned char arr[]={0xf7,0xfb,0xfd,0xfe};unsigned char read_key(unsigned char key){unsigned char i;for(i=0;i<8;i++){if(!(key & 1)){return i+1;}key>>=1; //key = key >> 1 ;}return 0;}void key_scan2(void){unsigned char temp;//键盘扫描temp = key4_scan();if(temp){if(!key_flag){if(temp==4)//K1被按下{key_con++;if(key_con==1) //第一次按下调整小时的数值{hour_flag=1;min_flag =0;}else if(key_con==2) //第二次按下调整分的数值{hour_flag=0;min_flag =1;}else //第三次按下取消调整{hour_flag=0;min_flag =0;key_con = 0;}}if(temp == 3) //增加数值{if(hour_flag){shi++;if(shi>23){shi = 0;}}else if(min_flag){fen++;if(fen>59){fen = 0;}}}if(temp == 2) //减少数值{if(hour_flag){shi--;if(shi>250){shi = 23;}}else if(min_flag){fen--;if(fen>250) //非负数,减的时候不会小于0{fen=59;}}}}key_flag = 1;}else{key_flag = 0;}}/*扫描独立键盘,输入参数:无返回值:有键按下时:返回对应的数字没有按键:返回0*/unsigned char key4_scan(void){unsigned char temp;P1 = 0xf;if(P1 != 0xf)//有按键被按下{temp = P1 & 0xf;//1110return read_key(temp);}return 0;}unsigned char sub_key_scan(unsigned char key) {unsigned char temp;P1 = key; //判断第一行temp = P1 >> 4;if(temp != 0xf){return read_key(temp);}return 0;}/*矩阵键盘硬件连接:P13连接到51单片机P1端口P1.0对应P13的1脚P1.1对应P13的2脚P1.2对应P13的3脚……P1.7对应P13的8脚输入参数:无返回值:有键按下时:返回对应的数字没有按键:返回0*/unsigned char key16_scan(void){unsigned char temp;unsigned char i=0;P1 = 0xf0;if(P1 != 0xf0)//有按键被按下{for(i=0;i<4;i++)//用函数扫描4行{temp = sub_key_scan(arr[i]);if(temp){return temp+(i*4);}}}return 0;}二.Key.h#ifndef KEY_H#define KEY_Hunsigned char key4_scan(void); unsigned char key16_scan(void);void key_scan2(void);#endif三.Led_reg.c#include "reg52.h"/*P2连接位码,P2.0连接Q4B,P2.1连接Q3B,P2.2连接Q2B,P2.3连接Q1B P0端口连接段码,P0.0连接A,。

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

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

单片机电子时钟设计报告实现功能:显示时、分、秒,刚打开电源时,显示的数据为12:00:00,然后电路会自动开始计时。

电路中有时、分、秒各自单独的调整按钮,时间调整按钮每按一次,相应的显示时间加1。

所需材料:89C51单片机,多位数码管,数码管显示译码器74LS48,3线8线译码器74LS138,3个按钮,100Ω、22KΩ电阻若干,12MHZ晶振一个,30pf无极电容2个,10uf 有极电容一个,敷铜板。

电路设计:用P1端口的P1.0~P1.3来作为数码管显示数据的输出引脚,用P1.4~P1.6引脚作为3线8线译码器的控制输入引脚,用P0端口的P0.0~P0.2来分别作为时、分、秒的时间调整按钮。

当按下按钮时,相应的输入引脚上就会有低电平输入单片机。

3线8线译码器的控制端,Y0、Y1、Y2、Y3、Y4、Y5分别控制了数码管的显示控制线。

电路如下图1-1图1-1流程图:程序设计:ORG 00H 主程序起始地址JMP START 主程序STARTORG 0BH 定时器T0中断起始地址JMP TIM0 定时器T0中断子程序TIM0 START:MOV SP,#70H 设置堆栈指针MOV 28H,#00 设置显示位数扫描指针初值为0 MOV 2AH,#12H 设置时钟显示寄存器初值为12H MOV 2BH,#00 设置分钟显示寄存器初值为00H MOV 2CH,#00 设置秒钟显示寄存器初值为00H MOV TMOD,#01H 设置定时器T0工作在方式1 MOV TH0,#0F0H 定时4ms的初值,即0F060H MOV TL0,#60H 初值的低位MOV IE,#82H 定时器T0中断允许MOV R4,#250 保证后面实现中断250次,即1秒的延时SETB TR0 启动定时器T0LOOP:JB P0.0,N2 若没有按键,就转去下一步检查分CALL DELAY 延时5ms,消除抖动MOV A,2CH 将秒寄存器的值载入累加器AADD A,#01H A的内容加1DA A 十进制调整MOV 2CH,A A的值存入秒寄存器CJNE A,#60H,N1 看是否已经是60秒,若不是就继续检查MOV 2CH,#00 已经是60秒,就清空秒寄存器的值N1:JNB P0.0,$ 秒按键还没有放开就循环等待CALL DELAY 延时5ms,消除抖动N2:JB P0.1,N4 若分没有按键,就转去下一步检查分CALL DELAY 延时5ms,消除抖动MOV A,2BH 将分寄存器的值载入累加器AADD A,#01H A的内容加1DA A 十进制调整MOV 2BH,A A的值存入寄存器CJNE A,#60H,N3 看是否已经是60分,若不是就继续检查MOV 2BH,#00H 已经是60分,就清空寄存器的值N3:JNB P0.1,$ 分按键还没有放开就循环等待CALL DELAY 延时5ms,消除抖动N4:JB P0.2,LOOP 若时没有按键,就转回去继续检查看是否有按键CALL DELAY 延时5ms,消除抖动MOV A,2AH 将时寄存器的值载入累加器AADD A,#01H A的内容加1DA A 十进制调整MOV 2AH,A A的值存入时寄存器CJNE A,#24H,N5 看是否已经是24时,若不是就继续检查MOV 2AH,#00H 已经是24时,就清空是寄存器的值N5:JNB P0.2,$ 时钟按键还没有放开就循环等待CALL DELAY 延时5ms,消除抖动JMP LOOP 返回重新检查看是否有按键******定时器T0中断子程序*******TIM0:MOV TH0,#0F0H 定时初值重设MOV TL0,#60HPUSH ACC 将累加器A的值暂存于堆栈PUSH PSW 将PSW的值暂存于堆栈DJNZ R4,X2 计时中断不满1s就退出继续中断MOV R4,#250 计时1sCALL CLOCK 调用计时器子程序CLOCKCALL DISP 调用显示子程序DISPX2:CALL SCAN 调用扫描子程序SCANPOP PSW 到堆栈取回PSW的值POP ACC 到堆栈取回累加器ACC的值RETI 返回主程序******扫描子程序*******SCAN:MOV R0,#28HINC @R0 显示位数扫描值加1CJNE @R0,#6,X3 扫描位数不为6就准备控制输出MOV @R0,#0 扫描位数为6,就令其置为0X3:MOV A,@R0 扫描位数载入AADD A,#20H A加上20H(显示寄存器地址)=各时间显示区地址MOV R1,A 各时间显示区地址存入AMOV A,@R0 扫描位数存入ASWAP A 将A的高低4位交换(其高4位为扫描的位数,低4位为显示数值)ORL A,@R1 将扫描值与显示数据组合MOV P1,A 显示输出RET******计时子程序*******CLOCK:MOV A,2CH 秒寄存器值载入AADD A,#1 加1sDA A 十进制调整MOV 2CH,A A的值存入秒寄存器CJNE A,#60H,X4 A不等于60秒,就跳出程序去显示MOV 2CH,#00H 已经是60秒,就清0MOV A,2BH 分寄存器值载入AADD A,#1 加1分DA A 十进制调整MOV 2BH,A A的值存入分寄存器CJNE A,#60H,X4 A不等于60分,就跳出程序去显示MOV 2BH,#00H 已经是60分,就清0MOV A,2AH 时寄存器值载入AADD A,#1 加1小时DA A 十进制调整MOV 2AH,A A的值存入时寄存器CJNE A,#24H,X4 A不等于24时,就跳出程序去显示MOV 2AH,#00H 已经是24时,就清0X4:RET******显示子程序*******DISP:MOV R1,#20H 20H为显示寄存器单元MOV A,2CH 将秒寄存器的内容存入AMOV B,#10H 设B累加器的值为10HDIV AB A/B,商存入A(十位数),余数存入(个位数)MOV @R1,B 将显示的个位数存入20H显示寄存器单元INC R1MOV @R1,A 将显示的十位数存入21H显示寄存器单元INC R1MOV A,2BH 将分寄存器的内容存入AMOV B,#10H 设B累加器的值为10HDIV AB A/B,商存入A(十位数),余数存入(个位数)MOV @R1,B 将显示的个位数存入22H显示寄存器单元INC R1MOV @R1,A 将显示的十位数存入23H显示寄存器单元INC R1MOV A,2AH 将时寄存器的内容存入AMOV B,#10H 设B累加器的值为10HDIV AB A/B,商存入A(十位数),余数存入(个位数)MOV @R1,B 将显示的个位数存入24H显示寄存器单元INC R1MOV @R1,A 将显示的十位数存入25H显示寄存器单元RET******延时5ms消除抖动*******DELAY:MOV R6,#60D1:MOV R7,#248DJNZ R7,$DJNZ R6,D1RETEND原理图:PCB图:。

基于AT89C51单片机的电子时钟设计_毕业设计

基于AT89C51单片机的电子时钟设计_毕业设计

基于AT89C51单片机的电子时钟设计摘要:本文介绍了AT89C51单片机控制162液晶显示屏的工作原理以及设计方法,利用ds1302芯片和162液晶屏以51单片机为主控芯片设计一个时钟电路,分为硬件设计与软件设计两个部分。

硬件设计主要是单片机、液晶和ds1302的接口设计;软件设计的主要部分是:单片机的端口初始化以及ds1302初始化,液晶显示屏的初始化,单片机驱动液晶屏的显示。

关键词:AT89C51单片机;162液晶显示屏;ds1302;LCD1 引言液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧等许多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。

本文中详细介绍了基于AT89C51单片机控制下的162液晶屏显示设计,此设计基于da1302的时钟电路方便实用,电路设计简单。

2 硬件介绍2.1、AT89C51简介AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

基于-AT89C51单片机的电子时钟设计

基于-AT89C51单片机的电子时钟设计

科学技术学院SCIENCE & TECHNOLOGY COLLEGE OFNANCHANG UNIVERSITY《工程训练》报告REPORT ON ENGINEERING TRAINING题目基于AT89C51单片机的电子时钟设计学科部、系:专业班级:学号:学生:指导教师:起讫日期:目录前言 (2)第一章基于AT89C51单片机的电子时钟设计的概述 (3)第二章各硬件介绍 (4)2.1 AT89S51的引脚说明 (4)2.2 发光二极管指示电路设计 (5)2.3 LCD1602简介 (5)2.4 DS1302 简介 (6)2.4.1 引脚功能表及部结构图 (6)2.4.2 DS1302 的控制字节说明 (6)2.4.3 复位 (6)2.4.4 数据输入输出 (7)2.4.5 DS1302 的寄存器 (7)2.5 DS1302 简介 (7)2.5.1.温度传感器DS18B20 (7)2.5.2 DS18B20时序 (11)第三章系统原理 (12)系统设计 (12)3.1 晶体振荡器电路 (12)3.2分频器电路 (13)3.3 时间计数器电路 (13)3.4 时钟电路 (13)3.5 复位电路3.6复位电路的可靠性设计 (13)3.7 按键部分 (14)第四章PCB制作与性能测试分析 (15)第五章总结 (15)参考文献 (16)前言电子时钟是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。

数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。

钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的电子时钟精度高,功能易于扩展。

可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。

所有这些,都是以钟表数字化为基础的。

毕业设计-基于AT89C51单片机的电子密码锁的设计

毕业设计-基于AT89C51单片机的电子密码锁的设计

毕业设计(论文)题目:电子密码锁的设计学院:电气与信息工程学院专业:电子信息工程姓名:学号: ********* 指导老师:**完成时间: 2013年5月28日摘要随着经济社会发展,人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出。

传统的机械锁,由于其构造简单,安全性能低,无法满足人们的需要。

随着电子产品向智能化和微型化的不断发展,数字密码锁作为防盗卫士的作用显得尤为重要。

而单片机以其实用,功能强大,价格低廉等功能,已成为电子产品研制和开发中首选的控制器。

本文从经济实用的角度出发,阐述一个基于单片机的液晶显示电子密码锁的设计与实现。

系统采用ATMEL公司的AT89C51单片机作为系统核心,液晶显示器LCD1602作为输出设备显示系统提示信息,4*4矩阵键盘作为输入设备,CMOS串行E2PROM存储器AT24C02作为数据存储器,配合蜂鸣器、继电器等电路构成整个系统硬件;系统软件采用C语言编写。

设计的系统液晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、办公用锁需求,具有一定的实用价值。

关键词:单片机,密码锁,AT89C51,LCD1602,AT24C02AbstractWith the development of our society and the i mprovement of people’s living standard, how to ensure the family security is becoming more and more important in particular. Traditional mechanical lock is unable to meet the need of us because of its simple structure and low security. Nowadays, electronic products become smarter and smaller, electronic password anti-theft lock plays a more important role as the security guards. The MCU with its practical, strong function, low price and other functions , has become the preferred controller in electronic product research and development.This article is written from the economic perspective, elaborates the design and implementation of a LCD electronic password anti-theft lock which is based on MCU. This system is composed of AT89C51 which is designed as the core of this system, LCD1602 as the output device to display the message of this system, 4 * 4 matrix keyboard as the input device, a CMOS serial E2PROM AT24C02 as the data storage, and a buzzer, relay circuit.The software of the system is written in C language. The system displays in a LCD, it can change password easily, and has the function of alarming, locking, and so on. This system has some practical value, and it is simple and easy to use, meets the demand of residential and the need of office lock.Key Words: MCU, Password-Lock, AT89C51, LCD1602, AT24C02目录摘要 (I)Abstract ............................................................................................................................. I I 目录 ................................................................................................................................. I II 1引言 . (1)1.1课题的背景和意义 (1)1.2课题的研究现状 (1)1.3课题研究内容 (2)2 数字密码锁总体设计 (3)2.1 系统方案论证 (3)2.1.1 采用数字电路的设计方案 (3)2.1.2 采用以单片机为核心设计方案 (4)2.2 基于单片机的数字密码锁的设计原理 (5)3 系统硬件设计 (6)3.1 主要元器件介绍 (6)3.1.1 主控芯片AT89C51的的介绍 (6)3.1.2 继电器的介绍 (9)3.1.3 存储芯片AT24C02的介绍 (10)3.1.4 LCD1602显示器的介绍 (10)3.1.5 矩阵键盘模块的介绍 (11)3.2 系统硬件部分 (12)3.2.1 系统电源部分 (12)3.2.2 键盘输入部分 (13)3.2.3 密码存储部分 (14)3.2.4 显示部分 (14)3.2.5 报警部分 (15)3.2.6开锁部分 (16)4 系统软件设计 (17)4.1 系统程序流程图 (17)4.1.1主程序流程图 (17)4.1.2 键功能程序流程图 (18)4.1.3 修改密码程序流程图 (19)4.1.4 开锁程序流程图 (20)4.2 子程序举例 (21)4.2.1 按键扫描子程序 (21)4.2.2 显示子程序 (22)4.2.3 开锁子程序 (22)4.3 系统软件调试及结果 (24)4.3.1 Proteus软件介绍 (24)4.3.2 系统软件调试 (25)4.3.3 仿真结果 (25)5 硬件系统制作及调试 (29)5.1焊接注意事项 (29)5.2硬件调试问题及解决办法 (30)5.3硬件调试效果 (31)总结 (34)致谢 (35)参考文献 (36)附录 (37)附录A 电路原理图 (37)附录B 系统总体程序 (38)1引言1.1课题的背景和意义随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤为突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜。

AT89C51控制的电子时钟和日期设计

AT89C51控制的电子时钟和日期设计

AT89C51控制的电子时钟和日期设计“电子日历+电子时钟系统”,日历与时间轮流显示,间隔1秒,系统要求实现以下功能:1、日历显示格式为“××××.××.××”,分别对应“年.月.日”;2、时钟显示格式为“××-××-××”,分别对应“时-分-秒”;3、实现日期和时间可通过键盘调整在按键模块中,按键实现年月日、时分秒的调节功能。

k==1,修改时加1的功能;k==2,修改分加1的功能;k==3,修改秒加1的功能k==5,修改时减1的功能;k==6,修改分减1的功能;k==7,修改秒减1的功能k==9,修改年加1的功能;k==10,修改月加1的功能;k==11,修改日加1的功能k==13,修改年减1的功能;k==14,修改月减1的功能;k==15,修改日减1的功能当显示时分秒时按下k==0键,此时只显示时分秒,此时可以修改时分秒,当再次按下k==8时返回交替显示当显示年月日时按下k==4键,此时只显示年月日,此时可以修改年月日,当再次按下k==8时返回交替显示在交替显示时,同样可以修改年月日、时分秒#include<reg52.h>unsigned char k,a;unsigned int nian=2012,yue=05,ri=25,shi=10,fen=30,miao=20;//电子日历和电子时钟系统显示的初始化unsigned char flag;void shuma_xianshi();//年月日显示函数声明void shuma_xianshi1(); //时分秒显示函数声明void tiaoshi();//调节年月日、时分秒函数声明void delay();//延时函数声明unsigned char getkey1();//扫描键盘值函数声明void nianyuetiaozheng();//年月的调整函数声明void main()//主函数程序{TMOD=0X01;//定时器T0模式1TH0=0X4C;//设置定时器初值TL0=0X00;EA=1;//开总中断ET0=1;TR0=1;while(1){tiaoshi();//"调节年月日、时分秒函数"的调用nianyuetiaozheng();//"年月的调整函数"的调用if(miao%2) //判断年月日、时分秒的交替轮流显示;当秒为奇数时显示时分秒,当秒为偶数时显示年月日{if(k==0){ EA=0;//在显示时分秒时,若按键0按下时停止计数,此时只显示时分秒while(1){shuma_xianshi1(); //时分秒显示函数tiaoshi();//"调节年月日、时分秒函数"的调用if(k==9)nian=(--nian);;//在显示时分秒时,假如说有按键9按下,年++不起作用if(k==10)yue=(--yue); //在显示时分秒时,假如说有按键10按下,月++不起作用if(k==11)ri=(--ri); //在显示时分秒时,假如说有按键11按下,日++不起作用if(k==13)nian=(++nian); //在显示时分秒时,假如说有按键13按下,年--不起作用if(k==14)yue=(++yue);//在显示时分秒时,假如说有按键14按下,月--不起作用if(k==15)ri=(++ri); //在显示时分秒时,假如说有按键15按下,日--不起作用if(k==8)break; //在显示时分秒时,假如说有按键8按下,此时返回到年月日、时分秒的交替显示nianyuetiaozheng();//"年月的调整函数"的调用} EA=1; //开启总中断}shuma_xianshi1();//显示时分秒}else{if(k==4){ EA=0;//在显示年月日时,若按键4按下时停止计数,此时只显示年月日while(1){shuma_xianshi();//年月日显示函数tiaoshi();if(k==1)shi=(--shi);//在显示年月日时,假如说有按键1按下,时++不起作用if(k==2)fen=(--fen);//在显示年月日时,假如说有按键2按下,分++不起作用if(k==3)miao=(--miao);//在显示年月日时,假如说有按键3按下,秒++不起作用if(k==5)shi=(++shi);//在显示年月日时,假如说有按键5按下,时--不起作用if(k==6)fen=(++fen);//在显示年月日时,假如说有按键6按下,分--不起作用if(k==7)miao=(++miao);//在显示年月日时,假如说有按键7按下,秒--不起作用if(k==8)break;//在显示年月日时,假如说有按键8按下,此时返回到年月日、时分秒的交替显示nianyuetiaozheng();//"年月的调整函数"的调用} EA=1; //开启总中断}shuma_xianshi();//显示年月日}}}void shuma_xianshi()//年月日显示函数{P0=0X80|(nian/1000); //年的千位数字delay();P0=0X90|(nian%1000/100);//年的百位数字delay();P0=0Xa0|(nian%100/10);//年的十位数字delay();P0=0Xb0|(nian%10); //年的个位数字delay();P0=0Xc0|(yue/10);delay();P0=0Xd0|(yue%10);delay();P0=0Xe0|(ri/10);delay();P0=0Xf0|(ri%10);delay();}void shuma_xianshi1()//时分秒显示函数{P0=0X80|(shi/10);delay();P0=0X90|(shi%10);delay();P0=0Xb0|(fen/10);delay();P0=0Xc0|(fen%10);delay();P0=0Xe0|(miao/10);delay();P0=0Xf0|(miao%10);delay();}void tiaoshi()//调节年月日、时分秒函数{k=getkey1();//当有键按下时,取键盘的值if(k==1)//按键1按下时,实现小时的++{TR0=0;shi++ ;if(shi==24)shi=0;TR0=1;}if(k==2)//按键2按下时,实现分钟的++{TR0=0;fen++;if(fen==60)fen=0;TR0=1;}if(k==3)//按键3按下时,实现秒的++ {TR0=0;miao++;if(miao==60)miao=0;TR0=1;}if(k==5)//按键5按下时,实现小时的-- {TR0=0;shi--;if(shi==-1)shi=23;TR0=1;}if(k==6)//按键6按下时,实现分钟的-- {TR0=0;fen--;if(fen==-1)fen=59;TR0=1;}if(k==7)//按键7按下时,实现秒的-- {TR0=0;miao--;if(miao==-1)miao=29;TR0=1;}if(k==9)//按键9按下时,实现年的++ {TR0=0;nian++;if(nian==2051)nian=2012;TR0=1;}if(k==10)//按键10按下时,实现月的++{TR0=0;yue++;if(yue==13)yue=1;TR0=1;}if(k==11)//按键11按下时,实现日的++{TR0=0;ri++;if(ri==a)ri=1;TR0=1;}if(k==13)//按键13按下时,实现年的--{TR0=0;nian--;if(nian==2011)nian=2050;TR0=1;}if(k==14) //按键14按下时,实现月的--{TR0=0;yue--;if(yue==0)yue=12;TR0=1;}if(k==15)//按键15按下时,实现日的--{TR0=0;ri--;if(ri==0)ri=(a-1);TR0=1;}}void delay()//延时函数{unsigned char m,n;for(m=0;m<20;m++)for(n=0;n<100;n++);}void time0() interrupt 1 //定时器中断函数{flag++;TH0=0X4C;//重新置入初值TL0=0X00;if(flag==20)//当flag==20时,此时定时时间1秒到{flag=0;miao++;if(miao==60)//当miao==60时,实现fen++{miao=0;fen++;if(fen==60)//当fen==60时,实现shi++{fen=0;shi++;if(shi==24)//当shi==24时,实现ri++{shi=0;ri++;if(ri==31)//当ri==31时,实现yue++{ri=1;yue++;if(yue==13)//当yue==13时,实现nian++{yue=1;nian++;}}}}}}}unsigned char getkey1(void)//扫描键盘值函数{unsigned char temp,k;P2=0xfe; //判断按键0、1、2、3temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay();temp=P2;temp=temp&0xf0;if(temp!=0xf0){temp=P2;switch(temp){case 0xee:k=0;break;case 0xde:k=1;break;case 0xbe:k=2;break;case 0x7e:k=3;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}return k;}P2=0xfd;//判断按键4、5、6、7 temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay();temp=P2;temp=temp&0xf0;if(temp!=0xf0){temp=P2;switch(temp){case 0xed:k=4;break;case 0xdd:k=5;break;case 0xbd:k=6;break;case 0x7d:k=7;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}return k;}P2=0xfb;//判断按键8、9、10、11 temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay();temp=P2;temp=temp&0xf0;if(temp!=0xf0){temp=P2;switch(temp){case 0xeb:k=8;break;case 0xdb:k=9;break;case 0xbb:k=10;break;case 0x7b:k=11;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}return k;}P2=0xf7;//判断按键12、13、14、15 temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay();temp=P2;temp=temp&0xf0;if(temp!=0xf0){temp=P2;switch(temp){case 0xe7:k=12;break;case 0xd7:k=13;break;case 0xb7:k=14;break;case 0x77:k=15;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}return k;}}void nianyuetiaozheng()//年月的调整函数{if(yue==2)//当月份显示为2月份时{if(nian%4==0 && nian%100!=0)//判断是否为闰年{a=30;//当是闰年时,a=30}else{a=29;//当不是闰年时,a=29}}elseif(yue==1|yue==3|yue==5|yue==7|yue==8|yue==10|yue==12){a=32;//当月份显示为1、3、5、7、8、10、12时,a=32 }elseif(yue==4|yue==6|yue==9|yue==11){a=31;//当月份显示为4、6、9、11时,a=31}}。

基于AT89C51单片机电子体温计设计

基于AT89C51单片机电子体温计设计

1系统设计的目的意义1.1 目的体温是生命活动的一种表现,是人体新陈代谢的一个重要生理参数。

体温既有生理学的意义,又有重要的临床意义,是临床诊断的一个重要指标。

因此体温计在现在的生活中有极为重要的作用。

传统的水银体温计易破碎,存在水银污染的可能,测量时间较长,不易读数,为此设计一种新型的体温计,它的测量精度与传统的水银体温计相媲美的情况下,大大地缩短了测量时间且携带方便,对环境几乎没有污染。

它以AT89C51单片机为核心,结合温度传感器,LED模块等外部设备,在软件的控制下,实现智能化的体温测量,不但能够精确测温,而且能够对温度进行逻辑判断,并且通过LED显示器将测量结果显示出来。

若温度高于38摄氏度系统就会自动报警,这就意味着所测得的温度异于人体正常温度,引起人们注意。

本设计的创新点在于,不仅完成了电子体温计的要求,而且还增加了一个报警装置。

当测量者的体温高于人体正常体温时,体温计就会自动报警,人性化设计,为广大客户带来方便。

1.2 国内外进展情况中国电子体温计行业最早起源于1998年,以每年高于30%的速度发展至今经历了十多年时间。

高达数倍甚至十多倍的利润空间、较低的政策壁垒和技术壁垒吸引了众多企业进入该行业。

目前国内涌现了大小80多家电子体温计品牌,既有“欧姆龙”、“婴之侣”、“捷威”等行业领头的外资品牌,也有“华辰”、“世佳”、“华安”、“康复”等迅速发展壮大的国内品牌。

今后试图进去该行业的生产厂家将达到50多家。

由于行业逐步规范和新一轮电子体温计产品消费热潮的兴起,2009年以后,电子体温计产品行业进入了一个前所未有的高速发展时期,市场的快速发展孕育着巨大的商机。

1.3 设计思路本系统可以使用ISIS画出原理图,打开ISIS软件,单击命令窗口file——new design,创建一个default模板,保存名称为“基于AT89C51单片机电子体温计设计.DSN”。

执行菜单命令library——pick device/symbol,添加所需元件。

基于AT89C51单片机数字电压表的设计

基于AT89C51单片机数字电压表的设计

基于AT89C51单片机数字电压表的设计题目:基于AT89C51单片机数字电压表的设计目录一、整体设计思路框图及原理图 (4)二、模块分析 (5)1.AT89C51单片机 (5)2.A/D转换 (6)3. .................................................................................. 显示电路 (7)三、软件设计 (5)四、程序清单 (6)五、仿真实验调试 (12)六、总结与体会. (13)七、参考文献 (14)34一、 整体设计思路框图及原理图数字电压表的设计即将连续的模拟电压信号经过A/D 转换器转换成二进制数值,再经由单片机软件编程转换成十进制数值并通过显示屏显示。

按系统实现要求,决定控制系统采用AT89C51单片机,A/D 转换由于仿真软件里的ADC0809元件有问题,这里用ADC0808代替,它和ADC0809区别很小。

采用ADC0808。

数字电压表系统整体框图如下图1所示。

图1 整体框图系统通过软件设置单片机的内部定时器T1产生中断信号。

通过片选选择8路通道中的一路,将该路电压送入ADC0808的EOC 端口产生高电平,同时将ADC0808的OE 端口置为高电平,单片机将转换后结果存到片内RAM 。

系统调出转换显示程序,将转换为二进制的数据在转换成十进制数并输出到LCD 显示电路,将相应电压显示出来。

原理图见附录图7。

二、模块分析1.AT89C51单片机接口分配电路设计如右图2所示:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在这里P0口作为输入与输出分别与ADC0808的输出端和LCD显示的输入端相连,且P0外部被阻值为1KΏ图2 单片机接口电路的电阻拉高。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计

用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计

目录一、设计题目和要求: (2)二、设计目的: (2)三、设计内容: (3)四、课程设计心得体会 (25)五、参考文献 (26)六、课程设计指导教师评审标准及成绩评定 (27)附件1:秒表原理图(实际接线图) (28)附件2:仿真图1 (30)附件3:仿真图2 (31)一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。

设计一个“复位”键,按下“复位”键后,秒表从0开始计时。

任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。

二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。

6.掌握定时器、外部中断的设置和编程原理。

7.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

8.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。

三、设计内容:了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到1秒。

AT89C51单片机的主要工作特性:·内含4KB的FLASH存储器,擦写次数1000次;·内含28字节的RAM;·具有32根可编程I/O线;·具有2个16位可编程定时器;·具有6个中断源、5个中断矢量、2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR;·两种低功耗工作模式,即空闲模式和掉电模式;·具有可编程的3级程序锁定定位;AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.AT89C51各部分的组成及功能:振荡器和时钟电路数据存储器128字节程序存储器14KBCPU 两个16位定时器计数器中断控制总线扩展控制器并行可编程I/O口可编程串行口内部总线外部中断扩展控制P0 P1 P2 P3 RXD TXD1.单片机的中央处理器(CPU )是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

黄河科技学院课程设计任务书课程设计工作内容与基本要求(设计要求、设计任务、工作计划、所需相关资料)(纸张不够可加页)1.设计要求利用AT89C51单片机作为微控制器,在数码管通过一个控制键转换来显示相应的时间和日期,能通过多个控制键用来实现时间和日期的调节。

2. 设计任务与要求2.1系统硬件电路设计根据该系统设计的功能要求选择所用元器件,设计硬件电路。

要求用Proteus绘制整个系统电路原理图。

2.2软件设计根据该系统要求的功能进行软件设计,绘制整个系统的软件流程图;根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求逐条加以注释。

2.3 Proteus仿真用Proteus对系统软硬件进行仿真调试并通过。

2.4 编写设计说明书内容包括任务书、设计方案分析、硬件部分设计、软件部分设计、调试结果整理分析、设计调试的心得体会等,字数不少于5000字;硬件部分设计要绘制整个系统电路原理图,对各部分电路设计原理做出说明;软件设计部分要(用visio20XX画图软件)绘制整个系统及各部分的软件流程图,列出程序清单,逐条加以注释,并注明各程序功能块的功能。

3.工作计划4.主要参考资料单片机课程设计指导书皮大能北京理工大学出版社 20XX.7 8051单片机实践与应用吴金戎清华大学出版社20XX.8单片机技术基础教程与实践夏路易电子工业出版社20XX.1单片机原理及应用张毅刚高等教育出版社 20XX.11基于Proteus的单片机系统设计与仿真实例蒋辉平机械工业出版社一、电子表1.1电子表简介1957年,Ventura发明了世界上第一个电子表,从而奠定了电子表的基础,电子表开始迅速发展起来。

现代的电子表是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。

从而达到计时的功能,是人民日常生活补课缺少的工具。

1.2 电子表的原理该电子表由AT89C51,74LS373,BUTTON,数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天,满三十天(闰年二月满二十九天,平年二月满二十八天)为一个月,满十二个月为一年。

电路中的键控1实现“年”和“分”的调节,键控2实现“月”和“时”的调节,键控3实现“日”和“分”的调节。

每按一次就加一。

二、控制系统的硬件设计2.1 单片机型号的选择通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。

89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。

2.2 数码管显示工作原理数码管是一种把多个LED(7SEG-MP*8-CA-BLUE)显示段集成在一起的显示设备。

有两种类型,一种是共阳型,一种是共阴型。

共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。

共阴型就是把多个LED显示段的阴极接在一起,即为公共商。

阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。

通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。

而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。

即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。

数码管显示方法可分为静态显示和动态显示两种。

静态显示就是数码管的8段输入及其公共端电平一直有效。

动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。

利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。

共阴数码管2.3 74LS373介绍:373为三态输出的八 D 透明锁存器,373 的输出端O 0~O7 可直接与总线相连。

当三态允许控制端OE 为低电平时,O0~O7 为正常逻辑状态,可用来驱动负载或总线。

当OE 为高电平时,O0~O7 呈高阻态,即不驱动总线,也不为总线的负载,锁存器内部的逻辑操作不受影响。

当锁存允许端LE 为高电平时,O 随数据 D 而变。

当LE 为低电平时,O 被锁存在已建立的数据电平。

当LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400m V。

引出端符号:D0~D7 数据输入端;OE 三态允许控制端(低电平有效;LE 锁存允许端;O0~O7 输出端图3 74LS3732.4系统硬件电路设计三、控制系统的软件设计3.1软件设计程序清单#include<reg52.h>#include<stdio.h>sbit P20=P2^0; /****定义端口****/sbit khour=P3^0;sbit kmin=P3^1;sbit knian=P3^2;sbit tiaonian=P3^3 ;sbit speaker=P3^7 ;int j=-1 ; /*****定义变量,j用以控制扫描********/ bit flag=0,leap=0; /*****定义flag控制时分秒和年月日的显示,leap判断是否为闰年***/char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0; chardayshi=0,dayge=0,monthshi=0,monthge=0,yearshi=0,yearge=0 ; unsigned int num=0,sec=0,min=0,hour=0; /****设置初始时间为00时0分0秒****/unsigned int day=1,month=1,year=10; /****设置初始日期为20XX年1月1日****/char saomiao[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; /****扫描数组,控制位选******/charshijian[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80, 0x90};/*******共阴数码管的0,1,2,3,4,5,6,7,8,9********/void delay(unsigned int z)/*******延时子程序******/{ unsigned int x,y;for(x=z;x>0;x--)for(y=10;y>0;y--) ;}void timer() interrupt 1/*********定时器中断0********/{TH0=(65535-5000)/256;/******重新装入初值*****/TL0=(65535-5000)%256;num++;j++;if((year%4==0&&year%100!=0)||(year%400==0))/*******判断是否为闰年******/leap=1;/*******闰年,使leap=1******/elseleap=0;/*******平年,使leap=0******/if(num==150) /*****实验微调得num=150时大概为1s******/{ num=0;sec++;/****秒自动加1*****/}if(sec==60){sec=0;min++;/****60s时,分自动加1,秒归0*****/}if(min==60){min=0;hour++; /****60分时,小时自动加1,分归0*****/}if(hour==24){hour=0;min=0;sec=0;day++; /****24时,天自动加1,时分秒归0*****/}/**************************************************** ***************************************************** ***************************************************** ***********月份的判断,平年时的2月和闰年时的2月,以及30天和31天的判断***************************************************** ***************************************************** ****************************************************/ if((leap==1&&month==2&&day==30)||(leap==0&&month==2& &day==29)){day=1;month++; /*****2月28天或29天时月自加1*****/}if(month==1||month==3||month==5||month==7||month==8||month ==10||month==12){if(day==32){day=1;month++; /*****月为31天达到时月自动加1*****/}}if( month==4||month==6||month==9||month==11){if(day==31){day=1;month++; /*****月为30天达到时月自动加1*****/}}if(month==13){year++;month=1; /*********新的一年的开始**********/}secge=sec%10;secshi=sec/10;minge=min%10;minshi=min/10;hourge=hour%10;hourshi=hour/10;dayge=day%10;dayshi=day/10;monthge=month%10;monthshi=month/10;yearge=year%10;yearshi=year/10;P1=saomiao[j]; /*******数码管的位选设置*********/if(flag==1)/*******flag=1,显示年月日*******/{if(P1==0x80) P2=shijian[dayge];if(P1==0x40) P2=shijian[dayshi];if(P1==0x20) P2=0xbf; /******年与月之间的分隔符"-"的显示*****/if(P1==0x10) P2=shijian[monthge];if(P1==0x08) P2=shijian[monthshi];if(P1==0x04) P2=0xbf; /******月与天之间的分隔符"-"的显示*****/if(P1==0x02) P2=shijian[yearge];if(P1==0x01) P2=shijian[yearshi];}else/*******flag=0,显示时分秒*******/{if(P1==0x80) P2=shijian[secge];if(P1==0x40) P2=shijian[secshi];if(P1==0x20) P2=0xbf;if(P1==0x10) P2=shijian[minge]; //xian shiif(P1==0x08) P2=shijian[minshi];if(P1==0x04) P2=0xbf;if(P1==0x02&&hour<24) P2=shijian[hourge];/*****显示小时0~23*****/if(P1==0x01&&hour<24) P2=shijian[hourshi];}if(j==7){j=-1;}}void timer1() interrupt 0/**************************************************** ***************************************************** ****************************************************外部中断0,设置标志flag, 按键未按下,flag=0,显示时分秒,按键按下,flag=1,显示年月日***************************************************** ***************************************************** ***************************************************/ {flag=!flag; /******按下knian按钮****flag=1,x显示年月日*******/}void control() /*******时分的调整子程序********/{if(flag==0) /****显示时分秒的情况下做时分的调整******/{if(kmin==0){min++;while(kmin==0);if(min==60)min=0;}if(khour==0){hour++;// sec=0xc0;while (khour==0) ;if(hour>23)hour=0;}}if(flag==1) /********显示年月日的情况下做年月日的调整**********/{if(kmin==0){day++;while(kmin==0);}if(khour==0){month++;while (khour==0) ;if(month>12)month=1;}if(tiaonian==0&&speaker==1){year++;while (tiaonian==0);}}}void baoshi()/******整点报时子程序********/{if(min==0&&sec<10) /*****整点闹钟响,响10秒*****/{speaker=0;delay(1) ;speaker=1 ;}elsespeaker=1;}void alarm()/******闹钟子程序*******/{bit ring=1;char xx=10;if(tiaonian==0){ring=0;delay(100);while(tiaonian==0); /******关闭正在叫的闹钟*****/}if(hour==6&&min==xx&&ring==1)/*******闹钟按时鸣叫1分钟******/{speaker=0;delay(1) ;speaker=1 ;}if(hour==6&&min==xx+1) /*****1分钟后闹钟停止鸣叫*******/{speaker=1;}}void main(){TMOD=0x01; /*******设置工作方式******/TR0=1;P2=0;TH0=(65535-5000)/256; /******装入计时初值*****/TL0=(65535-5000)%256;IE= 0x82;IP=0x00; /*******设置中断优先级*****/EA=1;EX0=1; /****开外部中断0******/while(1){control() ;alarm() ;baoshi() ;}}3.2 Proteus仿真图5.a时间仿真图(此时时间为2点8分31秒)图5.b 日期仿真图(此时日期为20XX年9月3日)四、心得进过不懈的努力,我们顺利完成了这次单片机课程设计课题中的个性化电子表设计,本次仿真总的来说是实现了预期的效果,但是喇叭把的效果不是很好。

相关文档
最新文档