- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机时钟讲解材料.pptx
山东轻工职业学院;智能电子产品设计与制作;电子钟的设计与制作目录;设计任务与要求; 设计方案; 单片机型号的选择 ; 程序模块及介绍;uchar code week_string[7][4]={MON,TUE,WED,THU,FRI,SAT,SUN};//定义星期英文缩写表
uchar data month_day[12]={31,0,31,30,31,30,31,31,30,31,30,31};//定义每月天数表
/*--定时计数器T0及中断初始化函数--*/
void init(void)
{
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-50000)/256;//16位计数初值除以256得到高8位初值
TL0=(65536-50000)%256;//16位计数初值除以256的余数得到低8位初值
EA=1;//开总中断
ET0=1;//开启定时器0中断? EX0=1;//开启外部中断,外部中断用于调整时间
PT0=1;//将定时器0中断设置高优先级,调整时间期不停止计时
TR0=1;//启动定时器0
};*-------LCD1602写数据函数-----*/
void LCD1602_write_dat(uchar dat)
{
rs=1;//rs=1,置数据输入状态
P0=dat; //输出待显示字符的字符码(ASCII码)
delay(1);//延时1ms
lcden=1;//lcden=1,使能端有效
delay(1);//延时1ms
lcden=0;//lcden=0,使能端无效
}
;void leapyear() //判断某年是否闰年函数
{
if (0)
month_day[1]=29;//闰年2月29天
else
month_day[1]=28;//平年2月28天
}
?uchar CaculateWeek(int y,char m, char d)//由年、月、日计算星期函数
{
uchar w;
if(m==1){m=13;y=y-1;}
else if(m==2){m=14;y=y-1;}
w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
return w;
}
;/*定时计数器中断程序,每当定时计数器溢出时触发中断,执行该程序*/
void time0() interrupt 1
{
TH0=(65536-50000)/256;//重装初值
TL0=(65536-50000)%256;
if(temp==19)//为了加快仿真速度,将temp设为1,实际应为20
{
temp=0;
if(second==59)//为了加快仿真速度,将second设为2,实际应为59
{
second=0;
if(minute==59)//为了加快仿真速度,将minute设为2,实际应为59
{
minute=0;
if(hour==23)//为了加快仿真速度,将hour设为2,实际应为23
{
; hour=0;
leapyear();//闰、平年计算
if(day==month_day[month-1])//判断日期是否到了每月最后一天
{
day=1;
if(month==12)
{
month=1;
year++;
}
else month++;
}
else day++;
}
else hour++;
};
; if(shift_key==0)//判断移位键是
文档评论(0)