这样贴上来行不行????
#include <reg52.h>
//#include <intrins.h>
#include <math.h>
//#define nop() _nop_()
#define uchar unsigned char
#define uint unsigned int
//1. FG:液晶边框引出端,应该接地
//2. VSS:逻辑电源地,接电源的负极
//3. VDD:逻辑电源正,接电源的正极
//4. V0:LCD驱动电压输入端,可通过滑动变阻器接到电源正极上,改变电阻大小来改变液晶对比度
sbit LCDWR =P3^1;//5. /WR:写数据信号,上升沿锁存
sbit LCDRD =P3^2;//6. /RD:读数据信号,上升沿锁存
sbit LCDCE =P3^4;//7. /CE:LCD选通信号,低电平有效
sbit LCDCD =P3^3;//8. C/D:命令/数据:高电平为命令,低电平为数据
//9.:暂时没用
sbit LCDRST =P3^5;//10. /RST:复位信号,低电平有效
#define lcd_bus P0//11-18. DB0-DB7 :8位数据总线
//19. FS:字体选择,H:6X8点,L:8X8点
//20. VEE
//21. LEDA:背光电源正极
//22. LEDK:背光电源负极
sbit DQ18B20=P1^3;//ds18b20与单片机连接口
sbit acc0=ACC^0; //移位时的第0位
sbit acc7=ACC^7; //移位时用的第7位
sbit DATA1302=P1^5; //时钟数据接口
sbit RST1302=P1^6;
sbit SCLK1302=P1^4;
sbit menu=P3^0; //菜单
sbit add=P3^1; //加一
sbit dec=P3^2; //减一
uchar second,minute,hour,day,month,year,week,count=0;
uchar ReadValue,num,time;
uint tvalue;//温度值
uchar tflag;
//---- LCD PIXEL SETTING ------------------------------------------------------
#define PIXELH 128
#define PIXELW 240
//-------------------------------------------------------------------------------
unsigned char code tab1[]=//16x16的汉字或者图片[取模方式]从左到右从上到下 :横向8点左高位
{
0x08,0x00,0x0F,0xFC,0x10,0x80,0x10,0x80,0x20,0x80,0x4F,0xF8,0x88,0x80,0x08,0x80,
0x08,0x80,0x08,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,//年",0
0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,
0x07,0xF0,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20,0x00,0x00,//月",1
0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,//日",2
0x00,0x00,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x01,0x00,0x11,0x00,
0x1F,0xFC,0x21,0x00,0x21,0x00,0x4F,0xF8,0x01,0x00,0x01,0x00,0x7F,0xFE,0x00,0x00,//星",3
0x22,0x00,0x22,0x7C,0x7F,0x44,0x22,0x44,0x3E,0x44,0x22,0x7C,0x3E,0x44,0x22,0x44,
0x22,0x44,0xFF,0x7C,0x00,0x44,0x24,0x84,0x22,0x84,0x43,0x14,0x81,0x08,0x00,0x00,//期",4
0x01,0xC0,0x02,0x20,0x02,0xE0,0x02,0x20,0x02,0xE0,0x02,0x20,0x02,0xE0,0x02,0x20,
0x02,0xE0,0x02,0x20,0x0F,0xF8,0x0F,0xF8,0x07,0xF0,0x03,0xE0,0x01,0xC0,0x00,0x00,//"温度计符号",5
0x00,0x00,0x00,0x00,0x78,0x00,0x48,0xFC,0x49,0x04,0x79,0x04,0x02,0x00,0x02,0x00,
0x02,0x00,0x02,0x00,0x02,0x04,0x01,0x04,0x01,0x08,0x00,0xF0,0x00,0x00,0x00,0x00,//"℃,6
0x00,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x05,0xC0,0x04,0x40,0x05,0xC0,0x04,0x40,
0x05,0xC0,0x04,0x40,0x05,0xC0,0x04,0x40,0x0F,0xE0,0x07,0xC0,0x03,0x80,0x01,0x00,//温度计的图片,7
};
unsigned char code tab2[]=//8x16的字符
{
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//0",0
0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,//1",1
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,//2",2
0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,//3",3
0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,//4",4
0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,//5",5
0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//6",6
0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,//7",7
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,//8",8
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,//9",9
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,//.",10
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//负号,11
0x00,0x00,0x00,0x00,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,//正号,12
};
unsigned char code tab3[]=//32x64的手绘数字(3264)
{
0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,
0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x07,0xFE,0x7F,0xC0,0x07,0xFE,0x7F,0xC0,0x0F,0xFE,0x7F,0xC0,0x0F,0xFE,
0x7F,0xC0,0x1B,0xFE,0x7F,0xC0,0x1B,0xFE,0x7F,0xC0,0x33,0xFE,0x7F,0xC0,0x33,0xFE,
0x7F,0xC0,0x63,0xFE,0x7F,0xC0,0x63,0xFE,0x7F,0xC0,0xC3,0xFE,0x7F,0xC0,0xC3,0xFE,
0x7F,0xC1,0x83,0xFE,0x7F,0xC1,0x83,0xFE,0x7F,0xC3,0x03,0xFE,0x7F,0xC3,0x03,0xFE,
0x7F,0xC6,0x03,0xFE,0x7F,0xC6,0x03,0xFE,0x7F,0xCC,0x03,0xFE,0x7F,0xCC,0x03,0xFE,
0x7F,0xD8,0x03,0xFE,0x7F,0xD8,0x03,0xFE,0x7F,0xF0,0x03,0xFE,0x7F,0xF0,0x03,0xFE,
0x7F,0xE0,0x03,0xFE,0x7F,0xE0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,
0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00, //0
0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0xFF,0xFC,0x00,
0x0F,0xFF,0xFC,0x00,0x0F,0xFF,0xFC,0x00,0x0F,0xFF,0xFC,0x00,0x0F,0xFF,0xFC,0x00,
0x0F,0xFF,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,//:\字模\32-64用\1.BMP
0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,
0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x00,0x00,0x07,0xFE,0x00,0x00,0x0F,0xFE,0x00,0x00,0x1F,0xFE,
0x00,0x00,0x3F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFC,0x00,0x01,0xFF,0xF8,
0x00,0x03,0xFF,0xF0,0x00,0x07,0xFF,0xE0,0x00,0x0F,0xFF,0xC0,0x00,0x1F,0xFF,0x80,
0x00,0x3F,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFC,0x00,0x01,0xFF,0xF8,0x00,
0x03,0xFF,0xF0,0x00,0x07,0xFF,0xE0,0x00,0x0F,0xFF,0xC0,0x00,0x1F,0xFF,0x80,0x00,
0x3F,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFC,0x00,0x00,0x7F,0xF8,0x00,0x00,
0x7F,0xF0,0x00,0x00,0x7F,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,
0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,//2
0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,
0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x00,0x00,0x03,0xFE,
0x00,0x00,0x03,0xFE,0x00,0x00,0x07,0xFE,0x00,0x00,0x0F,0xFC,0x00,0xFF,0xFF,0xF8,
0x00,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xE0,0x00,0xFF,0xFF,0xF0,
0x00,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFE,
0x00,0x00,0x0F,0xFE,0x00,0x00,0x07,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,
0x00,0x00,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,
0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,//3
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,
0x00,0x00,0x7F,0xE0,0x00,0x00,0x7F,0xE0,0x00,0x00,0xFF,0xE0,0x00,0x00,0xFF,0xE0,
0x00,0x01,0xFF,0xE0,0x00,0x01,0xFF,0xE0,0x00,0x03,0xFF,0xE0,0x00,0x03,0xFF,0xE0,
0x00,0x07,0xFF,0xE0,0x00,0x07,0xFF,0xE0,0x00,0x0F,0xFF,0xE0,0x00,0x0F,0xFF,0xE0,
0x00,0x1F,0xFF,0xE0,0x00,0x1F,0xFF,0xE0,0x00,0x3F,0xFF,0xE0,0x00,0x3F,0xFF,0xE0,
0x00,0x7F,0xBF,0xE0,0x00,0x7F,0xBF,0xE0,0x00,0xFF,0x3F,0xE0,0x00,0xFF,0x3F,0xE0,
0x01,0xFE,0x3F,0xE0,0x01,0xFE,0x3F,0xE0,0x03,0xFC,0x3F,0xE0,0x03,0xFC,0x3F,0xE0,
0x07,0xF8,0x3F,0xE0,0x07,0xF8,0x3F,0xE0,0x0F,0xF0,0x3F,0xE0,0x0F,0xF0,0x3F,0xE0,
0x1F,0xE0,0x3F,0xE0,0x1F,0xE0,0x3F,0xE0,0x3F,0xC0,0x3F,0xE0,0x3F,0xC0,0x3F,0xE0,
0x7F,0x80,0x3F,0xE0,0x7F,0x80,0x3F,0xE0,0x7F,0x00,0x3F,0xE0,0x7F,0x00,0x3F,0xE0,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,
0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,
0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,
0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,//F:\字模\32-64用\4-1.BMP
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,
0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,
0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,
0x7F,0xCF,0xFF,0xC0,0x7F,0xDF,0xFF,0xE0,0x7F,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xF8,
0x7F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,
0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,
0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,
0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,//5
0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,
0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,
0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,
0x7F,0xDF,0xFF,0xC0,0x7F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xF8,
0x7F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,
0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,//6
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,
0x00,0x00,0x03,0xFE,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,
0x00,0x00,0x0F,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x1F,0xF0,
0x00,0x00,0x1F,0xF0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,
0x00,0x00,0x3F,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,
0x00,0x00,0xFF,0x80,0x00,0x00,0xFF,0x80,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x00,
0x00,0x01,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,
0x00,0x03,0xFE,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,0x00,
0x00,0x0F,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x1F,0xF0,0x00,
0x00,0x1F,0xF0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,
0x00,0x3F,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,
0x00,0xFF,0x80,0x00,0x00,0xFF,0x80,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x00,0x00,
0x01,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,
0x03,0xFE,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,//7
0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,
0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFC,
0x3F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xF0,
0x0F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,
0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00, //8
0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,
0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x3F,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFE,
0x03,0xFF,0xFB,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,
0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,
0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,
0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,//9
};
uchar code tab4[]= //8x64的字符:
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x7E,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//
};
uchar code tab5[]= //16x16,星期用
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//一",0
0x00,0x00,0x00,0x10,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,//二",1
0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,//三",2
0x00,0x00,0x7F,0xFC,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,
0x48,0x84,0x48,0x7C,0x50,0x04,0x60,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,0x00,0x00,//四",3
0x00,0x00,0x7F,0xF8,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x3F,0xF0,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x24,0xFF,0xFE,0x00,0x00,0x00,0x00,//五",4
0x04,0x00,0x03,0x00,0x01,0x80,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x04,0x80,
0x06,0x40,0x04,0x20,0x08,0x10,0x08,0x18,0x10,0x0C,0x20,0x0C,0x40,0x08,0x00,0x00,//六",5
0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,//日",6
};
/*****************1ms延时函数****************/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay1(uint z) //微秒延时
{
for(;z>0;z--);
}
unsigned char rd_cmd6963(void)
{
unsigned char addr_st;
LCDCD = 1;
LCDWR = 1;
LCDCE = 0;
lcd_bus =0xff;
addr_st = lcd_bus;
LCDRD = 0;
LCDRD = 1;
LCDCE = 1;
return(addr_st);
}
/*****************检查忙状态程序****************/
void chkbusy6963(void)
{
unsigned char busy;
do
{
busy =!(rd_cmd6963() & 0x03);
}while(busy);
}
/*****************写数据****************/
void wr_dat6963(unsigned char datax)
{
chkbusy6963();
LCDCD = 0;
LCDRD = 1;
LCDCE = 0;
lcd_bus = datax;
LCDWR = 0;
LCDWR = 1;
LCDCE = 1;
}
/*****************写命令****************/
void wr_cmd6963(unsigned char cmdx)
{
chkbusy6963();
LCDCD = 1;
LCDRD = 1;
LCDCE = 0;
lcd_bus = cmdx;
LCDWR = 0;
LCDWR = 1;
LCDCE = 1;
}
/*****************写寄存器程序****************/
void wr_reg6963(unsigned char cmd,unsigned char dat1,unsigned char dat2)
{
wr_dat6963(dat1);
wr_dat6963(dat2);
wr_cmd6963(cmd);
}
//显示指针,图形模式graphics=1,文本模式graphics=0;X坐标x_axis,以8个像素为一个单位
//Y坐标y_axis,图形模式以1个像素为单位,文本模式以8个像素为单位
void lcd_cursor6963(unsigned char graphics,unsigned char x_axis,unsigned char y_axis)
{
unsigned int tmp;
if(graphics)tmp = y_axis*(PIXELW/8) + x_axis + 0x800;
else tmp = y_axis*(PIXELW/8) + x_axis;
wr_reg6963(0x24,(unsigned char)(tmp),(unsigned char)(tmp>>8));
wr_cmd6963(0xb0);
}
/*****************液晶屏初始化程序****************/
void init6963(void)
{
LCDRST =0;
delay(100);
LCDRST =1;
wr_cmd6963(0xf0); //bit reset
wr_reg6963(0x21,0x00,0x00); //光标地址设置
wr_reg6963(0x22,0x00,0x00); //CGRAM偏置地址设置
wr_reg6963(0x24,0x00,0x00); //显示地址设置
wr_reg6963(0x40,0x00,0x00); //文本显示区首地址
wr_reg6963(0x41,(unsigned char)(PIXELW/8),0x00); //文本显示区宽度
wr_reg6963(0x42,0x00,0x08); //图形显示区首地址
wr_reg6963(0x43,(unsigned char)(PIXELW/8),0x00); //图形显示区宽度
wr_cmd6963(0x80); // OR mode
wr_cmd6963(0x9c); //文本图形开
wr_cmd6963(0xa0); //7line指针
}
/*****************全屏显示内容程序****************/
void lcd_showfull(unsigned char datx)
{
unsigned int i;
lcd_cursor6963(0,0,0);
for(i=0;i<((PIXELW/8)*(PIXELH/8));i++)wr_dat6963(0);
wr_cmd6963(0xb2);
lcd_cursor6963(1,0,0);
for(i=0;i<((PIXELW/8)*PIXELH);i++)wr_dat6963(datx);
wr_cmd6963(0xb2); //屏刷完后需要补上这句
}
//显示自定义16X16字符,x_axis为X轴,以8像素为单位,y_axis为Y轴,以1像素为单位
void lcd_defcharacter16x16(unsigned char x_axis,unsigned char y_axis,unsigned char ctnchar,unsigned char startchar,unsigned char code *text)
{//ctnchar为要显示的总字符数,startchar为自定义内码的第几个启动显示字符(即表格中的汉字),text为自定义的字符内码
unsigned char line,ctn;
text += startchar*32;
for(ctn=0;ctnchar>0;ctnchar--,ctn+=2)
{
for(line=0;line<16;line++)
{
lcd_cursor6963(1,x_axis+ctn,y_axis+line);
wr_dat6963(*(text++));
wr_dat6963(*(text++));
wr_cmd6963(0xb2); //屏刷完后需要补上这句
}
}
}
//显示自定义8X16字符,x_axis为X轴,以8像素为单位,y_axis为Y轴,以1像素为单位
void lcd_defcharacter8x16(unsigned char x_axis,unsigned char y_axis,unsigned char ctnchar,unsigned char startchar,unsigned char code *text)
{//ctnchar为要显示的总字符数,startchar为自定义内码的第几个启动显示字符(即表格中的汉字),text为自定义的字符内码
unsigned char line,ctn;
text=text + startchar*16;
for(ctn=0;ctnchar>0;ctnchar--,ctn++)
{
for(line=0;line<16;line++)
{
lcd_cursor6963(1,x_axis+ctn,y_axis+line);
wr_dat6963(*(text++));
wr_cmd6963(0xb2); //屏刷完后需要补上这句
}
}
}
//显示自定义32X64字符,x_axis为X轴,以8像素为单位,y_axis为Y轴,以1像素为单位
void lcd_defcharacter32x64(uchar x_axis,uchar y_axis,uchar ctnchar,uchar startchar,uchar code *text)
{//ctnchar为要显示的总字符数,startchar为自定义内码的第几个启动显示字符(即表格中的汉字),text为自定义的字符内码
uchar line,ctn;
text=text+startchar*256; //256是字符表中一个字的码数
for(ctn=0;ctnchar>0;ctnchar--,ctn=ctn+4)
{
for(line=0;line<64;line++)
{
lcd_cursor6963(1,x_axis+ctn,y_axis+line);//
wr_dat6963(*(text++));//这一段是竖刷次数32/8=4次。四条
wr_dat6963(*(text++));
wr_dat6963(*(text++));
wr_dat6963(*(text++));
wr_cmd6963(0xb2); //复位自动读写模式,屏刷完后需要补上这句
}
}
}
//显示自定义8X64字符(:),x_axis为X轴,以8像素为单位,y_axis为Y轴,以1像素为单位
void lcd_defcharacter8x48(uchar x_axis,uchar y_axis,uchar ctnchar,uchar startchar,uchar code *text)
{
//ctnchar为要显示的总字符数
//startchar为自定义内码的第几个启动显示字符(即表格中的汉字)
//text为自定义的字符内码
uchar line,ctn;
text=text+startchar*64; //
for(ctn=0;ctnchar>0;ctnchar--,ctn=ctn+2)
{
for(line=0;line<64;line++)
{
lcd_cursor6963(1,x_axis+ctn,y_axis+line);//
wr_dat6963(*(text++));
wr_cmd6963(0xb2); //复位自动读写模式,屏刷完后需要补上这句
}
}
}
void Write1302(uchar dat) //1302写
{
uchar i;
SCLK1302=0; //拉低SCLK,为脉冲上升沿写入数据做好准备
delay1(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续写8个二进制位数据
{
DATA1302=dat&0x01; //取出dat的第0位数据写入1302
delay(2); //稍微等待,使硬件做好准备
SCLK1302=1; //上升沿写入数据
delay1(2); //稍微等待,使硬件做好准备
SCLK1302=0; //重新拉低SCLK,形成脉冲
dat>>=1; //将dat的各数据位右移1位,准备写入下一个数据位
}
}
void WriteSet1302(uchar Cmd,uchar dat)
{
RST1302=0; //禁止数据传递
SCLK1302=0; //确保写数居前SCLK被拉低
RST1302=1; //启动数据传输
delay1(2); //稍微等待,使硬件做好准备
Write1302(Cmd); //写入命令字
Write1302(dat); //写数据
SCLK1302=1; //将时钟电平置于已知状态
RST1302=0; //禁止数据传递
}
uchar Read1302(void)
{
uchar i,dat;
delay(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续读8个二进制位数据
{
dat>>=1; //将dat的各数据位右移1位,因为先读出的是字节的最低位
if(DATA1302==1) //如果读出的数据是1
dat|=0x80; //将1取出,写在dat的最高位
SCLK1302=1; //将SCLK置于高电平,为下降沿读出
delay1(2); //稍微等待
SCLK1302=0; //拉低SCLK,形成脉冲下降沿
delay1(2); //稍微等待
}
return dat; //将读出的数据返回
}
uchar ReadSet1302(uchar Cmd)
{
uchar dat;
RST1302=0; //拉低RST
SCLK1302=0; //确保写数居前SCLK被拉低
RST1302=1; //启动数据传输
Write1302(Cmd); //写入命令字
dat=Read1302(); //读出数据
SCLK1302=1; //将时钟电平置于已知状态
RST1302=0; //禁止数据传递
return dat; //将读出的数据返回
}
void Init_DS1302(void)
{
WriteSet1302(0x8E,0x00);//根据写状态寄存器命令字,写入不保护指令
WriteSet1302(0x80,0x00);//根据写秒寄存器命令字,写入秒的初始值
WriteSet1302(0x82,0x30);//根据写分寄存器命令字,写入分的初始值
WriteSet1302(0x84,0x20);//根据写小时寄存器命令字,写入小时的初始值
WriteSet1302(0x86,0x13);//根据写日寄存器命令字,写入日的初始值
WriteSet1302(0x88,0x03);//根据写月寄存器命令字,写入月的初始值
WriteSet1302(0x8c,0x21);//根据写年寄存器命令字,写入年的初始值
WriteSet1302(0x8a,0x06);//根据写星期寄存器命令字,写入星期的初始值
}
void DisplaySecond(uchar x)
{
uchar i,j;
i=x/10;
j=x%10;
lcd_defcharacter24x48(22,18,1,i,tab3);//显示秒的十位tab3是24*48数字
lcd_defcharacter24x48(26,18,1,j,tab3);//显示秒的个位
}
void DisplayMinute(uchar x)
{
uchar i,j;
i=x/10;
j=x%10;
lcd_defcharacter24x48(11,18,1,i,tab3);//显示分钟的十位
lcd_defcharacter24x48(15,18,1,j,tab3);//显示分钟的个位
}
void DisplayHour(uchar x)
{
uchar i,j;
i=x/10;
j=x%10;
lcd_defcharacter24x48(0,18,1,i,tab3);//显示小时的十位
lcd_defcharacter24x48(4,18,1,j,tab3);//显示小时的个位
}
void DisplayDay(uchar x)
{
uchar i,j;
i=x/10;
j=x%10;
lcd_defcharacter8x16(10,0,1,i,tab2);//显示 日的十位tab2是8*16字符数字,带+-号
lcd_defcharacter8x16(11,0,1,j,tab2);//显示 日的个位
}
void DisplayMonth(uchar x)
{
uchar i,j;
i=x/10;
j=x%10;
lcd_defcharacter8x16(6,0,1,i,tab2);//显示 月的十位
lcd_defcharacter8x16(7,0,1,j,tab2);//显示 月的个位
}
void DisplayYear(uchar x)
{
uchar i,j;
i=x/10;
j=x%10;
lcd_defcharacter8x16(2,0,1,i,tab2);//显示 年的十位
lcd_defcharacter8x16(3,0,1,j,tab2);//显示 年的个位
}
void DisplayWeek(uchar x)
{
lcd_defcharacter16x16(19,0,1,x-1,tab5);//显示,tab5是星期用字库
}
void read_date(void)
{
ReadValue = ReadSet1302(0x81);
second=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = ReadSet1302(0x83);
minute=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = ReadSet1302(0x85);
hour=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = ReadSet1302(0x87);
day=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = ReadSet1302(0x89);
month=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = ReadSet1302(0x8d);
year=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue=ReadSet1302(0x8b); //读星期
week=ReadValue&0x07;
DisplaySecond(second);
DisplayMinute(minute);
DisplayHour(hour);
DisplayDay(day);
DisplayMonth(month);
DisplayYear(year);
DisplayWeek(week);
}
void turn_val(char newval,uchar flag,uchar newaddr,uchar s1num)
{
newval=ReadSet1302(newaddr); //读取当前时间
newval=((newval&0x70)>>4)*10+(newval&0x0f); //将bcd码转换成十进制
if(flag) //判断是加一还是减一
{
newval++;
switch(s1num)
{
case 1: if(newval>99) newval=0;
DisplayYear(newval);
break;
case 2: if(newval>12) newval=1;
DisplayMonth(newval);
break;
case 3: if(newval>31) newval=1;
DisplayDay(newval);
break;
case 4: if(newval>6) newval=0;
DisplayWeek(newval);
break;
case 5: if(newval>23) newval=0;
DisplayHour(newval);
break;
case 6: if(newval>59) newval=0;
DisplayMinute(newval);
break;
case 7: if(newval>59) newval=0;
DisplaySecond(newval);
break;
default:break;
}
}
else
{
newval--;
switch(s1num)
{
case 1: if(newval==0) newval=99;
DisplayYear(newval);
break;
case 2: if(newval==0) newval=12;
DisplayMonth(newval);
break;
case 3: if(newval==0) newval=31;
DisplayDay(newval);
break;
case 4: if(newval<0) newval=6;
DisplayWeek(newval);
break;
case 5: if(newval<0) newval=23;
DisplayHour(newval);
break;
case 6: if(newval<0) newval=59;
DisplayMinute(newval);
break;
case 7: if(newval<0) newval=59;
DisplaySecond(newval);
break;
default:break;
}
}
WriteSet1302((newaddr-1),((newval/10)<<4)|(newval%10)); //将新数据写入寄存器
}
void delay_18B20(unsigned int i)//延时1微秒
{
while(i--);
}
void ds1820rst()/*ds1820复位*/
{
unsigned char x=0;
DQ18B20 = 1; //DQ复位
delay_18B20(4); //延时
DQ18B20 = 0; //DQ拉低
delay_18B20(100); //精确延时大于480us
DQ18B20 = 1; //拉高
delay_18B20(40);
}
uchar ds1820rd()/*读数据*/
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ18B20 = 0; //给脉冲信号
dat>>=1;
DQ18B20 = 1; //给脉冲信号
if(DQ18B20)
dat|=0x80;
delay_18B20(10);
}
return(dat);
}
void ds1820wr(uchar wdata)/*写数据*/
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ18B20 = 0;
DQ18B20 = wdata&0x01;
delay_18B20(10);
DQ18B20 = 1;
wdata>>=1;
}
}
read_temp()/*读取温度值并转换*/
{
uchar a,b;
ds1820rst();
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0x44);//*启动温度转换*/
ds1820rst();
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0xbe);//*读取温度*/
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<<=8;
tvalue=tvalue|a;
if(tvalue<0x0fff)
tflag=0;
else
{
tvalue=~tvalue+1;
tflag=1;
}
tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数
return(tvalue);
}
void ds1820disp()//温度值显示
{
lcd_defcharacter8x16(24,0,1,(tvalue%1000/100),tab2);//显示 温度的十位
lcd_defcharacter8x16(25,0,1,(tvalue%1000%100/10),tab2);//显示 温度的个位
lcd_defcharacter8x16(27,0,1,(tvalue%1000%100%10),tab2);//显示 温度的小数
if(tflag==0)
lcd_defcharacter8x16(23,0,1,12,tab2);//显示温度的+号
else
lcd_defcharacter8x16(23,0,1,11,tab2);//显示温度显-号
}
main()
{
lcd_showfull(0); //清屏
init6963(); //初始化
Init_DS1302(); //初始化1302
lcd_defcharacter8x16(0,0,1,2,tab2);//显示 2-固定显示
lcd_defcharacter8x16(1,0,1,0,tab2);//显示 0-固定显示
lcd_defcharacter16x16(4,0,1,0,tab1);//显示 年-固定显示
lcd_defcharacter16x16(8,0,1,1,tab1);//显示 月-固定显示
lcd_defcharacter16x16(12,0,1,2,tab1);//显示 日-固定显示
lcd_defcharacter16x16(15,0,1,3,tab1);//显示 星-固定显示
lcd_defcharacter16x16(17,0,1,4,tab1);//显示 期-固定显示
lcd_defcharacter16x16(21,0,1,7,tab1);//显示 -固定显示温度计图片
lcd_defcharacter8x16(26,0,1,10,tab2);//显示 -固定显示小数点.
lcd_defcharacter16x16(28,0,1,6,tab1);//显示 -固定显示摄氏度图片
lcd_defcharacter8x48(9,18,1,0,tab4);//显示-固定显示:(前两点)
lcd_defcharacter8x48(20,18,1,0,tab4);//显示-固定显示:(后两点)
//lcd_defcharacter16x16(21,16,2,17,tab1);//显示农历两个字
//lcd_defcharacter16x16(25,16,1,19,tab1);//显示羊字
//lcd_defcharacter16x16(27,16,1,20,tab1);//显示年字
while(1)
{
read_date();
read_temp();//读取温度
ds1820disp();//显示
}
}
|