/*******************************************************************************
*
* 普中科技
--------------------------------------------------------------------------------
* 实 验 名 : 矩阵键盘控制密码锁试验
* 连接方式 : 见连接图
* 注 意 :
*******************************************************************************/
#include<reg51.h>
#include"lcd.h"
//--定义使用的IO口--//
#define GPIO_KEY P1
sbit laba=P3^0;
//--定义全局变量--//
unsigned char a1,a2,a3,a4,a5,a6,a7,a8;//存放显示的日期
unsigned char b1,b2,b3,b4,b5,b6;//存放显示的时间
unsigned char c1,c2,c3,c4,c5,c6,c7,c8;//存放闹钟的日期
unsigned char d1,d2,d3,d4,d5,d6;//存放闹钟的时间
unsigned char KeyValue;
unsigned char biaozhi;
//用来存放读取到的键值
//--声明全局函数--//
void KeyScan(void);
void Delay10ms(unsigned int c); //误差 0us
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
unsigned char i; //循环计数位
unsigned char t1;//在判断闹钟时间是否到时,作为此刻时间标志位
unsigned char t2;//在判断闹钟时间是否到时,作为闹钟时间标志位
unsigned char H; //时计算位
unsigned char Y;//年计算位
unsigned char M;//月计算位
unsigned char D;//日计算位
LcdInit();
a1=2;a2=0;a3=1;a4=8;a5=0;a6=1;a7=1;a8=0;
b1=0;b2=8;b3=0;b4=0;b5=0;b6=0;
c1=2;c2=0;c3=1;c4=8;c5=0;c6=1;c7=1;c8=0;
d1=1;d2=0;d3=0;d4=0;d5=0;d6=0;
while(1)
{
KeyScan();
if(KeyValue==10) //显示预设的日期和时间
{
LcdWriteCom(0x80);LcdWriteData('0'+a1);
LcdWriteCom(0x80+0x01);LcdWriteData('0'+a2);
LcdWriteCom(0x80+0x02);LcdWriteData('0'+a3);
LcdWriteCom(0x80+0x03);LcdWriteData('0'+a4);
LcdWriteCom(0x80+0x04);LcdWriteData(0x2f);
LcdWriteCom(0x80+0x05);LcdWriteData('0'+a5);
LcdWriteCom(0x80+0x06);LcdWriteData('0'+a6);
LcdWriteCom(0x80+0x07);LcdWriteData(0x2f);
LcdWriteCom(0x80+0x08);LcdWriteData('0'+a7);
LcdWriteCom(0x80+0x09);LcdWriteData('0'+a8);
LcdWriteCom(0x80+0x40);LcdWriteData('0'+b1);
LcdWriteCom(0x80+0x41);LcdWriteData('0'+b2);
LcdWriteCom(0x80+0x42);LcdWriteData(0x3a);
LcdWriteCom(0x80+0x43);LcdWriteData('0'+b3);
LcdWriteCom(0x80+0x44);LcdWriteData('0'+b4);
LcdWriteCom(0x80+0x45);LcdWriteData(0x3a);
LcdWriteCom(0x80+0x46);LcdWriteData('0'+b5);
LcdWriteCom(0x80+0x47);LcdWriteData('0'+b6);
}
if(KeyValue==12) //显示预设闹钟的日期和时间
{
LcdWriteCom(0x80);LcdWriteData('0'+c1);
LcdWriteCom(0x80+0x01);LcdWriteData('0'+c2);
LcdWriteCom(0x80+0x02);LcdWriteData('0'+c3);
LcdWriteCom(0x80+0x03);LcdWriteData('0'+c4);
LcdWriteCom(0x80+0x04);LcdWriteData(0x2f);
LcdWriteCom(0x80+0x05);LcdWriteData('0'+c5);
LcdWriteCom(0x80+0x06);LcdWriteData('0'+c6);
LcdWriteCom(0x80+0x07);LcdWriteData(0x2f);
LcdWriteCom(0x80+0x08);LcdWriteData('0'+c7);
LcdWriteCom(0x80+0x09);LcdWriteData('0'+c8);
LcdWriteCom(0x80+0x40);LcdWriteData('0'+d1);
LcdWriteCom(0x80+0x41);LcdWriteData('0'+d2);
LcdWriteCom(0x80+0x42);LcdWriteData(0x3a);
LcdWriteCom(0x80+0x43);LcdWriteData('0'+d3);
LcdWriteCom(0x80+0x44);LcdWriteData('0'+d4);
LcdWriteCom(0x80+0x45);LcdWriteData(0x3a);
LcdWriteCom(0x80+0x46);LcdWriteData('0'+d5);
LcdWriteCom(0x80+0x47);LcdWriteData('0'+d6);
}
if(KeyValue==14) //修改显示时间
{ LcdWriteCom(0x80);LcdWriteData(0x01);
LcdWriteCom(0x80+0x01);LcdWriteData(0x01);
LcdWriteCom(0x80+0x02);LcdWriteData(0x01);
LcdWriteCom(0x80+0x03);LcdWriteData(0x01);
LcdWriteCom(0x80+0x04);LcdWriteData(0x2f);
LcdWriteCom(0x80+0x05);LcdWriteData(0x01);
LcdWriteCom(0x80+0x06);LcdWriteData(0x01);
LcdWriteCom(0x80+0x07);LcdWriteData(0x2f);
LcdWriteCom(0x80+0x08);LcdWriteData(0x01);
LcdWriteCom(0x80+0x09);LcdWriteData(0x01);
LcdWriteCom(0x80+0x40);LcdWriteData(0x01);
LcdWriteCom(0x80+0x41);LcdWriteData(0x01);
LcdWriteCom(0x80+0x42);LcdWriteData(0x3a);
LcdWriteCom(0x80+0x43);LcdWriteData(0x01);
LcdWriteCom(0x80+0x44);LcdWriteData(0x01);
LcdWriteCom(0x80+0x45);LcdWriteData(0x3a);
LcdWriteCom(0x80+0x46);LcdWriteData(0x01);
LcdWriteCom(0x80+0x47);LcdWriteData(0x01);
biaozhi=0;
while(biaozhi<29)
{KeyScan();
if(KeyValue==11) //判断是否为退格键,若为退格键,按照biaozhi的值退格相应的位置
{switch(biaozhi){case(3):LcdWriteCom(0x80);LcdWriteData(0x01);biaozhi=0;break;
case(5):LcdWriteCom(0x80+0x01);LcdWriteData(0x01);biaozhi=2;break;
case(7):LcdWriteCom(0x80+0x02);LcdWriteData(0x01);biaozhi=4;break;
case(9):LcdWriteCom(0x80+0x03);LcdWriteData(0x01);biaozhi=6;break;//年
case(11):LcdWriteCom(0x80+0x05);LcdWriteData(0x01);biaozhi=8;break;
case(13):LcdWriteCom(0x80+0x06);LcdWriteData(0x01);biaozhi=10;break;//月
case(15):LcdWriteCom(0x80+0x08);LcdWriteData(0x01);biaozhi=12;break;
case(17):LcdWriteCom(0x80+0x09);LcdWriteData(0x01);biaozhi=14;break;//日
case(19):LcdWriteCom(0x80+0x40);LcdWriteData(0x01);biaozhi=16;break;
case(21):LcdWriteCom(0x80+0x41);LcdWriteData(0x01);biaozhi=18;break;//时
case(23):LcdWriteCom(0x80+0x43);LcdWriteData(0x01);biaozhi=20;break;
case(25):LcdWriteCom(0x80+0x44);LcdWriteData(0x01);biaozhi=22;break;//分
case(27):LcdWriteCom(0x80+0x46);LcdWriteData(0x01);biaozhi=24;break;
case(29):LcdWriteCom(0x80+0x47);LcdWriteData(0x01);biaozhi=26;break;//秒
}
}
while(biaozhi==1)
{a1=KeyValue;LcdWriteCom(0x80);LcdWriteData('0'+a1);biaozhi++;}
while(biaozhi==3)
{a2=KeyValue;LcdWriteCom(0x80+0x01);LcdWriteData('0'+a2);biaozhi++;}
while(biaozhi==5)
{a3=KeyValue;LcdWriteCom(0x80+0x02);LcdWriteData('0'+a3);biaozhi++;}
while(biaozhi==7)
{a4=KeyValue;LcdWriteCom(0x80+0x03);LcdWriteData('0'+a4);biaozhi++;} //输入年
while(biaozhi==9)
{a5=KeyValue;LcdWriteCom(0x80+0x05);LcdWriteData('0'+a5);biaozhi++;}
while(biaozhi==11)
{a6=KeyValue;LcdWriteCom(0x80+0x06);LcdWriteData('0'+a6);biaozhi++;} //输入月
while(biaozhi==13)
{a7=KeyValue;LcdWriteCom(0x80+0x08);LcdWriteData('0'+a7);biaozhi++;}
while(biaozhi==15)
{a8=KeyValue;LcdWriteCom(0x80+0x09);LcdWriteData('0'+a8);biaozhi++;} //输入日
while(biaozhi==17)
{b1=KeyValue;LcdWriteCom(0x80+0x40);LcdWriteData('0'+b1);biaozhi++;}
while(biaozhi==19)
{b2=KeyValue;LcdWriteCom(0x80+0x41);LcdWriteData('0'+b2);biaozhi++;} //输入时
while(biaozhi==21)
{b3=KeyValue;LcdWriteCom(0x80+0x43);LcdWriteData('0'+b3);biaozhi++;}
while(biaozhi==23)
{b4=KeyValue;LcdWriteCom(0x80+0x44);LcdWriteData('0'+b4);biaozhi++;} //输入分
while(biaozhi==25)
{b5=KeyValue;LcdWriteCom(0x80+0x46);LcdWriteData('0'+b5);biaozhi++;}
while(biaozhi==27)
{b6=KeyValue;LcdWriteCom(0x80+0x47);LcdWriteData('0'+b6);biaozhi++;} //输入秒
}
}
if(KeyValue==13) //修改闹钟时间
{ LcdWriteCom(0x80);LcdWriteData(0x01);
LcdWriteCom(0x80+0x01);LcdWriteData(0x01);
LcdWriteCom(0x80+0x02);LcdWriteData(0x01);
LcdWriteCom(0x80+0x03);LcdWriteData(0x01);
LcdWriteCom(0x80+0x04);LcdWriteData(0x2f);
LcdWriteCom(0x80+0x05);LcdWriteData(0x01);
LcdWriteCom(0x80+0x06);LcdWriteData(0x01);
LcdWriteCom(0x80+0x07);LcdWriteData(0x2f);
LcdWriteCom(0x80+0x08);LcdWriteData(0x01);
LcdWriteCom(0x80+0x09);LcdWriteData(0x01);
LcdWriteCom(0x80+0x40);LcdWriteData(0x01);
LcdWriteCom(0x80+0x41);LcdWriteData(0x01);
LcdWriteCom(0x80+0x42);Lc
基于51单片机简易电子时钟
需积分: 50 25 浏览量
2018-07-13
23:58:23
上传
评论 18
收藏 2.93MB RAR 举报
qq_38212917
- 粉丝: 0
- 资源: 1
最新资源
- 04-3.网络安全基础知识-计算机病毒
- 01-网络安全-简介!
- 97-97.等级保护之等保流程以及渗透测试报告编写
- tensorflow-gpu-2.2.1-cp37-cp37m-win-amd64.whl
- tensorflow-gpu-2.5.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-gpu-2.2.2-cp38-cp38-win-amd64.whl
- 扫雷C语言代码,可自己调节难度
- 【Pandas教程】Python-getting-started-with-Numpy-Pandas.zip
- 植物大战僵尸1.0 python代码
- 基于MSP430单片机的多功能复费率电表及上位机系统设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈