1602电子时钟电路_原理图_PCB图

合集下载

1602资料和程序电路图-文档

1602资料和程序电路图-文档

lcd1602中文资料在日常生活中,我们对液晶显示器并不陌生。

液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。

在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。

发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。

在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。

因此,液晶显示器画质高且不会闪烁。

数字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。

体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。

功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。

10.8.1 液晶显示简介①液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。

液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

②液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。

除了黑白显示外,液晶显示器还有多灰度有彩色显示等。

如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。

③液晶显示器各种图形的显示原理:线段的显示点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。

1602电子时钟电路_原理图_PCB图

1602电子时钟电路_原理图_PCB图

1602电子时钟电路_原理图_PCB图XXXXX学院电子线路课程设计【带LCD显示的电子时钟】班级:XX姓名:XX学号:XX指导老师:XXXX年XX月XX 日摘要在当代繁忙的学习与生活中,数字钟已成为人们日常生活中必不可少的必需品,被广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

数字电路采用数字电路,实现对时、分、秒时钟显示的计时装置,具有走时准确、性能稳定、携带方便等优点它还用于计时、自动报时及自动控制等各个领域。

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点基于单片机的定时器功能完成的数字钟电路的设计,结构简单,便于携带。

也利于我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路、写程序、调试电路的能力。

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

此设计中的数字钟不仅可以显示普通的年、月、日、时、分、秒外,还可加入蜂鸣器、按键复位等功能。

关键字:LCD1602 单片机电子时钟定时复位一( 任务要求设计一个时钟电路。

以单片机为核心模块,LCD1602为显示模块,通过控制使1602显示时间、字符。

1.1 基本要求1).第一行显示自己的名字2).第二行显示时间1.2 发挥部分1).加入按键,实现调时功能2).加入蜂鸣器,实现闹钟功能二(系统分析2.1 系统总体方框图显示电路复位电路ST89C51外部中断晶振电路2.2 系统总体分析本设计由ST89C51单片机、复位电路、晶振电路、外部中断和显示电路5个模块组成。

其中以单片机模块为核心模块,主导其余四个模块工作,1602显示模块用来显示秒、分、时计数单位中的值。

利用AT89c51单片机内部的定时/计数器进行中断定时,配合软件延时,实现电路的总体功能。

三、硬件设计3.1、晶振电路图3.1 晶振电路一般的晶振振荡电路都是在一个反相放大器的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容。

1602时钟程序和原理图

1602时钟程序和原理图

XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52X1CRYSTALC127pC227pR110kR21kC310uD 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LRV11k用1602显示时钟,能调节时分秒,周年月日,P1^0是调节显示位置按一下到秒,第二下到分,。

依次第七次到年,每到一个位置可以通过P1^1、 P1^2来调节对应位置的数据,P1^1是加数据P1^2是减数据。

#include<reg52.h>#define uchar unsigned char #define uint unsigned int sbit rs=P2^0; sbit lcden=P2^2; sbit s1=P1^0; sbit s2=P1^1; sbit s3=P1^2;uchar count,s1num;uchar shi,fen,miao,zhou,ri,yue,nian; uchar code table[]=" 2001-01-01 1"; uchar code table1[]=" 00:00:00"; void delay(uint z) { uint x,y; for(x=0;x<z;x++) for(y=0;y<110;y++); }void w_com(uchar com) { rs=0; lcden=0; P3=com; delay(5); lcden=1;//给高脉冲 delay(5); lcden=0; }/********************************* 写指令*********************************/ void w_data(uchar date) { rs=1; lcden=0; P3=date; delay(5); lcden=1; delay(5); lcden=0; }/********************************* 写数据*********************************/ void init(){uchar num;lcden=0;//初始化使能为0//fen=59;//miao=52;//shi=23;zhou=1;ri=1;yue=1;nian=1;w_com(0x38);//写入显示模式指令码w_com(0x0c);//写入显示开/关及光标指令码w_com(0x06);//当写一个字符后,地址指针加一,光标加一,不动光标不闪烁w_com(0x01); //清零作w_com(0x80);//代表第一行第一位for(num=0;num<15;num++){w_data(table[num]);delay(5);}w_com(0x80+0x40);//代表第二行第一位for(num=0;num<12;num++){ w_data(table1[num]);delay(5);}TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;}/*********************************初始化函数*********************************/void w_sfm(uchar add,uchar date)//时分秒{uchar shi,ge;shi=date/10;ge=date%10;w_com(0x80+0x40+add);w_data(0x30+shi);w_data(0x30+ge);}void w_zhou(uchar add,uchar date)//周{uchar z;z=date;w_com(0x80+add);w_data(0x30+z);}void w_ryn(uchar add,uchar date)//日{uchar shi,ge;shi=date/10;ge=date%10;w_com(0x80+add);w_data(0x30+shi);w_data(0x30+ge);}void keyscan(){if(s1==0)//闪烁位置{delay(5);if(s1==0){s1num++;while(!s1);if(s1num==1)//s1键按一下依次从秒分周日月时向左移{TR0=0;w_com(0x80+0x40+0x0b);w_com(0x0f);//左移光标开始闪烁}if(s1num==2){w_com(0x80+0x40+0x08);//w_com(0x0f);TR0=1;}if(s1num==3){w_com(0x80+0x40+0x05);//w_com(0x0f);TR0=1;}if(s1num==4){w_com(0x80+0x0e);TR0=1;}if(s1num==5){w_com(0x80+0x0b);TR0=1;}if(s1num==6){w_com(0x80+0x08);TR0=1;}if(s1num==7){w_com(0x80+0x05);TR0=1;}if(s1num==8){s1num=0;w_com(0x80+0x40+12);w_com(0x0c);//光标恢复原样,不闪烁TR0=1;}}}if(s1num!=0)//用于调节年月日时分秒{if(s2==0){delay(10);if(s2==0){while(!s2);if(s1num==1)//秒升调节{miao++;if(miao==60)miao=0;w_sfm(10,miao);w_com(0x80+0x40+11);}if(s1num==2)//分升调节{fen++;if(fen==60)fen=0;w_sfm(7,fen);w_com(0x80+0x40+8);}if(s1num==3)//时升调节{shi++;if(shi==24)shi=0;w_sfm(4,shi);w_com(0x80+0x40+5);}if(s1num==4)//周升调节{zhou++;if(zhou==8)zhou=1;w_zhou(14,zhou);w_com(0x80+14);}if(s1num==5)//日升调节{ri++;if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12){if(ri==32)ri=1;w_ryn(10,ri);w_com(0x80+11);}if(yue==2){if(ri==29)ri=1;w_ryn(10,ri);w_com(0x80+11);}if(yue==4||yue==6||yue==9||yue==11){if(ri==31)ri=1;w_ryn(10,ri);w_com(0x80+11);}}if(s1num==6)//月升调节{yue++;if(yue==13)yue=1;w_ryn(7,yue);w_com(0x80+8);}if(s1num==7)//年升调节{nian++;if(nian==99)nian=1;w_ryn(4,nian);w_com(0x80+5);}}}if(s3==0){delay(5);if(s3==0){while(!s3);if(s1num==1)//秒降调节{miao--;if(miao==-1)miao=59;w_sfm(10,miao);w_com(0x80+0x40+11);}if(s1num==2)//分降调节{fen--;if(fen==-1)fen=59;w_sfm(7,fen);w_com(0x80+0x40+8);}if(s1num==3)//时降调节{shi--;if(shi==-1)shi=23;w_sfm(4,shi);w_com(0x80+0x40+5);}if(s1num==4)//周降调节{zhou--;if(zhou==0)zhou=7;w_zhou(14,zhou);w_com(0x80+14);}if(s1num==5)//日降调节{ri--;if(ri==0)ri=31;w_ryn(10,ri);w_com(0x80+11);}if(s1num==6)//月降调节{yue--;if(yue==0)yue=12;w_ryn(7,yue);w_com(0x80+8);}if(s1num==7)//年降调节{nian--;if(nian==0)nian=99;w_ryn(4,nian);w_com(0x80+5);}}}}}void main(){init();while(1){keyscan();if(count==16){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;zhou++;ri++;if(zhou==8){zhou=1;}w_zhou(14,zhou);if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12){if(ri==32){ri=1;yue++;if(yue==13){yue=1;nian++;if(nian==100)nian=1;w_ryn(4,nian);}w_ryn(7,yue);}w_ryn(10,ri);}if(yue==2){if(ri==29){ri=1;yue++;if(yue==13){yue=1;nian++;if(nian==100)nian=1;w_ryn(4,nian);}w_ryn(7,yue);}w_ryn(10,ri);}if(yue==4||yue==6||yue==9||yue==11){if(ri==31){ri=1;yue++;if(yue==13){yue=1;nian++;if(nian==100)nian=1;w_ryn(4,nian);}w_ryn(7,yue);}w_ryn(10,ri);}}w_sfm(4,shi);}w_sfm(7,fen);}w_sfm(10,miao);}}}void timer0() interrupt 1{TH0=0x3c;TL0=0xb0;count++;}。

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

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

基于单片机的LCD1602 电子时钟设计、设计任务和目的1.1、设计任务(1):用单片机设计基于LCD1602 的电子时钟,显示时间和日期;(2):误差精度控制在1s/天;(3):具有时间和日期的校准功能;(4):能区分某年是闰年或平年,并对应显示 2 月份的天数;(5):根据月份的不同显示不同的最大日数;(6):搭建仿真电路图,模拟单片机要实现的功能;(7):焊接单片机开发板;(8):编写程序,下载并调试,实现要求的功能。

1.2、设计目的(1):熟练掌握KEIL 软件的使用方法;(2):熟练掌握PROTEUS 软件的使用方法;(3):掌握单片机I/O 接口的工作原理;(4):掌握LCD 显示器的工作原理及编程方法;(5):掌握独立式键盘的工作原理及编程使用方法;(6):掌握单片机的下载使用方法。

二、设计思路和方案论证2.1、设计思路电路总体上分为控制和显示部分。

以单片机最小系统作为核心控制电路,控制LCD 显示,具体显示内容及方式由软件来完成;由于有时钟和日期的调节功能需要校准电路和基本的复位电路,复位电路采用按键复位,调节键、加 1 键、减 1 键三个按键完成,共需四个按键;计时功能由固定频率的晶振完成(采用11.0592MHz);显示部分主要采用LCD1602 作为显示。

2.2、方案论证(1):时钟芯片的选择和论证方案一:采用DS1302 时钟芯片实现时钟,DS1302 芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、月、年以及闰年补偿的年进行计数,精度也较高,工作电压 2.5V~5.5V 范围内,功耗也较低,但价格比较贵。

方案二:直接采用单片机定时计数器提供秒信号,使用程序实现秒、分、时、日、月、年计数。

采用此方案实现虽然有一定的时间误差,但可减少芯片的使用,节约成本,易于实现,符合现实选用,所以采用此种作为时钟信号发生器。

(2):显示模块选择方案和论证:方案一:采用点阵式图形LCD12864 液晶显示屏,液晶显示屏的显示功能强大,可显示文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用点阵式图形LCD12864 液晶显示屏。

用1602LCD设计的可调式电子钟

用1602LCD设计的可调式电子钟

单片机应用课程设计说明书用1602LCD设计的可调式电子钟专业自动化学生姓名班级自动化142学号 14100指导教师蒋完成日期 20年1 月23 日目录1 概述 (3)2 课题研究背景与意义 (3)2.1 课题研究背景 (3)2.2 课题研究意义 (3)3 系统方案设计与主要设计工作 (3)3.1 设计任务 (3)3.2 功能要求说明 (4)4设计课题总体方案 (4)4.1硬件设计方案 (5)4.2系统软件设计 (7)5. 软件仿真及实物设计调试 (9)5.1PROTUES仿真软件介绍 (9)5.2仿真运行结果说明 (10)5.3实物设计结果与调试 (11)6课程设计实验总结 (11)参考文献 (13)附录 (14)附录1:程序清单 (14)附录2:系统电路原理图 (21)附录3:元器件清单 (22)用1602LCD设计电子钟1 概述数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

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

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

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

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

2 课题研究背景与意义2.1 课题研究背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

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

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

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

1602电子时钟电路_原理图_PCB图

1602电子时钟电路_原理图_PCB图

1602电子时钟电路_原理图_PCB图一、引言电子时钟作为现代生活中常见的时间显示设备,广泛应用于各个领域。

本篇文章将着重介绍1602电子时钟的电路原理图和PCB设计图,旨在让读者了解该电子时钟的工作原理和实现方法。

二、电路原理图1602电子时钟的电路主要由以下几个模块组成:时钟源、微处理器、液晶显示屏和按键控制模块。

下面将对每个模块进行详细的介绍。

1. 时钟源模块时钟源模块是电子时钟的核心,用于提供准确的时间信号。

常见的时钟源模块有晶振和RTC(实时时钟)芯片。

晶振通常使用32.768kHz的石英晶体,通过振荡脉冲产生稳定的时间基准。

而RTC芯片则内部集成了时钟电路,能够提供准确的时间信号。

2. 微处理器模块微处理器模块负责控制整个电子时钟的运行。

常用的微处理器有单片机和微控制器。

单片机通常具有丰富的外设接口和可编程功能,适用于复杂的时钟控制需求。

而微控制器则在单芯片上集成了微处理器核心、存储器和外设接口,更加简易和紧凑。

3. 液晶显示屏模块液晶显示屏模块用于将时间信息以数字形式显示出来。

1602液晶显示屏是基于字符型液晶显示技术,具有两行十六个字符的显示能力。

其工作原理是通过外部电压的作用,控制液晶分子的排列来实现显示效果。

4. 按键控制模块按键控制模块允许用户通过按键来设定和调整电子时钟的功能和显示参数。

它通常包括多个按键、键盘扫描接口和按键控制电路。

三、PCB图设计PCB图是电子时钟电路的物理实现图,能够直观地显示所有元器件之间的连接和布局关系。

本节将介绍1602电子时钟的PCB图设计过程。

1. 元器件布局在PCB设计之前,需要对各个元器件进行布局。

首先,将时钟源模块与微处理器模块放置在一起,以便于时钟信号的输入和处理。

其次,根据液晶显示屏的位置要求,将其与微处理器模块相连接。

最后,将按键控制模块与微处理器模块相连,并设置按键的位置。

2. 连接导线通过导线将各个元器件进行连接。

导线的设计应考虑信号的传输距离、屏蔽和抗干扰等因素,以保证电子时钟的稳定性和可靠性。

LCD1602液晶电子时钟

LCD1602液晶电子时钟

物理与电子信息学院课程设计报告书姓名:班级:学号:时间:2010年11月电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过三个模块:键盘、芯片、显示屏即可满足设计要求。

原理如图一所示。

3.2.各部分功能实现3.2.1.控制部分(AT89C52)单片机采用52系列单片机。

由ATMEL公司生产的AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。

使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。

在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。

AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

而且,它还具有一个看门狗(WDT)定时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。

单片机最小系统单片机最小系统主要由复位电路,晶振电路,电源等几部分组成。

1)复位电路复位电路有两种方式:上电复位和按钮复位,我们主要用按钮复位方式。

如图二所示:图二复位电路2)晶振电路晶振电路原理图三:图三晶振模块原理图选取原则:电容选取30pF,晶振为12MHz。

3)电源AT89S52单片机的供电电源是5V的直流电。

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

数字电子钟设计(原理图+pcb图+程序)--课程设计.docx

数字电子钟设计(原理图+pcb图+程序)--课程设计.docx

1设计课题任务、功能要求说明及方案介绍1.1设计课题任务与要求设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示学 生班级学号,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时 0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟 进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整 键再次进入吋钟运行状态。

1.2设计课题总体方案介绍及工作原理说明本电子钟主要由单片机、4个独立键盘、显示接口电路和复位电路构成,设 计课题的系统框图如图1. 1所示:图1.1系统框图本电子钟的所有的程序、参数均存放在AT89S52的Flash ROM 和内部RAM 中。

键盘采用动态扫描方式。

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

晶振电路复位电路数码管驱动数码管LED2设计课题硬件系统的设计2.1设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块(1 )单片机最小系统模块:AT89S52单片机芯片;复位电路;晶振电路。

本模块AT89S52系统控制核心,单片机系统复位由按键电平复位电路完成,通过按键S1来控制,单片机通过芯片引脚XTAL1、XTAL2,外并接石英晶体振荡器和两只电容。

这样就为能为单片机提供频率为12MHz的晶振。

(2)输入模块:本模块共用到了5个按键,1个电源开关,1个复位键,单片机运行期间,利用按键S1完成复位操作。

4个独立按键,S2键控制电子钟的启动/调整状态,S3键为小时调整键,S4键为分钟调整键,S5键位秒调整键,且 S2、S3、S4、S5 任一键都独自连一个I/O (Pl.O、P1. 1、P1. 2、P1. 3) 口线,说明它们可以独立实现相应的电子钟功能。

用1602LCD设计的可调式电子钟

用1602LCD设计的可调式电子钟

单片机应用课程设计说明书用1602LCD 设计的可调式电子钟专业 自动化学生 班级 自动化142 学号 14100 指导教师完成日期 20年1月23 日目录1 概述 (3)2 课题研究背景与意义 (3)2.1 课题研究背景 (3)2.2 课题研究意义 (3)3 系统方案设计与主要设计工作 (3)3.1 设计任务 (3)3.2 功能要求说明 (4)4设计课题总体方案 (4)4.1硬件设计方案 (5)4.2系统软件设计 (7)5. 软件仿真及实物设计调试 (9)5.1PROTUES仿真软件介绍 (9)5.2仿真运行结果说明 (10)5.3实物设计结果与调试 (11)6课程设计实验总结 (11)参考文献 (13)附录 (14)附录1:程序清单 (14)附录2:系统电路原理图 (21)附录3:元器件清单 (22)用1602LCD设计电子钟1 概述数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

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

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

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

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

2 课题研究背景与意义2.1 课题研究背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

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

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

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

制作一个采用LCD1602显示的电子钟

制作一个采用LCD1602显示的电子钟

计算机科学与工程系实验报告实验题目:制作一个采用LCD1602显示的电子钟班级:姓名:学号:日期:一、实验目的掌握单片机使用定时器/计数器控制字符型液晶显示器LCD1602的设计与软件编程二、实验要求在LCD上显示当前的时间。

显示格式为“时时:分分:秒秒”。

设有4个功能键k1~k4,功能如下:(1)k1——进入时间修改。

(2)k2——修改小时,按一下k2,当前小时增1。

(3)k3——修改分钟,按一下k3,当前分钟增1。

(4)k4——确认修改完成,电子钟按修改后的时间运行显示。

三、实验要求提交的实验报告中应包括:电路原理图、实验设计思路、C51源程序(含注释语句)、运行效果(含运行截图与说明)、实验小结三、硬件电路原理图的设计四、编程思路及C51源程序编程思路:1、实现当按下K1之后,使中断T0停止计数2、实现当按下K2之后,使小时加一3、实现当按下K3之后,使分钟加一4、实现当按下K4之后,使中断T0恢复计数源程序:#include<reg51.h>#ifndef LCD_CHAR_1602_2005_4_9#define LCD_CHAR_1602_2005_4_9#define uchar unsigned char#define uint unsigned intsbit lcdrs = P2^0;sbit lcdrw = P2^1;sbit lcden = P2^2;void delay(uint z)//延时函数,此处使用晶振为11.0592MHz {uint x,y;for(x=z;x>0;x--){for(y=110;y>0;y--){;}}}void write_com(uchar com) //写入指令数据到lcd{lcdrw=0;lcdrs=0;P3=com;delay(5);lcden=1;delay(5);lcden=0;}void write_data(uchar date) //写入字符显示数据到lcd{lcdrw=0;lcdrs=1;P3=date;delay(5);lcden=1;delay(5);lcden=0;}void init1602()//1602液晶初始化设定{lcdrw=0;lcden=0;write_com(0x3C);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);}/*void write_string(uchar *pp,uint n)//采用指针的方法输入字符,n为字符数目{int i;for(i=0;i<n;i++)write_data(pp[i]);}*/void write_sfm(uchar add,uchar date)//向指定地址写入数据{uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);}#endif#define uchar unsigned char#define uint unsigned intsbit Key1 = P1^0;sbit Key2 = P1^1;sbit Key3 = P1^2;sbit Key4 = P1^3;uchar int_time;//定义中断次数计数变量uchar second;//秒计数变量uchar minute;//分钟计数变量uchar hour;//小时计数变量uchar code date[]=" H.I.T. CHINA ";//LCD第1行显示的内容uchar code time[]=" TIME 23:59:55 ";//LCD第2行显示的内容uchar second=55,minute=59,hour=23;void clock_init(){uchar i,j;for(i=0;i<16;i++){write_data(date[i]);}write_com(0x80+0x40);for(j=0;j<16;j++){write_data(time[j]);}}void clock_write( uint s, uint m, uint h){write_sfm(0x47,h);write_sfm(0x4a,m);write_sfm(0x4d,s);}void Keyscan1(){if(Key1==0) {delay(10);if(Key1==0) while(!Key1); TR0=0;}if(Key4==0) {delay(10);if(Key4==0) while(!Key4); TR0=1;}if(Key3==0){delay(10);if(Key3==0)while(!Key3);minute++;if(minute==60)minute=0;} if(Key2==0){delay(10);if(Key2==0)while(!Key2);hour++;if(hour==24)hour=0;}}void main(){init1602();//LCD初始化clock_init();//时钟初始化TMOD=0x01;//设置定时器T0为方式1定时EA=1; // 总中断开ET0=1; // 允许T0中断TH0=(65536-46483)/256;//给T0装初值TL0=(65536-46483)%256;TR0=1;int_time=0;//中断次数、秒、分、时单元清0second=55;minute=59;hour=23;while(1){clock_write(second ,minute, hour);Keyscan1();}}void T0_interserve(void) interrupt 1 using 1 //T0中断服务子程序{int_time++;//中断次数加1if(int_time==20) //若中断次数计满20次{int_time=0; //中断次数变量清0second++;//秒计数变量加1}if(second==60)//若计满60s{second=0; //秒计数变量清0minute ++;//分计数变量加1}if(minute==60)//若计满60分{minute=0;//分计数变量清0hour ++;//小时计数变量加1}if(hour==24){hour=0;//小时计数计满24,将小时计数变量清0 }TH0=(65536-46083)/256;//定时器T0重新赋值TL0=(65536-46083)%256;}五、仿真运行效果展示仿真初始状态按下k1键,进入修改模式六、实验小结通过本次实验,我掌握了LCD1602编程的方法,将所学知识运用到实践中,这是一件慢慢的过程,首先要把理论知识理解透彻,然后就是例题看懂,弄懂举一反三。

基于proteus仿真1602液晶电子时钟(附1602字符液晶详细资料)

基于proteus仿真1602液晶电子时钟(附1602字符液晶详细资料)

基于proteus仿真1602液晶电子时钟(附1602字符液晶详细资料)#include<reg52.h>#define uint unsigned int#define uchar unsigned charuchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a};sbit rs=P2^0;sbit rw=P2^1;sbit e=P2^2;uchar hshi,hge, mshi,mge,shi, ge,num,num1,num2,aa;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void lcd_com(uchar com) {rs=0;rw=0;P1=com;delay(1);e=1;e=0;}void lcd_dat(uchar dat) {rs=1;rw=0;P1=dat;delay(1);e=1;e=0;}void init(){lcd_com(0x38);delay(1);lcd_com(0x0c);delay(1);lcd_com(0x01);delay(1);TMOD=0X01;TH1=(65536-50000)/256; TL1=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void display(uchar hshi,uchar hge,uchar mshi,uchar mge,uchar shi,uchar ge){lcd_com(0x80);lcd_dat(table[hshi]);lcd_com(0x81);lcd_dat(table[hge]);lcd_com(0x82);lcd_dat(table[10]);lcd_com(0x83);lcd_dat(table[mshi]);lcd_com(0x84);lcd_dat(table[mge]);lcd_com(0x85);lcd_dat(table[10]);lcd_com(0x86);lcd_dat(table[shi]);lcd_com(0x87);lcd_dat(table[ge]);}void main(){init();while(1){if(aa==20){aa=0;num++;num2=3;num1=34;if(num==60){num=0;num1++;if(num1==60){num1=0;num2++;if(num==24) {num2=0;}}}hshi=num2/10;hge=num2%10;mshi=num1/10;mge=num1%10;shi=num/10;ge=num%10;}display(hshi,hge,mshi,mge,shi,ge);}}void timer0() interrupt 1{TH0=(65536-50000)/256;TH0=(65536-50000)/256;aa++;}所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。

基于1602液晶的电子时钟设计

基于1602液晶的电子时钟设计

2012 ~ 2013 学年第2 学期《单片机原理及应用》课程设计报告题目:基于1602液晶的电子时钟设计专业:自动化班级:电气工程系2011年5月12日1、任务书课题名称基于1602液晶的电子时钟设计指导教师(职称)执行时间2012~2013 学年第2学期第10 周学生姓名学号承担任务摘要电子时钟在日常生活和工农业生产中是必不可少的。

所以本文利于89C51单片机作为核心控制芯片,设计了一款基于1602LCD液晶显示的电子时钟。

该时钟具有键盘控制的暂停和启动,时钟、分钟和秒钟的手动调节功能;同时具备到整时(如1点整,2点整)时蜂鸣器发出“滴答”声,并且一个发光二极管发出闪烁。

所以设计最后在Protues仿真软件上仿真,验证该设计的正确性,关键词:电子时钟,LCD1602液晶,仿真。

基于1602液晶的电子时钟设计目录摘要 (2)绪论 (4)第一章设计要求与方案论证 (5)1.1 设计要求 (5)1.2 系统基本方案选择 (5)1.2.1 单片机芯片的选择方案 (5)1.2.2 显示模块选择方案 (5)1.2.3 时钟的控制方案 (5)1.3 电路设计最终方案决定 (5)第二章主要元件介绍 (7)2.1 单片机STC89C52介绍 (7)2.1.1 STC89C52主要功能 (7)2.1.2 STC89C52引脚介绍 (7)2.1.3 STC89C52最小系统 (9)2. 2 1602字符液晶介绍 (10)2.2.1 1602液晶概述 (10)2.2.2 1602引脚介绍 (10)2.2.3 1602字符液晶使用方法 (11)第三章系统硬件设计 (13)3.1 单片机控制系统 (13)3.2.各部分功能实现 (13)3.2.1.控制部分(STC89C52) (13)3.2.2键盘控制系统设计 (14)3.2.3.显示电路 (14)3.2.4.整点提醒电路 (15)3.3. 总电路原理图 (16)第四章软件设计及仿真 (17)4.1 软件主要要完成的功能 (17)4.2软件设计的主要流程 (17)4.3 仿真显示效果 (18)总结 (19)参考文献 (20)附录 (21)绪论20世纪末,电子技术获得了飞速发展,在其推动下,现代电子产品几乎深入到社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也是现代产品性能进一步提高,产品更新换代的节奏也越来越快。

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

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

基于单片机的LCD1602电子时钟设计近年来,随着物联网和智能设备的快速发展,电子时钟作为一种常见的智能设备,广泛应用于家庭、办公室等各种场合。

本文将基于单片机设计一款LCD1602电子时钟,实现时间显示、闹钟设置等功能。

一、硬件设计1.单片机选择在本设计中,选择常用的51系列单片机AT89C51,具有丰富的外设资源和强大的处理能力。

该单片机具有8位数据总线、16位地址总线,并且集成了定时/计数器、中断控制器和串行通信接口等外设。

2.显示模块选择3.时钟模块选择通过接入DS1302时钟模块,可以实现实时时钟的功能。

DS1302模块具有时钟计数器、电压检测电路、串行通信接口等,并且具有低功耗特点。

4.控制板设计根据LCD1602的引脚连接方式,设计一个控制板,用于将单片机、显示模块和时钟模块等连接在一起。

同时,需注意设计供电电路、外设输入输出电平等电路。

二、软件设计1.初始化设置通过单片机的GPIO口配置,将LCD1602和DS1302对应的引脚设置为输出模式,同时初始化LCD显示屏并进行清屏操作。

此外,需设置DS1302时钟模块的时钟、日期、闹钟等参数。

2.时间显示通过读取DS1302时钟模块的计数器,获得当前的小时、分钟和秒数,然后将其格式化为HH:MM:SS的形式,并通过LCD显示出来。

3.时间设置通过单片机的外部中断,当用户按下设置按钮后,进入时间设置模式。

在时间设置模式下,用户可以通过按下不同的按键来调整小时、分钟和秒数。

调整完成后,再次按下设置按钮即可保存设置。

4.闹钟设置通过单片机的定时器中断,设定一个闹钟定时器。

当闹钟定时器触发时,触发相应的中断,然后通过LCD显示闹钟提示。

此外,用户也可以通过按下按钮来设置闹钟时间,并通过单片机的外部中断进行处理。

5.闹钟响铃当闹钟时间到达时,触发相应的中断,通过LCD显示闹钟提示,并通过蜂鸣器发出响铃声。

总结通过本设计,可以实现一款功能齐全的LCD1602电子时钟。

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

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

基于单片机的1602电子时钟设计一.实验目的:(1)用单片机设计基于单片机的1602电子时钟显示;(2)熟练掌握Keil软件;(3)熟练掌握Proteus软件仿真;(4)掌握单片机的I/O接口的工作原理;(5)掌握LCD显示器的原理和编程方法;(6)掌握独立式键盘的工作原理和编程方法;(7)掌握单片机下载方法;二.实验要求(1)可实现时钟显示(2)可调整时间三.实验内容(1)画仿真图如图1图1(2)编写程序(3)下载运行(4)运行结果,分析其中的错误四.程序(一)#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit LCD_RS=P2^0;sbit LCD_RW=P2^1 ;sbit LCD_EN=P2^2;void Delay_ms(uint xms) ;bit lcd_busy();void lcd_wcmd(uchar cmd);void lcd_wdat(uchar dat) ;void lcd_clr() ;void lcd_init() ;/********以下是延时函数********/void Delay_ms(uint xms){uint i,j;for(i=xms;i>0;i--) //i=xms即延时约xms毫秒for(j=110;j>0;j--);}/********以下是LCD忙碌检查函数********/bit lcd_busy(){bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;_nop_(); _nop_(); _nop_(); _nop_();result = (bit)(P0&0x80);LCD_EN = 0;return result;}/********以下是写指令寄存器IR函数********/void lcd_wcmd(uchar cmd){while(lcd_busy());LCD_RS = 0; LCD_RW = 0; LCD_EN = 0;_nop_(); _nop_();P0 = cmd;_nop_(); _nop_(); _nop_(); _nop_();LCD_EN = 1;_nop_(); _nop_(); _nop_(); _nop_();LCD_EN = 0;}/********以下是写寄存器DR函数********/void lcd_wdat(uchar dat){while(lcd_busy());LCD_RS = 1; LCD_RW = 0; LCD_EN = 0;P0 = dat;_nop_(); _nop_(); _nop_(); _nop_();LCD_EN = 1;_nop_(); _nop_(); _nop_(); _nop_();LCD_EN = 0;}/********以下是LCD清屏函数********/void lcd_clr(){lcd_wcmd(0x01); //清除LCD的显示内容Delay_ms(5);}/********以下是LCD初始化函数********/void lcd_init(){Delay_ms(15); //等待LCD电源稳定lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据Delay_ms(5);lcd_wcmd(0x38);Delay_ms(5);lcd_wcmd(0x38);Delay_ms(5);lcd_wcmd(0x0c); //显示开,关光标Delay_ms(5);lcd_wcmd(0x06); //移动光标Delay_ms(5);lcd_wcmd(0x01); //清除LCD的显示内容Delay_ms(5);}(二)#include <reg51.h>#include "LCD_drive.h"#define uchar unsigned char#define uint unsigned intuchar year=12,mon=10,day=10,hour=12,min=00,sec=00;uchar count_10ms;sbit k7=P3^0; sbit k1=P3^2; sbit k2=P3^3; sbit k3=P3^4;sbit k4=P3^5; sbit k5=P3^6; sbit k6=P3^7; bit k1_flag=0;uchar code line1_data[] = {"----"};uchar code line2_data[] = {"****"};uchardisp_buf[12]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; void LCD_conv(char in1,in2,in3,in4,in5,in6){disp_buf[0]=in1/10+0x30; disp_buf[1]=in1%10+0x30; disp_buf[2]=in2/10+0x30; disp_buf[3]=in2%10+0x30; disp_buf[4]=in3/10+0x30; disp_buf[5]=in3%10+0x30; disp_buf[6]=in4/10+0x30; disp_buf[7]=in4%10+0x30; disp_buf[8]=in5/10+0x30; disp_buf[9]=in5%10+0x30; disp_buf[10]=in6/10+0x30; disp_buf[11]=in6%10+0x30; }void LCD_disp(){lcd_wcmd(0x04|0x80);lcd_wdat(disp_buf[0]); lcd_wdat(disp_buf[1]);lcd_wdat(0xb0);lcd_wdat(disp_buf[2]); lcd_wdat(disp_buf[3]);lcd_wdat(0xb0);lcd_wdat(disp_buf[4]); lcd_wdat(disp_buf[5]);lcd_wcmd(0x44|0x80);lcd_wdat(disp_buf[6]); lcd_wdat(disp_buf[7]);lcd_wdat(0x3a);lcd_wdat(disp_buf[8]); lcd_wdat(disp_buf[9]);lcd_wdat(0x3a);lcd_wdat(disp_buf[10]); lcd_wdat(disp_buf[11]);}void timer1() interrupt 3{TH1=0xdc; TL0=0x00;count_10ms++;if(count_10ms>=100){count_10ms=0; sec++;if(sec>=60){sec=0; min++;if(min>=60){min=0; hour++;if(hour>=24){hour=0; day++;if(day>=30){day=1; mon++;if(mon>=12){mon=1; year++;} }}} } }}void keyprocess(){TR1=0;if(k2==0){Delay_ms(10);if(k2==0){while(!k2); year++; }}if(k3==0){Delay_ms(10);if(k3==0){while(!k3); mon++;if(mon>12){mon=0;} } }if(k4==0){Delay_ms(10);if(k4==0){while(!k4); day++;if(day>30){day=0;} } }if(k5==0){Delay_ms(10);if(k5==0){while(!k5); hour++;if(hour==24){hour=0;} }}if(k6==0){Delay_ms(10);if(k6==0){while(!k6); min++; if(min==60) {min=0;} }}if(k7==0){Delay_ms(10);if(k7==0){while(!k7);TR1=1; k1_flag=0;} }}void timer1_init(){TMOD=0x10;TH1=0xdc; TL1=0x00;EA=1; ET1 =1; TR1 =1;}void main(){uchar i;P0=0xff; P2=0xff;timer1_init ();lcd_init(); lcd_clr();lcd_wcmd(0x00|0x80);i=0;while(line1_data[i]!='\0'){lcd_wdat(line1_data[i]); i++;}lcd_wcmd(0x0c|0x80); i=0;while(line1_data[i]!='\0'){lcd_wdat(line1_data[i]); i++;}lcd_wcmd(0x40|0x80); i=0;while(line2_data[i]!='\0'){lcd_wdat(line2_data[i]); i++;}lcd_wcmd(0x4c|0x80); i=0;while(line2_data[i]!='\0'){lcd_wdat(line2_data[i]); i++;}while(1){if(k1==0){Delay_ms(10);if(k1==0){while(!k1);k1_flag=1;}}if(k1_flag==1)keyprocess();LCD_conv(year,mon,day,hour,min,sec); LCD_disp();}}。

LCD1602电子钟-有图有真相

LCD1602电子钟-有图有真相

亲测有效!顺利通过课程设计!有图有真相#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit rs= P0^5; //寄存器类型,1表示数据寄存器,2表示指令寄存器sbit rw = P0^6; //读写选择,1表示读,0表示写sbit ep = P0^7; //读写使能,下降沿使能sbit pcf8563_scl=P0^4;sbit pcf8563_sda=P0^3;sbit setup=P1^0;sbit shi=P1^1;sbit fen=P1^2;sbit led=P1^6;uchar num[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; //数字uchar sg;uchar sd;uchar fg;uchar fd;uchar mg;uchar md;uchar ng;uchar nd;uchar yg;uchar yd;uchar rg;uchar rd;uchar hou=14;uchar min=30;uchar sec=0;uchar year=12;uchar mon=12;uchar day=12;uchar week=3;uchar number;bit busy;void start_pcf8563(void);void send_pcf8563_byte(void);void lcd_init(void);void lcd_pos(uchar pos);void lcd_wdat(uchar dat);bit lcd_busy();void display0(void);void display(void);void stop_pcf8563(void);void receive_pcf8563_byte(void);void spit_time(void);void update(void);void scan(void);void delay(uchar ms);void delay(uint t) //单位延时1ms,总延时1ms*t.(121为实验测试值){uint i,j;for(i=0;i<t;i++)for(j=0;j<121;j++);}bit lcd_busy() //判断LCD是否忙碌,1忙碌{bit result;rs = 0;rw = 1;ep = 1;_nop_();_nop_();_nop_();result = (bit)(P2 & 0x80);ep = 0;return result;}void lcd_wcmd(uchar cmd) //写指令{while(lcd_busy());//判断LCD是否忙碌rs = 0;rw = 0;ep = 0;_nop_();_nop_();P2 = cmd;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;}void lcd_pos(uchar pos) //显示地址{lcd_wcmd(pos | 0x80);}//写数据void lcd_wdat(uchar dat){while(lcd_busy());//判断LCD是否忙碌rs = 1;rw = 0;ep = 0;P2 = dat;_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;}void lcd_wstr(const uchar *s) //写字符串{unsigned char i = 0;while(s[i] != '\0'){lcd_wdat(s[i]);// 显示字符delay(250);i++;}}void lcd_init() //LCD初始化{lcd_wcmd(0x3c); //功能设定delay(1);lcd_wcmd(0x0c); //显示器开关delay(1);lcd_wcmd(0x06); //设定进入模式delay(1);lcd_wcmd(0x01); //清除显示屏,把光标移至左上角delay(1);}void display0() //显示时钟背景{lcd_pos(0x00);lcd_wstr("20");lcd_pos(0x04);lcd_wdat('-');lcd_pos(0x07);lcd_wdat('-');lcd_pos(0x46);lcd_wdat(':');lcd_pos(0x49);lcd_wdat(':');}void display()//显示年、月、日、时间和星期{uchar temp12;uchar temp11;uchar temp10;uchar temp9;uchar temp8;uchar temp7;uchar temp6;uchar temp5;uchar temp4;uchar temp3;uchar temp2;uchar temp1;lcd_pos(0x02);temp12=num[ng];lcd_wdat(temp12);lcd_pos(0x03);temp11=num[nd];lcd_wdat(temp11);lcd_pos(0x05);temp10=num[yg];lcd_wdat(temp10);lcd_pos(0x06);temp9=num[yd];lcd_wdat(temp9);lcd_pos(0x08);temp8=num[rg];lcd_wdat(temp8);lcd_pos(0x09);temp7=num[rd];lcd_wdat(temp7);lcd_pos(0x0c);switch(week%7){case 0:lcd_wstr("SUN");break;case 1:lcd_wstr("MON");break;case 2:lcd_wstr("TUE");break;case 3:lcd_wstr("WED");break;case 4:lcd_wstr("THU");break;case 5:lcd_wstr("FRI");break;case 6:lcd_wstr("SAT");break;}lcd_pos(0x44);temp6=num[sg];lcd_wdat(temp6);lcd_pos(0x45);temp5=num[sd];lcd_wdat(temp5);lcd_pos(0x047);temp4=num[fg];lcd_wdat(temp4);lcd_pos(0x48);temp3=num[fd];lcd_wdat(temp3);lcd_pos(0x4a);temp2=num[mg];lcd_wdat(temp2);lcd_pos(0x4b);temp1=num[md];lcd_wdat(temp1);}void update() //更新时间{if(sec>59){min++;sec=0;}if(min>59){hou++;min=0;}if(hou>23){day++;week++;hou=0;}if(day>30){mon++;year=0;}if(mon>12){year++;mon=0;}if(year>99)year=0;}void spit_time(){ng=(int)year/10; //年的高位nd=(int)year%10;// 年的低位yg=(int)mon/10; //月的高位yd=(int)mon%10; // 月的低位rg=(int)day/10;rd=(int)day%10;sg=(int)hou/10;sd=(int)hou%10;fg=(int)min/10;fd=(int)min%10;mg=(int)sec/10;md=(int)sec%10;}void scan() //扫描键盘{if(setup==0){delay(1);}if(setup==0){led=0;if(shi==0){delay(1);}if(shi==0){hou++;led=1;shi=1;}if(fen==0){delay(10);}if(fen==0){min++;led=1;fen=1;}}}void Send_pcf8563_byte(uchar bb) //向PCF8563发送一个字节{uchar aa;pcf8563_scl=0;for(aa=0;aa<8;aa++){if((bb&0x80)==0x80){pcf8563_sda=1;}else{pcf8563_sda=0;}pcf8563_scl=1;pcf8563_scl=0;bb=bb<<1;}_nop_();_nop_();pcf8563_sda=1;pcf8563_scl=1;busy=0;if(pcf8563_sda){busy=1;}else{_nop_();_nop_();pcf8563_scl=0;busy=0;}}void write_pcf8563(uchar subadd,uchar dat)// 向PCF8563对应地址写数据{start_pcf8563();Send_pcf8563_byte(0xa2);if(!busy){Send_pcf8563_byte(subadd);if(!busy){Send_pcf8563_byte(dat);}}stop_pcf8563();}void read_pcf8563() //读当时的时,分,钞{start_pcf8563();Send_pcf8563_byte(0xa2);if(!busy){Send_pcf8563_byte(0x02);if(!busy){start_pcf8563();Send_pcf8563_byte(0xa3);receive_pcf8563_byte();sec=number&0x7f;start_pcf8563();Send_pcf8563_byte(0xa3);receive_pcf8563_byte();min=number&0x7f;start_pcf8563();Send_pcf8563_byte(0xa3);receive_pcf8563_byte();hou=number&0x3f;}}stop_pcf8563();}void receive_pcf8563_byte() //从PCF8563接受一个字节{uchar CC;pcf8563_sda=1;number=0;for(CC=0;CC<8;CC++){number<<=1;pcf8563_scl=0;pcf8563_scl=1;_nop_();_nop_();number= number|pcf8563_sda;}pcf8563_scl=0;_nop_();_nop_();}void start_pcf8563() //开启PCF8563IIC{pcf8563_sda=1;pcf8563_scl=1;pcf8563_sda=0;//SCL为低,SDA执行一个上跳pcf8563_scl=0;//SCL为低,嵌住数据线}void stop_pcf8563() //关闭PCF8563IIC{pcf8563_sda=0;pcf8563_scl=1;pcf8563_sda=1;//SCL为高,SDA执行一个上跳pcf8563_scl=0;//SCL为低,嵌住数据线}void main(void){lcd_init();// 初始化LCDdelay(10);lcd_pos(0x00);//设置显示位置//i = 0;lcd_wstr("HELLO WORLD!");lcd_pos(0x40);lcd_wstr("GOODBYE2012!");delay(5000);lcd_wcmd(0x01);display0();while(1){write_pcf8563(0x08,year); //写年write_pcf8563(0x07,mon); //写月write_pcf8563(0x05,day); //写日write_pcf8563(0x02,sec); //写钞write_pcf8563(0x03,min); //写分write_pcf8563(0x04,hou); //写时spit_time();display();delay(420);sec++;while(setup==0){scan();update();spit_time();display();}led=1;update();}}里面有关PCF8563的程序其实没作用,纯属凑数顺便发了个烟雾弹。

51单片机实现电子时钟功能_1602液晶显示09032

51单片机实现电子时钟功能_1602液晶显示09032

第一章 设计要求及系统组成1.1 设计要求利用单片机最小系统设计一个电子时钟,显示方式为**:**:**,并且可以任意修改时间。

1.2系统组成原理框图如图1.1图1.1 系统原理框图第二章 系统设计方案2.1 系统设计方案电路原理图如图2.1所示图2.1 电路原理图2.2 电路模块组成及其工作原理2.2.1 时钟电路系统时钟源由内部时钟方式产生,时钟电路由12MH晶振和两个30PF瓷片电容组成,构成自激振荡,形成振荡源提供给单片机。

电容可在5PF到30PF 之间选择,电容的大小对振荡频率有微小影响,可起频率微调作用。

时钟电路如图2.2所示图2.2 时钟电路2.2.2 复位电路单片机复位有上电复位和手动复位两种方式,上电复位是接通电源后利用RC充电来实现复位。

手动复位是通过人为干预,强制系统复位。

复位电路如图2.3所示,可以实现上电复位和手动复位功能。

图2.3 复位电路2.2.3 按键电路在单片机的P1.0、P1.1、P1.2三个I/O口接三个简易按键,通过不断检测按键状态,识别按键的按下顺序和次数即可实现时间的任意修改。

按键电路如图2.4所示。

2.2.4 1602液晶显示模块电路本设计是通过对1602液晶显示屏的控制来实现时间的显示。

1602液晶显示模块的驱动如下所述:图2.4 1602液晶屏实物图1602采用标准的16脚接口,其中:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

Arduino入门笔记(5):1602液晶实验(实现时钟)

Arduino入门笔记(5):1602液晶实验(实现时钟)

Arduino⼊门笔记(5):1602液晶实验(实现时钟)欢迎加⼊讨论群 64770604⼀、本次实验所需器材2、1602液晶板:也叫1602字符型液晶,它是⼀种专门⽤来显⽰字母、数字、符号等的点阵型液晶模块。

它由若⼲个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显⽰⼀个字符,每位之间有⼀个点距的间隔,每⾏之间也有间隔,起到了字符间距和⾏间距的作⽤,正因为如此所以它不能很好地显⽰图形。

⽬前,尽管各⼚家对其各⾃产品命名不尽相同,但均提供⼏乎都同样规格的1602模块或者兼容模块。

1602最初采⽤的LCD控制器是HD44780,在各⼚家⽣产的1602模块中,基本上也都采⽤了与之兼容的控制IC,所以从特性上基本上是⼀样的。

因此,我们买到的1602模块,在端⼝标记上可能有所不同,有的从左向右,有的从右向左,但特性上是⼀样的。

本实验中使⽤的1602板,最⾥⾯的孔为1号,最靠近边上的那个为16号。

1602实物图⽚:1602的规格情况:显⽰容量16*2个字符芯⽚⼯作电压 4.5-5.5V⼯作电流2,0MA(5.0V)模块最佳⼯作电压 5.0V字符尺⼨ 2.95*4.35(WXH)mm1602管脚介绍:第1脚:VSS为电源负极第2脚:VCC接5V电源正极第3脚:V0为液晶显⽰器对⽐度调整端,接正电源时对⽐度最弱,接地电源时对⽐度最⾼(对⽐度过⾼时会产⽣“⿁影”,使⽤时可以通过⼀个10K的电位器调整对⽐度,本实验使⽤了⼀个1KΩ电阻)。

第4脚:RS为寄存器选择,⾼电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:RW为读写信号线,⾼电平(1)时进⾏读操作,低电平(0)时进⾏写操作。

第6脚:E(或EN)端为使能(enable)端,⾼电平(1)时读取信息,负跳变时执⾏指令。

第7~14脚:D0~D7为8位双向数据端。

第15~16脚:背灯电源。

15脚背光正极,16脚背光负极。

1602字符集介绍:1602液晶模块内部的字符发⽣存储器已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英⽂字母的⼤⼩写、常⽤的符号、和⽇⽂假名等,每⼀个字符都有⼀个固定的代码,⽐如⼤写的英⽂字母“A”的代码是01000001B(41H),显⽰时模块把地址41H中的点阵字符图形显⽰出来,我们就能看到字母“A”。

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

1602电子时钟电路_原理图_PCB图XXXXX学院


线





【带LCD显示的电子时钟】
班级:XX
姓名:XX
学号:XX
指导老师:XX
XX年XX月XX 日
摘要
在当代繁忙的学习与生活中,数字钟已成为人们日常生活中必不可少的必需品,被广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

数字电路采用数字电路,实现对时、分、秒时钟显示的计时装置,具有走时准确、性能稳定、携带方便等优点它还用于计时、自动报时及自动控制等各个领域。

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点基于单片机的定时器功能完成的数字钟电路的设计,结构简单,便于携带。

也利于我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路、写程序、调试电路的能力。

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

此设计中的数字钟不仅可以显示普通的年、月、日、时、分、秒外,还可加入蜂鸣器、按键复位等功能。

关键字:LCD1602 单片机电子时钟定时复位
一( 任务要求
设计一个时钟电路。

以单片机为核心模块,LCD1602为显示模块,通
过控制使1602显示时间、字符。

1.1 基本要求
1).第一行显示自己的名字
2).第二行显示时间
1.2 发挥部分
1).加入按键,实现调时功能
2).加入蜂鸣器,实现闹钟功能
二(系统分析
2.1 系统总体方框图
显示电路复位电路
ST89C51
外部中断晶振电路
2.2 系统总体分析
本设计由ST89C51单片机、复位电路、晶振电路、外部中断和显示
电路5个模块组成。

其中以单片机模块为核心模块,主导其余四个模块工
作,1602显示模块用来显示秒、分、时计数单位中的值。

利用AT89c51单
片机内部的定时/计数器进行中断定时,配合软件延时,实现电路的总体
功能。

三、硬件设计
3.1、晶振电路
图3.1 晶振电路
一般的晶振振荡电路都是在一个反相放大器的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容。

51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。

3.2、复位电路
图3.2 复位电路
单片机复位电路就好比电脑的重启部分。

该电路采用上电按钮复位电路:首先经过上电复位,按键直接与+5V电源相连,按下按键后,形成高电平复位,同时电解电容被电路放电;按键松开时,电源对电容形成充电,充电电流在电阻上,按键
依然为高电平,复位。

充电完成后,电容相当于开路,按键为低电平,单片机芯片正常工作。

3.3、显示模块
图3.3 显示电路
液晶显示器(LCD)是一种利用液晶的扭曲/向列制成的新型显示器件,具有体积小、重量轻、功耗低、显示质量高、抗干扰能力强、与单片机接口方便的诸多优点,在单片机系统中被广泛应用。

16021脚接VSS为地电源,2脚为VDD接5V正电源,3脚是VL为液晶显示器对比度调整端,4脚是RS为寄存器选择,5脚为读写信号线,6脚E端为使能端,7,14脚为D0,D7,是8位双向数据线
采用1602显示模块内部存储容量大,易于控制。

1602显示器主要用来显示时间和定时时间。

通过单片机控制,1602显示字符。

3.4、原理图及原理分析
图3.4 原理图
该电路采用单片机的内部定时器精确定时,采用定时计数器1,工作方式1,P0口接1602液晶显示器,9脚接复位电路,18、19脚接晶振电路,利用定时计数器的定时、计数功能,完成电路的显示。

基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。

单片机扩展的LCD1602显示器用来显示秒、分、时计数单元中的值。

1602显示器主要用来显示时间和定时时间。

本项目采用中断方式编程,单次定时时间为50 ms,当定时20次时,1秒到了,秒加1,当秒计数到60时,分加一,秒跳回0,当分计数至60时,小时加一,同时分跳回0,当小时跳动至24时,跳回00重新计数。

计数的内容通过单片机P0口在1602上显示。

3.5、 PCB 图
图3.5 PCB图
四、软件设计
4.1 液晶软件驱动开始
LCD初始化
延时
设第一行显示位置设第二行显示位置设第二行显示位置显示第二行内容结束
4.2 计时程序分析开始
重装初值
循环次数加1

满20次,

秒加 1

60秒到,

秒清0,分加1 否60分到,

分清0,时加1 否
24小时到,

时清0
返回
4.3主程序分析
开始
内部中断
外部中断
设置显示位置
显示内容
结束
五(总结
经过两个星期的学习,从中学习了很多。

从一开始的模糊不知道从哪入手,到慢慢地熟悉整个流程,自己写出程序,感觉自己收获不少。

虽然学习的时间是短暂的,但留给我的印象是深刻的。

单片机在我们的学习
单片机,明中出现的频率很高,在这两个星期的学习中让我更加熟悉了51白它功能的强大。

也熟悉了LCD1602显示器的功能。

我想,人就是慢慢学习不断进步的过程,要学以致用,多积累,才能使自己更加充实。

相关文档
最新文档