制作双屏切换的LCD1602电子钟

制作双屏切换的LCD1602电子钟

要求:在单片机AT89S51的控制下,利用LCD1602和两只按键完成两屏信息的切换显示。第一屏信息:第一行为自己姓名的拼音,第二行为自己学号。第二屏信息:第一行为所在城市和国家拼音,第二行为电子时钟时间显示。要求时间可通过按键进行调整。

硬件电路

在这里插入图片描述

软件设计

#include <reg51.h>   //包含SFR的定义
#include <lcd1602.h>   //包含_nop_( )空函数
sbit L3=P3^2;//触发外中断0引脚
sbit K1=P3^3;//触发外中断1引脚,进入修改时间模式按钮
sbit K2=P2^3;//当前小时增一按钮
sbit K3=P2^4;//当前分钟增一按钮
sbit K4=P2^5;//确定修时完成按钮
sbit L1=P2^6;//切换显示1按钮
sbit L2=P2^7;//切换显示2按钮
uint cishu;//定时器触发次数
uchar miao;//秒变量
uchar fen;//分变量
uchar shi;//时变量
uchar miao=0,fen=0,shi=0;
uchar code tab[]={
   0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0到9的ASCII码表的编码
bit keyflag;   //keyflag为按键按下的标志位
void xianshi1(void); //对被调函数的返回值类型做出说明
void xianshi2(void);
void write_sfm(uchar add,uchar date)//把两位数字转化为lcd1602能看懂的ASCII码表的编码
{
   
  uchar ge,shi;//设定时变量,个变量
	shi=tab[date/10];
	ge=tab[date%10];
  write_command(add);
	write_data(shi);
  write_command(add+0x01);
	write_data(ge);
}
void clock_write(uint s,uint m,uint h)//显示秒,分,时函数
{
   
  write_sfm(0xc4,h);
  write_sfm(0
  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值