基于普中开发版的多功能闹钟
资源文件列表(大概)
gckz1 - 副本 -4 - 副本/.vscode/
-
gckz1 - 副本 -4 - 副本/.vscode/c_cpp_properties.json
968B
gckz1 - 副本 -4 - 副本/.vscode/keil-assistant.log
869B
gckz1 - 副本 -4 - 副本/.vscode/settings.json
190B
gckz1 - 副本 -4 - 副本/.vscode/uv4.log
234B
gckz1 - 副本 -4 - 副本/.vscode/uv4.log.lock
18B
gckz1 - 副本 -4 - 副本/~$$绘图19.~vsdx
4KB
gckz1 - 副本 -4 - 副本/2021213201.c
8.97KB
gckz1 - 副本 -4 - 副本/2021213201.uvgui.86159
182.85KB
gckz1 - 副本 -4 - 副本/2021213201.uvopt
29.49KB
gckz1 - 副本 -4 - 副本/2021213201.uvproj
16.87KB
gckz1 - 副本 -4 - 副本/24c02.c
1.74KB
gckz1 - 副本 -4 - 副本/24c02.h
208B
gckz1 - 副本 -4 - 副本/delay.c
765B
gckz1 - 副本 -4 - 副本/delay.h
124B
gckz1 - 副本 -4 - 副本/ds1302.c
4.58KB
gckz1 - 副本 -4 - 副本/ds1302.h
432B
gckz1 - 副本 -4 - 副本/findnumber copy.c
6.28KB
gckz1 - 副本 -4 - 副本/findnumber.c
3.74KB
gckz1 - 副本 -4 - 副本/findnumber.h
153B
gckz1 - 副本 -4 - 副本/iic.c
3.6KB
gckz1 - 副本 -4 - 副本/iic.h
493B
gckz1 - 副本 -4 - 副本/ired.c
2.65KB
gckz1 - 副本 -4 - 副本/ired.h
151B
gckz1 - 副本 -4 - 副本/key.c
1.36KB
gckz1 - 副本 -4 - 副本/key.h
109B
gckz1 - 副本 -4 - 副本/lcd1602.c
4.22KB
gckz1 - 副本 -4 - 副本/lcd1602.h
516B
gckz1 - 副本 -4 - 副本/Listings/
-
gckz1 - 副本 -4 - 副本/Listings/2021213201.lst
25.58KB
gckz1 - 副本 -4 - 副本/Listings/2021213201.m51
79.08KB
gckz1 - 副本 -4 - 副本/Listings/2021213201.map
129.08KB
gckz1 - 副本 -4 - 副本/Listings/24c02.lst
4.02KB
gckz1 - 副本 -4 - 副本/Listings/delay.lst
1.96KB
gckz1 - 副本 -4 - 副本/Listings/ds1302.lst
10.41KB
gckz1 - 副本 -4 - 副本/Listings/findnumber.lst
7.3KB
gckz1 - 副本 -4 - 副本/Listings/iic.lst
7.3KB
gckz1 - 副本 -4 - 副本/Listings/ired.lst
7.73KB
gckz1 - 副本 -4 - 副本/Listings/key.lst
6.25KB
gckz1 - 副本 -4 - 副本/Listings/lcd1602.lst
8.65KB
gckz1 - 副本 -4 - 副本/Listings/STARTUP.lst
13.82KB
gckz1 - 副本 -4 - 副本/Listings/xpt2046.lst
4.79KB
gckz1 - 副本 -4 - 副本/Objects/
-
gckz1 - 副本 -4 - 副本/Objects/2021213201
69.15KB
gckz1 - 副本 -4 - 副本/Objects/2021213201.__i
125B
gckz1 - 副本 -4 - 副本/Objects/2021213201.build_log.htm
1.03KB
gckz1 - 副本 -4 - 副本/Objects/2021213201.hex
19.8KB
gckz1 - 副本 -4 - 副本/Objects/2021213201.lnp
354B
gckz1 - 副本 -4 - 副本/Objects/2021213201.obj
25.41KB
gckz1 - 副本 -4 - 副本/Objects/24c02.__i
110B
gckz1 - 副本 -4 - 副本/Objects/24c02.obj
5.15KB
gckz1 - 副本 -4 - 副本/Objects/delay.__i
110B
gckz1 - 副本 -4 - 副本/Objects/delay.obj
1.11KB
gckz1 - 副本 -4 - 副本/Objects/ds1302.__i
113B
gckz1 - 副本 -4 - 副本/Objects/ds1302.obj
10.19KB
gckz1 - 副本 -4 - 副本/Objects/findnumber.__i
125B
gckz1 - 副本 -4 - 副本/Objects/findnumber.obj
9.08KB
gckz1 - 副本 -4 - 副本/Objects/iic.__i
104B
gckz1 - 副本 -4 - 副本/Objects/iic.obj
4.95KB
gckz1 - 副本 -4 - 副本/Objects/ired.__i
107B
gckz1 - 副本 -4 - 副本/Objects/ired.obj
6.66KB
gckz1 - 副本 -4 - 副本/Objects/key.__i
104B
gckz1 - 副本 -4 - 副本/Objects/key.obj
5.19KB
gckz1 - 副本 -4 - 副本/Objects/lcd1602.__i
116B
gckz1 - 副本 -4 - 副本/Objects/lcd1602.obj
7.31KB
gckz1 - 副本 -4 - 副本/Objects/STARTUP.obj
819B
gckz1 - 副本 -4 - 副本/Objects/xpt2046.__i
116B
gckz1 - 副本 -4 - 副本/Objects/xpt2046.obj
5.35KB
gckz1 - 副本 -4 - 副本/STARTUP.A51
6.23KB
gckz1 - 副本 -4 - 副本/xpt2046.c
2.2KB
gckz1 - 副本 -4 - 副本/xpt2046.h
243B
gckz1 - 副本 -4 - 副本/绘图19.vsdx
46.17KB
资源内容介绍
这里面底层驱动用的普中开发版的(有修改),其他的自己写的,矩阵键盘这些也是自己写的消抖比较好,另外我把u8,u16的定义直接放reg52.h里面了 #include "ired.h"#include "key.h"#include "ds1302.h"#include "24c02.h"#include "stdio.h"#include "lcd1602.h"#include "xpt2046.h"#include "findnumber.h"sbit motor=P3^1;sbit buzzer=P2^5;sbit sour=P3^3;u8 keynow=0;u8 jel=0,df=1;u8 temp=0,light=0,uu=0;u8 fond4_anas=0,fond4_addre=0;//u8 gsmg_code[37] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x61};u8 number_str[17]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x61};u8 nuber_second[17]={0};u8 smg_find(u8 k){u8 y;switch(k){case 0:y=0x3f;break;case 1:y=0x06;break;case 2:y=0x5b;break;case 3:y=0x4f;break;case 4:y=0x66;break;case 5:y=0x6d;break;case 6:y=0x7d;break;case 7:y=0x07;break;case 8:y=0x7f;break;case 9:y=0x6f;break;case 10:y=0x77;break;case 11:y=0x7c;break;case 12:y=0x39;break;case 13:y=0x5e;break;case 14:y=0x79;break;case 15:y=0x71;break;case 16:y=0x61;break;}return y;}void lcdword(u8 k){if(k<=4){switch(k){case 0:strcpy(number_str,"1:close 2:sen ");strcpy(nuber_second,"3:exe 4:TIM ");break;case 1:strcpy(number_str,"if you want to "); strcpy(nuber_second,"10:enter ");break;case 2:sprintf(number_str, "TP:%4d rev:5", (int)temp); // ������ i ת��Ϊ�ַ������洢�� number_str ��sprintf(nuber_second, "lg:%4d rev:6", (int)light); // ������ i ת��Ϊ�ַ������洢�� number_str ��break;case 3:strcpy(number_str,"B: M: C: 9"); // ��� uu �ĵ�3λ����0��ʼ������ң�ؿ���if (uu & 4) {number_str[12] = 'O'; // J��ס"K"��Ҫ��number_str[13] = 'K';} else {number_str[12] = 'N';number_str[13] = 'O';}// ��� uu �����λ ������if (uu & 1) {number_str[2] = 'O';number_str[3] = 'K';} else {number_str[2] = 'N';number_str[3] = 'O';}// ��� uu �ĵ�2λ ���if (uu & 2) {number_str[7] = 'O';number_str[8] = 'K';} else {number_str[7] = 'N';number_str[8] = 'O';}strcpy(nuber_second,"re:5 re:6 re:7 R");break;case 4:strcpy(number_str,"5:cl 6:rev 7:at ");switch(fond4_addre++){case 1:fond4_anas=ds1302_read_byte(6)%10;nuber_second[0]=fond4_anas+'0';nuber_second[1]='-';break;case 2:fond4_anas=ds1302_read_byte(4)%100;nuber_second[2]=fond4_anas/10+'0';nuber_second[3]=fond4_anas%10+'0';nuber_second[4]='-';break;case 3:fond4_anas=ds1302_read_byte(3)%100;nuber_second[5]=fond4_anas/10+'0';nuber_second[6]=fond4_anas%10+'0';nuber_second[7]='-';break;case 4://ds1302_read_time(2);fond4_anas=ds1302_read_byte(2)%100;nuber_second[8]=fond4_anas/10+'0';nuber_second[9]=fond4_anas%10+'0';nuber_second[10]='-';break;case 5:fond4_anas=ds1302_read_byte(1)%100;nuber_second[11]=fond4_anas/10+'0';nuber_second[12]=fond4_anas%10+'0';nuber_second[13]='-';break;case 6:fond4_anas=ds1302_read_byte(0)%100;nuber_second[14]=fond4_anas/10+'0';nuber_second[15]=fond4_anas%10+'0';break;}fond4_addre%=7;break;}}else if(k<7){strcpy(number_str,"5:+ 6:- 7:cl ");if(k==5){if(temp)sprintf(nuber_second, "TP:%4d 9:return", (int)temp);elsestrcpy(nuber_second, "TP:clos 9:return");}else{if(light)sprintf(nuber_second, "lg:%4d 9:return", (int)light); elsestrcpy(nuber_second,"lg:clos 9:return");}}else if(k==7){strcpy(number_str,"TB: rev:5 9:RE");if ((uu & 8) != 0) {number_str[3] = 'O';number_str[4] = 'K';} else {number_str[3] = 'N';number_str[4] = 'O';}strcpy(nuber_second,"LM: rev:6 TURN");if ((uu & 16) != 0) {nuber_second[3] = 'O';nuber_second[4] = 'K';} else {nuber_second[3] = 'N';nuber_second[4] = 'O';}}else if(k<15){strcpy(number_str,"5:+ 6:- 7:L 8:R");//ds1302_read_time(14-k);fond4_anas=ds1302_read_byte(14-k);switch(k){case 8:sprintf(nuber_second, "year:%4d 9:re", (int)fond4_anas);break;case 9:sprintf(nuber_second, "week:%4d 9:re", (int)fond4_anas);break;case 10: sprintf(nuber_second, "month:%3d 9:re", (int)fond4_anas);break;case 11: sprintf(nuber_second, "day:%3d 9:re", (int)fond4_anas);break;case 12: sprintf(nuber_second, "hour:%3d 9:re", (int)fond4_anas);break;case 13: sprintf(nuber_second, "min:%3d 9:re", (int)fond4_anas);break;case 14: sprintf(nuber_second, "second:%3d 9:re", (int)fond4_anas); break;}}else if(k==15){fond4_addre%=8;strcpy(number_str,"5:t 6:+ 7:L 8:R");fond4_anas=at24c02_read_byte(58);if(fond4_addre==7)sprintf(nuber_second+7,"%4d 9:re", (int) (week+1));elsenuber_second[fond4_addre]=(fond4_anas & (1<<fond4_addre)) ? '1' : '0';;fond4_addre++;}else{strcpy(number_str,"5:+ 6:- 7:L 8:R");switch(k){case 16:fond4_anas=at24c02_read_byte(54);sprintf(nuber_second, "hour:%3d 9:re", (int)fond4_anas);break;case 17:fond4_anas=at24c02_read_byte(53);sprintf(nuber_second, "min:%3d 9:re", (int)fond4_anas);break;case 18:fond4_anas=at24c02_read_byte(52);sprintf(nuber_second, "second:%3d 9:re", (int)fond4_anas); break;}}}void lcdscram0(void){lcd1602_show_string(0,0,number_str);//��һ����ʾlcd1602_show_string(0,1,nuber_second);//�ڶ�����ʾ}void seg(u8 x,u8 y){P2 = (P2 & 0xE0) | (x * 4);P0=smg_find(y);}void time(u8 x){if(x==0){ET1=EX0=0;}else if(x==1){EX0=!(uu & 4);ET1=1;}}void clockset(void){u8 k=at24c02_read_byte(58);u8 y=at24c02_read_byte(47);u16 timenow=at24c02_read_byte(43)*60+at24c02_read_byte(42);u16 timeset=at24c02_read_byte(53)*60+at24c02_read_byte(52);if((k<<(y-1))){if(at24c02_read_byte(44)==at24c02_read_byte(54)){if(timenow>timeset && timenow<(timeset+30))uu^=1;else if(timenow>(timeset+30) && timenow<(timeset+35));uu &= 0xfe;}}}void main(){u8 message=0;u8 save=0;sour=1;ds1302_init();//��ʼ��DS1302lcd1602_init();//LCD1602��ʼ��lcd1602_clear();//at24c02_read_byte(1);ired_init();while(1){keynow=keynumber();switch (message++){case 1:time(0);if(asd){lcdword(find1(asd,& uu));}else{lcdword(find1(gired_data[3],& uu));gired_data[3]=0;}time(1);while(uu & 32)//������uu����Ϊ������0���������������������д��==1��!=0��==1��һ��{keynow=keynumber();if(asd==0){asd=gired_data[3];gired_data[3]=0;}find1(asd, & uu);}break;case 2:if(save/8<30)save += 8;else{clockset();save= save&0x07;}break;case 3:ds1302_read_time(sa