单片机源程序如下:
- #include<STC15.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar liang;
- #include"PT6311.h"
- #include"IIC.h"
- #include"NEC6121.h"
- #include"STC_EEPROM1T.h"
- #include"STC_ADC.h"
- #include"wendu.h"
- #include"nongli.h"
- #define liang1 220
- #define liang2 200
- #define liang3 180
- #define liang4 160
- #define liang5 140
- #define liang6 120
- #define liang7 100
- #define liang8 80
- char year,month,day,week,hour,minute,second; //定义年月日星期时分秒
- uchar tiao; //调整
- uchar zhuanpan;//转盘显示用
- uchar liangshu;//亮度ADC
- uint fan; //自动返回
- uchar shan,bian;
- uchar ycz=0;
- uchar uxbk=0;
-
- sbit kai =P3^7; //开关屏
- sbit K1 =P5^5; //按键1
- sbit K2 =P5^4; //按键2
- sbit beep=P3^6; //蜂鸣器
- bit jiema=0; //测码标志位
- bit shoudong=1; //0 手动 1自动
- uchar code table[]={0x77,0x12,0x6b,0x5b,0x1e,0x5d,0x7d,0x13,0x7f,0x5f,0x88,0,0x65};//8无冒号
- uchar code table1[]={0xf7,0x92,0xeb,0xdb,0x9e,0xdd,0xfd,0x93,0xff,0xdf,0x08};//8有冒号
- uchar code jieyao[]={0,1,2,3,4,5,6,7,8,9,13,14,15,16,17,18}; //解码显示
- uchar code xing[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; //星期显示
- uchar code MM[][2]={
- {0x31, 0x46},/*0*/
- {0x10, 0x02},/*1*/
- {0xd1, 0x45},/*2*/
- {0xd1, 0x43},/*3*/
- {0xf0, 0x03},/*4*/
- {0xe1, 0x43},/*5*/
- {0xe1, 0x47},/*6*/
- {0x11, 0x02},/*7*/
- {0xf1, 0x47},/*8*/
- {0xf1, 0x43},/*9*/
- {0x00, 0x00}, //空 10
- {0xc0, 0x01}, // - 11
- {0x88, 0x08}, // / 12
- {0xf1, 0x07},//A 13
- {0xd5, 0x52},//B 14
- {0x21, 0x44},//C 15
- {0x95, 0x52},//D 16
- {0xe1, 0x45},//E 17
- {0xe1, 0x05},//F 18
- {0x61, 0x46},//G 19
- {0xf0, 0x07},//H 20
- {0x85, 0x50},//I 21
- {0x10, 0x46},//J 22
- {0xa8, 0x25},//K 23
- {0x20, 0x44},//L 24
- {0xba, 0x06},//M 25
- {0xb2, 0x26},//N 26
- {0x31, 0x46},//O 27
- {0xf1, 0x05},//P 28
- {0x31, 0x66},//Q 29
- {0xf1, 0x25},//R 30
- {0xe1, 0x43},//S 31
- {0x85, 0x10},//T 32
- {0x30, 0x46},//U 33
- {0xa8, 0x0c},//V 34
- {0xb0, 0x2e},//W 35
- {0x8a, 0x28},//X 36
- {0x8a, 0x10},//Y 37
- {0x89, 0x48},//Z 38
- {0xc4, 0x11},//+ 39
- };
- uchar MZ[5]={10,10,10,10,10}; //五个米字缓存
- uchar SZ[6]={0,0,0,0,0,0}; //六个数字缓存
- uchar code tiaozi[][5]={ //显示字母
- {37,17,13,30,10},
- {25,27,26,32,20},
- {16,13,37,10,10},
- {35,17,17,23,10},
- {20,27,33,30,10},
- {25,21,26,33,32},
- {31,17,15,27,26},
- };
- void bee() //蜂鸣器
- {
- beep=0;
- delayus(100000);
- beep=1;
- delayus(100000);
- }
- void read_DS3231() //读时期和时间
- {
- uchar dat1,dat2,number;
- number=read_IIC(RX8025,0);
- dat1=number&0x7f;
- dat2=dat1/16; //数据进制转换
- dat1=dat1%16; //十六进制转十进制
- dat1=dat1+dat2*10;
- second=dat1;
- number=read_IIC(RX8025,1);
- dat1=number&0x7f;
- dat2=dat1/16; //数据进制转换
- dat1=dat1%16; //十六进制转十进制
- dat1=dat1+dat2*10;
- minute=dat1;
- number=read_IIC(RX8025,2);
- dat1=number&0x3f;
- dat2=dat1/16; //数据进制转换
- dat1=dat1%16; //十六进制转十进制
- dat1=dat1+dat2*10;
- hour=dat1;
- number=read_IIC(RX8025,3);
- dat1=number&0x3f;
- dat2=dat1/16; //数据进制转换
- dat1=dat1%16; //十六进制转十进制
- dat1=dat1+dat2*10;
- week=dat1;
- number=read_IIC(RX8025,4);
- dat1=number&0x3f;
- dat2=dat1/16; //数据进制转换
- dat1=dat1%16; //十六进制转十进制
-
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
Keil代码下载:
Keil5程序.7z
(46.63 KB, 下载次数: 51)
|