单片机设计 联系客服

发布时间 : 星期一 文章单片机设计更新完毕开始阅读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--;