资源简介
以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:
(1) 计时:秒、分、时、天、周、月、年。
(2) 闰年自动判别。
(3) 可调时分秒年月日周。
(4) 时间、月、日交替显示。
(5) 自定任意时刻自动开/关屏。
(6) 计时精度:误差≤1秒/月(具有微调设置)。
(7) 定时闹钟
代码片段和文件信息
#include “DS1302.h“
#include “LM061L.h“
#include “Keyboard.h“
#include “absacc.h“//for debug
sbit P3_7 = P3^7;
uchar init_time[] = {0x000x500x110x260x060x030x18};//initial the time (Format:SSMMHHDDmmWWYY)
uchar code DIG_CODE[10]={0x300x310x320x330x340x350x360x370x380x39}; //hexadecimal nums for displaying on screen
uchar disp[8]={0x3f0x3f0x3f0x3f0x3f0x3f0x3f0x3f};//an array for saving time
uchar disp1[13]={0x3f0x3f0x3f0x3f0x3f0x3f0x3f0x3f0x3f0x3f};//an array for saving date
uint count_flag = 0; //count interupt
uchar countTimers[7]; //for saving the time you wanna shut down the screen
uchar tempTimers1[8];
uchar tempTimers2[13];
uchar clockTimers[7];
uchar input_flag = 0; // 1 2 3 4
uchar screenCls = 0;// state of sctreen (0 means shut down the screen)
uchar isScreenCls = 0;// whether settingScreen is lunched(0 means No)
uchar clock = 0;
uchar isClock = 0;
uchar pos = 0;//record the times of these nums you input
uchar isSave = 0;
uchar turn_flag = 0xff;
uchar time_mode = 0; // 0: 24M 1: 12M
void timer1_stop();
void timer1_init();
void display();//convert to hexadecimal nums which LCD can display;
void delay1ms(uint ms);
void chooseFunc(uchar key);//choose function
void settingTime();
void settingScreen();
void inputDigit(uchar key);//Convert key input by user to hexadecimal nums which LCD can display and show them;
uchar convertToDecimal(uchar c);//Hexadecimal to decimal
uchar convertToHexadecimal(uchar h uchar l);//Decimal to hexadecimal
//****************************main****************************
void main(void){
init_ds1302(); //initiate DS1302
delay1ms(100);
init_LM061L(); //initiate LM016L
timer1_init(); //initiate timer1
ds1302_writedata(2 0x00); // 24M
time_mode = 0;
while(1){
display();
kbScan();
}
}
//****************************convertToDecimal
uchar convertToDecimal(uchar c){
uchar i;
for(i = 0; i < 4; i++){
if(c == 1){
return i;
}
c = c >> 1;
}
return 0;
}
//****************************convertToHexadecima
uchar convertToHexadecimal(uchar h uchar l){
return (h << 4) + (l & 0x0f);
}
void inputFunc(uchar key){
uchar oldVal;
isSave = 1;
if(turn_flag == 0xff){
oldVal = DIG_CODE[key];
if(pos < 8){
tempTimers1[pos] = oldVal;
}
else{
tempTimers2[pos - 8] = oldVal;
}
//WriteCMD(0x06);
WriteData(oldVal);
if(pos < 8){
WriteCMD(0x80 + pos);
}
else{
WriteCMD(0x80 + 0x40 + pos - 8);
}
}else{
if(turn_flag == 0)
turn_flag = 1;
else
turn_flag = 0;
//WriteCMD(0x84 + pos);
WriteData(turn_flag | 0x30);
WriteCMD(0x86);
}
delay1ms(200);
}
void menuFunc(){
uchar i;
if(input_flag == 0){
isSave = 0;
input_flag = 1;
pos = 0;
display();
WriteCMD(0x01);
WriteCMD(0x80+15);
WriteData(‘T‘);
WriteCMD(0x80);
for(i=0;i<8;i++){
tempTimers1[i] = disp[i];
WriteData(disp[i]);
}
WriteCMD(0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-07-25 22:43 智能时钟4x4-super-power\
文件 24332 2018-06-25 22:11 智能时钟4x4-super-power\Backup Of SDC2.pdsbak
目录 0 2018-07-01 12:37 智能时钟4x4-super-power\Keil\
文件 2393 2018-06-26 11:38 智能时钟4x4-super-power\Keil\DS1302.h
文件 1237 2018-06-27 15:55 智能时钟4x4-super-power\Keil\Keyboard.h
目录 0 2018-06-27 22:23 智能时钟4x4-super-power\Keil\Listings\
文件 1553 2018-06-24 23:46 智能时钟4x4-super-power\Keil\Listings\DELAY1MS.lst
文件 22172 2018-06-27 22:23 智能时钟4x4-super-power\Keil\Listings\MAIN.lst
文件 36716 2018-06-27 22:23 智能时钟4x4-super-power\Keil\Listings\SDC.m51
文件 14546 2018-06-27 22:23 智能时钟4x4-super-power\Keil\Listings\STARTUP.lst
文件 1514 2018-06-26 11:38 智能时钟4x4-super-power\Keil\LM061L.h
文件 12126 2018-06-27 22:23 智能时钟4x4-super-power\Keil\MAIN.c
目录 0 2018-06-27 22:23 智能时钟4x4-super-power\Keil\ob
文件 409 2018-06-24 23:46 智能时钟4x4-super-power\Keil\ob
文件 19 2018-06-25 15:20 智能时钟4x4-super-power\Keil\ob
文件 38588 2018-06-27 22:23 智能时钟4x4-super-power\Keil\ob
文件 32754 2018-06-27 22:23 智能时钟4x4-super-power\Keil\ob
文件 1564 2018-06-27 22:23 智能时钟4x4-super-power\Keil\ob
文件 7117 2018-06-27 22:23 智能时钟4x4-super-power\Keil\ob
文件 113 2018-06-27 22:23 智能时钟4x4-super-power\Keil\ob
文件 819 2018-06-27 22:23 智能时钟4x4-super-power\Keil\ob
文件 167674 2018-07-01 12:37 智能时钟4x4-super-power\Keil\SDC.uvgui.99752
文件 168807 2018-06-26 11:55 智能时钟4x4-super-power\Keil\SDC.uvgui.Administrator
文件 6702 2018-06-26 11:41 智能时钟4x4-super-power\Keil\SDC.uvopt
文件 14373 2018-06-26 11:54 智能时钟4x4-super-power\Keil\SDC.uvproj
文件 6376 2016-04-01 17:01 智能时钟4x4-super-power\Keil\STARTUP.A51
文件 21777 2018-06-28 13:24 智能时钟4x4-super-power\Last Loaded SDC.pdsbak
文件 25007 2018-06-25 00:08 智能时钟4x4-super-power\Last Loaded SDC2.pdsbak
文件 21788 2018-06-29 18:28 智能时钟4x4-super-power\SDC.pdsprj
文件 2726 2018-06-30 00:45 智能时钟4x4-super-power\SDC.pdsprj.KIRAYOSHIKAGE.99752.workspace
- 上一篇:PCL1.8 vs2013 CMAKE源码编译教程
- 下一篇:八木天线计算器汉化版
相关资源
- 基于单片机的温湿度1602显示
- HC6800-ESV2.0
- 51单片机闹钟
- 51单片机 心形花样流水灯程序
- 矩阵键盘4*3
- stc89c51AD库
- 四位数码管时钟程序
- 数控直流电压源
- BC28+51单片机的原理图
- 12864频谱显示程序
- 51单片机控制电机的转速转向以及启停
- 郭天祥10天学会PIC单片机.
- dxp单片机元件库
- 基于单片机和ds18b20温度传感器的温度
- 基于PID算法的电加热炉温度控制仿真
- STM32F1灭火小车程序-灭火机器人
- STC89C52RC 智能家居设计(GSM+人体红外
- 单片机实现裁判三人表决器的设计程
- 51单片机双机通信
- 单片机课程设计电子时钟
- 1602LCD 库文件
- 基于单片机的功率因数检测电路设计
- 51开发板密码锁
- 单片机控制舵机程序
- STC89C51采集DS18B20温度控制继电器
- 基于单片机的洗衣机控制系统设计
- 关于单片机的超声波测速系统的设计
- stc89c52 蓝牙控制源码
- 基于51单片机的心形流水灯仿真
- 51单片机控制CS5463程序
评论
共有 条评论