第一范文网 - 专业文章范例文档资料分享平台

单片机设计

来源:用户分享 时间:2025/10/16 18:09:27 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

函数功能:显示分钟 入口参数: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--;

搜索更多关于: 单片机设计 的文档
单片机设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0tr4z9tzo24mn0g1luhq_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top