单片机课程设计—带有LCD的定时闹钟

合集下载

基于单片机液晶定时闹钟的设计方案

基于单片机液晶定时闹钟的设计方案

基于单片机液晶定时闹钟的设计方案1 设计方案论证1.1 应用近几年,单片机在各个领域得到广泛的应用。

从工业到人们的日常生活,大部分的科技产品都是通过单片机来控制。

在它问世之前,自动控制设备不能被广泛的应用,这是因为控制设备的体积庞大,耗电量大,价格昂贵。

在第一台微处理器成功研制不久,第一个单片机就问世了。

因为其小巧的体积,低功耗,以及高效的性能,单片机受到了大家的欢迎。

今天,单片机成为了解决低复杂度,中等复杂度控制问题的传统选择。

我们选择的方法是单片机开发设计使用的传统方法,通过本次设计,可以了解整个单片机开发的流程。

利用STC89C52单片机结合七段显示器完成的简易的定时闹铃时钟,干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、闹钟电路组成。

秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。

译码显示电路将“时”、“分”、“秒”计数器的输出送到七段显示译码驱动器译码驱动,通过LCD液晶显示屏显示出来。

闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。

通过设置现在的时间及显示闹铃设置时间,并在定时时间发出一阵声响,可以进—步扩充控制电器的启停等。

1.2 方案选择用单片机来设计数字钟,软件实现各种功能比较方便,但因软件的执行需要一定的时间,所以就会出现误差。

因此我进一步努力,通过对比实际的时钟,查找出误差的来源,并作出调整,使得误差尽可能减小,达到实际数字钟系统的允许误差范围。

在程序设计中,采用模块化的程序设计思想,对整个设计划分了若干个模块,先对各个模块分别进行设计,然后整合各个模块,进行仿真模拟,对出现的错误进行分析,然后找出问题的所在,改进程序,再仿真模拟,观察结果、分析结果,直至最终结果满足设置要求。

LCD显示的定时闹钟

LCD显示的定时闹钟

西南科技大学单片机原理及接口技术课程设计报告课题名称LCD显示的定时闹钟姓名刘XX学号2011XXXX学院制造科学与工程学院班级机械11XX指导教师张XX2014年 06 月 12 日目录1.设计要求 (1)2.设计方案 (1)2.1原理 (1)2.2系统总框图 (2)2.3原理及工作过程说明 (2)3.元器件介绍 (2)3.1AT89C51 (2)3.2 1602LCD液晶显示器 (5)3.3 其他重要元件 (6)4.软件设计 (8)4.1系统流程图 (8)4.2 源代码 (10)5.系统仿真 (20)5.1系统总图 (20)5.2设定时间时LCD显示 (20)5.3设定闹钟时LCD显示 (21)5.4显示闹钟时LCD显示 (21)5.5待机时LCD显示 (21)6.实物图 (22)7.实验总结及心得体会 (22)8.参考资料 (24)1.设计要求使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD 时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。

定时闹钟的基本功能如下:⏹显示格式为“时时:分分”。

⏹由LED闪动来做秒计数表示。

⏹一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。

⏹程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00”,按下操作键K1~K4动作如下:(1) K1—设置现在的时间。

(2) K2—显示闹钟设置的时间。

(3) K3—设置闹铃的时间。

(4) K4—闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。

设置当前时间或闹铃时间如下。

(1) K1—时调整。

(2) K2—分调整。

(3) K3—设置完成。

(4) K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。

本项目的难点在于4个按键每个都具有两个功能,以最终实现菜单化的输入功能。

采用通过逐层嵌套的循环扫描,实现嵌套式的键盘输入。

单片机课程设计定时闹钟

单片机课程设计定时闹钟

单片机课程设计定时闹钟-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN一、任务说明本设计师定时闹钟的设计,由单片机AT89C51芯片和LCD、LED显示器,辅以必要的的电路,构成一个单片机定时闹钟。

电子钟可采用数字电路实现,也可以采用单片机来完成。

LCD显示“时”,“分”,LED闪动来做秒计数,定时时间到能发出警报声或者启动继电器,从而控制电器的启停。

现在是自动化高度发达的时代,特别是电子类产品都是靠内部的控制电路来实现对产品的控制,达到自动运行的目的,这就需要我们这里要做的设计中的电器元件及电路的支持。

在这次设计中主要是用AT89S51来进行定时,也结合着其他辅助电路实施控制,在定时的时候,按一下控制小时的键对小时加一;按一下控制分钟的键对分钟加一;到达预设的时间,此电路就会发出报警声音提示已经到点。

二、原理图绘制说明1、原理及工作过程说明(1)定时闹钟的基本功能如下:(a)使用LCD液晶显示器来显示现在的时间。

(b)程序执行之后显示“Time:00:00”;并且LED闪烁,表示开始已经计时。

(c)由LED闪动来做秒计数表示。

(2)按键功能如下:按键K1设置现在的时间和时调整;按键K2显示闹钟设置的时间和分调整;按键K3设置闹铃的时间和设置完成;按键K4闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声和闹铃时间到时,发出一阵声响,按下本键可以停止声响。

(3)调整计时器时间如下:按下K1键,然后按K1调整小时,K2调整分钟,按下K3表示时间设置完成。

(4)调整闹钟时间设置如下 :再次按下K3开始闹中设置,LCD下一行显示“Alarm:00:00”按下K1设置小时,按一下K2设置分钟,再次按下K3设置完成,并且设置时间消失,当再次按一下K2时“Alarm:00:00再次显示并马上消失。

按一下K4关闭闹钟,再次按下打开闹钟。

2、原理总框图图1 总原理图3、元器件功能说明AT89C51单片机引脚功能说明本设计的核心硬件就是8051芯片,这里选择了AT89C51,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。

单片机课程设计--智能电子钟(LCD显示)

单片机课程设计--智能电子钟(LCD显示)

课程设计课程名称_ 单片机原理与接口技术题目名称多功能数字时钟学生学院_ 材料与能源学院专业班级_ 电子材料及元器件方向学号_ _学生姓名_ ____________ 指导教师_2013 年 1 月16 日广东工业大学课程设计任务书题目名称多功能数字时钟学生学院材料与能源学院专业班级姓名学号一、课程设计的内容用AT89C52单片机制作一个时钟:1.设计并绘制硬件电路图;2.布置元件并焊接好元器件;3.编写程序并将调试好的程序固化到单片机中。

4.增加温度测试功能。

二、课程设计的要求与数据单片机采用STC89C52芯片,时钟芯片采用DALLAS 公司的DS1302,即涓流充电时钟芯片,它内含有一个实时时钟/日历和31 字节静态RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM 指示决定采用24 或12 小时格式,DS1302 与单片机之间能简单地采用同步串行的方式进行通信。

同时用选DS18B20 传感器将采集的室内温度显示于LCD上。

按此要求设计硬件和软件以实现这些功能。

三、课程设计应完成的工作1. 完成下载线的制作,为程序下载到单片机芯片中做好准备;2. 完成软件、硬件的设计,并进行硬件的焊接制作,并将调试成功的程序固化到单片机中,最后进行硬件与软件的调试;3.撰写设计说明书。

四、课程设计进程安排摘要随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的液晶显示温度和时钟设计,时间可由键盘调整。

主要用到的芯片有单片机STC89C52.液晶1602LCM模块.时钟芯片DS1302.温度传感器DS18B20等。

关键词:单片机STC89C52,1602LCM模块,DS1302.,DS18B20目录1 系统需求分析 (1)1.1 电子时钟研究的背景和意义 (1)1.2 系统实用功能分析 (1)2 设计要求与方案 (2)2.1 设计要求 (2)2.1.1 基本要求 (2)2.1.2发挥部分 (2)2.2 系统基本方案选择 (2)2.2.1 芯片的选择 (2)2.2.2 显示模块选择方案 (2)2.2.3 时钟信号的选择方案 (3)2.3 电路设计最终方案决定 (3)3 系统的硬件设计与实现 (3)3.1 数字钟电路设计框图 (3)3.2 系统硬件概述 (4)3.3 硬件电路结构的设计 (4)3.3.1 单片机主控制模块的设计 (4)3.3.2 显示模块的设计 (4)3.3.3 LCD原理说明 (5)3.3.4 开关模块说明 (6)4 系统的软件设计 (7)4.1 程序流程框图 (7)4.2 LCD的初始化与及显示程序 (7)5 系统调试 (9)5.1软件调试 (9)5.2硬件调试 (9)参考文献 (10)附录 (11)1 系统需求分析1.1 电子时钟研究的背景和意义20实际末,电子技术获得了飞速的发展。

基于单片机定时闹钟的设计

基于单片机定时闹钟的设计

基于单片机定时闹钟的设计随着科技的快速发展,嵌入式系统已经深入到我们生活的各个角落。

其中,单片机以其高效性、灵活性和低成本性,广泛应用于各种设备的设计中。

本文将探讨如何基于单片机设计一个定时闹钟。

一、硬件需求1、单片机:选择一个适合你项目的单片机。

比如Arduino UNO,它具有丰富的IO口和易于使用的开发环境。

2、显示模块:为了能直观地展示时间,你需要一个LCD显示屏。

可以选择常见的16x2字符型LCD显示屏。

3、按键模块:用于设定时间和闹钟功能。

一般可以选择4个按键,分别代表功能设置、小时加、小时减和分钟加。

4、蜂鸣器:当到达设定时间时,蜂鸣器会发出声音提醒。

二、软件需求1、开发环境:你需要一个适用于你单片机的开发环境,例如Arduino IDE。

2、编程语言:一般使用C或C++进行编程。

3、程序设计:你需要编写一个程序来控制单片机,让其根据设定时间准时唤醒。

程序应包括初始化和设定时间的功能,以及到达设定时间后的闹钟提醒功能。

三、设计流程1、硬件连接:将单片机、显示模块、按键模块和蜂鸣器按照要求连接起来。

2、初始化:在程序中初始化所有的硬件设备。

3、时间设定:通过按键模块设定时间。

你需要编写一个函数来处理按键输入,并在LCD显示屏上显示当前时间。

4、闹钟提醒:在程序中加入一个计时器,当到达设定时间时,程序会唤醒并触发蜂鸣器发出声音。

5、循环检测:在主循环中不断检测时间是否到达设定时间,如果到达则触发闹钟提醒,然后继续检测。

四、注意事项1、时钟源:你需要一个稳定的时钟源来保证闹钟的准确性。

可以考虑使用网络时钟或者GPS模块。

2、功耗优化:如果你的设备需要长时间运行,那么需要考虑到功耗的问题,比如使用低功耗的单片机或者在不需要闹钟提醒的时候关闭蜂鸣器等。

3、人机交互:考虑增加更多的功能以满足用户的需求,如设置多个闹钟、调整闹钟的音量等。

4、安全性:保证设备的电源稳定,避免在突然断电的情况下数据丢失或设备损坏。

单片机定时闹钟课程设计

单片机定时闹钟课程设计

单片机定时闹钟课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解定时器的功能和工作原理。

2. 使学生掌握定时闹钟程序编写的基本方法,了解中断处理的相关知识。

3. 帮助学生了解电子时钟的基本构成,掌握时间计算和显示的相关技巧。

技能目标:1. 培养学生动手实践能力,学会使用编程软件编写、调试程序,实现单片机定时闹钟功能。

2. 提高学生分析问题和解决问题的能力,能够独立完成定时闹钟课程的各项任务。

3. 培养学生团队协作能力,学会在项目过程中进行有效沟通和分工合作。

情感态度价值观目标:1. 培养学生对单片机编程的兴趣,激发他们探索未知、自主学习的精神。

2. 培养学生勇于尝试、不怕失败的品质,提高他们面对困难时的心理素质。

3. 增强学生的创新意识,鼓励他们发挥想象力和创造力,设计出具有个性的定时闹钟作品。

课程性质分析:本课程属于电子技术与应用领域的实践课程,旨在让学生通过动手实践,掌握单片机定时闹钟的设计与制作。

学生特点分析:学生处于中学阶段,具有一定的电子技术基础和编程能力,对新鲜事物充满好奇,喜欢动手实践。

教学要求:1. 结合课本知识,注重理论与实践相结合,提高学生的实际操作能力。

2. 注重培养学生的创新精神和团队协作能力,提高他们的综合素质。

3. 以学生为主体,关注个体差异,因材施教,使每个学生都能在课程中取得进步。

二、教学内容1. 单片机基础原理回顾:包括单片机的结构、工作原理、定时器/计数器功能。

2. 定时器编程技术:重点讲解定时器的初始化、中断处理程序编写,以及定时器应用实例。

- 教材章节:第三章《单片机定时器/计数器》3. 中断系统原理:介绍中断的概念、中断优先级、中断向量表,以及中断处理流程。

- 教材章节:第四章《中断系统》4. 显示技术:讲解数码管、LCD等显示器件的工作原理和编程方法。

- 教材章节:第五章《显示技术》5. 定时闹钟设计与实现:包括闹钟功能的整体设计、程序编写、调试与优化。

LCD电子钟程序(广工单片机课程设计)

LCD电子钟程序(广工单片机课程设计)

LCD电子钟程序(广工单片机课程设计)第一篇:LCD电子钟程序(广工单片机课程设计)#include#define uchar unsigned char#define uint unsigned int#define KEY_IO P3#define LCD_IO P0sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;sbit SPK = P1^2;sbit LED = P2^4;sbit KEY_0 = P3^7;sbit KEY_1 = P3^6;sbit KEY_2 = P3^5;sbit KEY_3 = P3^4;bit new_s, modify = 0;char t0, sec = 0, min = 0, hour = 0;char code LCD_line1[] = “I LOVE U”;char code LCD_line2[] = “Timer: 00:00:00 ”;char Timer_buf[] = “00:00:00”;char a,b,c,k = 0;//--------------------void delay(uint z){uintx, y;for(x = z;x > 0;x--)for(y = 100;y > 0;y--);}//--------------------void W_LCD_Com(uchar com)//写指令 { LCD_RS = 0;LCD_IO = com;// LCD_RS和R/W都为低电平时,写入指令LCD_EN = 1;delay(5);LCD_EN = 0;//用EN输入一个高脉冲 }//--------------------void W_LCD_Dat(uchar dat)//写数据{LCD_RS = 1;LCD_IO = dat;// LCD_RS为高、R/W为低时,写入数据LCD_EN = 1;delay(5);LCD_EN = 0;//用EN输入一个高脉冲 } //--------------------void W_LCD_STR(uchar *s)//写字符串{while(*s)W_LCD_Dat(*s++);}//--------------------void W_BUFF(void)//填写显示缓冲区{Timer_buf[7] = sec % 10 + 48;Timer_buf[6] = sec / 10 + 48;Timer_buf[4] = min % 10 + 48;Timer_buf[3] = min / 10 + 48;Timer_buf[1] = hour % 10 + 48;Timer_buf[0] = hour / 10 + 48;W_LCD_STR(Timer_buf);}//--------------------uchar read_key(void){ucharx1, x2;KEY_IO = 255;x1 = KEY_IO;if(x1!= 255){delay(100);x2 = KEY_IO;if(x1!= x2)return 255;while(x2!= 255)x2 = KEY_IO;if else if(x1 == 0xbf)return 1;else if(x1 == 0xdf)return 2;else if(x1 == 0xef)return 3;else if(x1 == 0xf7)return 4;}return 255;} //--------------------void Init(){LCD_RW = 0;W_LCD_Com(0x38);delay(50);W_LCD_Com(0x0c);W_LCD_Com( 0x06);W_LCD_Com(0x01);W_LCD_Com(0x80);W_LCD_STR(LCD_li ne1);W_LCD_STR(LCD_line2);TMOD = 0x01;//T0定时方式1TH0 = 0x4c;TR0 = 1;//启动T0 PT0 = 1;//高优先级, 以保证定时精度ET0 = 1;EA = 1;}//--------------------void main(){uint i, j;uchar Key;Init();while(1){//if(new_s){ //如果出现了新的一秒, 修改时间new_s = 0;sec++;sec %= 60;if(!sec){min++;min %=60;if(!min){ hour++;hour %= 24;}}W_BUFF();//写显示W_LCD_Com(0xc0 + 7);(x1 == 0x7f)return 0;W_LCD_Com(0xC0);//if(!sec &&!min){ //整点报时for(i = 0;i < 200;i++){SPK = 0;for(j = 0;j < 100;j++);SPK = 1;for(j = 0;j < 100;j++);} }} //Key = read_key();//读出按键switch(Key){//分别处理四个按键case0: if(KEY_0){min++;min %= 60;W_BUFF();break;}case1: if(KEY_1){hour++;hour %= 24;W_BUFF();break;}case2: if(KEY_2){ a=sec;b=min;c=hour;sec = 0, min = 0, hour = 0;}case3: if(KEY_3){sec=a+sec;if(sec>60){sec=sec-60;min++;}min=b+min;if(min>60){min=min-60;hour++;}hour=c+hour;if(hour>24){hour=hour-24;} }} }} //--------------------void timer0(void)interrupt 1//T0中断函数, 50ms执行一次{TH0 = 0x4c;t0++;t0 %= 20;//20, 一秒钟if(t0 == 0){new_s = 1;LED = ~LED;}if(modify)LED = 0;} K0分加一 K1时加一 K2秒表开始K3秒表结束,恢复正常时间!第二篇:单片机课程设计电子钟课程设计任务书(指导教师填写)课程设计名称电子技术课程设计学生姓名专业班级设计题目数字钟一、课程设计的任务和目的任务:设计一台能显示“时”、“分”、“秒”的数字钟,周期为24小时;具有校时、正点报时功能。

51单片机课程设计lcd时钟

51单片机课程设计lcd时钟

51单片机课程设计lcd时钟一、课程目标知识目标:1. 让学生掌握51单片机的基本原理,了解LCD显示模块的工作原理及其与单片机的接口技术。

2. 使学生学会编写程序,实现LCD显示时钟功能,理解时钟算法和实时时钟操作。

3. 引导学生掌握利用51单片机进行LCD时钟项目设计的步骤和技巧。

技能目标:1. 培养学生动手实践能力,能够独立完成51单片机与LCD模块的连接和调试。

2. 提高学生编程技能,学会编写和优化LCD显示时钟程序,实现准确的时间显示。

3. 培养学生问题解决能力,能够分析和解决在LCD时钟设计过程中遇到的技术问题。

情感态度价值观目标:1. 培养学生对电子技术及编程的兴趣,激发学习主动性和创新精神。

2. 培养学生的团队合作意识,学会在项目设计中相互协作、共同解决问题。

3. 引导学生认识到科技对社会生活的影响,增强社会责任感和使命感。

本课程针对高中年级学生,具有较强的实践性和应用性。

结合学生特点,课程目标注重理论知识与实践技能的结合,以提高学生的综合运用能力和创新思维能力。

在教学过程中,要求教师注重启发式教学,引导学生主动探究,关注学生个体差异,确保每个学生能够达到课程目标。

课程目标的实现将通过具体的实践活动和学习成果进行评估。

二、教学内容1. 理论知识:- 51单片机基础:原理、结构、编程语言。

- LCD显示模块:工作原理、接口技术、编程控制。

- 实时时钟:时钟算法、时钟芯片应用、时间读取与设置。

2. 实践操作:- 51单片机与LCD模块的连接与调试。

- 编写和优化LCD显示时钟程序,实现时间显示、校准等功能。

- 设计LCD时钟项目,包括硬件选型、程序编写、功能测试。

3. 教学大纲:- 第一阶段(2课时):51单片机基础、LCD显示模块原理学习。

- 第二阶段(2课时):实时时钟知识学习,时钟算法掌握。

- 第三阶段(2课时):实践操作,连接51单片机与LCD模块,编写程序实现时钟功能。

- 第四阶段(2课时):项目设计与优化,团队协作解决问题,完成LCD时钟项目。

课程设计带LCD显示的按时闹钟

课程设计带LCD显示的按时闹钟

交通与汽车工程学院课程设计说明书课程名称: 微机原理及应用课程设计课程代码: 8234570 题目: 带LCD显示的按时闹钟年级/专业/班: 09级汽电三班学生姓名: 杨宇学号:开始时间: 2012 年 07 月 02 日完成时间: 2021 年 07 月 06 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总分(100)指导教师签名:年月日目录摘要 (2)1 引言 (3)1.1 问题的提出 (3)任务与分析 (3)2 系统方案设计 (5)2.1 系统设计方案 (5)2.2 系统整体框图 (6)3 系统硬件电路设计 (7)3.1 89C51单片机 (7)1602LCD (9)3.3 键盘 (12)4 系统软件设计 (13)4.1 proteus软件环境介绍 (13)4.2 Protel软件环境介绍 (13)系统软件分析 (14)4.3.1 系统时钟电路设计 (14)系统复位电路的设计 (14)4.3.3 闹钟指示电路设计 (15)4.3.4 电子闹钟的显示电路设计 (15)4.4 程序流程图 (15)5.系统调试进程 (21)结论 (24)致谢 (25)参考文献 (26)附表(本设计所有程序) (38)摘要本设计是基于AT89C51单片机为操纵核心的按时闹钟设计。

系统采纳了美国DALLAS 公司的DS1302实不时钟芯片组成了计时电路,实现了时刻和日期的显示。

T89C51单片机结合七段显示器设计的简易按时闹铃时钟,能够设置此刻的时刻及显示闹铃设置时刻,假设时刻到那么发出一阵声响,进—步能够扩充操纵电器的启停。

本设计说明书对该系统的硬件电路,工作原理进行了详细的介绍。

同时给出了软件设计的流程图和要紧源代码。

关键词:89C51单片机 DS1302时钟芯片 LED显示器1 引言1.1 问题的提出随着人类科技文明的进展,人们关于时钟的要求在不断地提高。

单片机课程设计—带有LCD的定时闹钟

单片机课程设计—带有LCD的定时闹钟

单片机的发展历程
1971年,Intel公司推出4004微处理器, 标志着单片机的诞生
1990年代,ARM公司推出ARM架构,成为现 代智能手机、平板电脑等设备的主流处理器
1976年,Intel公司推出8080微处理器, 成为第一个广泛使用的单片机
2000年代,RISC-V架构出现,成为开 源硬件领域的新宠
判断按键类型:根 据按键的状态,判 断按下的是哪个按 键
执行相应操作:根据按 键类型,执行相应的操 作,如设置闹钟时间、 调整闹钟音量等
更新显示内容:根据 按键操作,更新LCD 显示内容,如显示当 前时间、闹钟时间等
定时器和中断服务程序
定时器:用于定时触发中断服务程序 中断服务程序:用于处理定时器中断 定时器初始化:设置定时器参数,如定时器模式、定时器周期等 中断服务程序编写:编写中断服务程序,处理定时器中断,如更新LCD显示、控制闹钟等
通信设备:如手机、路由 器等
计算机外设:如打印机、 扫描仪等
定时闹钟的设计 思路
设计背景和意义
单片机课程设计:作为单片机课程的一部分,设计定时闹钟可以加深对单片机原理和应用的理解。 实际应用:定时闹钟在日常生活中具有广泛的应用,如提醒、定时等。 技术挑战:设计定时闹钟需要掌握单片机编程、电路设计、LCD显示等技术,具有一定挑战性。 创新性:设计带有LCD的定时闹钟,可以提高产品的用户体验,增加产品的市场竞争力。
功能:接收用 户按键输入, 控制闹钟功能
模块组成:按 键、电阻、电 容、单片机IO

工作原理:通过 按键按下,改变 电阻电容的电平, 从而改变单片机 IO口的电平,实
现按键输入
设计要点:按 键的布局、按 键的响应速度、 按键的防抖处

单片机课程设计--基于51单片机的定时闹钟设计

单片机课程设计--基于51单片机的定时闹钟设计

单片机课程设计报告院系:信息工程学院专业:电子信息工程课程设计题目:基于51单片机的定时闹钟设计目录一、概述---------------------------------------------------------------------------------------------------3二、原理图的绘制---------------------------------------------------------------------------------------32-1原理及工作过程说明---------------------------------------------------------------------42-2原理图---------------------------------------------------------------------------------------42-3元器件功能说明---------------------------------------------------------------------------52-3-1 STC89C52单片机引脚功能说明--------------------------------------------------52-3-2 LCD1602液晶显示器--------------------------------------------------------------72-3-3 其它重要元件------------------------------------------------------------------------9三、流程图绘制以及说明------------------------------------------------------------------------------10四、Proteus仿真说明------------------------------------------------------------------------------------11五、课程设计体会----------------------------------------------------------------------------------------11六、参考文献----------------------------------------------------------------------------------------------12七、原理图及程序-----------------------------------------------------------------------------------------13一、概述本设计师定时闹钟的设计,由单片机STC89C52芯片和LCD、LED显示器,辅以必要的的电路,构成一个单片机定时闹钟。

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

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

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

LCD显示电子钟的基本要求1,掌握单片机开发编程设计的基本流程;2,了解Keil及Proteus软件的基本使用;3,了解LCD的基本使用;4,学习单片机硬件制作。

二,具体实现1,软件平台1)Keil编程Keil 的开发工具的使用的基本过程:○1创建C 或汇编语言的源程序;○2编译或汇编源文件;○3纠正源文件中的错误;○4从编译器和汇编器连接目标文件;○5测试连接的应用程序。

2)Proteus仿真Proteus软件不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

在编译方面,它也支持IAR,Keil,PLAB等多种编译器。

2,硬件开发平台JD51开发板的基本资料○1LED 电路,8 只独立LED 发光管,可做指示或各种闪烁效果用。

○2数码管电路,4只共阳一体8 段数码显示管,可实现各种数据显示,如计数、时钟等。

○3蜂鸣器电路,可用于设计各种提示音、演奏音乐等。

○4键盘电路,学习按键控制相关编程。

○5LCD 显示电路,编程控制LCD 显示。

○6串口电路,学习编程实现JD51 和PC 或其他符合该通信协议的电路之间的通信。

○7红外电路,通过选配的红外遥控器,学习红外解码并可实现红外遥控JD51。

○8温度模块电路,采用一线式温度传感器实现温度的采集并可显示在数码管或者LCD 上,通过温度数据处理便可实现温度控制器功能。

○9除了以上提到的可编程电路本学习板还有一些常用的不可编程电路,包括电源电路、复位电路、晶振电路等。

本次LCD电子钟实验用到其中的蜂鸣器,按键,LCD显示接口。

3,总体设计1)基本资源的使用本次实验采用了89C52型单片机,1602LCD液晶显示屏,蜂鸣器。

单片机课程设计—带有LCD定时闹钟

单片机课程设计—带有LCD定时闹钟

设计总说明这次课程设计的任务是是利用MCS51系列单片外加必要的辅助电路从而设计一个带有LCD显示的定时闹钟。

该闹钟应具有的功能是:当定时闹钟到了人为设定好的时间后,它就发出声音,并且在LCD显示器上显示出你所设定的闹钟时间以及当前时间,并能够随时调整时间。

本课设所用器件有:AT89C52单片机、LCD显示器(LM016L)、上拉电阻(Respack-8)、晶振电路、复位电路(带有复位键)以及四个控制键。

1、在控制时分电路设计中,分别设置了四个键:K1键-用来设置当前时间以及在设置中用来设置时钟K2键-显示闹钟时间以及在设置中用来设置分钟K3键-设置闹钟时间K4键-控制闹铃的开关2、在控制时分秒电路的设计中,分别设置了五个键,即在1的基础上增加了一个控制秒的按键。

当然本课程设计中所用到的元器件还可以应用其他的一些器件。

比如AT89C52完全可以用AT89C51来代替,LM016L型号的LCD显示器可以用LM017L 型号的LCD显示器来代替(其他一些显示器也可以用),上来电阻也可以用分电阻来表示。

初次做课程设计,肯定会有许多不足之处,希望老师们指点!关键字: AT89C52单片机 LCD显示器闹钟目录1、主要内容 (3)2、目的和意义 (3)3、基本要求 (3)、显示时-分功能 (3)、显示时-分-秒功能 (3)4、系统设计AT89C52单片机简介 (4)电路总体设计 (6)主程序流程图 (7)5、详细设计设计电路图 (7)程序代码 (12)5.2.1 时-分程序代码 (12)5.2.2 时-分-秒程序代码 (23)6、结论结果分析 (33)心得体会 (33)7、设计总结 (34)8、参考文献 (34)1、主要内容:本次课程设计的内容为设计一个以MCS51单片机为核心的带有LCD显示的定时闹钟,完成原理图设计,软件编制及设计报告。

设使用AT89C52单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟,若LCD 选择有背光显示的模块,在夜晚或黑暗的场合中也可以使用。

单片机课程设计—带有LCD的定时闹钟

单片机课程设计—带有LCD的定时闹钟

单⽚机课程设计—带有LCD的定时闹钟郑州轻⼯业学院软件学院单⽚机与接⼝技术课程设计总结报告设计题⽬:带有LCD的定时闹钟学⽣姓名:系别:专业:班级:学号:指导教师:2011年12⽉16⽇郑州轻⼯业学院课程设计任务书题⽬带有LCD的定时闹钟专业、班级学号姓名主要内容:设使⽤89C51单⽚机结合字符型LCD显⽰器设计⼀个简易的定时闹钟LCD 时钟,若LCD选择有背光显⽰的模块,在夜晚或⿊暗的场合中也可以使⽤。

基本要求:.字符型LCD(16*2)显⽰器.显⽰格式“时时分分”。

.由LED闪动来做秒计数表⽰。

.⼀旦时间到侧发动声响,同时继电器启动,可以扩充控制家电开启和关闭。

.程序执⾏后⼯作指⽰灯LED闪动,表⽰程序开始执⾏,LCD显⽰“00 00”,按下操作键K1-k4动作如下:(1)K1—设置现在的时间。

(2)K2—显⽰闹钟设置的时间。

(3)K3—设置闹铃的时间。

(4)K4—闹铃ON/OFF的状态设置,设置ON时连续三次发出“哗”的⼀声,off置为哗的⼀声。

设置当前时间或闹铃时间如下:(1)K1—时的调整。

(2)K2—分的调整。

(3)K3—设置完成。

(5)OFF发出“哗”K4---闹铃时间到时,发出⼀阵声响,按下本键可以停⽌声响。

除了显⽰当前时间的功能外,还可以扩充如下功能;.增加减计数功能。

.增加多组计数的功能。

参考⽂献郭天祥 51单⽚机C语⾔教程-⼊门。

余发⼭单⽚机原理及应⽤技术。

中国矿业⼤学出版社。

涂世亮,张友德。

单⽚微机控制技术。

清华⼤学出版社。

⼀.设计本电⼦定时闹钟的⽬的和意义以单⽚机为核⼼的数字时钟是很有社会意义和社会价值的。

钟表原先的报时功能已经原不能满⾜⼈们⽇益增长的要求,现代的电⼦时钟多带有类似⾃动报警、按时⾃动打铃、时间程序⾃动控制、定时⼴播、⾃动起闭路灯、通断动⼒设备、甚⾄各种定时电⽓的⾃动启⽤等功能。

1.1 本LCD电⼦闹钟的特点和功能介绍数字钟介绍时钟是将⼩时、分钟、秒钟显⽰于⼈的⾁眼的计时装置。

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计引言:电子时钟是人们日常生活中广泛应用的一种设备,基于单片机的电子时钟可以实现精确的时间显示、闹钟设置、定时功能等。

本设计将使用单片机控制电子时钟的各种功能,通过一个LCD显示屏来显示时间和其他信息。

一、设计目标:1.实现准确显示时间功能;2.设计带有闹钟设置的功能;3.实现定时功能。

二、设计原理:该电子时钟工作原理主要是通过单片机将外部的时钟信号进行调整和处理,然后控制液晶显示屏显示时间。

电子时钟的核心是单片机,通过单片机的计时功能实现时钟的准确显示,并通过输入设备设置闹钟功能和定时功能。

三、设计流程:1.系统初始化:首先,将单片机初始化,设置时钟和计时器的相关参数,开启显示屏的显示功能。

2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。

3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。

4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。

四、硬件设计:1.单片机选择:选用一款适合的单片机,如51系列单片机。

2.时钟电路:通过外部晶振或者RTC芯片来提供准确的时钟信号。

3.输入设备:使用按键作为输入设备,用于设置闹钟和定时功能;4.显示屏:选用合适的液晶显示屏,用于显示时间。

五、软件设计:1.系统初始化:设置时钟和计时器的相关参数,开启显示屏的显示功能。

2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。

3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。

4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。

六、实验结果:本设计可以准确显示时间,并可以设置闹钟和定时功能。

当闹钟和定时时间到达时,会触发相应的动作,实现了基本要求。

带有LCD的电子闹钟课程设计

带有LCD的电子闹钟课程设计

带有LCD的电子闹钟课程设计一、课程目标知识目标:1. 学生能理解电子闹钟的基本工作原理,掌握LCD显示原理。

2. 学生能掌握闹钟设置、时间调整等基本操作,了解电子闹钟的功能特点。

3. 学生能了解电子闹钟中涉及的电子元件及其作用。

技能目标:1. 学生能运用所学知识,正确组装带有LCD的电子闹钟。

2. 学生能通过实际操作,掌握电子闹钟的调试与故障排除方法。

3. 学生能运用创新思维,对电子闹钟进行改进设计。

情感态度价值观目标:1. 学生通过动手实践,培养对电子技术的兴趣和热情。

2. 学生在合作学习中,培养团队协作能力和沟通表达能力。

3. 学生在学习过程中,增强对科技产品的理解和尊重,树立正确的科技价值观。

课程性质:本课程为实践性较强的课程,结合理论知识与动手操作,培养学生电子技术的实际应用能力。

学生特点:学生在本年级已具备一定的电子技术基础知识,具有较强的动手能力和探究精神。

教学要求:教师需引导学生将理论知识与实际操作相结合,注重培养学生的动手实践能力和创新思维。

通过课程学习,使学生在掌握基本技能的同时,提升情感态度价值观。

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

二、教学内容本课程教学内容主要包括以下几部分:1. 电子闹钟基本原理:介绍电子闹钟的工作原理,LCD显示原理,以及闹钟中涉及的电子元件及其作用。

2. 闹钟组装与调试:讲解闹钟的组装过程,包括电路连接、LCD显示、按键设置等,以及闹钟的调试方法与故障排除。

3. 闹钟功能特点:分析电子闹钟的功能特点,如闹铃设置、时间调整、背光显示等,并介绍相关操作方法。

4. 创新设计与改进:引导学生运用所学知识,对电子闹钟进行创新设计,提高闹钟的实用性和趣味性。

教学内容安排如下:第一课时:电子闹钟基本原理学习,了解LCD显示原理及闹钟中的电子元件。

第二课时:闹钟组装与调试,学生动手实践,掌握组装与调试方法。

第三课时:学习闹钟的功能特点,进行实际操作,熟悉各项功能。

单片机LCD定时闹钟程序

单片机LCD定时闹钟程序

#include<reg51.h> // 包括单片机寄存器的头文件#include<intrins.h> //包括 _nop_() 函数定义的头文件//1602 端口定义sbit RS=P2^0; // 寄存器选择位,将RS 位定义为P2.0 引脚sbit RW=P2^1; //读写选择位,将RW 位定义为P2.1 引脚sbit E=P2^2; // 使能信号位,将 E 位定义为 P2.2 引脚sbit BF=P1^7; // 忙碌标记位,,将 BF 位定义为P0.7 引脚//AD 端口定义sbit CLK=P2^3;sbit start=P2^4;sbitoe=P2^5;sbiteoc=P2^7;sbitout_pulse=P2^6;//5us 脉冲sbit p30=P3^0;#define uchar unsigned char#define uint unsigned intuchar n=0;uchar flag=0;//1s 标记位/*****************************************************函数功能:延时1ms***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒进口参数: n***************************************************/void delay(unsigned int n){unsignedinti;for(i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值: result。

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

轻工业学院软件学院单片机与接口技术课程设计总结报告设计题目:带有LCD的定时闹钟学生:系别:专业:班级:学号:指导教师:2011年12月16日轻工业学院课程设计任务书题目带有LCD的定时闹钟专业、班级学号主要容:设使用89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD 时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可以使用。

基本要求:.字符型LCD(16*2)显示器.显示格式“时时分分”。

.由LED闪动来做秒计数表示。

.一旦时间到侧发动声响,同时继电器启动,可以扩充控制家电开启和关闭。

.程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00 00”,按下操作键K1-k4动作如下:(1)K1—设置现在的时间。

(2)K2—显示闹钟设置的时间。

(3)K3—设置闹铃的时间。

(4)K4—闹铃ON/OFF的状态设置,设置ON时连续三次发出“哗”的一声,off置为哗的一声。

设置当前时间或闹铃时间如下:(1)K1—时的调整。

(2)K2—分的调整。

(3)K3—设置完成。

(5)OFF发出“哗”K4---闹铃时间到时,发出一阵声响,按下本键可以停止声响。

除了显示当前时间的功能外,还可以扩充如下功能;.增加秒表计数。

.闹铃时间到侧产生音乐声。

.增加减计数功能。

.增加多组计数的功能。

参考文献郭天祥 51单片机C语言教程-入门。

余发山单片机原理及应用技术。

中国矿业大学。

涂世亮,友德。

单片微机控制技术。

清华大学。

一.设计本电子定时闹钟的目的和意义以单片机为核心的数字时钟是很有社会意义和社会价值的。

钟表原先的报时功能已经原不能满足人们日益增长的要求,现代的电子时钟多带有类似自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、通断动力设备、甚至各种定时电气的自动启用等功能。

1.1 本LCD电子闹钟的特点和功能介绍数字钟介绍时钟是将小时、分钟、秒钟显示于人的肉眼的计时装置。

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

而LCD电子定时闹钟是以单片机为基础的数字电路实现对时、分、秒的数字显示的数字计时装置,它的计时周期为24小时,另外应有校时功能和一些显示日期、闹钟等附加功能。

一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”,“星期”计数器、校时电路、报时电路和振荡器组成。

目前电子钟广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手。

2 总体方案设计2.1 总体设计方案本LCD定时闹钟,是以单片机及外围接口电路为核心硬件,辅以其他外围硬件电路,用汇编语言设计的程序来实现的。

根据C51单片机的外围接口特点扩展相应的硬件电路,然后根据单片机的指令设计出数字钟相应的软件,再利用软件执行一定的程序来实现数字钟的功能。

由于采用集成芯片性的单片机来制作电子钟,这样设计制作简单而且功能多、精确度高,也可方便扩充其他功能,实现也十分简单。

本设计是利用AT89C51单片机为主控芯片,由LCD、晶振、电阻、电容、发光二极管、开关、喇叭等元件组成硬件电路,通过编写软件程序来实现和控制的数字定时闹钟。

3 硬件设计3.1 主控芯片AT89C51的设计在本LCD电子闹钟设计中就是采用利用我们熟悉的AT89C51单片机为主控芯片。

AT89C51单片机由微处理器,存储器,I/O口以及特殊功能寄存器SFR等部分构成。

其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片程序存储器的容量为4KB,片数据存储器为128个字节。

89C51单片机有4个8位的并行I/O口:P0口,P1口,P2口和P3口。

各个接口均由接口锁存器,输出驱动器,和输入缓冲器组成。

P1口是唯一的单功能口,仅能用作通用的数据输入/输出口。

P3口是双功能口除了具有数据输入/输出功能外,每条接口还具有不同的第二功能,如P3.0是串行输入口线,P3.1口是串行输出口线。

在需要外部程序存储器和数据存储器扩展时,P0可作为分时复用的低8位地址/数据总线,P2口可作为高8位的地址总线。

P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号.3.2 时钟电路部分设计AT89C51系列的单片机的时钟方式分为部方式和外部方式。

部方式就是在单片机的XTAL1和XTAL2的两引脚外接晶振,就够成了自激振荡器在单片机部产生时钟脉冲信号。

外部时钟方式是把外部已经有的时钟信号引入到单片机部。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。

在一个单片机应用系统中,时钟有两方面的图3.2含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。

本LCD电子闹钟设计是采用部时钟方式,用一个12MHz晶振和两个30Pf瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用.其电路图见图3.2。

之所以采用高性能的振荡电路,因为:1.单片机电子钟的计时脉冲基准是由外部晶振的频率经过12分频后提供,采用部的定时/计数器来实现计时功能。

所以,外接晶振频率精确度直接影响电子钟计时的准确性。

2.单片机电子钟利用部定时/计数器溢出产生中断(12M晶振一般为50ms)再乘以相应的倍率来实现秒、分、时的转换。

大家都知道从定时/计数器产生中断请求到响应中断需要3-8个机器周期,定时中断子程序中的数据入栈和重装定时/计数器的初值还需要占用数个机器周期,还有从中断入口转到中断子程序也要占用一定的机器周期。

3.3 LCD显示电路部分为了获得更好的效果本设计并没有采用常见的LED,而是采用了型号为1602的 LCD。

LCD 有LED数码显示更好的更的直观效果,也更加经久耐用。

液晶显示模块体积小功耗低、显示容丰富,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件之一了。

本LCD是2行16列液晶可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN 三个控制端口(共14线),工作电压为5V。

没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚). 该模块也可只用D4-D7作为四位数据分两次传送。

这样的话可以节省MCU的I/O口资源。

引脚说明,见表3.1。

VDD:电源正极,4.5-5.5V,通常使用5V电压;VL:LCD对比度调节端,电压调节围为0-5V。

接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度或者直接串接一个电阻到地;RS:MCU写入数据或者指令选择端。

MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;R/W:读写控制端。

R/W为高电平时,读取数据;R/W为低电平时,写入数据;E:LCD模块使能信号控制端。

写数据时,需要下降沿触发模块。

D0-D7:8位数据总线,三态双向。

如果MCU的I/O口资源紧的话,该模块也可以只使用4位数据线D4-D7接口传送数据。

本充电器就是采用4位数据传送方式;BLA: LED背光正极。

需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;BLK: LED背光地端。

[12]表3.1 LCD显示屏引脚说明4 软件设计4.1 软件设计概述这里用汇编的单片机程序构成了本LCD电子闹钟的软件系统。

该程序实现时间及定时(时间以0点0分0秒为基准计算,闹铃定时以0时0分为基准计算)的显示,有外中断0和五个开关实现校时,闹钟功能。

其中程序的晶振频率为12MHz,最小计时单位为1/20秒。

主芯片p0.1-p0.7输出数据到LCD数据总线,p3.0-2.2输出LCD控制信号,P2.1输出声音信号,.P1.0-P1.3输入外部控制信号,整个软件系统也是根据这个关系连接成一个完整的系统。

4.2 主函数的设计本LCD电子闹钟的的主程序流程图如图4.1所示:4.3.1 程序初始化在系统开始上电时,需要.首先初始化液晶:void TimeInit(){write_(0x01); //初始化1602液晶write_(0x80); //设置现实初始坐标for(num=0;num<9;num++) //显示年月日{write_date(table[num]);delay(5);}write_(0x80+0x40+6); //写出时间显示部分的两个冒号write_date(':');delay(5);write_(0x80+0x40+9);write_date(':');delay(5);write_sfm(4,shi); //分别送去液晶显示write_(0x80+0x40+4);write_sfm(7,fen);write_(0x80+0x40+7);write_sfm(10,miao);write_(0x80+0x40+10)4.3.2 闹钟的实现闹钟功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。

闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。

闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。

当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。

程序设计思想如图4.3。

[8]4.3.3 显示程序显示程序包括时钟显示和定时显示程序。

具体程序见附录。

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表4.1是TC1602EL液晶模块的部显示地址。

[15]表4.1 部显示地址1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1600 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F硬件原理图程序:#include <reg52.h>#include "24C08.h"#define uint unsigned int#define uchar unsigned charuchar code table[]="NOW TIME:";uchar code table1[]="SET NOW TIME:";uchar code table2[]="SET ALARM TIME:";uchar code alarm[]="ALARM TIME:";uchar code alarmoff[]="ALARM TIME: OFF";uchar code alarmon[]="ALARM TIME: ON";sbit lcden=P3^2;sbit lcdrs=P3^0;sbit lcdrw=P3^1;sbit K1=P1^0;sbit K2=P1^1;sbit K3=P1^2;sbit K4=P1^3;sbit beep=P2^1;uchar flag,num,count,k1num,k2num,k3num,k4num; char miao,shi,fen,ashi,afen;//延时函数void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}//蜂鸣器子程序void di(){beep=0;delay(100);beep=1;}//写命令函数void write_(uchar ){lcdrs=0;lcdrw=0;lcden=0;P0=;delay(5);lcden=1;delay(5);lcden=0;}//写数据函数void write_date(uchar date){lcdrs=1;lcdrw=0;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}//写时间函数void write_sfm(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}//显示时间初始化void TimeInit(){write_(0x01);write_(0x80);for(num=0;num<9;num++){write_date(table[num]);delay(5);}write_(0x80+0x40+6);write_date(':');delay(5);write_(0x80+0x40+9);write_date(':');delay(5);write_sfm(4,shi);write_(0x80+0x40+4);write_sfm(7,fen);write_(0x80+0x40+7);write_sfm(10,miao);write_(0x80+0x40+10);}//设置当前时间void SetNowTime(){if(K1==0){delay(5);if(K1==0){while(!K1);di();shi++;if(shi==24)shi=0;write_sfm(4,shi);write_(0x80+0x40+4);write_add(3,shi);}}if(K2==0){delay(5);if(K2==0){while(!K2);di();fen++;if(fen==60)fen=0;write_sfm(7,fen);write_(0x80+0x40+7);write_add(2,fen);}}if(K3==0){delay(5);if(K3==0){while(!K3);di();k1num=0;TR0=1;TimeInit();}}}//设置闹钟时间void SetAlarmTime(){flag=0;if(K1==0){delay(5);if(K1==0){while(!K1);di();ashi++;if(ashi==24)ashi=0;write_sfm(4,ashi);write_(0x80+0x40+4);write_add(4,ashi);}}if(K2==0){delay(5);if(K2==0){while(!K2);di();afen++;if(afen==60)afen=0;write_sfm(7,afen);write_(0x80+0x40+7);write_add(5,afen);}}if(K3==0){delay(5);if(K3==0){while(!K3);di();k3num=0;EA=1;flag=1;TimeInit();}}}//显示闹钟函数void DisplayAlarmTime(){write_(0x01);write_(0x80);for(num=0;num<11;num++){write_date(alarm[num]);delay(5);}write_(0x80+0x40+6);write_date(':');delay(5);write_sfm(4,ashi);write_(0x80+0x40+4);write_sfm(7,afen);write_(0x80+0x40+7);}//键盘扫描函数void keyscan(){if(K1==0){delay(5);if(K1==0){TR0=0;while(!K1);di();k1num++;}}if(k1num!=0){write_(0x80);for(num=0;num<13;num++){write_date(table1[num]);delay(5);}SetNowTime();}else{if(K2==0){delay(5);if(K2==0){while(!K2);di();k2num++;}}if(k2num==1){EA=0;DisplayAlarmTime();k2num=2;}if(k2num==3){k2num=0;EA=1;TimeInit();}else{if(K3==0){delay(5);if(K3==0){while(!K3);di();k3num++;write_(0x01);}}if(k3num==1){EA=0;write_(0x80);for(num=0;num<15;num++){write_date(table2[num]);delay(5);}write_(0x80+0x40+6);write_date(':');delay(5);write_sfm(4,ashi);write_(0x80+0x40+4);write_sfm(7,afen);write_(0x80+0x40+7);SetAlarmTime();}else{if(K4==0){delay(5);if(K4==0){while(!K4);di();k4num++;}}if(k4num==1){di();k4num=2;flag=0;}if(k4num==3){k4num=0;di();delay(500);di();delay(500);di();flag=1;}}}}if(flag==1&&shi==ashi&&fen==afen) {beep=~beep;delay(500);}if(K4==0&&flag==1){delay(5);if(K4==0&&flag==1){while(!K4);di();flag=0;k4num=0;}}}//lcd1602初始化void init(){lcden=0;shi=0;fen=0;miao=0;ashi=0;afen=0;count=0;k1num=0;init_24c08();write_(0x38); //设置16X2显示,5X7点阵,8位数据接口write_(0x0c); //设置开显示,不显示光标write_(0x06); //写一个字符后地址指针加1write_(0x01); //显示清0,数据指针清0miao=read_add(1); //首次上电从AT24C08中读取出存储的数据fen=read_add(2);shi=read_add(3);ashi=read_add(4);afen=read_add(5);TimeInit();TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}//主函数void main(){init();write_(0x80);while(1){keyscan();}}//中断服务子程序void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}write_sfm(4,shi);write_add(3,shi);}write_sfm(7,fen);write_add(2,fen);}write_sfm(10,miao);write_add(1,miao);}}设计总结这一次的单片机课程设计,使我考虑的很多东西,通过一个礼拜的学习与实践,使我对所学的知识进行了系统的复习与巩固,在以前的学习中不够清晰的概念得到了更好地理解。

相关文档
最新文档