LCD1602 时钟
单片机C语言,时钟1602
/***********************************************/
//可调时钟
/***********************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^1;
sbit lcdrs=P2^0;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
uchar num,count,a,b;
char fen ,shi , miao;
/************************************************/
//延时函数
/************************************************/
void delay(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<124;j++)
{;}
}
/************************************************/
//写指令
/************************************************/
void write_com(uchar com)
{
lcdrs=0;
P1=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/************************************************/
//写数据
/************************************************/
void write_date(uchar date)
{
lcdrs=1;
P1=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/************************************************/
//写时分秒函数
/************************************************/
void write_sfm(uchar add,uchar date)
{
uchar shi,ge;
shi=date/10;//分解一个2位数的十位和个位
ge=date%10;
write_com(0x80+add);//设置显示位置
write_date(0x30+shi);//送去液晶显示十位
write_date(0x30+ge); //送去液晶显示个位
}
void init()
{
lcden=0;
write_com(0x38);//显示模式设定
write_com(0x0c);//开关显示、光标有无设置、光标闪烁设置
write_com(0x06);//写一个字符后指针加一
write_com(0x01);//清屏
write_com(0x80);//设置显示初始坐标
fen=0;
shi=12;
miao=0;
count=0;
write_com(0x80+6);//写出时间显示部分的两个冒号
write_date(':');
delay(5);
write_com(0x80+9);
write_date(':');
delay(5);
write_sfm(10,miao);//分别送去液晶显示
write_sfm(7,fen);
write_sfm(4,shi);
}
void keyscan()
{
if(k1==0)
{
delay(10);
if(k1==0)
{
TR0=0;
while(!k1);
a++;
switch(a)
{
case 1:
write_com(0x80+11);
write_com(0x0f);
break;
case 2:
write_com(0x80+8);
break;
case 3:
write_com(0x80+5);
break;
case 4:
TR0=1;
a=0;
write_com(0x80+11);
write_com(0x0c);
break;
}
}
}
if(k2==0)
{
delay(10);
if(k2==0)
{
while(!k2);
switch(a)
{
case 1:
miao++;
if(miao==60) miao=0;
write_sfm(10,miao);
write_com(0x80+11);
write_com(0x0f);
break;
case 2:
fen++;
if(fen==60) fen=0;
write_sfm(7,fen);
write_com(0x80+8);
write_com(0x0f);
break;
case 3:
shi++;
if(shi==24) shi=0;
write_sfm(4,shi);
write_com(0x80+5);
write_com(0x0f);
你可能喜欢
- LCD1602中文资料
- 液晶1602
- LCD12864
- L298N电机驱动
- lcd1602
- LCD1602程序
- 单片机数字时钟设计
- LCD1602中文资料6页
- LCD1602中文资料(免费下载)7页
- LCD1602液晶完整中文资料17页
- LCD1602液晶完整中文资料17页
- 中文LCD1602资料6页
- LCD1602中文资料22页
- 单片机外围存储及LCD1286440页
- LCD 1602,12864 编程与PROTEUS仿真11页
- LCD12864绘图之KS0108(4)6页
- LCD12864绘图之KS0108(3)6页
- LCD12864绘图之KS0108(2)7页
- LCD12864绘图之KS0108(1)1页
- L298N - 电机驱动器13页
- 基于L298N电机驱动模块的设计与实现25页
- L298N(L297+L298N)电机驱动器使用说明5页
- L298N电机驱动器使用说明书7页
- 程德祥 L298N电机驱动模块1页
- L298N_电机驱动模块_程序书10页


