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

第一章设计要求及系统组成

一、基本操作时序:读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字

写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:无

读数据:输入:RS=H,RW=H,E= 高脉冲输出:D0~D7数据

写数据:输入:RS=H,RW=L。D0~D7=数据,E=高脉冲输出:无二、、、状态字说明:STA7 D7\ STA6 D6\ STA5 D5 \ STA4 D4 \STA3 D3 \ STA2 D2\\ STA1 D1

STA0-6:当前数据地址指针的数值

STA7:读写操作使能 1表示禁止,0表示允许

对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0;但是我们可以进行延时进行实现。

RAM地址映射: LCD 16字*2行

00 01 02 03 04 05 06 07 08 08 09 0A 0B 0C 0D 0E 0F (27)

40 41 42 4F 50 (67)

指令说明:1.初始化设置 1.显示模式设置指令码:00111000(0x38)功能:设置16*2显示,5*7点阵,8位数据接口

必须开显示 2.显示开、关及光标设置指令码:00001DCB,功能:D=1 开显示;D=0 关显示;C=1显示光标;B=1 光标闪烁;B=0 光标不显示 000001NS:功能:N=1当读或写一个字符后地址指针加1,且光标加1;N=0相应的减1;S=1当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果。

S=0 当写一个字符,正屏显示不移动。

数据控制:控制器内部设有一个数据地址指针,用户可通过它们来访问内部的全部80字节RAM

4.2.1 数据指针设置:指令码:80H+地址码(0-27H,第二行开始:40H-67H) 4..2.2 读数据,写数据

其它设置:01H:显示清屏:1.数据指令清零 2 所有显示清零 02H:显示回车:1.数据清零

如何进行连接:实际操作中,液晶接到,第一管脚是D,第二管脚是VCC,15和16是背光,D0-D7是数据口,接到单片机的P0口,P0口接了两个锁存器,液晶,D/A,具有高阻状态的都可以随便接,没有影响,,第六管脚是LCDEN相当于 E,使能信号,它接P3^4,R/W接地,表示低电平,因为我们只进行写操作,RS接2实验板上的P3^5;只需这两端口便足以控制液晶,2和3是偏压信号,一端接地,

接口信号说明:编号:1 VSS(符号表示)电源地(引脚说明)2VDD 电源正极3VL液晶显示偏压信号4RS数据/命令选择端(H/L)5R/W 读写选择端(H/L)6E使能信号7D0 Data 1/0 8D1 Data 1/0 9 D2 Data 1/0 10 D3 Data 1/0 11D4 Data 1/0 12D5 Data 1/0 13D6 Data 1/0 14D7 Data 1/0 15BLK背光源正极16 BLK背光源负极

实际操作:::

先写光标程序;写两个子程序,一个写数据,一个写指令:先进性两个宏定义,再位申明LCDEN与RS;为了电量充足。初始化时关断数码管,定义数码管的两个锁存端,dula与wela,P2^6与P2^7,先写主函数(调用初始化函数,在调用数据子函数(’1’),从右向左滚动进来

Code:

),再写初始化函数(先关断数码管,在进行显示模式设置,显示开、关及光标设置,设计数据),接着写命令子函数writer——com(开始操作时序,写指令,P0口送的指令码,接着需要延时一段时间让E 变成高电平,在持续一段时间,E再变低),它由所用的指令直接调

用即可。。。。。。。。。。。。

再写一个写数据的子函数writer_data (lcdrs=1),需用延时子函数。 Uchar code table[]={“” }

注意:为了使得黑托不出现,应该屏幕全部清零writer_com(0x01)。

???????xdata :外部地址空间

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为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

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

第15~16脚:空脚

1602显示屏的时序图如图2.5。

图2.5 1602时序图

1602液晶显示屏与单片机的连线图如图2.6所示。

图2.6 1602与单片机连线图

第三章程序设计及其调试3.1 程序设计

程序设计如下:

#include

#define uchar unsigned char

#define uint unsigned int

sbit lcdrs=P2^0;

sbit lcswr=P2^1;

sbit lcden=P2^2;

sbit s1=P1^0;

sbit s2=P1^1;

sbit s3=P1^2;

sbit rd=P3^7;

uchar count,s1num;

char miao,shi,fen;

uchar code table[]=" 2011-6-14 TUN";

uchar code table1[]=" 00:00:00";

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void write_com(uchar com)

{

lcdrs=0;

lcswr=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void write_date(uchar date)

{

lcdrs=1;

lcden=0;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void init()

{

uchar num;

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)

{

write_date(table[num]);

delay(5);

}

write_com(0x80+0x40);

for(num=0;num<12;num++)

{

write_date(table1[num]);

delay(5);

}

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void write_sfm(uchar add,uchar date) {

uchar shi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void keyscan()

{

rd=0;

if(s1==0)

{

delay(5);

if(s1==0)

{ s1num++;

while(!s1);

if(s1num==1)

{

TR0=0;

write_com(0x80+0x40+10);

write_com(0x0f);

}

}

if(s1num==2)

{

write_com(0x80+0x40+7);

}

if(s1num==3)

{

write_com(0x80+0x40+4);

}

if(s1num==4)

{

s1num=0;

write_com(0x0c);

TR0=1;

}

}

if(s1num!=0)

{

if(s2==0)

{

delay(5);

if(s2==0)

{

while(!s2);

if(s1num==1)

{

miao++;

if(miao==60)

miao=0;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(s1num==2)

{

fen++;

if(fen==60)

fen=0;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(s1num==3)

{

shi++;

if(shi==24)

shi=0;

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

}

}

if(s3==0)

delay(5);

if(s3==0)

{

while(!s3);

if(s1num==1)

miao--;

if(miao==-1)

miao=59;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(s1num==2)

{

fen--;

if(fen==-1)

fen=59;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(s1num==3)

{

shi--;

if(shi==-1)

shi=23;

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

}

}

}

void main()

{

init();

while(1)

{

keyscan();

}

}

void timer0() interrupt 1 {

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

if(count==18)

{

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_sfm(7,fen);

}

write_sfm(10,miao);

}

}

3.2 实验调试

实验过程中出现了很多的问题,经过反复的程序修改和调试,最终完成了本设计的要求,实现了电子时钟功能。

在电路焊接前,通过protues单片机仿真软件多次调试和仿真,得出了正确的实验结果。Protues仿真图如图3.1所示。

图3.1 protues仿真图

结论

经过两周的课程设计,不断的测试与分析,最终完成了电子时钟的设计与制作。在实验的设计及仿真测试时,当没有得出正确的实验现象是,必须冷静、沉着的思考问题的来源,切勿太过紧张。在电路的焊接过程,须仔细再仔细,案部分焊接导线,切勿乱了头绪。这样才能在电路制作过程中减少许多不必要的错误。本次设计组要是程序设计部分,在程序设计过程中,出现了很多的问题,经过和组员的多次讨论与研究、,并参阅了一些电子资料,解决的很多难题。

此课程设计主要考察了对单片机技术原理及程序设计基础等知识。理论结合实践,使得在平时学习的单片机技术知识有了一个新的认识。

此次设计的电子时钟是一个典型的单片机应用实例。通过本次设计,使得对单片机技术有了进一步的认识,并且对此产生了浓厚的兴趣,为以后的学习打下了坚实基础。

通过和组员的共同努力,成功的完成此次课程设计,在排除问题过程中,体验了程序设计及电路设计制作的艰辛,更能够体会到成功的喜悦。

参考文献

[1] 张先庭.单片机原理、接口与C51应用程序设计.国防工出版

社.2011

[2] 吴立新.实用电子技术手册.机械工业出版社.2003

[3] 胡汉才.单片机原理及其接口技术.北京:清华大学出版社,2004.

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

第一章设计要求及系统组成 一、基本操作时序:读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字 写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:无 读数据:输入:RS=H,RW=H,E= 高脉冲输出:D0~D7数据 写数据:输入:RS=H,RW=L。D0~D7=数据,E=高脉冲输出:无二、、、状态字说明:STA7 D7\ STA6 D6\ STA5 D5 \ STA4 D4 \STA3 D3 \ STA2 D2\\ STA1 D1 STA0-6:当前数据地址指针的数值 STA7:读写操作使能 1表示禁止,0表示允许 对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0;但是我们可以进行延时进行实现。 RAM地址映射: LCD 16字*2行 00 01 02 03 04 05 06 07 08 08 09 0A 0B 0C 0D 0E 0F (27) 40 41 42 4F 50 (67) 指令说明:1.初始化设置 1.显示模式设置指令码:00111000(0x38)功能:设置16*2显示,5*7点阵,8位数据接口 必须开显示 2.显示开、关及光标设置指令码:00001DCB,功能:D=1 开显示;D=0 关显示;C=1显示光标;B=1 光标闪烁;B=0 光标不显示 000001NS:功能:N=1当读或写一个字符后地址指针加1,且光标加1;N=0相应的减1;S=1当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果。

S=0 当写一个字符,正屏显示不移动。 数据控制:控制器内部设有一个数据地址指针,用户可通过它们来访问内部的全部80字节RAM 4.2.1 数据指针设置:指令码:80H+地址码(0-27H,第二行开始:40H-67H) 4..2.2 读数据,写数据 其它设置:01H:显示清屏:1.数据指令清零 2 所有显示清零 02H:显示回车:1.数据清零 如何进行连接:实际操作中,液晶接到,第一管脚是D,第二管脚是VCC,15和16是背光,D0-D7是数据口,接到单片机的P0口,P0口接了两个锁存器,液晶,D/A,具有高阻状态的都可以随便接,没有影响,,第六管脚是LCDEN相当于 E,使能信号,它接P3^4,R/W接地,表示低电平,因为我们只进行写操作,RS接2实验板上的P3^5;只需这两端口便足以控制液晶,2和3是偏压信号,一端接地, 接口信号说明:编号:1 VSS(符号表示)电源地(引脚说明)2VDD 电源正极3VL液晶显示偏压信号4RS数据/命令选择端(H/L)5R/W 读写选择端(H/L)6E使能信号7D0 Data 1/0 8D1 Data 1/0 9 D2 Data 1/0 10 D3 Data 1/0 11D4 Data 1/0 12D5 Data 1/0 13D6 Data 1/0 14D7 Data 1/0 15BLK背光源正极16 BLK背光源负极

51单片机驱动1602液晶显示器c程序

51单片机驱动1602液晶显示器c程序 /*程序效果:单片机控制液晶显示器1602 显示字母数字,用户自行更改io 程序原创安全:51hei*/#includereg52.h //头文件#define uchar unsigned char //宏定义#define uint unsigned intuchar code table[]=“51HEI XING XING “ ; //显示的字母uchar code table1[]=“51HEI MCUXUE YUAU” ;sbit lcdrs=P1; //寄存器选择引脚sbit lcdwr=P1;//读写引脚sbit lcde=P1 ; //片选引脚void delay(uchar x) //延时子函数{uchar i,j;for(i=x;i0;i--) for(j=110;j0;j--);}void write_com(uchar com) //写指令子函数{ //根据1602 液晶 显示器协议编写P2=com; lcdrs=0;lcdwr=0;delay(5);lcde=0; delay(5);lcde=1; }void write_dat(uchar dat) //写数据子函数{P2=dat; lcdrs=1;lcdwr=0;delay(5);lcde=0;delay(5);lcde=1;}void init() //初始化子函数{write_com(0x01); //清屏write_com(0x3f); //功能设置write_com(0x0d); //显示控制write_com(0x06); //输入方式设置}void main(){ uchar i; //定义局部变量init();write_com(0x80+0x02+0x10); //指针的位置for(i=0;i15;i++) //显示{ write_dat(table[i]); delay(50); // 延时,用于调节速度不匹配}write_com(0x80+0x40+0x10); for(i=0;i16;i++){ write_dat(table1[i]); delay(50);} for(i=0;i16;i++){ write_com(0x18); delay(50);} while(1);}tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

基于51单片机LCD1602数字钟

基于51单片机的数字时钟 实训单位: 南耕科技 系别: 工程技术系 专业: 姓名:

摘要 本文介绍了基于AT89C51单片机的数字式时钟的设计,详细叙述了系统硬件、软件的具体实现过程。本文在硬件、软件设计上均采用模块化的方法,使得在设计和调试方面取得很大的方便。软件同样采用模块化的设计,包括中断模块、时间调整模块等设计,并采用简单流通性强的C语言编写实现。本设计实现了时、分、秒的显示和时间修改的功能。通过对比实际的时钟,查找出误差的来源,确定调整误差的方法,尽可能的减少误差,使得系统可以达到实际数字钟的允许误差范围内。 关键字:AT89C51单片机;数字钟;模块化;

目录 1 绪论 (1) 1.1 课题背景 (1) 1.2 课题意义 (2) 1.3 数字式时钟的应用 (2) 1.4 本章小结 (3) 2 单片机简介 (3) 2.1 单片机的选择 (3) 2.1.1 单片机的特点 (5) 2.1.2 单片机的应用领域 (5) 2.2 AT89C51单片机的基本结构 (6) 2.3 本章小结 (11) 3 数字式时钟的硬件设计 (12) 3.1 最小系统设计 (13) 3.2 数字式时钟的外围电路设计 (14) 3.3 本章小结 (19) 4 数字式时钟的软件设计 (19) 4.1 系统软件设计内容 (19) 4.2主程序 (20) 4.3时钟设置子程序 (22) 4.4中断子程序 (24) 4.5 LCD显示子程序 (24) 4.6 本章小结 (26) 5 数字式时钟的Protues软件仿真 (26) 5.1 Protues软件的概述 (26) 5.2 Protues软件的功能特点 (27) 5.3 Protues软件具有4大功能模块 (27) 5.4 数字式时钟的Proteus软件仿真 (29) 5.5 本章小结 (35) 结论 (36) 致谢 (37) 单片机介绍 (37) 附录 (41)

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

第一部分设计任务和要求 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.后期处理 对设计过程进行总结,完成设计报告。 2.2 单片机系统方框图 2.2 单片机系统流程图 主流程图键盘扫描流程图

时钟流程图 第三部分主要器件及简介 3.1 主要器件 1. STC89C51单片机; 2.LCD1602液晶显示屏; 3.2 主要器件简介 1.STC89C51单片机简介 STC89C51是采用8051核的ISP(In System Programming)在系统可编程芯片,最高工作时钟频率 为80MHz,片内含8K Bytes的可反复擦写1000次的 Flash只读程序存储器,器件兼容标准MCS-51指令系 统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。 2.LCD1602液晶显示屏简介

用51单片机和1602液晶做的数字钟

课程设计报告 数字钟 姓名: 学号: 班级: 指导教师:高雪飞

目录 一、设计题目和要求 (1) 二、设计原理与实现功能 (1) 三、元器件介绍……………………………………………… 四、电路设计………………………………………………… 五、软件设计………………………………………………… 六、设计总结…………………………………………………

一、设计题目和要求 题目:用STC89C52单片机和1602液晶做的数字时钟 要求: 1.准确计时,以数字形式显示时、分、秒的时间; 2.小时的计时要求为“24翻1”,分和秒的计时为60进制。 二、设计原理与实现功能 设计原理: 控制芯片采用STC89C52RC单片机,晶振频率为11.0592MHZ,采用C语言编程,显示模块采用通用型1602液晶,发声模块采用无源蜂鸣器。 参考资料:51单片机C语言编程,1602datasheet,网络。 本装置使用的1602液晶为5v电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口,关于1602液晶的接口信号说明,主要技术参数,基本操作时序,RAM地址映射图,数据指针设置,初始化设置,写操作时序和其他设置请查阅1602的相关资料。 计时部分采用T0计时器中断方式1,TO定时器既有定时功能又有计数功能,通过设置与它们相关的特殊功能寄存器可以选择启用定时功能或计数功能。当定时器的计数器计满后,会产生中断,通知CPU该如何处理。关于51单片机的寄存器和中断功能及操作说明请查阅相关资料。 蜂鸣器的发声为单片机的一个引脚加一个三极管控制。 (1.要画出结构框图;2.数字钟的实现方法不止一种,因此必须说明自己

基于51单片机的1602LCD显示

标签:单片机LCD 基于51单片机的1602LCD显示 基于51单片机的1602LCD显示 LCD(liquid crystal display)为液晶显示器,它一般不会单独使用,而是将LCD面板、驱动与控制电路组合成LCD模块(1iquid crystal display moulde,简称为LCM)来使用。LCM是一种很省电的显示设备,常被应用在数字或微处理器控制的系统,做为简易的人机接口,但人们一般还是习惯称之为LCD显示器。 1 硬件设计 采用51单片机控制1602LCD显示器的电路如下所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT 模板,保存文件名为“LCD.DSN”。在器件选择按钮 中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表51单片机AT89C51 一片晶体CRYSTAL 12MHz 一只 瓷片电容CAP 22pF 二只电解电容CAP-ELEC 10uF 一只 电阻RES 10K 一只排阻RESPAC-8 10K 一只 1602液晶显示器LM016L 一只

若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1的31脚,都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 用1602LCD显示两行字符的流程图如下所示。 用1602LCD显示“Welcom to China”和“Hi!Good morning!”的详细C51程序如下。 //用LCD循环显示"Welcome to China"和"Hi!Good morning!" #include //包含单片机的头文件 #include //包含_nop_()函数定义的头文件 sbit RS="P2"^0; //寄存器选择位,将RS位定义为P2.0引脚 sbit RW="P2"^1; //读写选择位,将RW位定义为P2.1引脚 sbit E="P2"^2; //使能信号位,将E位定义为P2.2引脚 sbit BF="P0"^7; //忙碌标志位,,将BF位定义为P0.7引脚 unsigned char code string[ ]={"Welcome to China"}; unsigned char code string1[ ]={"Hi!Good morning!"};

基于单片机的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电子时钟。通过单片机、显示模块和时钟模块的配合,可以实现时间显示、闹钟设置和闹钟响 铃等功能。此外,还可以根据需要进行功能的拓展,如添加温湿度传感器,实现环境监测等功能。

51单片机c语言编写的1602液晶显示闹钟

#include #define uchar unsigned char #define uint unsigned int uchar code table[]=" 2012-08-17 MON"; uchar code table1[]=" 12:30:00"; /席殳定^始^示G 畤^ SUN"}}; sbit wr=P3 A 6; // 1602液晶G^/嘉端 sbit dula=P2 A6; // 数礁管段逗 sbit wela=P2 A7; // 敦礁管位逗 sbit lcden=P3 A4; // 1602液晶使能端 sbit lcdrs=P3 A5; // 1602液晶命令/数撼端 sbit key1=P3A0; // 磬明s4按至建 sbit key2=P3A1; //磬明s8按至建 sbit key3=P3A2; //磬明s12按至建 sbit key4=P3 A3; //磬明s16按至建 sbit beep=P2 A3; //磬明蜂^器 sbit rd=P3A7; // 磬明4他按筵G 公共端 uchar code table2[7][3]= {{"MON"},{"TUE"},{"WED"},{"THU"},{"FRI"},{"SAT"},{ 〃定羲二雉字符^^ uchar num1,shi=12,fen=30,miao,yue=8,n=17,shi1,fen1,miao1,keynum1,week; // 定羲畤分秒燮量 uint nian=2012; void delayms(uint x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void write_com(uchar com) { wr=0; lcdrs=0; 〃定羲年燮量 〃定羲带参数延畤函数 //1602液晶嘉指令函敦 P0=com; delayms(1); lcden=1; delayms(1); lcden=0; } void write_date(uchar date) { wr=0; lcdrs=1; P0=date; delayms(1); lcden=1; delayms(1);

51单片机电子表LCD1602显示_时间可调

/*功能:52单片机定时器0电子表LCD1602显示可对时间进行调节 作者:燕山大学里仁学院09应电四班杨立业欢迎您的建议、指点和更多交流QQ:1024549573 晶振:12M */ #include #define uint unsigned int sbit lcden=P3^4; //液晶的使能端 sbit rs=P3^5; //液晶的数据指令控制端 sbit wr=P3^6; //液晶的读写端 sbit rd=P3^7; //按键的一个线选使按键共阴极 sbit fc=P3^0; //功能键确定时间调整的位置 sbit jia=P3^1; //加1 sbit jian=P3^2;//减1 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; unsigned char code table1[]=" 00:00:00 "; uint num,num1,i,shi,ge,shu; long int hour,fen,miao; void write_com(uint com);

void write_date(uint date); void init1602(); void init() ; void write_sf(uint add,uint sf); void delay(uint x); void keyscan(); void main() { init(); init1602(); write_com(0x80+0x40+3); for(num1=1;num1<8;num1++) { write_date(table1[num1]); delay(5); } while(1) { keyscan(); } } void write_com(uint com)//1602 写指令{ rs=0; P0=com;

基于51单片机的液晶LCD1602显示程序源代码(带LCD1602液晶接口电路))

液晶LCD1602显示字符和数字程序源代码 /***********************液晶LCD1602测试程序源代码************************* 单片机型号:STC15W4K56S4,内部晶振:22.1184M。 功能:液晶LCD1602显示功能测试。 操作说明: 液晶LCD1602显示字符和倒计时。 **************************************************************************/ #include "stc15.h" //包含头文件stc15.h #include //包含头文件intrins.h #define Busy 0x80 //LCD忙 sbit LCD_D0 = P0^0; //LCD_D0对应P0.0 sbit LCD_D1 = P0^1; //LCD_D1对应P0.1 sbit LCD_D2 = P0^2; //LCD_D2对应P0.2 sbit LCD_D3 = P0^3; //LCD_D3对应P0.3 sbit LCD_D4 = P0^4; //LCD_D4对应P0.4 sbit LCD_D5 = P0^5; //LCD_D5对应P0.5 sbit LCD_D6 = P0^6; //LCD_D6对应P0.6 sbit LCD_D7 = P0^7; //LCD_D7对应P0.7 sbit LCD_RS = P1^0; //LCD_RS对应P1.0 sbit LCD_RW = P1^1; //LCD_RW对应P1.1 sbit LCD_EN = P3^4; //LCD_EN对应P3.4 void delay(unsigned int t); //delay延时函数 void delay_us(unsigned int t); //delay_us延时函数 void delay_ms(unsigned int t); //delay_ms延时函数 void Delay5Ms(void); //5Ms延时函数 void GPIO_1602_Configuration(void); //LCD1602液晶IO口初始化void WriteDataLCD(unsigned char WDLCD); //LCD写数据函数 void WriteCommandLCD(unsigned char WCLCD,BuysC); //LCD写命令函数unsigned char ReadDataLCD(void); //LCD读数据函数unsigned char ReadStatusLCD(void); //LCD读状态函数 void LCDInit(void); //LCD初始化 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); //LCD显示一个字符 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); //LCD显示一个字符串 unsigned char code welcome[] = {"Hello My Friends"}; //液晶LCD1602显示Hello My Friends unsigned char code countdown[] = {"CountDown: S"};

基于51单片机1602液晶遥控电子表C程序

#include #include typedef unsigned int uint; typedef unsigned char uchar; uchar nian,zhou,yue,ri,shi,fen,miao; uchar n,m; uchar flagstart;//确定标志位 uchar flagstop; //停止标志位 uchar flagdushi;//读时间标志位 uchar haoma; uchar temp; //温度 uchar irtime;//红外高低电平所占时间,由定时器0中断产生uchar startflag;//接收红外引导码的标志位 uchar bitnum; uchar irreseok;//红外接收标志位 uchar irjieshu; sbit DQ=P1^3;//DS18B20数据管脚 sbit rst = P1^6;//1302接口定义 sbit sck = P1^1; sbit io = P1^0; sbit rs=P2^0;//液晶接口定义 sbit rw=P2^1; sbit e=P2^2; uchar init_ds18b20(void); uchar read_ds18b20temp(void); void write_ds18b20byte(uchar dat); uchar read_ds18b20byte(void); void delay_8us(uint t); void set_time1(uchar m) ; void tiaoshi(void); void irkongzhi(void); void irpd(void);//红外解码判断 void irchuli(void);//红外接收数据保存 void write_com (com); //液晶的写指令 void write_data(dat) ; //液晶的写数据 void init(void); //定时器,液晶,红外中断的初始化 void delay(uint t); void timechuli(void); void set_time(void); //设置时间

51单片机的18B20、1302和LCM1602液晶显示温度与万年历显控制

摘要 本设计以数字集成电路技术为基础,单片机技术为核心。软件设计采用模块化结构,C语言编程。系统通过LCD显示数据,可以显示日期(年、月、日、时、分、秒)以及温度。在内容安排上首先描述系统硬件工作原理,着重介绍了各硬件接口技术和各个接口模块的功能;其次,详细的阐述了程序的各个模块和实现过程。 前言 电子时钟是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的电子时钟精度高,功能易于扩展。可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用有着非常现实的意义。本设计就是数字时钟简单的扩展应用。 1.1设计目标: 利用单片机技术,以及模拟电子技术和数字电子技术的理论知识,设计实现MCS-51单片机对LCM1602液晶输出显示控制的这一基本要求。 1.2设计要求: 本设计利用DS1302;DS18B20;LCD1602实现以下功能: (1) 显示日期功能(年、月、日、时、分、秒以及星期) (2) 可通过按键切换年、月、日及时、分、秒的显示状态

(3) 可随时调校年、月、日或时、分、秒 (4) 可每次增减一进行时间调节 (5) 可动态完整显示年份,实现真正的万年历显示 (6) 可显示温度 2 设计方案 2.1 控制器 硬件控制电路主要用了AT89C52芯片处理器、LCD显示器等。根据各自芯片的功能互相连接成电子万年历的控制电路。软件控制程序主要有主控程序、电子万年历的时间控制程序、时间显示及星期显示和温度采集程序等组成。主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是电子万年历中比较重要的部分。时间控制程序体现了年、月、日、时、分、秒及星期的计算方法。时间控制程序主要是定时器0计时中断程序每隔10ms中断一次当作一个计数,每中断一次则计数加1,当计数100次时,则表示1秒到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否1天到了,再判断是否1月到了,再判断是否1年到了,若计数到了则相关变量清除0。先给出一般年份的每月天数。如果是闰年,第二个月天数不为28天,而是29天。再用公式s=v-1 +〔(y-1/4〕-〔(y -1/100〕+〔(y-1/400〕+ d计算当前显示日期是星期几,当调节日期时,星期自动的调整过来。闰年的判断规则为,如果该年份是4或100的整数倍或者是400的整数倍,则为闰年;否则为非闰年。在我们的这个设计中由于只涉及100年范围内,所以判断是否闰年就只需要用该年份除4来判断就行了。温度的显示主要是靠ds18b20采集现在的温度数据,CPU读取数据进行显示,当各自的条

51单片机LCD1602液晶显示的接法

51单片机综合学习之1602字符型液晶显示篇 在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、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字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。 字符的显示

51单片机1602移动液晶显示

单片机课时

设 计 设计主题:1602移动液晶显示 院系:工程技术学院 专业:11级电气自动化一班 学号: 姓名: 指导老师:孙建延 基于单片机控制的1602液晶显示 1.引言 单片机作为微型计算机发展的一个重要的分支,以其高可靠性、高性价比、低电压、低功耗的优势,赢得了广泛的应用。单片机技术是一门技术性、应用性很强的学科,在目前和今后相当长的一段时间仍有着广泛的应用。实验教学作为其极为重要的组成环节,在硬件扩展、接口应用、编程方法以及程序调试等方面,都起到重要作用。作为学习自动控制专业的学生,单凭课堂理论课学习,不切实认真的进行实践仿真,势必出现理论与实践脱节、学习与应用脱节等局面。 1.1课程设计的思想 此次《单片机原理及系统》课程设计,选择的是利用1602液晶显示,利用AT89C52芯片实现一串滚动字符显示,本次设计使用的1602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置128个字符的ASCⅡ字符集字库,只有并行接口,无串行接口。通过C语言编程经keil软件生成可以在proteus软件中仿真装载的.hex文件,进而通过proteus软件进行硬件电路连接以

及软件的仿真,利用LM016L显示器替代1602型液晶显示器,最终得出液晶显示。 1.2课程设计的目的 此次程设计是在学习必修课程《单片机原理与系统设计》之后,为加强学生对单片机系统设计和应用能力的培养而开设的综合设计训练环节。本课程设计应结合《单片机原理与系统设计》课程的基础理论,重点强调实际应用技能训练,包括单片机系统设计的软件和硬件两部分。其课程设计任务是使学生通过应用单片机系统设计的基本理论,基本知识与基本技能,掌握单片机应用系统各主要环节的设计、调试方法,初步掌握并具备应用单片机进行设备技术改造和产品开发的能力,培养学生的创新意识,提高学生的动手能力和分析问题、解决问题的能力。 1.3课程设计要求 设计要求:采用单片机控制,通过C语言编程实现在1602液晶的第一行显示”WELCOME TO ZDH!”,然后在第二行显示”K092XWEI”然,定格在屏幕上。2.设计方案及原理 2.1 1602型液晶简介 2.1.1 1602引脚功能 LCD1602引脚如图2.1所示: 图2.1 LCD1602引脚图 1602液晶显示屏各端口信号功能如表2.1所示: 表2.1 1602液晶接口信号说明 编号符号引脚说明编号符号引脚说明 1 Vss 电源地9 D 2 数据口 2 Vdd 电源正极10 D 3 数据口 3 V ee 液晶显示对比度调节端11 D 4 数据口 4 RS 数据/指令端(H/L)12 D 5 数据口 5 R/W 读写选择端(H/L) 13 D 6 数据口 6 E 使能信号14 D 7 数据口

单片机课程设计 (51单片机实现电子时钟).

湖北文理学院 单片机课程设计 题目:用51单片机实现电子时钟 院部物理与电子信息工程学院 专业名称电子信息科学与技术 班级 1111 姓名杨庆月 学号 ********** 指导教师李刚 2013年12月09日

目录 摘要-------------------------------------------------------------1 1 单片机的相关知识-------------------------------------------1 1.1 单片机的简介---------------------------------------------------1 1.2 单片机的特点---------------------------------------------------1 1.3 89C52单片机的基本特点-------------------------------------------2 2 电子时钟--------------------------------------------------- 3 2.1电子时钟的基本特点-----------------------------------------------3 2.2电子时钟的原理--------------------------------------------------4 3 控制系统的硬件设计----------------------------------------4 3.1单片机型号的选择------------------------------------------------4 3.2 lcd1602工作的原理----------------------------------------------4 3.3 键盘电路的设计-------------------------------------------------6 3.4 复位电路设计--------------------------------------------------------6 3.5 时钟电路设计--------------------------------------------------7 3.6 整体电路原理图------------------------------------------------7 4 控制系统的软件的设计-------------------------------------8 4.1程序的设计-----------------------------------------------------8 4.2程序源代码-----------------------------------------------------8 5 仿真结果和实物图----------------------------------------------19 5.1仿真结果-------------------------------------------------------------19 5.2实物图---------------------------------------------------------------19 6 总结-----------------------------------------------------------------------------------------------20 参考文献-------------------------------------------------------21

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显示数值等主要功能。相关的调整是靠对功能键的判断来实现的。

单片机操纵LCD1602实现中英文及时刻显示

利用单片机AT89C51操纵实现LCD1602液晶屏进行显示 单片机实训报告 课程名称:单片机实训 班级: 姓名: 学号: 教学周数: 2周 地点:单片机实验室 指导教师: 一、实验目的 通过本周课程设计:

(1):进一步熟悉KEIIL C51集成环境的利用方式。 (2):熟悉51指令,把握编程方式, 能进行稍复杂程序的编写。 (3):把握LCD1602液晶中英文显示的方式。 (4):把握液晶的利用,在液晶上显示年,月,日,时,分,秒,并能进行时刻的调整。 (5):能进行电路板的焊接,并能检查存在的问题。 (6):对给定题目能进行系统设计,能画出硬件原理图,给出软件流程图。并进行软件仿真。 (7):熟练调试程序。 (8):利用编程器写入单片机程序,对完成的软硬件进行系统调试。 二、实验内容 利用单片机AT89C51操纵实现LCD1602液晶进行 1.中英文显示。 2.时钟显示 第一周:进行软件仿真 第二周:进行实物制作 三、实验环境 软件:WINDOWS XP操作系统下KEIL C51集成环境,TOP51 编程软件。 硬件:联想CPU 420,电脑一台,TOP51编程器一台,仿真电源线一条,连接导线假设干。 四、实验步骤 依如实验要求在Proteus中画出单片机与LCD1602液晶显示连

接电路图进行仿真: 实验一:显示字符“A” 程序如下: COM EQU 20H;要写入LCD的命令寄存在20H中DAT EQU 21H ;要写入LCD的数据寄存在21H中LCD_PORT EQU P2 RS EQU RW EQU E EQU ORG 0000H LJMP START ORG 0100H START: MOV SP, #70H ;给堆栈指针赋值 MOV P2, #0FFH ;P1口赋全1,为读取状态做预备 LCALL INT ;挪用LCD初始化子程序 MOV COM,#84H ;第一行第五列DDRAM地址命令字 LCALL LCD_W_CMD ;挪用写命令子程序 MOV DA T,#41H;设置字符“A”的ASCII码 LCALL LCD_W_DA T ;挪用写数据子程序SJMP $ ;************LCD初始化子程序INT*********** INT: MOV COM,#3CH

相关文档
最新文档