当前位置:
文档之家› 基于51单片机开发板的电子时钟的C语言源程序
基于51单片机开发板的电子时钟的C语言源程序
} if(num==2)
{
fen++; if(fen==60) fen=0;//满 60,清零 write(6,fen);//重新写秒数据 wcode(0xc7);//写地址 } if(num==3) { shi++; if(shi==24) shi=0;//满 24,清零 write(3,shi);//重新写秒数据 wcode(0xc4);//写地址 } } } //***************************减键控制************************************ //功能:减键按下,时分秒对应减一 if(jian==0) { delay(5); if(jian==0) while(!jian); beep(); if(num==1) { miao--; if(miao==-1)
} //*************************************************************************** //功能:功能键控制时分秒的地址移动,加键控制时分秒加,减键控制减 //*************************************************************************** void keyscan() {
//功能:向 LCD 写一命令
//***************************************************************************
wcode(uchar t)
{
rs=0; // 写的是命令
rw=0;
// 写状态
e=1;
P1=t;
delay(10);
miao=59;//减到-1,退到 59 write(9,miao);//重新写秒数据 wcode(0xca);//写秒地址 } if(num==2) { fen--; if(fen==-1) fen=59;//减到-1,退到 59 write(6,fen);//重新分秒数据 wcode(0xc7);//写分地址 } if(num==3) { shi--; if(shi==-1)
delay(uint z) {
uint i,j;
for(i=0;i<z;i++)
for(j=0;j<120;j++);
}
//***************************************************************************
//功能:在按键按下时,蜂鸣器响
di=0; if(gongneng==0) { delay(5);//延时去抖
if(gongneng==0) {
while(!gongneng); num++;//计数 beep();//滴滴响
if(num==1) {
TR0=0;//关闭定时器 wcode(0xca);//秒的地址 wcode(0x0f);//光标闪烁 } if(num==2) {
} //*************************************************************************** //功能:定时 50ms //*************************************************************************** timer0() interrupt 1 using 1 //使用定时器 0 对各运行时间进行计时 {
//*********************************电子秒表设计****************************** //***************************作者鱼展 2011 年 4 月 16 日*************************** //***************************修改鱼展 2011 年 4 月 16 日*************************** //程序功能:4*4 键盘的驱动,用其中几个来控制时间的加减 // 按键 扫描结果 | 按键 扫描结果| 按键 扫描结果 | 按键 扫描结果 // S1 0XEE | S5 0XDE | S9 0XBE | S13 0X7E // S2 0XED | S6 0XDD | S10 0XBD | S14 0X7D // S3 0XEB | S7 0XDB | S11 0XBB | S15 0X7B // S4 0XE7 | S8 0XD7 | S12 0XB7 | S16 0X77 // 从 4*4 键盘中分离四个键盘,将 P3^5=0,则 S5 代表功能键,S6 代表加,S7 代表减 //*************************************************************************** //头文件,宏定义 //*************************************************************************** #include<reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int //*************************************************************************** //端口定义 //*************************************************************************** sbit rs=P0^0; sbit rw=P0^1; sbit e=P0^2; sbit gongneng=P3^0; sbit jia=P3^1; sbit jian=P3^2; sbit di=P3^5; sbit feng=P0^4; //*************************************************************************** //第一行,第二行显示设置,变量定义 //*************************************************************************** uchar data dis1[13]={"2011 4 16 SAT"}; uchar data dis2[11]={" 00:00:00"};
//***************************************************************************
beep()
{
feng=1;
delay(50);
feng=0;
}
//***************************************************************************
if(num!=0) {
if(jia==0) { delay(5);
if(jia==0) {
while(!jia); beep(); if(num==1)
{ miao++; if(miao==60) miao=0; //满 60,清零 write(9,miao);//重新写秒数据 wcode(0xca);//写地址
e=0; //数据的锁定
}
//***************************************************************************
//功能:向 LCD 写一数据
//***************************************************************************
wcode(0xc7);//分的地址 } if(num==3) {
wcode(0xc4);//时的地址 } if(num==4) {
num=0;//计数清零 wcode(0x0c);//关闭光标 TR0=1;//启动定时器 } } } //*******************************加键控制******************************* //功能:加键按下,时分秒对应加一
uint Data[10] = {0x0030,0x0031,0x0032,0x0033,0x0034,0x0035, 0x0036,0x0037,0x0038,0x0039};
uchar num; char hao,miao,fen,shi; //*************************************************************************** //功能:延时函数 //***************************************************************************
TH0=(65536-50000)/256; //每次中断延时 10MS
TL0=(65536-50000)%256; hao++; if(hao==20) { hao=0; miao++; if(miao==60) { miao=0;//满 60 秒,分加一 fen++; if(fen==60) { fen=0;//满 60 分,时加一 shi++; if(shi==24) { shi=0;//到 24 时,清零 } write(3,shi);//写时地址 } write(6,fen);//写分地址 } write(9,miao);//写秒地址 }