C51单片机LCD电子时钟课程设计

合集下载

基于C51单片机技术的时钟课程设计报告

基于C51单片机技术的时钟课程设计报告

课设报告工程学院软件学院题目:时钟班级:姓名:学号:指导老师:日期: 2013 年 10 月 11日目录1 摘要32 设计要求32.1 功能需求32.2 设计要求33 硬件设计与描述33.1 总体描述33.2 系统总体框图 43.3 Proteus电路图43.4 各部分硬件介绍44 软件设计流程与描述84.1 程序流程图84.2 函数模块与功能94.2.1单片机主控制模块94.2.2数码管显示模块94.2.3 按键模块114.2.4计时模块115 功能实现136 心得体会147 源程序141 摘要众所周知单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

本设计要制作的就是单片机于生活中最为常见的几种应用——时钟。

本设计以AT89S52单片机作为核心,可以显示当前的时间,时间也可以人为设定,显示格式为时(两位),分(两位),秒(两位)。

设置时间的数值、启动定时器。

时钟显示电路由数码管组成,制作该装置的材料需要有软硬件的支持,硬件方面AT89C51单片机,晶振,电源,数码管。

2 设计要求2.1 功能需求1、在数码管上显示初始时间如12-23-33,从初始设置的时间开始走时,每一秒自动加1,当59秒后自动向分进位、59分后自动向时进位。

2、通过按键设置时间,按下键1,时钟分加1;按下键2,时钟分减1,。

从而实现用按键设置时间的功能。

2.2 设计要求本次设计的是时钟,本电路是由AT89S52单片机为控制核心,通过按键实现时钟分的自增自减进行时间的设置,在数码管上进行显示。

3 硬件设计与描述3.1 总体描述单片机采用STC90C516RD+,采用MCS-51实验开发板。

单片机_电子时钟(LCD显示)课程设计报告

单片机_电子时钟(LCD显示)课程设计报告

课程设计报告课程名称单片机题目电子时钟(LCD显示)学生指导教师年级 2018级专业计算机科学与技术二级学院信息工程学院信息工程学院2020年12 月23 日《单片机》课程设计任务书摘要本设计使用11.0592MHz晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用LCD1602的并行操作方式显示。

通过使用该单片机,实现将时间显示在LCD1602液晶上,并且按秒实时更新。

AT89C51单片机功耗小,电压可选用4~6V电压供电。

通过板子上的按键可随时调节时钟的时、分,按键设计4个有效按键,分别有开始设置键、设置小时键、设置分钟键、确认设置键盘,通过使用中断定时器进行计时,实现时间显示。

针对LCD液晶显示屏,设置了初始化函数,数据传送函数及指令传送函数,进而实现LCD液晶显示屏显示功能。

在每次的按键按下时,LCD液晶显示屏会随之改变,进而实现功能。

关键词:AT89C51 电子时钟数码管按键目录1 概述 (1)1.1方案设计 (1)1.2设计目的 (1)1.3设计内容 (1)2.硬件设计 (1)2.1 元器件 (1)2.2 硬件 (2)3 软件设计 (3)3.1 主设计流程 (3)3.2 初始化流程图 (3)3.3 时间显示主程序 (5)4 调试结果分析 (6)4.1运行结果 (6)4.2仿真分析 (7)5 总结 (8)参考文献 (9)附录 (10)1 概述1.1方案设计(1)单片机选型选用AT89C51单片机,指令简单,易学易懂,外围电路简单,硬件设计方便,IO 口操作简单,成本低,程序烧写简单,对于设计开发非常实用。

(2)显示方案LCD液晶显示器是一种功耗极低的显示器件,它不仅省电,还能显示文字、曲线、图形等大量的信息,易于彩色化,所以采用LCD显示器来显示时间。

(3)计时方案利用AT89C51内部定时/计数器进行中断定时,配合软件延时实现时分秒的计时。

该方案可以节省硬件成本。

(4)按键设计系统采用独立式按键,共设计了四个按键,分别是“当前时间”、“分钟+”、“小时+”,用来设置校时功能,这样可以使电路更简单。

C51单片机LCD电子时钟课程设计

C51单片机LCD电子时钟课程设计

中南大学《自动化工程训练》设计题目 LCD时钟程序设计指导老师设计者专业班级自动化级班号设计日期2016年9月目录一、设计任务要求分析 (1)1.1设计总体方案及其方案论证 (1)二、组成电路介绍 (1)2.1 复位电路: (1)2.2晶振电路: (1)2.3键盘控制系统设计: (2)2.4闹钟部分: (3)2.5显示电路设计 (3)2.5.1 LCD1602简介 (3)三、软件设计 (4)3.1程序主流程图 (5)3.2初始化流程图 (5)3.3延时中断子程序 (6)3.4时间设置子程序 (7)四、系统测试 (7)4.1 测试方法 (7)4.2 测试结果 (7)4.3 结果分析 (8)五、源程序 (8)一、设计任务要求分析本设计要实现的功能是:实时显示当前的时钟,并且可以设定闹铃,以蜂鸣器鸣响5秒的方式作为闹铃。

1.1设计总体方案及其方案论证按照系统的设计功能所要求的,液晶显示电子时钟原理图如图所示。

液晶显示电子时钟原理图本系统以AT89C51单片机为核心,该单片机可把数据进行处理,从而把数据传输到显示模块LCD1602液晶显示器,实现时间及日期的显示。

以LCD 液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化,还可以对时间和日期进行设置,主要靠按键来实现。

二、组成电路介绍2.1 复位电路:复位电路复位电路有两种方式:上电复位和按钮复位,我们主要用按钮复位方式。

如图所示:2.2晶振电路:晶振电路如图所示:晶振模块原理图选取原则:电容选取22pF,晶振为12MHz。

1)电源:AT89S51单片机的供电电源是5V的直流电。

2)EA非/Vpp脚:我们没有用外部扩展ROM,因此EA非/Vpp为高电平,即接+5V电源。

2.3键盘控制系统设计:按键需要4个,分别实现为时间调整、时间的加、时间的减、闹钟调整四个功能。

用单片机的4个I/O口接收控制信号,其电路如图所示:按键调时电路通过控制键来控制所要调节的是时、分、还是秒。

定时闹钟-C51单片机课程设计

定时闹钟-C51单片机课程设计

题目:定时闹钟目录一、概述 (1)1.1设计目的及意义 (1)1.2设计任务 (1)1.3设计系统的主要功能 (1)二、系统总体方案及硬件设计 (2)2.1系统总体方案 (2)2.2系统设计总框图 (2)2.3硬件设计 (2)2.3.1单片机最小系统设计 (2)2.3.2报警模块设计 (6)2.3.3显示模块设计 (7)2.3.4调时模块设计 (9)三、软件设计 (10)3.1主程序流程图 (10)3.2定时中断子程序流程图 (11)3.3程序设计 (11)四、系统的仿真与调试 (12)4.1 proteus软件仿真 (12)4.2系统的调试 (11)五、设计总结与体会 (13)参考文献 (13)附录1:源程序代码 (14)附录2:系统原理图 (24)一、概述1.1设计目的及意义学习和巩固单片机技术、电子技术、传感器技术及智能仪器等知识,使对已学过的基础知识能有更深入的理解,并融会贯通。

学会独立思考、独立工作,培养一定的自学能力和独立分析问题能力,以及增强系统地运用已学理论知识去解决实际问题的能力,同时培养成良好的科学态度和严谨的设计习惯。

1.2设计任务完成所选题目的分析与设计,达到技术性能要求。

提交正式课程设计总结报告一份。

本文设计的定时闹钟的核心模块采用AT89C51芯片,时、分、秒用6位LED数码管显示。

在电路中通过四个按键S1、S2、S3和S4来进行定时、调时和复位,定时时间到通过蜂鸣器发出报警声。

1.3设计系统的主要功能(1)能显示时时-分分-秒秒。

(2)能够设置定时时间、修改定时时间。

(3) 定时时间到能发出报警声。

二、系统总体方案及硬件设计2.1系统总体方案(1) 由于LED显示器相对于其它显示器(如LCD显示器)来说其价格要便宜许多,而且亮度更高,耐温范围较广,所以采用6位数码管来显示“时时-分分-秒秒”。

(2) 时间的定时用单片机内部时钟电路,在一定的时间内能使其误差较小,如经过一年其误差才仅有数秒。

单片机课程设计电子时钟

单片机课程设计电子时钟

xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:电子时钟院(系):专业:班级:学号:姓名:指导教师:完成日期:xxxxxx大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (3)2.3功能模块的设计与实现 (4)第3章结果测试及分析 (11)3.1结果测试 (11)3.2结果分析 (11)参考文献 (12)附录 A (13)附录 B (21)附录 C (22)第1章总体设计方案1.1 设计原理根据课程设计任务书的内容,要求实现在MCS51单片机上对数字电子钟的基本功能设计,对当前时间正确显示,并可根据需要对时间进行更改,以完成时间的校对和闹钟的设置。

时钟时间以时、分、秒在6位数码管上显示,小时以24小时计时模式,分秒均为60进位。

用6MHz晶振产生振荡脉冲,定时器进行秒计时。

调整设置时间的过程运用可编程键盘上的按键进行控制,共设有5个按键,首先按键A进入校时模式或E进入闹钟模式,再分别按键B对小时或C分钟进行更改,每按键一次数码管计数显示加一,更改结束后按键D退出设置,时钟正常显示。

闹钟时间到时,蜂鸣器鸣响10秒后时钟正常显示。

1.2 设计思路采用C语言程序设计结合硬件电路设计方法,利用Lab6000实验箱来实现数字电子钟的设计。

1)提出方案根据设计要求,可将本次设计分为3个模块进行:1)时钟显示模块:主要用于时间的正确显示。

2)校时模块:此模块用于时钟的校对,以完成用户更改时间的需求。

3)闹钟模块:用于实现闹钟的时间设置和定点闹铃的功能。

2)方案论证时钟显示模块中,利用可编程定时器中断进行秒计时,将时间显示在6位数码管上。

校时模块主要利用键盘上5个键的控制完成各项功能,并在数码管上动态显示改变结果,完成设置后进入时钟显示模块。

闹钟模块的设置过程与校时模块相似,但设置完成进入时间显示模块后则等待闹铃时间,到规定时间后,通过数码管闪烁及蜂鸣器的鸣响来实现定点闹铃提醒功能。

基于C51单片机的数字时钟课程设计(C语言带闹钟)

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

51单片机电子时钟设计

51单片机电子时钟设计

51单片机电子时钟设计电子时钟是一种非常实用的电子设备,它可以准确地显示时间,并拥有一系列的功能,如闹钟、日历等。

使用51单片机设计电子时钟,可以实现这些功能,同时还能够进行功能扩展,更好地满足用户需求。

首先,我们需要硬件上的准备工作。

51单片机需要与时钟(晶振)和显示器(LCD模块)进行连接。

晶振是提供单片机时钟脉冲的源头,LCD模块用于显示时间和各种功能。

同时,在电路中还需要进行一些扩展,如实时时钟模块(RTC模块)、按键模块等。

在软件设计方面,主要需要考虑以下几个方面:1.时钟脉冲:通过配置晶振的频率,可以生成单片机所需的时钟脉冲。

这个脉冲控制了单片机的运行速度,从而影响到时钟的准确性。

需要根据晶振频率进行相关配置。

2.时间的获取和计算:通过RTC模块可以获取当前的时钟数据(包括年、月、日、时、分、秒)。

在程序中,需要通过相应的接口获取这些数据,并进行计算。

比如,在显示时钟的时候,可以通过获取秒数、分钟数和小时数,并将其转换为相应的字符串进行显示。

3.菜单和按键功能:为了实现更多的功能,我们可以通过按键来实现菜单切换和功能选择。

在程序中,需要对按键进行扫描,判断按键的状态,然后进行相应的操作。

比如,按下菜单键可以进入菜单界面,通过上下键选择不同的功能,再通过确定键进行确认。

4.闹钟功能:闹钟功能是电子时钟中常见的功能之一、通过设置闹钟时间,并进行闹钟的开启或关闭,可以在指定的时间点触发相应的报警动作。

在程序中,需要编写逻辑判断闹钟是否到达指定的时间,然后触发报警。

5.日历功能:除了显示时间,电子时钟还可以显示当前的日期,包括年、月、日。

在程序中,需要编写相关的逻辑来获取日期数据,并进行显示。

通过以上的步骤,我们可以基本实现一个简单的电子时钟功能。

当然,根据用户的需求,还可以进行更多的功能扩展,比如添加温湿度监测、自动调光等功能。

总结起来,51单片机电子时钟的设计主要包括硬件和软件两个方面。

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

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

单片机电子时钟课程设计报告一、设计目的。

本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。

通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。

二、设计原理。

本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。

利用数码管来显示小时和分钟,通过按键来调整时间。

同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。

三、设计方案。

1. 硬件设计。

(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。

(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。

(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。

(4)按键输入,设计按键来调整时间,包括调整小时和分钟。

(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。

2. 软件设计。

(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。

(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。

(3)按键处理,设计按键扫描程序,实现对时间的调整。

(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。

四、设计实现。

1. 硬件实现。

根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。

2. 软件实现。

编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。

五、实验结果。

经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。

六、总结与展望。

通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。

在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。

同时,也为学生今后的科研和创新工作奠定了良好的基础。

基于c51的电子钟设计

基于c51的电子钟设计

电子时钟设计一、设计目的在我们现代日常生活中,电子时钟已得到及其广泛的应用,已成为我们日常生活中的不可或缺的一部分。

本次设计的主要目的即是利用51单片机设计一个可实现24小时计时的电子时钟,计时从0时0分0秒开始,到23小时59分59秒后返回0时0分0秒自动重新开始计时。

本设计拥有时间调整功能和时间显示功能,无年、月计数和闹钟功能。

二、需求分析本设计中的时钟要求使用8个8段数码管显示当前时间,其中秒单元与分单元中间以“-”符号隔开,分单元与时单元中间同样以“-”符号隔开。

计时范围为从00-00-00到23-59-59,当计时到23-59-59后自动返回00-00-00并重新开始计时。

设计中使用3个按键分为set、add和sub,当在计时功能工作时按下set键即可进入调时模式,在调试模式下累计按6次set后便退出调时功能,重新返回计时功能。

三、总体设计1、总体设计框图图3-1 总体设计框图2、器件选型:主要使用的器件为STC89C51RC型单片机。

该型号的单片机有P1、P2、P3、P4共4个准双向口,且包含3个16位可编程定时/计数器T0、T1、T2。

其定时可由硬件电路与中断方式控制,而定时时间和范围则完全由所编写的代码来确定和改变。

在本次设计中主要实用0号和1号定时/计数器,通过设置使它们均实现50ms计数,其中0号计数器配合20次循环计数以实现1m计时,1号计数器配合10次循环计数以实现对相应调整位的0.5m闪烁。

设计中还主要使用到3个74LS373数据锁存器、1个74LS244输入缓冲器以及8个8段数码显示器。

四、硬件设计1、硬件框图图4-1 硬件框图2、硬件模块设计a、时间计时模块设计:该模块的功能实现是将十位时、个位时、十位分、个位分、十位秒和个位秒分别存入s_hou、g_hou、s_min、g_min、s_sec和g_sec中,每个数值对应一个无符号字节。

T0计数器实现计数功能,但计数满20次50ms即1000ms时,g_sec 的值加1,当g_sec计数值为10时将g_sec清零并使s_sec计数加1,以此类推,直到计数值为23-59-59,并在下一秒返回00-00-00。

单片机电子时钟课程设计

单片机电子时钟课程设计

单片机电子时钟课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握电子时钟的工作原理;2. 使学生掌握单片机编程技术,能独立完成电子时钟的程序编写;3. 帮助学生了解电子时钟的设计过程,掌握相关电子元器件的使用。

技能目标:1. 培养学生运用单片机解决实际问题的能力,提高编程和调试技巧;2. 培养学生动手实践能力,能独立完成电子时钟的组装和调试;3. 提高学生的团队协作和沟通能力,能在小组项目中发挥积极作用。

情感态度价值观目标:1. 激发学生对电子技术和单片机编程的兴趣,培养创新意识;2. 培养学生严谨、细致的学习态度,养成良好的学习习惯;3. 增强学生的自信心和责任感,使其在项目实践中勇于面对挑战。

课程性质:本课程为实践性较强的课程,旨在通过项目实践,让学生掌握单片机编程和应用,培养实际操作能力。

学生特点:学生具备一定的单片机基础知识和编程技能,对电子技术有一定了解。

教学要求:注重理论与实践相结合,强调动手实践,鼓励学生创新和团队协作。

将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 单片机基础:回顾单片机的基本原理、结构、工作方式,重点掌握时钟电路、I/O 口编程、中断系统等基础知识。

教材章节:《单片机原理与应用》第1-3章2. 电子时钟原理:学习电子时钟的基本构成、工作原理,分析时钟芯片DS1302的功能和应用。

教材章节:《单片机原理与应用》第6章3. 程序设计:学习C语言编程,编写电子时钟程序,掌握定时器、中断处理、数据存储等编程方法。

教材章节:《单片机C语言程序设计》第4-6章4. 硬件设计:学习电子时钟硬件电路设计,包括单片机、时钟芯片、显示模块、按键模块等。

教材章节:《电子电路设计》第2-3章5. 调试与优化:学习电子时钟系统的调试方法,分析常见问题,进行程序和硬件优化。

教材章节:《单片机原理与应用》第8章6. 项目实践:分组进行电子时钟项目实践,从硬件组装、编程调试到产品展示,全面锻炼学生的动手能力。

c51课程设计(电子钟)

c51课程设计(电子钟)

基于单片机的电子钟的设计学院:班级:姓名:学号:小组成员:姓名:学号:指导老师:第一章绪论1.1数字电子钟的背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。

忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。

但是,一旦重要事情,一时的耽误可能酿成大祸。

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

下面是单片机的主要发展趋势。

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

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

这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

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

1.2数字电子钟的意义数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

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

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

第一部分设计任务和要求1.1单片机课程设计内容 (2)1.2单片机课程设计要求 (2)1.3系统运行流程 (2)第二部分设计方案2.1总体设计方案说明 (2)2.2系统方框图 (3)2.3系统流程图 (3)第三部分主要器材及基本简介3.1主要器材 (4)3.2主要器材简介 (4)第四部分系统硬件设计4.1最小系统 (6)4.2LCD显示电路 (6)4.3键盘输入电路 (7)4.4蜂鸣器和LED灯电路 (7)第五部分仿真电路图与仿真结果 (8)第六部分课程设计总结 (8)第七部分参考文献 (9)附录A 实物图附录B 系统源程序第一部分设计任务和要求1.1单片机课程设计内容利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。

1.2单片机课程设计要求1.能实现年、月、日、星期、时、分、秒的显示;2.能实现调时功能;3.能实现12/24小时制切换;4.能实现8 : 00—22 : 00整点报时功能。

1.3系统运行流程程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。

若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。

若没到则循环执行。

计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。

调时闪烁中断服务程序用于被调单元的闪烁显示。

调时程序用于调整分钟、小时、星期、日、月、年,主要由主函数组成通过对相关子程序的调用,如图所示。

实现了对时间的设置和修改、LCD显示数值等主要功能。

相关的调整是靠对功能键的判断来实现的。

第二部分设计方案2.1总体设计方案说明1.程序设计及调试根据单片机课程设计内容和要求,完成Protues仿真电路的设计和用Keil软件编写程序,并进行仿真模拟调试。

2.硬件焊接及调试根据仿真电路图完成电路板的焊接,并进行软、硬件的调试,只到达到预期目的。

3.后期处理对设计过程进行总结,完成设计报告。

单片机数字电子钟课程设计

单片机数字电子钟课程设计

单片机数字电子钟课程设计一、课程目标知识目标:1. 学生能理解单片机的基础知识,掌握数字电子时钟的原理和工作流程。

2. 学生能描述单片机编程的基本步骤,特别是与计时相关的指令和程序设计方法。

3. 学生能够解释数字电子钟各部分功能,如时钟电路、显示电路等,并了解它们之间的协作关系。

技能目标:1. 学生能够运用所学的单片机知识,设计并实现一个简单的数字电子钟程序。

2. 学生通过动手实践,提高焊接和电路排错的能力,能够组装和调试电子钟电路。

3. 学生能够利用仿真软件对电子钟程序进行测试和优化,培养问题解决和程序调试技巧。

情感态度价值观目标:1. 培养学生对电子制作的兴趣,激发创新意识和探索精神。

2. 通过团队协作完成项目,增强学生的合作意识和沟通能力。

3. 学生在课程学习过程中,能够体验到知识与实践相结合的成就感,培养科学、严谨的学习态度。

分析课程性质、学生特点和教学要求:本课程设计针对高中年级学生,假设他们已具备基础物理知识和一定的编程能力。

课程性质为实践性强的综合设计课,旨在通过单片机数字电子钟的制作,巩固学生的电子技术知识与技能。

课程目标设定时考虑了学生的年龄特点和认知水平,注重理论与实践的结合,鼓励学生动手操作和探究学习,旨在提高学生的综合技术应用能力。

通过具体的学习成果分解,本课程旨在让学生不仅学习到知识,而且能够将知识应用到实际问题的解决中,充分体现课程的实用性和创新性。

二、教学内容1. 单片机基础知识回顾:重点复习单片机的内部结构、工作原理及编程基础,关联教材第二章内容。

2. 数字电子时钟原理:讲解时钟电路、计数器、振荡器等组成部分,对应教材第四章第二节。

- 时钟电路的构成与工作原理- 计数器的作用及其编程方法- 振荡器的种类及其在电子时钟中的应用3. 单片机编程设计:结合教材第三章,介绍编写电子时钟程序所需的指令和编程技巧。

- 基本计时指令的使用- 程序流程图的绘制- 中断处理在电子时钟中的应用4. 电路设计与制作:依据教材第五章,指导学生进行电子时钟的电路设计和组装。

电子时钟课程设计51

电子时钟课程设计51

电子时钟课程设计51一、课程目标知识目标:1. 学生能够理解电子时钟的基本原理,掌握电子时钟的组成和功能。

2. 学生能够描述电子时钟中数字显示技术的基本原理,如LED、LCD显示。

3. 学生能够解释电子时钟中时间计算和校准的方法。

技能目标:1. 学生能够运用所学知识,设计简单的电子时钟电路,并进行组装和调试。

2. 学生能够运用编程语言,编写简单的电子时钟程序,实现时间显示和校准功能。

3. 学生能够通过实际操作,培养动手能力和问题解决能力。

情感态度价值观目标:1. 学生能够培养对电子技术的兴趣,提高对科学探究的热情。

2. 学生能够认识到电子时钟在生活中的广泛应用,增强学以致用的意识。

3. 学生能够养成团队协作、沟通交流的良好习惯,培养合作精神。

分析课程性质、学生特点和教学要求:本课程为电子技术相关课程,结合学生所在年级的知识深度,注重理论联系实际,提高学生的动手实践能力。

课程针对的学生群体具有一定物理基础和编程能力,对电子技术有一定了解。

教学要求注重培养学生的创新能力、问题解决能力和团队协作能力。

二、教学内容1. 电子时钟原理及组成- 介绍电子时钟的基本工作原理,包括时钟振荡器、分频器、计数器、显示器等组成部分。

- 分析电子时钟中晶振的作用,探讨如何实现精确的时间计数。

2. 数字显示技术- 介绍LED和LCD显示技术的基本原理,对比分析两种显示技术的优缺点。

- 学习数字显示电路的设计,掌握如何驱动LED和LCD显示数字。

3. 时间计算与校准- 学习电子时钟中时间计算的方法,如秒、分、时的计算。

- 探讨电子时钟校准的原理和方法,了解实时时钟芯片(RTC)的应用。

4. 电子时钟电路设计与组装- 制定电子时钟电路设计方案,选择合适的元器件。

- 学习电路图的绘制,进行电路组装和调试。

5. 电子时钟编程- 使用编程语言(如C语言)编写电子时钟程序,实现时间显示和校准功能。

- 学习如何在微控制器上运行程序,实现电子时钟的实时显示。

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

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

课程设计课程名称:单片机课程设计2010 年11月7日一、课程设计名称:51 单片机电子时钟二、设计方案:1、通过单片机内部的计数/ 定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。

2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在对时钟精度要求较高的场合。

三、设计内容:这里采用应用广泛的AT89C52作为时钟控制芯片,利用单片机内部的定时/ 计数器T0 实现软时钟的目的。

首先将T0 设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60 次形成分,分计60 形成小时,小时计到12。

最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。

此外还要实现对时间的调整功能,89C52的、、外接三个独立按键,当按下按键时,系统进入调时间的状态或启动时间显示的功能;当按下按键时,对显示的数码管进行加一的功能;当按下按键时,对显示的数码管进行减一的功能,达到调整时间的目的。

四、系统软件程序设计1. 主程序先对显示单元和定时器/ 计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。

2、数码管显示模块本实验有8 个数码管,从右到左为妙、横线、分、横线、时。

在本系统中数码管显示采用软件译码动态显示。

在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从P0 端口输出,同时在P2 端口进行数码管显示。

3 、定时器/ 计数器T0 中断服务程序T0 用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。

51电子时钟课程设计

51电子时钟课程设计

51电子时钟课程设计一、课程目标知识目标:1. 学生能理解51单片机的内部结构及其工作原理;2. 学生能掌握电子时钟的基本原理,包括时钟芯片的初始化和使用方法;3. 学生能运用C语言编写程序,实现电子时钟的基本功能,如时、分、秒显示。

技能目标:1. 学生能运用已学的电子知识和编程技巧,完成51电子时钟的电路设计和程序编写;2. 学生通过实际操作,培养动手能力,提高解决实际问题的能力;3. 学生能通过课程学习,掌握基本的焊接技能,完成电子时钟的制作。

情感态度价值观目标:1. 学生在课程学习过程中,培养对电子技术和编程的兴趣,提高主动学习的积极性;2. 学生通过团队协作,培养沟通与合作的意识,增强团队精神;3. 学生在作品展示环节,学会欣赏他人的优点,提高自信心,培养创新精神和实践能力。

课程性质:本课程为实践性较强的课程,结合51单片机技术和电子时钟原理,注重培养学生的动手能力和实际问题解决能力。

学生特点:学生在前期课程中已掌握基本的电子知识和编程技巧,具备一定的实践基础。

教学要求:教师需引导学生运用所学知识,完成电子时钟的设计与制作,注重培养学生的创新思维和团队协作能力。

在教学过程中,关注学生的个体差异,提供个性化的指导。

通过课程目标的分解,确保学生能够实现预期的学习成果。

二、教学内容本课程教学内容主要包括以下几部分:1. 51单片机基础:复习51单片机的内部结构、工作原理,重点掌握时钟电路、复位电路和I/O口的使用。

2. 电子时钟原理:介绍电子时钟的基本构成,包括时钟芯片、晶振、显示屏等,分析时钟芯片的初始化和使用方法。

3. C语言编程:回顾C语言基础知识,重点讲解51单片机编程的语法和技巧,为编写电子时钟程序打下基础。

4. 电路设计与制作:指导学生进行电子时钟的电路设计,包括元器件的选择、电路图的绘制和PCB板的设计。

5. 程序编写与调试:教授学生编写电子时钟程序,实现时、分、秒的显示功能,并进行程序调试。

51电子钟课程设计

51电子钟课程设计

51电子钟课程设计一、课程目标知识目标:1. 让学生理解51单片机的原理及其在电子钟设计中的应用。

2. 使学生掌握电子钟的基本组成部分,包括时钟芯片、显示模块、按键等。

3. 帮助学生掌握定时器、中断等单片机技术的使用。

技能目标:1. 培养学生运用51单片机进行电子钟设计的能力,学会编写程序、调试电路。

2. 提高学生动手实践能力,能独立完成电子钟的组装和调试。

3. 培养学生分析问题和解决问题的能力,能够对电子钟进行故障排查和优化。

情感态度价值观目标:1. 培养学生对电子制作的兴趣,激发创新意识。

2. 培养学生团队合作精神,学会在团队中发挥自己的优势,共同完成任务。

3. 培养学生严谨的学习态度,养成良好的学习习惯。

分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握51单片机及其周边器件的基础上,运用所学知识完成一个具有实际应用价值的电子钟项目。

通过课程学习,使学生将理论知识与实际操作相结合,提高综合运用知识的能力,培养创新精神和实践能力。

同时,注重培养学生的情感态度价值观,使他们在学习过程中形成良好的学习习惯和团队协作精神。

二、教学内容1. 理论知识学习:- 51单片机基本原理及结构- 定时器、中断等技术的应用- 时钟芯片的原理与使用- 显示模块的工作原理及其与单片机的连接方法- 按键输入原理及电路设计2. 实践操作环节:- 电子钟电路图的绘制- 51单片机程序的编写与调试- 电子钟的组装与调试- 故障分析与优化3. 教学内容安排与进度:- 第一周:51单片机基本原理及结构学习,熟悉开发环境- 第二周:定时器、中断技术学习,时钟芯片原理介绍- 第三周:显示模块及按键输入学习,设计初步电路图- 第四周:编写程序,进行电子钟的组装与调试- 第五周:对电子钟进行故障分析与优化,撰写实验报告教材章节关联:本教学内容与教材中以下章节相关:- 第四章:51单片机原理与结构- 第五章:定时器与中断技术- 第六章:显示与键盘接口技术- 第七章:单片机应用实例三、教学方法为了提高教学效果,激发学生的学习兴趣和主动性,本课程将采用以下多样化的教学方法:1. 讲授法:教师通过生动的语言、丰富的案例,为学生讲解51单片机的基础知识、电子钟的设计原理等理论内容。

基于C51单片机的实用电子时钟设计Protel课程设计

基于C51单片机的实用电子时钟设计Protel课程设计

设计任务书题目:基于C51单片机的实用电子时钟设计初始条件1.一台装有PROTEL软件或以上版本的电脑及使用PROTEL软件绘制电路原理图和印刷电路板的根本技能;2.模拟、数字、高频、单片机、或者一个具有完备功能的电子电路系统。

要求完成的主要任务:1.绘制具有一定规模、一定复杂程度的电路原理图*.sch〔自选〕。

可以涉及模拟、数字、高频、单片机、或者一个具有完备功能的电子电路系统。

2.绘制相应电路原理图的双面印刷幅员*.pcb,对电路原理图进展仿真,给出仿真结果〔如波形*.sdf、数据〕并说明是否到达设计意图。

参考书目:1. 谢自美.电子线路设计·实验·测试(第三版).武汉:华中科技大学出版社2. 康华光. 电子技术根底模拟局部.高等教育出版社,2005时间安排查阅资料2天Protel设计2天电路仿真2天报告撰写1天指导老师签名:2021年月日系主任〔或责任老师〕签名:2021年月日摘要Altium Designer 是业界第一款一体化电子产品设计解决方案,它将设计流程、集成化PCB设计、可编程器件〔如FPGA〕设计和基于处理器的嵌入式软件开发功能整合在一起的产品,是一种能同时进展原理图、PCB和FPGA设计及嵌入式设计的解决方案,具有将设计方案从概念转变为最终产品所需的全部功能。

作为电子专业的学生,掌握EDA软件是非常重要的,纯熟使用各种EDA软件对以后的学习研究、工作都很有帮助。

本次课程设计主要是设计一个基于C51单片机的实用电子时钟。

通过课程设计,掌握Altium Designer的根本使用方法,学会画原理图,进展PCB制作,并给予必要的仿真。

关键词:Altium Designer;原理图;PCB制作;电子时钟AbstractAltium Designer is the industry's first unified electronics design solutions that will design flow, integrated PCB design, programmable devices (eg FPGA) design and processor-based embedded software development capabilities integrated products, is the one kind can simultaneously schematic, PCB and FPGA design and embedded design solutions with the design from concept to final product all the necessary functions.As electronics majors, master EDA software is very important, skilled use of a variety of EDA software for future study and research work are very helpful.The course design is to design a practical C51 microcontroller based electronic clock. Through curriculum design, master the basics of using Altium Designer, learn drawing schematics for PCB production and give the necessary simulation.Keywords:Altium Designer; schematic; PCB design; Electronic clock.目录摘要.......................................................................................................................................... I Abstract .................................................................................................................................. II 1 Altium Designer简介 . (1)1.1 Altium Designer特性 (1)1.2 Altium Designer的组成 (1)1.3 Altium Designer改良方面 (2)2 电子时钟系统设计 (3)2.1 MCU控制器简介 (3)2.2 单片机最小系统 (4)2.3 独立键盘 (4)2.4 LCD1602模块 (5)2.5 DS12C887时钟芯片 (7)2.6 电源模块 (8)3 原理图绘制 (9)3.1 创立新的PCB工程文件 (9)3.2 添加新的原理图空文件 (9)3.3 安装元件库 (10)3.4 放置电路元器件并绘制连线 (10)3.5 完善原理图 (11)3.6 检查电路原理图 (11)3.7 输出元件清单 (11)4 PCB幅员设计 (13)4.1 导入原理图设计数据 (13)4.2 PCB板型设计及元件布局 (13)4.3 PCB网络布线 (13)4.4 设计规那么DRC检查 (14)4.5 覆铜编辑及补泪滴处理 (15)4.6 PCB的3D显示 (16)5 仿真分析 (17)6 小结体会 (19)参考文献 (20)附录局部程序 (21)1Altium Designer简介1.1 Altium Designer特性Altium Designer是美国Altium公司开发的设计电路板软件Protel的晋级版本,其沿袭了Protel以前版本方便易学的特点,内部界面与Protel DXP大体一样,为了适应目前高密度和信号高速度的要求新增加了一些功能模块。

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

中南大学《自动化工程训练》设计题目 LCD时钟程序设计指导老师设计者专业班级自动化级班号设计日期2016年9月目录一、设计任务要求分析 (1)1.1设计总体方案及其方案论证 (1)二、组成电路介绍 (1)2.1 复位电路: (1)2.2晶振电路: (1)2.3键盘控制系统设计: (2)2.4闹钟部分: (3)2.5显示电路设计 (3)2.5.1 LCD1602简介 (3)三、软件设计 (4)3.1程序主流程图 (5)3.2初始化流程图 (5)3.3延时中断子程序 (6)3.4时间设置子程序 (7)四、系统测试 (7)4.1 测试方法 (7)4.2 测试结果 (7)4.3 结果分析 (8)五、源程序 (8)一、设计任务要求分析本设计要实现的功能是:实时显示当前的时钟,并且可以设定闹铃,以蜂鸣器鸣响5秒的方式作为闹铃。

1.1设计总体方案及其方案论证按照系统的设计功能所要求的,液晶显示电子时钟原理图如图所示。

单片机显示电路键盘电路复位电路晶振电路液晶显示电子时钟原理图本系统以AT89C51单片机为核心,该单片机可把数据进行处理,从而把数据传输到显示模块LCD1602液晶显示器,实现时间及日期的显示。

以LCD 液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化,还可以对时间和日期进行设置,主要靠按键来实现。

二、组成电路介绍2.1 复位电路:复位电路复位电路有两种方式:上电复位和按钮复位,我们主要用按钮复位方式。

如图所示:2.2晶振电路:晶振电路如图所示:晶振模块原理图选取原则:电容选取22pF,晶振为12MHz。

1)电源:AT89S51单片机的供电电源是5V的直流电。

2)EA非/Vpp脚:我们没有用外部扩展ROM,因此EA非/Vpp为高电平,即接+5V电源。

2.3键盘控制系统设计:按键需要4个,分别实现为时间调整、时间的加、时间的减、闹钟调整四个功能。

用单片机的4个I/O口接收控制信号,其电路如图所示:按键调时电路通过控制键来控制所要调节的是时、分、还是秒。

在控制键按下后LCD中会在相应的位置出现光标,这时在通过加数键或减数键来控制时分秒的加或减。

在调闹钟键按下后LCD中也会在相应的位置出现光标,这时也通过加数键或减数键来设置闹钟。

2.4闹钟部分:闹钟部分主要由蜂鸣器,三极管,电阻组成。

其电路图如图所示:闹钟电路当单片机的P1^5接口输出为高电平时,蜂鸣器响,当输出为低电平时,蜂鸣器停止。

2.5显示电路设计2.5.1 LCD1602简介LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。

每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用,正因为如此,所以他不能显示图形(用自定义CGRAM,显示效果也不好)。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

(1)LCD1602的主要技术参数显示容量:16×2个字符;芯片工作电压:4.5—5.5V;工作电流:2.0mA(5.0V);模块最佳工作电压:5.0V;字符尺寸:2.95×4.35(W×H)mm。

(2)LCD1602引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下:第1脚:VSS为地电源;第2脚:VDD接5V正电源;第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度;第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据;第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;第7~14脚:D0~D7,为8位双向数据线;第15脚:背光源正极;第16脚:背光源负极。

1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。

本显示电路将单片机的P0口作为液晶的数据口,由于P0口没有上拉电阻,所以需额外加一个排阻作为上拉电阻,利用P1口作为其读写控制端,具体电路如图。

显示电路三、软件设计软件设计是本次设计中不可缺少的环节,是本次设计能够完成的最重要的环节之一。

在完成了硬件电路的设计之后,依据系统设计要求和硬件电路开始系统软件部分的设计。

本系统软件设计包括:主程序、系统初始化子程序、延时中断子程序、时间设置子程序。

首先进行模块设计,最后进行各模块的整合以完成整个软件系统。

3.1程序主流程图主流程图3.2初始化流程图系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容:(1)单片机定时器0初始化以及各种I/O口定义;(2)1602液晶初始化清屏及设定工作方式;(3)系统进入正常工作状态。

初始化流程图3.3延时中断子程序延时中断子程序3.4时间设置子程序这里仅画出了秒设置流程图,其他时间及日期设置类似。

秒设置流程图四、系统测试4.1测试方法系统单片机代码采用C语言编写,proteus进行原理图的设计,keil软件进行代码的编译,通过keil与proteus软件的充分利用,将编译好的执行代码加载到原理图中的单片机里面进行原理图仿真,通过仿真对系统的代码程序和原理图进行测试,看是否达到系统的设计要求。

4.2测试结果(1)通过按调时健、加减键的调节,我们可以设定出具体的时间1:00:00,观察LCD液晶屏如图所示精确显示出我们所设定的时间时间。

(2)通过按键调节调闹钟健,我们可以五秒听到清晰的蜂鸣声。

4.3 结果分析通过对系统原理图和程序的仿真与调试基本实现了系统的功能要求。

可以通过按键(mode)来设定具体时间、闹钟。

LCD液晶显示屏能够准确而且清晰地显示出时间。

五、源程序#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit beep=P1^5; //定义蜂鸣器的io口sbit rw=P2^1; //定义读写的io口sbit rs=P2^0;//定义接收与发送指令的io口sbit lcden=P2^2;//定义使能端的io口sbit k1=P3^0; //定义调时键的io口sbit k2=P3^1; //定义加数键的io口sbit k3=P3^2; //定义减数键的io口sbit k4=P3^3; //定义调闹钟键的io口uchar count,count1,num,num1,num2;char h,min,sec,h1,min1,sec1;uchar table[]={" 23:59:57"};uchar table1[]={" 00:00:00"};void delay(uint ms)//延时程序{int i;while(ms--){for(i = 0; i< 250; i++){_nop_();_nop_();_nop_();_nop_();}}}delay1(uchar z) //延时程序{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--); return 0;}bit write_busy() //判断是否为繁忙状态{ bit result; rs = 0;rw = 1;lcden = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0x80); lcden= 0; return result; }void write_com(uchar com) //写指令函数{while(write_busy());rs=0;rw=0;lcden=0;P0=com;_nop_();_nop_();_nop_();_nop_();lcden=1;_nop_();_nop_();_nop_();_nop_();lcden=0;}void write_data(uchar date) //写数据函数{while(write_busy());rs=1;rw=0;lcden=0;P0=date;_nop_();_nop_();_nop_();_nop_();lcden=1;_nop_();_nop_();_nop_();_nop_();lcden=0;}void write_pos(uchar pos) //设定地址{write_com(pos | 0x80); //数据指针=80+地址变量}void write_sfm(uchar add,uchar date) //设定时分秒及其显示与地址{uint shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);}void write_sfm1(uchar add,uchar date) //设置闹钟时分秒及其显示与地址{uint shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);}void keyscan() //键盘扫描{if(k1==0){delay1(5);if(k1==0){while(!k1);num++;if(num==1){TR0=0;write_com(0x80+0x40+11);write_com(0x0f);}if(num==2){write_com(0x80+0x40+8);}if(num==3){write_com(0x80+0x40+5);}if(num==4){num=0;write_com(0x0c);TR0=1;}}}if(num!=0){if(k2==0){delay1(5);if(k2==0){while(!k2)if(num==1){sec++;if(sec==60)sec=0;write_sfm(10,sec);write_com(0x80+0x40+0x10);}if(num==2) {min++;if(min==60)min=0;write_sfm(7,min);write_com(0x80+0x40+8);}if(num==3){h++;if(h==24)h=0;write_sfm(4,h);write_com(0x80+0x40+5);}}}if(k3==0){delay1(5);if(k3==0){while(!k3);if(num==1){sec--;if(sec==-1)sec=59;write_sfm(10,sec); write_com(0x80+0x40+0x10);}if(num==2){min--;if(min==-1)min=59;write_sfm(7,min);write_com(0x80+0x40+8);}if(num==3){h--;if(h==-1)h=23;write_sfm(4,h);write_com(0x80+0x40+5);}}}}if(k4==0){delay1(5);if(k4==0){while(!k4);num1++;if(num1==1){write_sfm1(10,sec1);write_sfm1(7,min1);write_sfm1(4,h1);}if(num1==2){write_com(0x80+11); write_com(0x0f); }if(num1==3){write_com(0x80+8);}if(num1==4){write_com(0x80+5);}if(num1==5){num1=0;write_com(0x0c);write_sfm(10,sec);write_sfm(7,min);write_sfm(4,h);}}}if(num1!=0){if(k2==0){delay1(5);if(k2==0){while(!k2)if(num1==2) {sec1++;if(sec1==60)sec1=0;write_sfm1(10,sec1);write_com(0x80+0x10);}if(num1==3){min1++;if(min1==60)min1=0;write_sfm1(7,min1);write_com(0x80+8);}if(num1==4){h1++;if(h1==24)h1=0;write_sfm1(4,h1);write_com(0x80+5);}}}if(k3==0){delay1(5);if(k3==0){while(!k3);if(num1==2){sec1--;if(sec1==-1)sec1=59;write_sfm1(10,sec1); write_com(0x80+0x10);}if(num1==3){min1--;if(min1==-1)min=59;write_sfm1(7,min1);write_com(0x80+8);}if(num1==4){h1--;if(h1==-1)h1=23;write_sfm1(4,h1);write_com(0x80+5);}}}}}void init() //程序初始化函数{uint i;h=23;min=59;sec=57;h1=00;min1=00;sec1=00;num=0;lcden=0;write_com(0x38);delay(1);write_com(0x0c); //显示开,关光标delay(1);write_com(0x06); //移动光标delay(1);write_com(0x01); //清除LCD的显示内容 delay(1);i=0;while(table1[i] != '\0') //显示闹钟(静态) {write_data(table1[i]);i++;}i=0;write_pos(0x40);while(table[i] != '\0') //显示时间(静态) {write_data(table[i]);i++;}TMOD=0x01; //定时器TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1; //开启定时器ET0=1;TR0=1;}void main(){init();while(1){keyscan();if(min==min1&&h==h1) //闹钟启动条件{while(sec<=5) //响五秒{beep = 1;delay1(2);beep = 0;}}elsebeep=0;}}void timer0() interrupt 1 //定时器时间设定{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;sec++;if(sec==60){sec=0;min++;if(min==60){min=0;h++;if(h==24){h=0;}write_sfm(4,h);}write_sfm(7,min);}write_sfm(10,sec);}}。

相关文档
最新文档