#include<iom16v.h>
#include<stdlib.h>
//定义输出引脚
#define PD0 0
#define PD1 1
#define PD2 2
#define PB5 5
#define PB6 6
#define PB4 4
#define PA7 7
/*-----------------宏定义------------*/
#define SET_BIT(x,y) (x|=(1<<y))
#define CLR_BIT(x,y) (x&=~(1<<y))
#define GET_BIT(x,y) (x&(1<<y))
/*----------端口电平---------------*/
#define LCD_RS_1 SET_BIT(PORTD,PD0)
#define LCD_RS_0 CLR_BIT(PORTD,PD0)
#define LCD_RW_1 SET_BIT(PORTD,PD1)
#define LCD_RW_0 CLR_BIT(PORTD,PD1)
#define LCD_EN_1 SET_BIT(PORTD,PD2)
#define LCD_EN_0 CLR_BIT(PORTD,PD2)
#define LCD_CS1_1 SET_BIT(PORTB,PB5)
#define LCD_CS1_0 CLR_BIT(PORTB,PB5)
#define LCD_CS2_1 SET_BIT(PORTB,PB6)
#define LCD_CS2_0 CLR_BIT(PORTB,PB6)
#define DataPort PORTC
#define Busy 0x80
/*-----------------------------------------------*/
#define DS1302_RST_1 SET_BIT(PORTA,PA7)
#define DS1302_RST_0 CLR_BIT(PORTA,PA7)
#define DS1302_CLK_1 SET_BIT(PORTB,PB4)
#define DS1302_CLK_0 CLR_BIT(PORTB,PB4)
#define DS1302_DAT_1 SET_BIT(PORTB,PA7)
#define DS1302_DAT_0 CLR_BIT(PORTB,PA7)
float p,t;
float qu_pi,shenfa,jieguo;
unsigned char hour,sec,min;
__flash unsigned char act[5]={0xf0,0xe0,0xd0,0xb0,0x70};
__flash unsigned char dan[]={0x00,0x10,0x00,0x10,0xF8,0x17,0x49,0x12,0x4A,0x12,0x4C,0x12,0x48,0x12,0xF8,0xFF,
0x48,0x12,0x4C,0x12,0x4A,0x12,0x49,0x12,0xFC,0x13,0x08,0x18,0x00,0x10,0x00,0x00};
__flash unsigned char jia[]={0x80,0x00,0x40,0x00,0x20,0x00,0xF8,0xFF,0x87,0x00,0x40,0x80,0x20,0x40,0x90,0x3F,
0x08,0x00,0x07,0x00,0x08,0x00,0x90,0xFF,0x20,0x00,0xC0,0x00,0x40,0x00,0x00,0x00};
__flash unsigned char yuan[]={0x20,0x80,0x20,0x80,0x22,0x40,0x22,0x20,0x22,0x18,0xE2,0x07,0x22,0x00,0x22,0x00,
0x22,0x00,0xE2,0x3F,0x22,0x40,0x23,0x40,0x22,0x40,0x30,0x40,0x20,0x70,0x00,0x00};
__flash unsigned char jin[]={0x80,0x00,0x80,0x40,0x40,0x40,0x20,0x4A,0x50,0x52,0x48,0x62,0x44,0x42,0xC3,0x7F,
0x44,0x42,0x68,0x62,0x50,0x52,0x20,0x4A,0x40,0x60,0xC0,0x40,0x40,0x00,0x00,0x00};
__flash unsigned char e[]={0x10,0x10,0x8C,0x08,0x44,0xFC,0xB5,0x4A,0x26,0x49,0xA4,0x4A,0x74,0x7C,0x0C,0x08,
0x02,0x80,0xF2,0x4F,0x1A,0x20,0xD6,0x1F,0x12,0x20,0xFB,0x4F,0x12,0xC0,0x00,0x00};
__flash unsigned char zhong[]={0x08,0x40,0x08,0x40,0x0A,0x48,0xEA,0x4B,0xAA,0x4A,0xAA,0x4A,0xAA,0x4A,0xFE,0x7F,
0xAA,0x4A,0xAA,0x4A,0xA9,0x4A,0xF9,0x4B,0x29,0x48,0x0C,0x60,0x08,0x40,0x00,0x00};
__flash unsigned char liang[]={0x20,0x00,0x20,0x80,0x20,0x80,0xBE,0xAF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,
0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBF,0xAF,0x22,0x80,0x30,0x80,0x20,0x00,0x00,0x00};
__flash unsigned char chu_shi_hua[][32]={0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30,
0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10,0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,
0x40,0x00,0x42,0x40,0x44,0x20,0xC8,0x1F,0x00,0x20,0xFC,0x47,0x04,0x42,0x02,0x41,
0x82,0x40,0xFC,0x7F,0x04,0x40,0x04,0x42,0x04,0x44,0xFE,0x63,0x04,0x20,0x00,0x00,
0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00,0x04,0x80,0xF4,0x43,0x14,0x45,0x14,0x29,
0x14,0x19,0xFF,0x17,0x14,0x21,0x14,0x21,0x14,0x41,0xF6,0xC3,0x04,0x40,0x00,0x00,
0x00,0x80,0x00,0x60,0xFE,0x1F,0x22,0x02,0x22,0x02,0x22,0x02,0x22,0x02,0xFE,0x7F,
0x22,0x02,0x22,0x02,0x22,0x42,0x22,0x82,0xFF,0x7F,0x02,0x00,0x00,0x00,0x00,0x00,
0x10,0x00,0x08,0x00,0xE4,0xFF,0x13,0x00,0x26,0x00,0x8A,0x3F,0xA3,0x24,0xAA,0x24,
0xA4,0x24,0xA3,0x3F,0x26,0x40,0x2A,0x80,0xF2,0x7F,0x23,0x00,0x02,0x00,0x00,0x00,
0x00,0x08,0x00,0x04,0x00,0x22,0x7F,0x11,0xC9,0x09,0x49,0x87,0x49,0x41,0x49,0x21,
0x49,0x19,0x49,0x07,0x49,0x41,0x7F,0x81,0x00,0x41,0x80,0x3F,0x00,0x01,0x00,0x00,
0x00,0x00,0xF8,0x07,0x48,0x02,0x48,0x02,0x48,0x02,0x48,0x02,0xFF,0x3F,0x48,0x42,
0x48,0x42,0x48,0x42,0x48,0x42,0xFC,0x47,0x08,0x40,0x00,0x70,0x00,0x00,0x00,0x00,
0x80,0x00,0x80,0x00,0x82,0x00,0x82,0x00,0x82,0x00,0x82,0x40,0x82,0x80,0xE2,0x7F,
0xA2,0x00,0x92,0x00,0x8A,0x00,0x86,0x00,0x80,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,
0x20,0x10,0x24,0x08,0x24,0x06,0xA4,0x01,0xFE,0xFF,0xA3,0x00,0x22,0x11,0x10,0x0C,
0x1C,0x43,0x13,0x80,0xD0,0x7F,0x10,0x00,0x50,0x01,0x30,0x06,0x10,0x0C,0x00,0x00};
__flash unsigned char shi[]={0x00,0x00,0xFC,0x3F,0x84,0x10,0x84,0x10,0x84,0x10,0xFE,0x3F,0x14,0x00,0x10,0x00,
0x90,0x00,0x10,0x23,0x10,0x40,0x10,0x80,0xFF,0x7F,0x10,0x00,0x10,0x00,0x00,0x00};
__flash unsigned char fen[]={0x00,0x01,0x80,0x00,0x40,0x80,0x20,0x40,0x98,0x20,0x86,0x1F,0x80,0x00,0x80,0x40,
0x83,0x80,0x8C,0x40,0x90,0x3F,0x20,0x00,0xC0,0x00,0x80,0x01,0x80,0x00,0x00,0x00};
__flash unsigned char miao[]={0x20,0x10,0x24,0x08,0x24,0x06,0xA4,0x01,0xFE,0xFF,0xA3,0x00,0x22,0x81,0x80,0x80,
0x70,0x40,0x00,0x20,0xFF,0x17,0x00,0x08,0x10,0x04,0x20,0x03,0x60,0x00,0x00,0x00};
void LCDTESTBUSY();//检测忙函数
__flash unsigned char shizijian[][16]={
0x00,0x00,0xE0,0x0F,0xF0,0x1F,0x08,0x20,0x08,0x20,0x18,0x30,0xF0,0x1F,0xC0,0x07,// 0
0x00,0x00,0x00,0x00,0x10,0x20,0xF0,0x3F,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00, // 1
0x00,0x00,0x70,0x30,0x78,0x38,0x08,0x34,0x08,0x32,0xD8,0x31,0xF0,0x38,0x20,0x08, // 2
0x00,0x00,0x30,0x18,0x38,0x38,0x88,0x21,0x88,0x21,0xF8,0x33,0x70,0x1E,0x00,0x0C, // 3
0x00,0x00,0x00,0x06,0x80,0x05,0x60,0x24,0x30,0x24,0xF8,0x3F,0xF8,0x3F,0x00,0x24, // 4
0x00,0x00,0xF0,0x19,0xF8,0x39,0x88,0x20,0xC8,0x20,0x88,0x31,0x88,0x1F,0x00,0x06, // 5
0x00,0x00,0xE0,0x0F,0xF0,0x3F,0x88,0x20,0x88,0x20,0x98,0x20,0x98,0x1F,0x00,0x0E, // 6
0x00,0x00,0x38,0x00,0x18,0x00,0x08,0x3E,0x88,0x3F,0xE8,0x00,0x38,0x00,0x08,0x00, // 7
0x00,0x00,0x70,0x1E,0xF8,0x37,0x88,0x21,0x88,0x21,0x88,0x23,0xF8,0x1E,0x20,0x0C, // 8
0x00,0x00,0xF0,0x11,0xF8,0x3B,0x08,0x22,0x08,0x22,0x18,0x3B,0xF0,0x1F,0xE0,0x07, // 9
0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '.' 10
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' ' 11
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x31,0xC0,0x7B,0xC0,0x7B,0x80,0x31 // ':' 12
};
/*-------------------------------------------------*/
void delay_1ms(void)
{
unsigned int i;
for(i=1;i<20;i++)
;
}
/*-------------------------------------------------*/
void delay(unsigned int x)
{
unsigned int i,j;
for(j=0;j<x;j++)
for(i=0;i<10000;i++);
}
/*-------------------------------------------------*/
void DS1302_Set_Byt(unsigned char x)
{
unsigned char i;
for(i=8;i>0;i--)
{
if(x&0x01)
DS1302_DAT_1;
else
DS1302_DAT_0;
DS1302_CLK_0;
DS1302_CLK_1;
DS1302_CLK_0;
x=x>>1;
}
}
//从1302读取一个字节的数据
unsigned char DS1302_Get_Byt()
{
unsigned char i,x;
x=0;
CLR_BIT(DDRB,7);
SET_BIT(PORTB,7);
for(i=8;i>0;i--)
{
x=x>>1;
if(GET_BIT(PINB,7))
x=x|0x80;
DS1302_CLK_1;
DS1302_CLK_0;
}
SET_BIT(DDRB,7);
CLR_BIT(PORTB,7);
return x;
}
//DS1302设置函数
void DS1302_Set_Shu_Ju(unsigned char x,unsigned char y)
{
DS1302_RST_0;
DS1302_CLK_0;
DS1302_RST_1;
DS1302_Set_Byt(x);
DS1302_Set_Byt(y);
DS1302_RST_0;
DS1302_CLK_0;
}
//获取DS102的数据
unsigned char DS1302_Get_Shu_Ju(unsigned char x)
{
unsigned char y;
DS1302_RST_0;
DS1302_CLK_0;
DS1302_RST_1;
DS1302_Set_Byt(x);
y=DS1302_Get_Byt();
DS1302_RST_0;
DS1302_CLK_0;
return y;
}
//12864写入一个字节数据
void LcdWriteData(unsigned char dataw)//写数据
{
LCDTESTBUSY();//判忙
LCD_RW_0;//写
LCD_RS_1;//数据
DataPort=dataw;
delay_1ms();
LCD_EN_1;
delay_1ms();
LCD_EN_0;
}
//向12854写入一个字节的指令
void LcdWritCommand(unsigned char dataw)//写指令
{
LCDTESTBUSY();//判忙
LCD_RW_0;LCD_RW_0;//
LCD_RS_0;LCD_RS_0;//指令
DataPort=dataw;
delay_1ms();
LCD_EN_1;
delay_1ms();
LCD_EN_0;
}
//12864检测忙
void LCDTESTBUSY()//检测忙函数
{
LCD_EN_0;
LCD_RW_1;
LCD_RS_0;
LCD_EN_1