桂林电子科技大学毕业设计(论文)报告用纸 第43 页
if(DATA==1) dat|=0x80; SCLK=1; _nop_(); _nop_(); SCLK=0; _nop_(); _nop_();
}
return dat;
}
unsigned char ReadSet1302(unsigned char Cmd) //函数功能:根据命令字,从1302读取一个字节数据
{ }
void Init_DS1302(void) //函数功能: 1302进行初始化设置 {
unsigned char flag; flag= ReadSet1302(0x81);
if(flag&0x80) {
WriteSet1302(0x8E,0x00); WriteSet1302(0x80,((40/10)<<4|(40)));
43
unsigned char dat; RST=0; SCLK=0; RST=1; Write1302(Cmd); dat=Read1302(); SCLK=1; RST=0; return dat;
桂林电子科技大学毕业设计(论文)报告用纸 第44 页
}
WriteSet1302(0x82,((5/10)<<4|(5))); WriteSet1302(0x84,((0/10)<<4|(0))); WriteSet1302(0x86,((11/10)<<4|(11))); WriteSet1302(0x88,((3/10)<<4|(3))); WriteSet1302(0x8c,((14/10)<<4|(14))); WriteSet1302(0x90,0xa5); WriteSet1302(0x8E,0x80);
}
//函数功能:显示秒
void DisplaySecond(unsigned char x) { }
void DisplayMinute(unsigned char x) { }
unsigned char i,j;
i=x/10; j=x;
Write_Address(1,2); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1); unsigned char i,j;
i=x/10; j=x;
Write_Address(1,4); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1);
//函数功能:显示分钟
void DisplayHour(unsigned char x) //函数功能:显示小时 {
44
桂林电子科技大学毕业设计(论文)报告用纸 第45 页
}
unsigned char i,j;
i=x/10; j=x;
Write_Address(1,0); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1);
void DisplayDay(unsigned char x) //函数功能:显示日 { }
void DisplayMonth(unsigned char x) //函数功能:显示月 { }
void DisplayYear(unsigned char x) //函数功能:显示年 {
unsigned char i,j;
45
unsigned char i,j;
i=x/10; j=x;
Write_Address(0,4); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1);
unsigned char i,j;
i=x/10; j=x;
Write_Address(0,2) ; Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1);
桂林电子科技大学毕业设计(论文)报告用纸 第46 页
}
i=x/10; j=x;
Write_Address(0,0); Write_Data(digit1[i]); Write_Data(digit1[j]); delay(1);
void Display_Data(void) //函数功能:显示日期 {
unsigned char second,minute,hour,day,month,year; unsigned char ReadValue; {
ReadValue = ReadSet1302(0x81); DisplaySecond(second); ReadValue = ReadSet1302(0x83); DisplayMinute(minute);
second=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
minute=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x85);
hour=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
DisplayHour(hour); ReadValue = ReadSet1302(0x87);
day=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); }
DisplayDay(day); ReadValue = ReadSet1302(0x89); DisplayMonth(month); ReadValue = ReadSet1302(0x8d); DisplayYear(year);
month=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
year=((ReadValue&0xf0)>>4)*10 + (ReadValue&0x0F);
}
46
桂林电子科技大学毕业设计(论文)报告用纸 第47 页
LCD12864显示模块程序: #include\#include\//#include\
#define LCD_DATA P0 sbit LCD_RS = P1^0; sbit LCD_RW = P1^1; sbit LCD_EN = P1^2; sbit LCD_PSB = P2^7; sbit LCD_RST = P2^6;
unsigned char Strinr0[]={\年 月 日\
unsigned char Strinr1[]={\时 分 秒%unsigned char Strinr2[]={\℃ V: %unsigned char Strinr3[]={\路程 : \
unsigned
Number[]={ '0','1','2','3','4','5','6','7','8','9','.'};
void delay1ms() //函数功能:延时1毫秒 {
unsigned char i,j;
for(i=0;i<1;i++)
for(j=0;j<110;j++);
}
void delay(unsigned int n)//函数功能:延时n毫秒 { unsigned int i;
for(i=0;i } 47 char