unsigned char second //秒变量
unsigned char minite //分变量
unsigned char hour //时变量
unsigned char tcnt //秒信号产生变量
unsigned char mstcnt //扫描时间变量 const unsigned char dispcode[10]={0xc0,0xf9,0xa4,0xb0,0x99,<br>0x92,0x82,0xf8,0x80,0x90}
//0123456789段码
const unsigned char dispbitcode[6]={0xfe,0xfd,0xfb,0xf7,<br> 0xef,0xdf}
//123456位码
unsigned char dispbuf[6]={0,0,0,0,0,0}
//缓冲数者旦组
//**************TMR0中断数码管扫描程序*********************
void Timer0() interrupt 1
{P2=dispcode[dispbuf[dispbitcnt]]//段码
P1=dispbitcode[dispbitcnt]//位码
dispbitcnt++
if(dispbitcnt==6)
{dispbitcnt=0<br> }
tcnt++ //中断产生秒信号
if(tcnt==244)
{tcnt=0<br> second++<br> if(second==60)<br> {second=0<br> minite++<br> if(minite==60)<br> {minite=0<br>hour++<br>if(hour==24)<br> {hour=0<br> }
}
}
dispbuf[4]=second%10 //得秒钟的低位,送缓冲数组
dispbuf[5]=second/10//得秒钟的高位,送缓冲数组
dispbuf[2]=minite%10//得分钟的低位,送缓冲数组
dispbuf[3]=minite/10//得分钟的高位,送缓冲数组
dispbuf[0]=hour%10//得时钟的低位,送缓冲数组
dispbuf[1]=hour/10 //得时钟的高位,送缓冲数组
}
TMOD=0x01
TL0=0x10
TH0=0xf0 }
/首薯扰//****************1ms延时程序手族******************
void delay_1ms(unsigned char i)
{
unsigned char j
for(i=0i<144i++)
for(j=0j<144j++)
} ///****************按键检测*********************
void key_scan(void)
{
while(1)
{
if(P3_0==0)
{
delay_1ms(20)
if(P3_0==0)
{second++<br>if(second==60)<br> {second=0<br> }
dispbuf[4]=second%10
dispbuf[5]=second/10
while(P3_0==0)
}
}
if(P3_1==0)
{
delay_1ms(20)
if(P3_1==0)
{
minite++
if(minite==60)
{minite=0<br> }
dispbuf[2]=minite%10
dispbuf[3]=minite/10
while(P3_1==0)
}
}
if(P3_2==0)
{
delay_1ms(20)
if(P3_2==0)
{
hour++
if(hour==24)
{
hour=0
}
}
dispbuf[0]=hour%10
dispbuf[1]=hour/10
while(P3_2==0)
}
}
}
//*************主程序********************
void main(void)
{
TMOD=0x01TL0=0x10
TH0=0xf0
while(1)
{
dispbitcnt=0P1=0x00 //开段码
P2=0x00 //开位码
delay_1ms(200) //延时
delay_1ms(200) //延时
delay_1ms(200) //延时
delay_1ms(200) //延时
P2=0xff //关位码EA=1
ET0=1
TR0=1
key_scan()
}
}
哈哈,你有福了 我也想了好久这程序 这不 刚写好 研究研究#include <reg52.h>
#include <intrins.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
sbit IO = P1^0
sbit SCLK = P1^1
sbit RST = P1^2
sbit RS = P2^0
sbit RW = P2^1
sbit EN = P2^2
sbit KEY1=P3^4
sbit KEY2=P3^5
sbit KEY3=P3^6
uchar *WEEK[]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"}
uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00"}
uchar LCD_DSY_BUFFER2[]={"TIME 00:00:00"}
uchar DateTime[7]//秒,分,时,日,月,周,年源档
uchar flag,flag_1,i,miao,fen,shi,ri,yue,zhou,nian
void DelayMS(uint ms)
{
uchar i
while(ms--)
{
for(i=0i<120i++)
}
}
/*****************************************************/
//函数名称: Write_A_Byte_TO_DS1302(uchar x)
//函数功能:向1302写入一个字节
//入口参数: x
//出口参数:无
//调用子程序:无
/*****************************************************/
void Write_A_Byte_TO_DS1302(uchar x)
{
uchar i
for(i=0i<8i++)
{
IO=x&0x01
SCLK=1
SCLK=0
x>>=1
}
}
void Write_DS1302(uchar add,uchar num)
{
SCLK=0
RST=0
RST=1
Write_A_Byte_TO_DS1302(add)
Write_A_Byte_TO_DS1302(num)
RST=0
SCLK=1
}
/*****************************************************/
//函数名称:Get_A_Byte_FROM_DS1302()
//函数功能:从1302读做态一个字节
//入口参数: 无
//出口参数:b/16*10+b%16
//调用子程序:无
/*****************************************************/
uchar Get_A_Byte_FROM_DS1302()
{
uchar i,b=0x00
for(i=0i<8i++)
{
b |= _crol_((uchar)IO,i)
SCLK=1SCLK=0
}
return b/16*10+b%16
}
/*****************************************************/
//函数名称:Read_Data(uchar addr)
//雹胡乱函数功能:指定位置读数据
//入口参数: addr
//出口参数:dat
//调用子程序:Write_Abyte_1302(addr)
/*****************************************************/
uchar Read_Data(uchar addr)
{
uchar dat
RST = 0SCLK=0RST=1
Write_A_Byte_TO_DS1302(addr)
dat = Get_A_Byte_FROM_DS1302()
SCLK=1RST=0
return dat
}
/*****************************************************/
//函数名称:GetTime()
//函数功能:读取时间
//入口参数: 无
//出口参数:无
//调用子程序:无
/*****************************************************/
void GetTime()
{
uchar i,addr = 0x81
for(i=0i<7i++)
{
DateTime[i]=Read_Data(addr)addr+=2
}
}
uchar Read_LCD_State()
{
uchar state
RS=0RW=1EN=1DelayMS(1)
state=P0
EN = 0DelayMS(1)
return state
}
void LCD_Busy_Wait()
{
while((Read_LCD_State()&0x80)==0x80)
DelayMS(5)
}
void Write_LCD_Data(uchar dat) //写数据到1602
{
LCD_Busy_Wait()
RS=1RW=0EN=0P0=datEN=1DelayMS(1)EN=0
}
void Write_LCD_Command(uchar cmd)//写命令
{
LCD_Busy_Wait()
RS=0RW=0EN=0P0=cmdEN=1DelayMS(1)EN=0
}
void Init_LCD() //1602 初始化
{
Write_LCD_Command(0x38)
DelayMS(1)
Write_LCD_Command(0x01)
DelayMS(1)
Write_LCD_Command(0x06)
DelayMS(1)
Write_LCD_Command(0x0c)
DelayMS(1)
}
void Set_LCD_POS(uchar p)
{
Write_LCD_Command(p|0x80)
}
void Display_LCD_String(uchar p,uchar *s) //1602显示
{
uchar i
Set_LCD_POS(p)
for(i=0i<16i++)
{
Write_LCD_Data(s[i])
DelayMS(1)
}
}
void write_com(uchar com)
{
RS=0
P0=com
DelayMS(5)
EN=1
DelayMS(5)
EN=0
}
void write_date(uchar date)
{
RS=1
P0=date
DelayMS(5)
EN=1
DelayMS(5)
EN=0
}
void display(uchar add,uchar date)
{
uchar shi,ge
shi=date/10
ge=date%10
write_com(0x80+0x40+add)
write_date(0x30+shi)
write_date(0x30+ge)
}
void display1(uchar add,uchar date)
{
uchar shi,ge
shi=date/10
ge=date%10
write_com(0x80+add)
write_date(0x30+shi)
write_date(0x30+ge)
}
void Format_DateTime(uchar d,uchar *a)
{
a[0]=d/10+'0'
a[1]=d%10+'0'
}
uchar ZH(uchar dat)
{
uchar tmp
tmp=dat/10
dat=dat%10
dat=dat+tmp*16
return dat
}
void Keyscan()
{
flag_1=1
while(flag_1)
{
if(KEY1==0)
{
DelayMS(5)
while(!KEY1)
flag=(flag+1)%8
switch(flag)
{
case(1): Write_LCD_Command(0x0f)
Write_LCD_Command(0x80+0x40+11)
break
case(2): Write_LCD_Command(0x80+0x40+8)
break
case(3): Write_LCD_Command(0x80+0x40+5)
break
case(4): Write_LCD_Command(0x80+13)
break
case(5): Write_LCD_Command(0x80+11)
break
case(6): Write_LCD_Command(0x80+8)
break
case(7): Write_LCD_Command(0x80+5)
break
case(0): flag_1=0
Write_LCD_Command(0x0c)
//miao
Write_DS1302(0x8e,0x00)
Write_DS1302(0x80,ZH(DateTime[0]))
Write_DS1302(0x8e,0x80)
//fen
Write_DS1302(0x8e,0x00)
Write_DS1302(0x82,ZH(DateTime[1]))
Write_DS1302(0x8e,0x80)
//shi
Write_DS1302(0x8e,0x00)
Write_DS1302(0x84,ZH(DateTime[2]))
Write_DS1302(0x8e,0x80)
//ri
Write_DS1302(0x8e,0x00)
Write_DS1302(0x86,ZH(DateTime[3]))
Write_DS1302(0x8e,0x80)
// yue
Write_DS1302(0x8e,0x00)
Write_DS1302(0x88,ZH(DateTime[4]))
Write_DS1302(0x8e,0x80)
//nian
Write_DS1302(0x8e,0x00)
Write_DS1302(0x8c,ZH(DateTime[6]))
Write_DS1302(0x8e,0x80)
break
}
}
if(flag!=0)
{
if(KEY2==0)
{
DelayMS(5)
if(KEY2==0)
while(!KEY2)
if(flag==1) //miao
{
DateTime[0]++
if(DateTime[0]==60)
DateTime[0]=0
write_com(0x80+0x40+11)
display(11,DateTime[0])
}
if(flag==2) //fen
{
DateTime[1]++
if(DateTime[1]==60)
DateTime[1]=0
write_com(0x80+0x40+8)
display(8,DateTime[1])
}
if(flag==3) //shi
{
DateTime[2]++
if(DateTime[2]==24)
DateTime[2]=0
write_com(0x80+0x40+5)
display(5,DateTime[2])
}
/* if(flag==4)//zhou
{
DateTime[0]++
if(DateTime[0]==60)
DateTime[0]=0
write_com(0x80+0x40+11)
display(11,DateTime[0])
} */
if(flag==5) // ri
{
DateTime[3]++
if(DateTime[3]==30)
DateTime[3]=0
write_com(0x80+11)
display1(11,DateTime[3])
}
if(flag==6) //yue
{
DateTime[4]++
if(DateTime[4]==13)
DateTime[4]=0
write_com(0x80+8)
display1(8,DateTime[4])
}
if(flag==7)//nian
{
DateTime[6]++
if(DateTime[6]==100)
DateTime[6]=0
write_com(0x80+5)
display1(5,DateTime[6])
}
}
}
if(flag!=0)
{
if(KEY3==0)
{
DelayMS(5)
if(KEY3==0)
while(!KEY3)
if(flag==1) //miao
{
DateTime[0]--
if(DateTime[0]==-1)
DateTime[0]=0
write_com(0x80+0x40+11)
display(11,DateTime[0])
}
if(flag==2) //fen
{
DateTime[1]--
if(DateTime[1]==-1)
DateTime[1]=0
write_com(0x80+0x40+8)
display(8,DateTime[1])
}
if(flag==3) //shi
{
DateTime[2]--
if(DateTime[2]==-1)
DateTime[2]=0
write_com(0x80+0x40+5)
display(5,DateTime[2])
}
/* if(flag==4)//zhou
{
DateTime[0]++
if(DateTime[0]==60)
DateTime[0]=0
write_com(0x80+0x40+11)
display(11,DateTime[0])
} */
if(flag==5) // ri
{
DateTime[3]--
if(DateTime[3]==-1)
DateTime[3]=0
write_com(0x80+11)
display1(11,DateTime[3])
}
if(flag==6) //yue
{
DateTime[4]--
if(DateTime[4]==-1)
DateTime[4]=0
write_com(0x80+8)
display1(8,DateTime[4])
}
if(flag==7)//nian
{
DateTime[6]--
if(DateTime[6]==-1)
DateTime[6]=0
write_com(0x80+5)
display1(5,DateTime[6])
}
}
}
}
}
void main()
{
Init_LCD()
while(1)
{
EA=1
EX0=1
GetTime()
Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5) //年
Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8) //月
Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11)//日
strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTime[5]]) //周 串拷贝 包含于STRING.H
Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5) //时
Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8) //分
Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11) //秒
Display_LCD_String(0x00,LCD_DSY_BUFFER1)
Display_LCD_String(0x40,LCD_DSY_BUFFER2)
}
}
void int0() interrupt 0
{
Keyscan()
}
/*============================================================1602液晶显示DS1302时钟
=============================================================*/
#include <AT89x51.h>
#include <string.h>
#include <intrins.h >
#define delayNOP() {_nop_() _nop_() _nop_() _nop_() }
#define LCM_RW P2_1 //定义引脚
#define LCM_RS P2_0
#define LCM_E P2_2
#define LCM_Data P0
#define Busy 0x80 //用于检测LCM状态字中或码的Busy标识
#define uchar unsigned char
sbit T_CLK=P1^0
sbit T_IO =P1^1
sbit T_RST=P1^2
sbit ACC0=ACC^0
sbit ACC7=ACC^7
sbit LED=P1^4 //背光灯输出 (因本实验板无此功能 所以此项功能用P1.4LED灯作为指示)
sbit system=P3^2 //模式 对应实验板K1按键
sbit TimerUp=P3^3 //时间减 对应实验板K2按键
sbit TimerDown=P3^4//时间加 对应实验板K3按键
sbit BEEP=P3^6 //蜂鸣器
void Set(uchar,uchar) //根据选择键团桥调整相应项目
void RTInputByte(uchar) //输入 1Byte */
uchar RTOutputByte(void) //输稿猛出 1Byte */
void W1302(uchar, uchar) //向DS1302写入一个字节
uchar R1302(uchar) //从DS1302读出一个字节
void Set1302(uchar * )//设置时间
void KeySound() //按键音
void ClockSound() //闹铃蜂鸣声
uchar id,msec,model,LedTime,d
bit a,b //闪烁标志位
uchar inittime[7]={0x50,0x59,0x23,0x24,0x07,0x05,0x09} //初始化后设置为:09年7月24日星期5 23点59分50秒
void Out_LCM(void)//显示屏幕
void model0(void) //显示输出
void model1(void)
void model2(void)
void model3(void)
void model4(void)
void model5(void)
void model6(void)
void id_case1_key() //项目调整
void Modset() //模式键处理
void WriteDataLCM(uchar WDLCM)
void WriteCommandLCM(uchar WCLCM,BuysC)
uchar ReadStatusLCM(void)
void LCMInit(void)
void OutputInformation(uchar X, uchar Y, uchar DData)
void DisplayListChar(uchar X, uchar Y, uchar code *DData)
void Delay5Ms(void)
void Delay400Ms(void)
void systemsetup(void)//进入系统设置
uchar code systemp[]={"System.setup"} //字符串输出(系统设定)
uchar code TIMER[]={"Time"} //字符串输出(时间)
uchar code DATE[]={"Date"} //字符串输出(日期)
uchar code alarmclock[]={"Clock"} //字符串输出(闹铃)
uchar code lamp[]={"Lamp"} //字符串输出(背光灯)
uchar code reset[]={"Reset"} //字符串输出(时间归零)
uchar code exit[]={"Exit"}//字符串输出(退出)
uchar code set[]={"Set"} //字符串输出(设置)
uchar code sec[]={"sec"} //字符串输出(秒)
uchar code ClockSet[]={"ClockSet"} //字符串输出(闹铃设置)
uchar code ClockOn[]={"ON"} //字符串输出(ON)
uchar code ClockOff[]={"OFF"} //字符串输出(OFF)
void timesetup(void) //时间设置
void datesetup(void) //日期设置
void alarmclockset(void) //闹铃设置
void lampsetup(void) //背光灯设置
void timereset(void) //时间清零
/*******************************************************************/
void delay1(int ms)
{
unsigned char y
while(ms--)
{
for(y = 0 y<250 y++)
{
_nop_()
_nop_()
_nop_()
_nop_()
}
}
}
/* 延时子程序*/
void delay11(uchar x)
{ uchar j
while((x--)!=0)
{ for(j=0j<125j++)
{}
}
}
//--------------------------------------------------
//--------------------------------------------------
void delay0(uchar x)//x*0.14MS
{
unsigned char i
while(x--)
{
for (i = 0i<13i++) {}
}
}
/*********************************************************/
void beep() //蜂鸣器响一声函数
{
unsigned char i
for (i=0i<100i++)
{
delay0(4)
BEEP=!BEEP //BEEP取反
}
BEEP=1 //关闭蜂鸣器
delay11(250) //延时
}
void main(void)
{
LED=0 //打开LED ,低电平有效,外接9012驱动
Delay400Ms()//启动等待,等LCM讲入工作状态
Delay400Ms()
LCMInit() //LCM初始化
TMOD=0x01 //16位定时
TH0=0x3c //50ms
TL0=0xb0
EA=1
TR0=1
ET0=1
while(1)
{
if(TimerDown==0) //左移键按下后把背光灯打开
{Delay5Ms()
if(TimerDown==0)
{KeySound() //蜂鸣声
LED=0 //打开背光灯
LedTime=R1302(0xc1)/16*10+R1302(0xc1)%16} //取出背光灯时间并转换为十进制数
}
b=1 //模式键是否动作标志。为1时不动作,为0时动作。
Modset() //调用模式键处理程序判断按键是否按下。
if(b==0)
{
KeySound() //蜂鸣声
LED=0//打开背光灯
systemsetup()//进入系统设置模式
LedTime=R1302(0xc1)/16*10+R1302(0xc1)%16//取出背光灯时间并转换为十进制数
}
if((LED==0)&&LedTime==0) //延时间是否到
LED=1 //关闭背光灯
if(R1302(0xc3)==1)//闹铃是否打开,0xc3为读闹铃寄存器地址。
{if((R1302(0x85)==R1302(0xc5))&&(R1302(0x83)==R1302(0xc7))) //判断闹铃时间是否到,
ClockSound() //发出闹铃蜂鸣声,无按键动作蜂鸣一分钟。
}
model0() //输出显示屏幕
}
}
void KeySound() //按键音
{
beep() //开蜂鸣声
}
void ClockSound() //闹铃蜂鸣声
{
if(a==0)
{
beep()
}
}
void Modset() //模式键处理
{ if(system==0)
{
Delay5Ms()
if(system==0)
{while(system==0)
KeySound() //蜂鸣声
a=0msec=0b=0 //a、msec为闪烁标志,按键有动作时清零,不闪烁。
} //b为模式键确认动作。其它程判断b是否为零时来确定模式键是否动作。
}
}
void systemsetup(void) //系统设置
{
model=1
while(model!=0)
{
Out_LCM()
if (TimerUp==0) //设置项目左移
{Delay5Ms()
if(TimerUp==0)
{a=0msec=0KeySound()//蜂鸣声
if(model--==1) //6种系统设置项目
model=6
}
while(TimerUp==0)
}
if (TimerDown==0) //设置项目右移
{
Delay5Ms()
if(TimerDown==0)
{a=0msec=0KeySound()//蜂鸣声
if(model++==6)
model=1
}
while(TimerDown==0)
}
b=1 //模式键是否动作标志。为1时不动作,为0时动作。
Modset() //调用模式键处理程序判断按键是否按下。
if(b==0)
{KeySound() //蜂鸣声
switch(model) //进入进个项目设置
{
case 1:
timesetup()break //时间设置
case 2:
datesetup()break //日期设置
case 3:
alarmclockset()break//闹铃设置
case 4:
lampsetup()break //背光灯设置
case 5:
timereset()break //时间清零
case 6:
model=0break //退出系统设置
}
}
}
}
void timesetup()//时间调整
{
id=6
while(model==1) //model为1时进入时间调整
{
b=1
Modset()
if(b==0)
{KeySound() //蜂鸣声
if(id++==9) //6..9为时分秒调。 .
id=6
}
id_case1_key() //调用按键处理
Out_LCM() //显示输出
}
}
void datesetup()//对日期进行调整
{
id=1
while(model==2) //model为2时进入日期调整
{b=1
Modset() //模式键是否动作
if(b==0)
{KeySound() //蜂鸣声
if(id++==5) //1..5为年月日星期 exit
id=1
}
id_case1_key() //日期调整
Out_LCM()//显示输出
}
}
void alarmclockset(void) //闹铃调整
{id=12
while(model==3) //进入闹铃设置
{b=1
Modset() //模式键是否动作
if(b==0)
{KeySound() //蜂鸣声
if(R1302(0xc3)%16==0)
{id=0model++} //0xc2为闹铃开关寄存器。当为关时按下模式键时将退出闹铃设置,当开时进入闹铃时间设置
else if(id++==15) //12..15为闹铃开关和时间设置 exit
id=12
}
id_case1_key() //调整
Out_LCM() //显示输出
}
}
void lampsetup(void)//背光灯时间设置
{id=10 //背光灯存储空间DS1302(0xc0)
while(model==4) //model为3时进入背光灯调整
{b=1
Modset() //模式键是否动作
if(b==0)
{KeySound() //蜂鸣声
if(id++==11) //10为背光灯 exit
id=10
}
id_case1_key()
Out_LCM()//显示输出
}
}
void timereset() //时间清零
{
Set1302(inittime) //清时间
W1302(0x90,0xa5)//打开充电二级管 一个二级管串联一个2K电阻
model++
}
//对相应的项目进行加、减调整。
void id_case1_key() //按键处理
{
if (TimerUp==0)//增加
{
Delay5Ms()
if(TimerUp==0)
{a=0msec=0KeySound() //蜂鸣声
if((id==9)||(id==5)||(id==11)||(id==15)) //当ID为9、5时按下加、减键将退出调整
{ model++ //退出时间、日期设置
id=0
}
else
Set(id,1)
}
while(TimerUp==0)
}
if (TimerDown==0) //减少
{
Delay5Ms()
if(TimerDown==0)
{a=0msec=0KeySound() //蜂鸣声
if((id==9)||(id==5)||(id==11)||(id==15)) //当ID为9、5时按下加、减键将退出调整
{ model++ //退出时间、日期设置
id=0
}
else
Set(id,0) //调用DS1302写入函数
}
while(TimerDown==0)
}
}
void timer_1(void) interrupt 1 //中断入口,闪烁
{
TH0=0x3c //50ms定时
TL0=0xb0
if(msec++==10) //500ms
{msec=0a=~a //闪烁标志反转
if(a==0) //1秒后背光时间减一秒。
LedTime--
}
}
//根据选择调整相应项目并写入DS1302
void Set(uchar sel,uchar sel_1)
{
uchar address,item
uchar max,min
if(sel==1) {address=0x8cmax=99min=0}//年
if(sel==2) {address=0x88max=12min=1}//月
if(sel==3) {address=0x86max=31min=1}//日
if(sel==4) {address=0x8amax=7min=1}//星期
if(sel==6) {address=0x84max=23min=0}//小时
if(sel==7) {address=0x82max=59min=0}//分钟
if(sel==8) {address=0x80max=59min=0}//秒
if(sel==10) {address=0xc0max=59min=0}//背光时间,最长1分钟
if(sel==12) {address=0xc2max=1min=0} //闹铃开关寄存器
if(sel==13) {address=0xc4max=23min=0}//闹铃时寄存器
if(sel==14) {address=0xc6max=59min=0}//闹铃分寄存器
item=R1302(address+1)/16*10+R1302(address+1)%16
if (sel_1==0) item++ else item--
if(item>max) item=min
if(item<min) item=max
W1302(0x8e,0x00) //允许写 *** 作
W1302(address,item/10*16+item%10) //写入DS1302 //转成BCD码
W1302(0x8e,0x80) //写保护,禁止写 *** 作
}
//屏幕显示
void Out_LCM(void)
{ switch(model)
{
case 0: model0()break
case 1: model1()break
case 2: model2()break //在不同的条件下显示不同的字符
case 3: model3()break
case 4: model4()break
case 5: model5()break
case 6: model6()break
}
}
/***********************model为零时第一行显示时间,不为零时显示system setup******/
void model0()
{
DisplayListChar(0,0,TIMER) //显示固定字符串(Time)
OutputInformation(13,0,0x20)//不显示
OutputInformation(4,0,0x20) //不显示
OutputInformation(4,1,0x20) //不显示
OutputInformation(15,1,0x20)//不显示
OutputInformation(7,1,0x2f) //显示固定字符 "/"
OutputInformation(10,1,0x2f)//显示固定字符 "/"
OutputInformation(13,1,0x2f)//显示固定字符 "/"
DisplayListChar(0,1,DATE) //显示固定字符串Date(日期)
if(a==1) //冒号闪烁
{OutputInformation(7,0,0x3a)OutputInformation(10,0,0x3a)}
else
{OutputInformation(7,0,0x20)OutputInformation(10,0,0x20)}
/*******************model为零时第二行显示日期,不为零显示设置项目*******/
OutputInformation(5,1,R1302(0x8d)/16+0x30) //显示年
OutputInformation(6,1,R1302(0x8d)%16+0x30)
OutputInformation(8,1,R1302(0x89)/16+0x30) //显示月
OutputInformation(9,1,R1302(0x89)%16+0x30)
OutputInformation(11,1,R1302(0x87)/16+0x30)//显示日
OutputInformation(12,1,R1302(0x87)%16+0x30)
OutputInformation(14,1,R1302(0x8b)%16+0x30)//显示星期
OutputInformation(5,0,R1302(0x85)/16+0x30) //显示小时
OutputInformation(6,0,R1302(0x85)%16+0x30)
OutputInformation(8,0,R1302(0x83)/16+0x30) //显示分钟
OutputInformation(9,0,R1302(0x83)%16+0x30)
OutputInformation(11,0,R1302(0x81)/16+0x30)//显示秒
OutputInformation(12,0,R1302(0x81)%16+0x30)
}
/*************************model不为零时显示系统设置***********************************/
//model为1时time闪烁,按下模式键后进入时间调整
void model1()
/*************************************判断ID的值来显示项目***********************/
{ OutputInformation(0,0,0x20) //不显示
OutputInformation(1,0,0x20)
DisplayListChar(2,0,systemp)//第一行显示system setup
if(id==0) //为0时显示TIME date lalcak
{OutputInformation(9,1,0x20)//不显示
OutputInformation(4,1,0x20)//不显示
OutputInformation(15,1,0x20) //不显示
DisplayListChar(5,1,DATE) //显示date
DisplayListChar(10,1,alarmclock)//显示lalcak
if(a==1)
{OutputInformation(0,1,0x20)//不显示
OutputInformation(1,1,0x20)//不显示
OutputInformation(2,1,0x20)//不显示
OutputInformation(3,1,0x20)//不显示
}
else
DisplayListChar(0,1,TIMER) //显示time
}
else
{ //id不为零进入时间调整项目
OutputInformation(3,1,0x3a) //显示固定字符 ":"
OutputInformation(6,1,0x3a) //显示固定字符 ":"
OutputInformation(9,1,0x20) //不显示
OutputInformation(10,1,0x20)//不显示
OutputInformation(0,1,0x20) //不显示
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)