用数码管设计的可调式电子钟
时间:2025-06-10
时间:2025-06-10
单片机课程设计,用数码管设计的可调式电子钟,可循环显示日期,时间和"HELLO^_^",四个按键,电路简单,可以做的很小,成本在15元左右,protues 仿真,keil······
单片机课程设计,用数码管设计的可调式电子钟,可循环显示日期,时间和"HELLO^_^",四个按键,电路简单,可以做的很小,成本在15元左右,protues 仿真,keil······
文件一:
//用数码管设计的可调式电子钟
//2011年11月28日
//长春大学光华学院
//电气四班
//薛龙飞
/***********************************************************
说明:K1键第一次按下时,切换到秒调整模式;
第二次按下时,切换到分调整模式;
第三次按下时,切换到时调整模式;
第四次按下时,调整完毕正常运行。
K4键第一次按下时,切换到日调整模式;
第二次按下时,切换到月调整模式;
第三次按下时,切换到年调整模式;
第四次按下时,调整完毕正常运行。
K2键按下时实现“增大”抄作。
K3键按下时实现“减小”抄作。
***********************************************************/
#include<reg52.h>
#include<intrins.h>
#include"K2.h"
#include"K3.h"
#include"K4.h"
/**************************************************
主程序
***************************************************/
void main()
{ uchar k=0,j=0;
INIT();
while(1)
{
if(P1^KEY_STATE)
{
DELAY(10);
if(P1^KEY_STATE)
{
KEY_STATE=P1;
EA=0;
if((KEY_STATE & 0X01)==0)
{
k=(k+1)%4;
}
switch(k)
单片机课程设计,用数码管设计的可调式电子钟,可循环显示日期,时间和"HELLO^_^",四个按键,电路简单,可以做的很小,成本在15元左右,protues 仿真,keil······
case 0:if((KEY_STATE & 0X02)==0) break; else if((KEY_STATE & 0X04)==0) break; case 1:if((KEY_STATE & 0X02)==0) //秒调整"+" { s=(s+1)%60; DSY_BUFFER[0][6]=DSY_CODE[s/10]; DSY_BUFFER[0][7]=DSY_CODE[s%10]; } else if((KEY_STATE & 0X04)==0) //秒调整"-" { if((0<s)&&(s<=60)) {s=s-1;} DSY_BUFFER[0][6]=DSY_CODE[s/10]; DSY_BUFFER[0][7]=DSY_CODE[s%10]; } break; case 2:if((KEY_STATE & 0X02)==0) //分钟调整"+" { m=(m+1)%60; DSY_BUFFER[0][3]=DSY_CODE[m/10]; DSY_BUFFER[0][4]=DSY_CODE[m%10]; } else if((KEY_STATE & 0X04)==0) //分钟调整"-" { if((0<m)&&(m<=60)) {m=m-1;} DSY_BUFFER[0][3]=DSY_CODE[m/10]; DSY_BUFFER[0][4]=DSY_CODE[m%10]; } break; case 3:if((KEY_STATE & 0X02)==0) //小时调整"+" { h=(h+1)%24; DSY_BUFFER[0][0]=DSY_CODE[h/10]; DSY_BUFFER[0][1]=DSY_CODE[h%10]; } else if((KEY_STATE & 0X04)==0) //小时调整"-" { if((0<h)&&(h<=23)) {h=h-1;} DSY_BUFFER[0][0]=DSY_CODE[h/10];
单片机课程设计,用数码管设计的可调式电子钟,可循环显示日期,时间和"HELLO^_^",四个按键,电路简单,可以做的很小,成本在15元左右,protues 仿真,keil······
} break; } if((KEY_STATE & 0X08)==0) { j=(j+1)%4; } switch(j) { case 0:if((KEY_STATE & 0X02)==0) break; else if((KEY_STATE & 0X04)==0) break;
case 1:if((KEY_STATE & 0X02)==0) //日调整"+" {
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&(++day>31))
{
day=(day+1)%31;
}
else
if((month==2||month==4||month==6||month==9||month==11)&&(++day>30))
{
day=(day+1)%30;
}
DSY_BUFFER[1][6]=DSY_CODE[day/10];
DSY_BUFFER[1][7]=DSY_CODE[day%10]; }
else if((KEY_STATE & 0X04)==0) //日调整"-" { if((1<day)&&(day<=31)) {day=day-1;} DSY_BUFFER[1][6]=DSY_CODE[day/10]; DSY_BUFFER[1][7]=DSY_CODE[day%10]; } break; case 2:if((KEY_STATE & 0X02)==0) //月调整"+" { month=(month+1)%13; DSY_BUFFER[1][3]=DSY_CODE[month/10];
单片机课程设计,用数码管设计的可调式电子钟,可循环显示日期,时间和"HELLO^_^",四个按键,电路简单,可以做的很小,成本在15元左右,protues 仿真,keil······
}
} } } } else if((KEY_STATE & 0X04)==0) //月调整"-" { if((1<month)&&(month<=12)) {month=month-1;} DSY_BUFFER[1][3]=DSY_CODE[month/10]; DSY_BUFFER[1][4]=DSY_CODE[month%10]; } break; case 3:if((KEY_STATE & 0X02)==0) //年调整"+" { year=year+1; DSY_BUFFER[1][0]=DSY_CODE[year/10]; DSY_BUFFER[1][1]=DSY_CODE[year%10]; } else if((KEY_STATE & 0X04)==0) //年调整"-" { year=year-1; DSY_BUFFER[1][0]=DSY_CODE[year/10]; DSY_BUFFER[1][1]=DSY_CODE[year%10]; } break; } EA=1;
文件二:
#define uchar unsigned char
#define uint unsigned int
//数码管段码
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //显示缓冲 00-00-00 (0xbf为“-”的段码)
uchar DSY_BUFFER[3][8]={
{0,0,0XBF,0,0,0XBF,0,0},
{0,0,0XBF,0,0,0XBF,0,0},
{0X89,0X86,0XC7,0XC7,0XC0,0XDC,0XF7,0XDC}
};
单片机课程设计,用数码管设计的可调式电子钟,可循环显示日期,时间和"HELLO^_^",四个按键,电路简单,可以做的很小,成本在 …… 此处隐藏:5626字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:我的大学,我的摄影
下一篇:塔吊专项施工方案(最新版)