用lcd1602制作简单的时钟显示

这篇具有很好参考价值的文章主要介绍了用lcd1602制作简单的时钟显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文最终的效果如图,lcd上能显示一个电子时钟,并能正确的显示时间。

用lcd1602制作简单的时钟显示

 如图打开proteus,导入元器件并连线,如果是实物的话,别忘了购买lcd屏上的对比度调节变阻器,不然显示不出来,对比度不是太浅就是太深,根本就看不到,需要注意。我就上了这个坑了,没有哪个文章或是视频提到过这个事,估计都没有拿实物做实验吧。接下来写c程序,我的程序都是经过测试的,跑起来没有问题,可以直接复制粘贴。

#include"reg52.h"

sbit RS=P3^5;      // lcd的RS接口接到单片机的P3的第5口
sbit RW=P3^6;		// lcd的RW接口接到单片机的P3的第6口
sbit E=P3^7;		// lcd的E接口接到单片机的P3的第7口

unsigned int shi=23, fen=59, miao=50;         //  定义小时,分钟, 秒钟的初始值,可以直接更改,lcd直接就从这个时间开始
unsigned int count=0;    // 计时器中断中用到的变量
unsigned char str[]={"0123456789:"};    //  在lcd显示时用到的字符串,最后一个是时间间隔符:,也可以换成-号


//  延时函数
void delay(unsigned int t){
	unsigned int i=0, j=0;
	for(i=0; i<t; i++){
		for(j=0; j<120; j++);
	}
}

//  lcd写数据函数 写dat首字母
void xdat(unsigned char dat){
	RS = 1;
	RW = 0;
	E = 0;
	P2 = dat;
	delay(5);
	E = 1;
	E = 0;
}

//  lcd写命令函数  写命令首字母xml
void xml(unsigned char ml){
	RS = 0;
	RW = 0;
	E = 0;
	P2 = ml;
	delay(5);
	E = 1;
	E = 0;
}


//  lcd初始化函数
void init(){
	xml(0x38);
	xml(0x0c);
	xml(0x06);
	xml(0x01);
}

//   lcd更新显示函数
void gengxin(){
	unsigned int shi0=0,shi1=0,fen0=0,fen1=0,miao0=0,miao1=0;  // 定义变量 shi0=小时的十位, shi1=小时的个位, fen0=分钟的十位, fen1=分钟的个位, miao0=秒钟的十位, miao1=秒钟的个位
	shi0 = shi/10;          //  小时除以10,只取整数部分就正好是小时的十位数
	shi1 = shi%10;          //  小时除10取余,正好就是小时的个位数
	fen0 = fen/10;			//  分钟除以10,只取整数部分就正好是分钟的十位数
	fen1 = fen%10;			//  分钟除10取余,正好就是分钟的个位数
	miao0 = miao/10;		//  秒钟除以10,只取整数部分就正好是秒钟的十位数
	miao1 = miao%10;		//  秒钟除10取余,正好就是秒钟的个位数
	xml(0x80);            // 从lcd的第一行左侧开始写入
	delay(5);
	xdat(str[shi0]);       //lcd写入前面定义的字符串str的(shi0)位
	delay(5);
	xdat(str[shi1]);		//lcd写入前面定义的字符串str的(shi1)位
	delay(5);
	xdat(str[10]);
	delay(5);
	xdat(str[fen0]);       // 写入分钟的十位
	delay(5);
	xdat(str[fen1]);        // 写入分钟的个位
	delay(5);
	xdat(str[10]);
	delay(5);
	xdat(str[miao0]);      // 写入秒钟的十位
	delay(5);
	xdat(str[miao1]);       //写入秒钟的个位
	delay(5);
}

// 初始化定时器
void inittimer(){
	TMOD =0x01;
	TH0 = 0x3C;        // 初值高8位就是65536-计时值50000(50毫秒) = 15536转换成16进制为 3cb0
	TL0 = 0xB0;         // 高8位为3c, 低8位为b0
	ET0 =1;           // 开启定时器0
	EA = 1;           // 开启总中断
	TR0 = 1;          // 开启定时器
}

// 主函数
void main(){
	init();
	inittimer();
	while(1){
		gengxin();
	}
}


//  时间中断函数
void zhongduan() interrupt 1{
	unsigned int i=0;
	TH0 = 0x3C;        // 初值高8位就是65536-计时值50000(50毫秒) = 15536转换成16进制为 3cb0
	TL0 = 0xB0;         // 高8位为3c, 低8位为b0
	count++;			//  这个中断函数每隔50毫秒运行一次,每次count加1
	if(count==20){      //  如果count等于了20,就是运行了20次X50=1000毫秒=1秒   
		miao+=1;				// 秒钟加1
		count = 0;				// count置0从新计算
	}
	if(miao==60){       //  如果秒钟等于60了
		fen+=1;					//分钟加1
		miao=0;					// 秒钟置0从新计算
	}
	if(fen==60){        // 如果分钟等于60了
		shi+=1;				// 小时加1
		fen=0;				// 分钟置0从新计算
	}
	if(shi==24){		//  如果小时等于24了或是12了
		shi=0;				//  小时置0从新计算      (后面还可以加天,月, 年)
	}
}

最后编译成hex文件导入到proteus中或是烧录到单片机里就能正常运行了。不会编译的可以看我以前的文章,都有记录。文章来源地址https://www.toymoban.com/news/detail-510508.html

到了这里,关于用lcd1602制作简单的时钟显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LCD1602的使用及显示

    第 1 脚: VSS 为电源地 第 2 脚: VDD 接 5V 正电源 第 3 脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。 第 4 脚: RS 为寄存器选择 , 高电平时选择数据寄存器、低电平时

    2024年02月07日
    浏览(79)
  • 实验(四):LCD1602显示实验

            实验目的:                 1. 掌握LCD1602显示控制方法;                 2. 掌握利用Proteus进行单片机控制系统的仿真及调试方法。                 3. 掌握单片机开发板的使用。         任务:                 1.根据要求编写程

    2024年02月02日
    浏览(38)
  • 单片机lcd1602的显示

    首先,你需要了解LCD1602的引脚功能。LCD1602有16个引脚,其中包括: Gnd:电源地脚 Vcc:5V电源正极 VL:液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高 RS:寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器 RW:读写信号线,高电平(

    2024年01月17日
    浏览(39)
  • 矩阵键盘控制LCD1602显示屏显示数字

     主函数部分,其中的LCD1602.h的头文件是在哔哩哔哩江科大自化协的博主的视频资料 总结:     首先是我学习时遇到的问题: 在我一开始运行的时候出现的问题就是,一开始在给主函数的keynumber赋值的时候,等号的左值是叫做Matrixkey的函数,当我按下1按键时显示屏显示01,

    2024年02月11日
    浏览(43)
  • 初识LCD1602及编程实现字符显示

    LCD1602是一种工业字符型液晶,能够同时显示16x02即32字符(16列两行) 引脚说明 第 1 脚 : VSS 为电源地 第 2 脚 : VDD 接 5V 正电源 第 3 脚 : VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位

    2023年04月18日
    浏览(37)
  • STM32显示外设集--液晶显示模块(LCD1602)

    一、介绍 产品图 二、 资源获取 欢迎关注微信公众号--星之援工作室 发送(LCD1602) 三、线路连接图 四、代码编写 LCD1602.h LCD1602.c main.h 五、参考 LCD1602是一种字母数字液晶显示模块,可以显示16个字符和2行文本,因此被命名为LCD1602。它通常用于各种电子项目,特别是

    2024年02月11日
    浏览(45)
  • 51单片机矩阵键盘——LCD1602显示

    本次的实验需要用到LCD1602液晶屏,需要用到LCD1602.c 与LCD1602.h文件链接: https://download.csdn.net/download/YLG_lin/86404949 使用矩阵键盘随意按下按键,LCD1602第二行前两位就会显示对应按键按下的数字。 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用

    2023年04月09日
    浏览(42)
  • 显示器与按键(LCD 1602 + button)

    一、实验目的: (1)学习lcd 1602的编程与使用、 (2)机械式复位开关button软件消抖的方法。 二、实验内容: 1、必做:先显示开机画面,:在1602显示器上,分两行分别居中显示字符“  AHAU  CHINA  ” 和 \\\"  I LOVE YOU  \\\"。然后从右向左移动直至消失。其中1602的rs、rw、en引脚分

    2024年02月03日
    浏览(41)
  • 【单片机】16-LCD1602和12864和LCD9648显示器

    (1)显示器,常见显示器:电视,电脑 (2)LCD(Liquid Crystal Display),液晶显示器,原理介绍 (3)LCD应用领域:手机,电脑 (4)将来取代LCD:LED,OLED【全面屏---软性】 1.像素(分辨率) 显示单元【液晶分子】 但是实际上: 像素!=分辨率 比如:出厂时电脑的像素已经确

    2024年02月08日
    浏览(58)
  • 51单片机 | LCD1602 液晶显示实验

      在前面章节,我们已经学习过几种显示装置,例如静态数码管、动态数码管、 8*8LED 点阵、串口通信。使用它们可以直观显示一些字符数据,但是它们也有各种局限性,比如显示字符数据太少,硬件设计复杂、代码编写难度大等。这一章就来介绍一种非常简单且常用的显

    2023年04月11日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包