发布时间 : 星期一 文章单片机设计更新完毕开始阅读152ea3fc02d276a200292e9e
函数功能:显示分钟 入口参数:x
void DisplayMinute(unsigned char x) {
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位 i=x/10;//取十位 j=x;//取个位 WriteAddress(0x49); //写显示地址,将在第2行第10列开始显示 WriteData(digit[i]); //将百位数字的字符常量写入LCD WriteData(digit[j]); //将十位数字的字符常量写入LCD delaynms(50); //延时1ms给硬件一点反应时间 }
函数功能:显示小时 入口参数:x
void DisplayHour(unsigned char x) {
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位 i=x/10;//取十位 j=x;//取个位 WriteAddress(0x46); //写显示地址,将在第2行第7列开始显示 WriteData(digit[i]); //将百位数字的字符常量写入LCD WriteData(digit[j]); //将十位数字的字符常量写入LCD delaynms(50); //延时1ms给硬件一点反应时间 }
函数功能:显示日 入口参数:x
void DisplayDay(unsigned char x) {
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位 i=x/10;//取十位 j=x;//取个位 WriteAddress(0x0c); //写显示地址,将在第2行第7列开始显示
WriteData(digit[i]); //将百位数字的字符常量写入LCD WriteData(digit[j]); //将十位数字的字符常量写入LCD delaynms(50); //延时1ms给硬件一点反应时间 }
函数功能:显示月 入口参数:x
void DisplayMonth(unsigned char x) {
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位 i=x/10;//取十位 j=x;//取个位 WriteAddress(0x09); //写显示地址,将在第2行第7列开始显示 WriteData(digit[i]); //将百位数字的字符常量写入LCD WriteData(digit[j]); //将十位数字的字符常量写入LCD delaynms(50); //延时1ms给硬件一点反应时间 }
函数功能:显示年 入口参数:x
void DisplayYear(unsigned char x) {
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位 i=x/10;//取十位 j=x;//取个位 WriteAddress(0x06); //写显示地址,将在第2行第7列开始显示 WriteData(digit[i]); //将百位数字的字符常量写入LCD WriteData(digit[j]); //将十位数字的字符常量写入LCD delaynms(50); //延时1ms给硬件一点反应时间 }
函数功能:显示闹钟秒
入口参数:x
void DisplayAlarmSecond(unsigned char x) {
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位 i=x/10;//取十位 j=x;//取个位 WriteAddress(0x1d); //写显示地址,将在第2行第13列开始显示 WriteData(digit[i]); //将百位数字的字符常量写入LCD WriteData(digit[j]); //将十位数字的字符常量写入LCD delaynms(50); //延时1ms给硬件一点反应时间 }
函数功能:显示闹钟分钟 入口参数:x
void DisplayAlarmMinute(unsigned char x) {
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位 i=x/10;//取十位 j=x;//取个位 WriteAddress(0x1a); //写显示地址,将在第2行第10列开始显示 WriteData(digit[i]); //将百位数字的字符常量写入LCD WriteData(digit[j]); //将十位数字的字符常量写入LCD delaynms(50); //延时1ms给硬件一点反应时间 }
函数功能:显示闹钟小时 入口参数:x
void DisplayAlarmHour(unsigned char x) {
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位 i=x/10;//取十位 j=x;//取个位 WriteAddress(0x17); //写显示地址,将在第2行第7列开始显示 WriteData(digit[i]); //将百位数字的字符常量写入LCD
WriteData(digit[j]); //将十位数字的字符常量写入LCD delaynms(50); //延时1ms给硬件一点反应时间 }
函数功能:显示校验模式 入口参数:x
void DisplayTMode(unsigned char x) {
unsigned char i; //j,k,l分别储存温度的百位、十位和个位 i=x; WriteAddress(0x56); //写显示地址,将在第2行第13列开始显示 switch(i) { case 1:
WriteData('Y');WriteData('e');WriteData('a');WriteData('r');WriteData(' ');WriteData(' '); WriteData(' '); break; case 2:
WriteData('M');WriteData('o');WriteData('n');WriteData('t');WriteData('h');WriteData(' '); WriteData(' '); break; case 3:
WriteData('D');WriteData('a');WriteData('y');WriteData(' ');WriteData(' ');WriteData(' '); WriteData(' '); break; case 4:
WriteData('H');WriteData('o');WriteData('u');WriteData('r');WriteData(' ');WriteData(' '); WriteData(' '); break; case 5:
WriteData('M');WriteData('i');WriteData('n');WriteData('u');WriteData('t');WriteData('e'); WriteData(' '); break; case 6:
WriteData('S');WriteData('e');WriteData('c');WriteData('o');WriteData('n');WriteData('d'); WriteData(' '); break; case 7:
WriteData('A');WriteData('H');WriteData('o');
WriteData('u');WriteData('r');WriteData(' '); WriteData(' '); break; case 8:
WriteData('A');WriteData('M');WriteData('i');WriteData('n');WriteData('u');WriteData('t');WriteData('e'); break; case 9:
WriteData('A');WriteData('S');WriteData('e');WriteData('c');WriteData('o');WriteData('n');WriteData('d'); break; } delaynms(50); //延时1ms给硬件一点反应时间 }
函数功能:校时加1 入口参数:x
void TimeSetAdd(unsigned char x) {
unsigned char i=x; //i为校验关键字1为年,2月,3日,4时,5分,6秒,7周 switch(i) {
case 1:
Currenttime.Year++;
WriteSet1302(0x8c,((Currenttime.Year/10)<<4|(Currenttime.Year)));//根据写星期寄存器命令字,写入星期的初始值 break; case 2:
if(Currenttime.Month<12) Currenttime.Month++; else
Currenttime.Month=1;
WriteSet1302(0x88,((Currenttime.Month/10)<<4|(Currenttime.Month)));//根据写星期寄存器命令字,写入星期的初始值 break; case 3:
if(Currenttime.Day<31) Currenttime.Day++; else
Currenttime.Day=1;
WriteSet1302(0x86,((Currenttime.Day/10)<<4|(Currenttime.Day)));//根据写星期寄存器命令字,写入星期的初始值 break; case 4:
if(Currenttime.Hour<12) Currenttime.Hour++; else
Currenttime.Hour=0;
WriteSet1302(0x84,((Currenttime.Hour/10)<<4|(Currenttime.Hour)));//根据写星期寄存器命令字,写入星期的初始值 break; case 5:
if(Currenttime.Minute<59) Currenttime.Minute++; else
Currenttime.Minute=1;
WriteSet1302(0x82,((Currenttime.Minute/10)<<4|(Currenttime.Minute)));//根据写星期寄存器命令字,写入星期的初始值 break; case 6:
if(Currenttime.Second<59) Currenttime.Second++; else
Currenttime.Second=1;
WriteSet1302(0x80,((Currenttime.Second/10)<<4|(Currenttime.Second)));//根据写星期寄存器命令字,写入星期的初始值 break;
case 7:
if(alarmhour<12) alarmhour++; else
alarmhour=1; break;
case 8:
if(alarmminute<59) alarmminute++; else
alarmminute=1; break;
case 9:
if(alarmsecond<59) alarmsecond++; else
alarmsecond=1; break; } }
函数功能:校时减1 入口参数:x
void TimeSetDec(unsigned char x) {
unsigned char i=x; //i为校验关键字1为年,2月,3日,4时,5分,6秒,7周 switch(i) {
case 1:
Currenttime.Year--;
WriteSet1302(0x8c,((Currenttime.Year/10)<<4|(Currenttime.Year))); break; case 2:
if(Currenttime.Month>1) Currenttime.Month--; else
Currenttime.Month=12;
WriteSet1302(0x88,((Currenttime.Month/10)<<4|(Currenttime.Month)));/ case 3:
if(Currenttime.Day>1) Currenttime.Day--; else
Currenttime.Day=31;
WriteSet1302(0x86,((Currenttime.Day/10)<<4|(Currenttime.Day))); break; case 4:
if(Currenttime.Hour>0) Currenttime.Hour--; else
Currenttime.Hour=12;
WriteSet1302(0x84,((Currenttime.Hour/10)<<4|(Currenttime.Hour))); break; case 5:
if(Currenttime.Minute>0) Currenttime.Minute--; else
Currenttime.Minute=59;
WriteSet1302(0x82,((Currenttime.Minute/10)<<4|(Currenttime.Minute))); break; case 6:
if(Currenttime.Second>0) Currenttime.Second--; else
Currenttime.Second=59;
WriteSet1302(0x80,((Currenttime.Second/10)<<4|(Currenttime.Second)));/ break;
case 7:
if(alarmhour>0) alarmhour--; else
alarmhour=12; break;
case 8:
if(alarmminute>0) alarmminute--; else
alarmminute=59; break;
case 9:
if(alarmsecond>0) alarmsecond--;