ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:18.71KB ,
资源ID:4299187      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4299187.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(据于单片机89c52和1602液晶屏的万年历程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

据于单片机89c52和1602液晶屏的万年历程序.docx

1、据于单片机89c52和1602液晶屏的万年历程序/ Header: 1602液晶显示时间可调万年历/File Name: calender/ Author: Devine/ Date: 2010.9.15 8:30 2010.9.16 10:54#include#define uint unsigned int#define uchar unsigned char/u1,u2锁存器使能端 在此目的是为了消除对P0口的影响sbit u1=P26;sbit u2=P27;sbit led=P24;/1602液晶输出sbit en=P34;sbit rs=P35;sbit rw=P36; /控制按键

2、输出sbit key1=P30; /模式选择键sbit key2=P31; /加计数键sbit key3=P32; /复位返回键sbit key4=P33; /闹钟开关键/sbit key_com=P37; /按键公共地/定义闹钟输出sbit beep=P23;/sbit beep=P24;/全局变量定义uchar time0,sec,min,hou; /时间(时,分,秒)变量定义uchar num,week_data,week;/星期变量定义uchar month,day; /月份 日期变量定义uint year; /年份 变量定义bit y,m;/y 为闰年的判定变量 为1 则为闰年 m为

3、大月的判断,为1则为大月 m2为二月份的判定 若是二月则m2=1;/赋初值数组定义uchar code first_line= 2010-09-15 Wen; uchar code second_line= 12:30:00 ;uchar code week_data1=Mon;uchar code week_data2=Tue;uchar code week_data3=Wen;uchar code week_data4=Thu;uchar code week_data5=Fri;uchar code week_data6=Sat;uchar code week_data7=Sun;/延时子

4、函数 1ms延时void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /液晶写指令子函数 com即所需输入的指令码void lcd_write_com(uchar com) rs=0; rw=0; en=0; P0=com; delay(5); en=1; delay(5); en=0;/液晶写数据子函数 void lcd_write_data(uchar lcd_data) rs=1; rw=0; en=0; P0=lcd_data; delay(5); en=1; delay(5); en=0;/初始化子函数(包括: 液

5、晶初始化操作 和 定时器0子函数操作)void init() uchar num; u1=0; u2=0;/关闭U1U2锁存器 防止对P0口的影响/给时间设置初值 2010-09-15 Wes 12:30:00 year=2010; month=9; day=15; week=3; hou=12; min=30; sec=0;/液晶指令初始化 en=0;/将液晶en端拉低,为初始化写指令和数据准备 lcd_write_com(0x38);/ MODE lcd_write_com(0x0c);/ DCB lcd_write_com(0x06);/ NS lcd_write_com(0x01);/

6、 清屏/液晶写初值 lcd_write_com(0x80);/写第一行地址 for(num=0;num16;num+) lcd_write_data(first_linenum); delay(5); lcd_write_com(0x80+0x40);/写第二行地址 for(num=0;num16;num+) lcd_write_data(second_linenum); delay(5); /定时器初始化 TMOD=0x01;/定时器0工作方式为1 TH0=(65535-50000)/256;/装初值 TL0=(65535-50000)%256; ET0=1;/开定时器0中断 EA=1;/开

7、总中断 TR0=1;/开始计时/星期显示动态设置void write_week(uchar week_num) uchar temp,k; temp=week_num; if(temp=1) for(k=0;k3;k+) lcd_write_data(week_data1k); delay(5); if(temp=2) for(k=0;k3;k+) lcd_write_data(week_data2k); delay(5); if(temp=3) for(k=0;k3;k+) lcd_write_data(week_data3k); delay(5); if(temp=4) for(k=0;k

8、3;k+) lcd_write_data(week_data4k); delay(5); if(temp=5) for(k=0;k3;k+) lcd_write_data(week_data5k); delay(5); if(temp=6) for(k=0;k3;k+) lcd_write_data(week_data6k); delay(5); if(temp=7) for(k=0;k3;k+) lcd_write_data(week_data7k); delay(5); /* switch (temp) case 1 : for(k=0;k3;k+) lcd_write_data(week

9、_data1k); delay(5); break; case 2 : for(k=0;k3;k+) lcd_write_data(week_data2k); delay(5); break; case 3 : for(k=0;k3;k+) lcd_write_data(week_data3k); delay(5); break; case 4 : for(k=0;k3;k+) lcd_write_data(week_data4k); delay(5); break; case 5 : for(k=0;k3;k+) lcd_write_data(week_data5k); delay(5);

10、break; case 6 : for(k=0;k3;k+) lcd_write_data(week_data6k); delay(5); break; case 7 : for(k=0;k99) year=0; data_refresh(1,year/100); lcd_write_com(0x80+1); if(key3=0) delay(5); if(key3=0) sec=0; num=0; TR0=1; /开启定时器 lcd_write_com(0x0c);/取消闪烁 /闹钟设定void clock() bit flag; if(key4=0) /闹钟开关键 delay(5); if

11、(key4=0) flag= !flag; while(!key4); if(flag=1) led=0; if(min=0) if(hou=0) beep=0; delay(1000); beep=1; if(hou0)&(hou0)&(sec12)&(hou0)&(sec=hou-12) beep=0; delay(110); beep=1; delay(110); beep=0; delay(110); beep=1; delay(770); if(flag=0) led=1; /主函数void main() init(); while(1) time_key_set(); clock(

12、); /定时器中断子函数void t0() interrupt 1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; time0+; if(time0=20) time0=0; sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hou+; if(hou=24) hou=0; day+; week+; if(week=8) week=1; lcd_write_com(0x80+13); /注意这两行的顺序 不能反过来 write_week(week); /注意这两行的顺序 不能反过来 big_month(mo

13、nth); /调用大小月判断子函数 if(m=1) if(day=32) day=1; month+; if(month=13) month=1; year+; if(year=9999) year=0; data_refresh(1,year/100); data_refresh(3,year%100); data_refresh(6,month); else if(day=31) day=1; month+; data_refresh(6,month); if(month=2) leapyear_choise(year);/调用闰年判断子函数 if(y=1) if(day=30) day=1; month=3; data_refresh(6,month); else if(y=0) if(day=29) day=1; month=3; data_refresh(6,month); data_refresh(9,day); data_refresh(0x40+4,hou); data_refresh(0x40+7,min); data_refresh(0x40+10,sec);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1