dy12864clockv2.1.zip

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 67KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2013-08-29 16:02
    上传日期
基于单片机控制的12864显示的电子钟,带有闹钟功能。
dy12864clockv2.1.zip
  • dy12864电子钟_v2.1
  • main.c
    25KB
  • dy12864lcc_v2_1__Opt.Bak
    904B
  • dy12864lcc_v2.1_.Uv2
    2.1KB
  • dy12864lcc_v2.lnp
    52B
  • main.obj
    47.3KB
  • dy12864lcc_v2_1__Uv2.Bak
    2KB
  • dy12864lcc_v2.1_.plg
    240B
  • dy12864lcc_v2.hex
    15.8KB
  • dy12864lcc_v2.m51
    41.9KB
  • dy12864lcc_v2.rar
    5.8KB
  • main.lst
    36.9KB
  • dy12864lcc_v2.1_.Opt
    904B
  • dy12864lcc_v2.1_
    39.4KB
内容介绍
/********************************************************************************************* 出品 DoYoung.net 电子技术 & DY小卖店 程序名 DY12864LCC电子钟程序(使用DY12864CBL显示屏) 作者 杜 洋 日期 2007-11-03 参数 AT89S52(MCS-51) 12MHZ /********************************************************************************************* //更新日志 2007-11-03 整理完成并发布。 2007-11-02 修改软件上的几处BUG。 2007-11-01 将LCD驱动程序改为并口LCD驱动方式。 V2.1 2007-10-31 升级硬件电路。 2007-02-10 修改为正式发布版。 V1.11 2007-01-26 用每分钟刷新数据,防止显示乱码。 2006-11-30 全部制作完成! 2006-11-29 时钟主显示部分完成。 2006-11-28 时钟驱动程序植入完成。 2006-11-27 LCM驱动程序植入完成。 V1.0 2006-11-26 硬件制作完成。 /********************************************************************************************* //程序说明 本程序是DY12864CBL中文液晶显示屏模块的应用程序 本程序须配合《DY12864CBL技术手册》一同参考使用 仔细了解程序中的函数以在开发时方便调用 DoYoung.net 电子技术 保留版权 欢迎莅临 http://doyoung.net/ /*********************************************************************************************/ //程序部分开始// /****************************************************************************/ //头文件 #include <aT89X52.h rel='nofollow' onclick='return false;'> #include <string.h> /*****************************************************************************/ //灯与扬声器定义 sbit led_back = P2^0;//背光控制(V2.1程序中加入了背光控制的硬件电路) sbit led_b = P2^7;//秒闪烁灯 sbit led_r = P3^4; sbit led_g1 = P3^3;//(P3.3没有使用,V2.1程序中没有用到g1~4) sbit led_g2 = P3^3; sbit led_g3 = P3^3; sbit led_g4 = P3^3; sbit beep = P2^2;//扬声器(V2.1程序中将V1.1程序中的蜂鸣器改为扬声器) /*****************************************************************************/ //温度传感器定义 sbit DQ = P2 ^ 5;//ds18B20 /*****************************************************************************/ //键盘引脚定义 sbit KEY_1 = P3^6; //左上 sbit KEY_2 = P3^7; //左下 sbit KEY_3 = P3^1; //右上 sbit KEY_4 = P3^0; //右下 sbit KEY_I = P3^2; //常0(V2.1电路中无效) /****************************************************************************/ //LCD接口定义 sbit RS = P1^0;//模式位,为0输入指令,为1输入数据 sbit RW = P1^1;//读写位,为0读,为1写 sbit E = P1^2;//使能位 #define Lcd_Bus P0 //数据总线 /*****************************************************************************/ //定义DS1302时钟接口 sbit clock_clk = P0 ^ 7;//ds1302_clk(时钟线) sbit clock_dat = P0 ^ 6;//ds1302_dat(数据线) sbit clock_Rst = P2 ^ 1;//ds1302_Rst(复位线) /*****************************************************************************/ //定义累加器A中的各位 sbit a0 = ACC ^ 0; sbit a1 = ACC ^ 1; sbit a2 = ACC ^ 2; sbit a3 = ACC ^ 3; sbit a4 = ACC ^ 4; sbit a5 = ACC ^ 5; sbit a6 = ACC ^ 6; sbit a7 = ACC ^ 7; /****************************************************************************/ //定义全局变量 unsigned char yy,mo,dd,xq,hh,mm,ss;//定义时间映射全局变量(专用寄存器) bit w = 0; //调时标志位 static unsigned char menu = 0;//定义静态小时更新用数据变量 static unsigned char keys = 0;//定义静态小时更新用数据变量 static unsigned char timecount = 0;//定义静态软件计数器变量 /****************************************************************************/ void DelayM(unsigned int a){//延时函数 1MS/次 unsigned char i; while( --a != 0){ for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU空转。 } //i 从0加到125,CPU大概就耗时1毫秒 } /****************************************************************************/ /******************************************************************************/ //LCD驱动(DY12864CBL液晶显示屏并口驱动程序) /******************************************************************************/ void chk_busy(){//检查忙位(底层) RS=0; RW=1; E=1; Lcd_Bus=0xff; while((Lcd_Bus&0x80)==0x80); E=0; } /******************************************************************************/ void write_com(unsigned char cmdcode){//写命令到LCD(底层) chk_busy(); RS=0; RW=0; E=1; Lcd_Bus=cmdcode; E=0; } /******************************************************************************/ void write_data(unsigned char Dispdata){ //写数据到LCD(底层) chk_busy(); RS=1; RW=0; E=1; Lcd_Bus=Dispdata; E=0; } /******************************************************************************/ void lcm_init(){//初始化LCD屏(被调用层) write_com(0x30); //选择8bit数据流 write_com(0x0c); //开显示(无游标、不反白) write_com(0x01); //清除显示,并且设定地址指针为00H } /*****************************************************************************/ void lcm_w_word(unsigned char *s){//向LCM发送一个字符串,长度64字符之内。(被调用层) while(*s>0){ //应用:lcm_w_word("您好!"); write_data(*s); s++; } } /******************************************************************************/ void lcm_w_test(bit i,unsigned char word){//写指令或数据(被调用层) if(i == 0){ write_com(word);//写指令或数据(0,指令) }else{ write_data(word);//写指令或数据(1,数据) } } /******************************************************************************/ void lcm_clr(void){//清屏函数 lcm_w_test(0,0x01); } /******************************************************************************/ /******************************************************************************/ //公历节日数据库表 /******************************************************************************/ void days (viod) { //公历节日数据库 lcm_w_test(0,0x80);//在屏幕第一行 lcm_w_word("[Dis] [Set]");//显示菜单操作注释 lcm_w_test(0,0x98);//在屏幕第四行 // ----|----------------| if ( mo == 0x01 && dd == 0x01 ){ lcm_w_word("Happy New Year!!"); }//1月 if ( mo == 0x01 && dd == 0x28 ){ lcm_w_word(" 世界麻风日 "); } if ( mo == 0x02 && dd == 0x02 ){ lcm_w_word(" 世界湿地日 "); }//2月 if ( mo == 0x02 && dd == 0x13 ){ lcm_w_word(" 明天情人节了 "); } if ( mo == 0x02 && dd == 0x14 ){ lcm_w_word(" 今天是情人节 "); } if ( mo == 0x03 && dd == 0x01 ){ lcm_w_word(" 国际海豹日 "); }//3月 if ( mo == 0x03 && dd == 0x03 ){ lcm_w_word(" 全国爱耳日 "); } if ( mo == 0x03 && dd == 0x08 ){ lcm_w_word(" 3.8妇女节 "); } if ( mo == 0x03 && dd == 0x12 ){ lcm_w_word(" 植树节 "); } if ( mo == 0x03 && dd == 0x14 ){ lcm_w_word(" 国际警察日 "); } if ( mo == 0x03 && dd == 0x15 ){ lcm_w_word(" 消费者权益日 "); } if ( mo == 0x03 && dd == 0x17 ){ lcm_w_word(" 国际航海日 "); } if ( mo == 0x03 && dd == 0x21 ){ lcm_w_word(" 世界森林日 "); } if ( mo == 0x03 && dd == 0x22 ){ lcm_w_word(" 世界水日 "); } if ( mo == 0x03 && dd == 0x23 ){ lcm_w_word(" 世界气象日 "); } if ( mo == 0x03 && dd == 0x24 ){ lcm_w_word("世界防治结核病日"); } if ( mo == 0x04 && dd == 0x01 ){ lcm_w_word("愚人节 小心上当"); }//4 if ( mo == 0x04 && dd == 0x07 ){ lcm_w_word(" 世界卫生日 "); } if ( mo == 0x04 && dd == 0x08 ){ lcm_w_word(" 复活节 "); } if ( mo == 0x04 && dd == 0x13 ){ lcm_w_word(" 黑色星期五 "); } if ( mo == 0x05 && dd == 0x01 ){ lcm_w_word(" 劳动节 放假 "); }//5 if ( mo == 0x05 && dd == 0x04 ){ lcm_w_word(" 青年节 "); } if ( mo == 0x05 && dd == 0x08 ){ lcm_w_word(" 世界红十字日 "); } if ( mo == 0x05 && dd == 0x12 ){ lcm_w_word(" 国际护士节 "); } if ( mo == 0x05 && dd == 0x05 ){ lcm_w_word("近日注意母亲节 "); } if ( mo == 0x05 && dd == 0x15 ){ lcm_w_word(" 国际家庭日 "); } if ( mo == 0x05 && dd == 0x31 ){ lcm_w_word(" 世界无烟日 "); } if ( mo == 0x06 && dd == 0x01 ){ lcm_w_word(" 国际儿童节 "); }//6 if ( mo == 0x06 && dd == 0x05 ){ lcm_w_word(" 世界环境日 "); } if (
评论
    相关推荐
    • 12864.zip
      液晶显示时间程序,可以精确显示年、月、日。还有闹钟的功能。准确性非常高。
    • 12864.zip
      12864的时钟显示和闹钟定时的程序编程
    • 12864wannianli.rar
      12864显示日期时间星期温度闹钟等,并可进行一些节日生日提醒
    • 12864.zip
      这是一个12864闹钟程序以及设计图,希望大家喜欢,标准十五字十五字
    • 12864万年历+温度计+闹钟+温度检测.rar
      采用89c51单片机,添加了温度计、闹钟还有温度检测功能
    • 电子闹钟LCD12864显示.zip
      新手学习51单片机自己制作的电子闹钟,lcd12864驱动程序和DS1302驱动是网上找的按键程序有些长求指点
    • 单片机综合实验 闹钟lcd12864
      设计具有4个功能按键,使用LCD12864显示,蜂鸣器响闹铃。能自动进行数据上下限判断。例如:闰年二月能选择二十九号,平年则只能到二十八号。其他像年月日时分秒周全都具有判断上下限功能,避免设置错误数据。
    • 12864图文菜单.zip
      12864的实际应用,可完美运行,参考学习
    • 12864.rar
      12864液晶显示,在液晶显示器上显示文字信息,程序简单易懂
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路