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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(基于单片机的智能数字闹钟程序代码--毕业设计.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于单片机的智能数字闹钟程序代码--毕业设计.doc

1、基于单片机的智能数字闹钟程序代码   main.c #include #include #include     unsigned char clock_data[4]; sbit speaker  = P2^4;//  蜂鸣器 sbit bell = P2^2;   //铃响 bit bell_on=0; bit key_ok=0; unsigned char bell_time=0x20; uchar week_clock_set; #define FIRST_ADDR 0 //定义全局变量 unsig

2、ned char yy,mo,dd,xq,hh,mm,ss;//  定义时间映射全局变量(专用寄存器) uchar j; /****************************************************************************/ //函数声明 extern  unsigned char read_clock(unsigned char ord); extern void lcdwc(unsigned char cmdcode); extern void hzkdis(unsigned char code *s); extern v

3、oid hzkdis2(unsigned char *s); extern char Read_One_Byte(unsigned char addr); extern void Write_One_Byte(unsigned char addr,unsigned char thedata); void lcm_w_ss(void); extern void lcdreset(void); extern void Init_DS18B20(void); extern char gotkey(); extern void Init_1302(void); extern unsig

4、ned int ReadTemperature(void); extern void write_clock(unsigned char ord, unsigned char dd); extern void disp_hz(uchar x,uchar *c_str,uchar w); extern void delay(unsigned int t); void new_time(void); void read_clockss(x);   //void lcm_w_temp(void) ; void read_clockS(void) {  ss = read_cloc

5、k(0x81);//读取秒数据  mm = read_clock(0x83);//读取分钟数据  hh = read_clock(0x85);//小时  dd = read_clock(0x87);//日  mo = read_clock(0x89);//月  xq = read_clock(0x8b);//星期  yy = read_clock(0x8d);//年 } /*void Set_time(unsigned char sel){ //根据选择调整的相应项目加1并写入DS1302   signed char address,item;   signed char

6、max,mini;     if(sel==7)  {address=0x80; max=0;mini=0;}     //秒   if(sel==6)  {address=0x82; max=59;mini=0;}    //分钟   if(sel==5)  {address=0x84; max=23;mini=0;}    //小时   if(sel==3)  {address=0x86; max=31;mini=1;}    //日   if(sel==2)  {address=0x88; max=12;mini=1;}    //月   if(sel==1)  {addre

7、ss=0x8c; max=99; mini=0;}    //年   if(sel==4)  {address=0x8a; max=7;mini=1;}    //星期      //读取1302某地址上的数值转换成10进制赋给item    item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;   if(KEY_Y == 0){    item++;//数加 1     }   if(KEY_N== 0){    item--;//数减 1    }   if(item>max) item=

8、mini;//查看数值有效范围      if(item

9、d char i;   while( --a != 0){      for(i = 0; i < 125; i++);  //一个 ; 表示空语句,CPU空转。   }          //i 从0加到125,CPU大概就耗时1毫秒 }   /*****************************************************************************/ //向LCM中填写 年 数据 void lcm_w_yy(void) { // if (read_clock(0x8d) != yy) {         unsigne

10、d char str[2];      str[2]=0;   yy = read_clock(0x8d);   lcdwc(0x83+FIRST_ADDR);   hzkdis("20");         lcdwc(0x84+FIRST_ADDR);   str[0]=(yy/16+0x30);   str[1]=(yy%16+0x30);         hzkdis2(str);   hzkdis2("年");   }  /*********************************************************************

11、/ //向LCM中填写 月 数据 void lcm_w_mo(void){ // if(read_clock(0x89) != mo){     unsigned char str[2];  str[2]=0;  // lcm_w_test(0,0x90);   lcdwc(0x90+FIRST_ADDR) ;    if(mo/16 != 0){    str[0]=mo/16+0x30;    } //十位消隐    else{str[0]=0x20 ;}//同上     str[1]=mo%16+0x30;    hzkdis2(str);  

12、    lcdwc(0x91+FIRST_ADDR);            hzkdis("月");  } /*****************************************************************************/ //星期处理并送入LCM的指定区域 void lcm_w_xq(void){  unsigned char sel;  unsigned char str[2];  str[2]=0;  //if(read_clock(0x8b) != xq){  //xq = read_clock(0x8b);  s

13、el = (read_clock(0x8b))%16; //字节低4位的BCD码放入sel     lcdwc(0x97+FIRST_ADDR);//写入指定区域(97H 第二行第8个字)  if(sel==7)  {hzkdis("日");}    //    if(sel==6)  {hzkdis("六");}    //    if(sel==5)  {hzkdis("五");}    //    if(sel==4)  {hzkdis("四");}    //    if(sel==3)  {str[0]=0xc8;str[1]=0xfd;hzkdis2(str)/*lcm

14、w_test(1,0xc8);lcm_w_test(1,0xfd)*/;} //此指令等于lcm_w_word("三"); 因为“三”的内码失效。    if(sel==2)  {hzkdis("二");}    //    if(sel==1)  {hzkdis("一");}    //星期一    lcdwc(0x95+FIRST_ADDR);  hzkdis("星期") ;  //} } /*****************************************************************************/ //向LCM中填写 日

15、 数据 void lcm_w_dd(void){       unsigned char str[2]   ;  str[2]=0; // if(read_clock(0x87) != dd){   dd = read_clock(0x87);      lcdwc(0x92+FIRST_ADDR);      if(dd/16 != 0){str[0]=(dd/16)+0x30;} //十位消隐    else{str[0]=0x20;}//同上    str[1]=dd%16+0x30;           hzkdis2(str);     lcdwc(0x93

16、FIRST_ADDR);   hzkdis("日");          } //} /*****************************************************************************/ //向LCM中填写 小时 数据 void lcm_w_hh(void){     unsigned char str[2] ;  str[2]=0;  if(read_clock(0x85) != hh){   //hh = read_clock(0x85);    if (hh > 0x07 && hh < 0x22 /*

17、 w == 0*/){    // beep = 0; led_r = 0;     DelayM(100);    // beep = 1; led_r = 1;    }   }      lcdwc(0x88+FIRST_ADDR);   str[0]=hh/16+0x30;   str[1]=hh%16+0x30;   hzkdis2(str); } //} /*****************************************************************************/ //向LCM中填写 分钟 数据 v

18、oid lcm_w_mm(void){     unsigned char   str[2];  str[2]=0;  if(read_clock(0x83) != mm){     mm = read_clock(0x83);   /*if( w == 0){        days();    //节日显示    updata (); //刷新数据   }*/      } /* lcm_w_test(0,0x89);   lcm_w_test(1,0x3a);   //":"  lcm_w_test(1,(mm/16)+0x30);  lcm_w_test(1,

19、mm%16+0x30);  lcm_w_test(1,0x2e);  //"."*/  lcdwc(0x89+FIRST_ADDR);  hzkdis(":");  str[0]=(mm/16)+0x30;  str[1]= mm%16+0x30;  hzkdis2(str);  hzkdis(":");    } /*****************************************************************************/ //向LCM中填写 秒 数据 void lcm_w_ss(void) {  unsigned

20、char str[2] ;  str[2]=0; // if(read_clock(0x81) != ss)  //判断是否需要更新   /*ss = read_clock(0x81); //更新数据   lcm_w_test(0,0x8b);  //秒值在LCM上的写入位置   lcm_w_test(1,(ss/16)+0x30); //写十位     lcm_w_test(1,ss%16+0x30); //写个位   led_b = ~led_b;    //背光闪烁   lcm_w_mm();//刷新 分       */      //lcm_w_mm();  

21、    ss=read_clock(0x81);   lcdwc(0x8b+FIRST_ADDR);   str[0]=ss/16+0x30;   str[1]=ss%16+0x30;   hzkdis2(str); } lcm_w_temp(void) {      //unsigned char  str1[4];    uchar str[2];    unsigned int i=0;      unsigned char a=0,b=0,c=0;   uchar temp=28;     i=ReadTemperature();//读温度并送显   /

22、 a=i/100;  str1[3]=a+0x30;  str1[2]=0x2e;  str1[1]=(i/10-a*10)+0x30;  str1[0]=(i-a*100-b*10)+0x30;  //lcm_w_test(1,c+0x30); //小位1位    //lcm_w_word("℃"); //度C // str1[0]=(i/100)%10+0x30;   // str1[1]=((i%100)/10)+0x30; // str1[2]=(i%10)+0x30;*/     str[0]=temp/10+0x30;   str[1]=temp%10+

23、0x30;   lcdwc(0x8e+FIRST_ADDR);    hzkdis2(str);  lcdwc(0x8f+FIRST_ADDR);     hzkdis("℃"); } /*****************************************************************************/ //刷新数据 void updata (void) {   lcm_w_hh();//刷新 小时    lcm_w_dd();//刷新 日   lcm_w_xq();//更新星期值    lcm_w_mo();//刷新 月

24、   lcm_w_yy();//刷新 年         lcm_w_mm();   lcm_w_ss();   lcm_w_temp(); }   //初始化界面 void restlib() {    lcdwc(0x80+FIRST_ADDR);    hzkdis("校园打铃系统");    lcdwc(0x90+FIRST_ADDR);    hzkdis("初始化...");    lcdwc(0x88+FIRST_ADDR);    hzkdis("姚辉虎");    lcdwc(0x98+FIRST_ADDR);    hzkdis("");

25、 } /*void  rj1lib() { unsigned char str[2];  lcdwc(0x80+FIRST_ADDR);     str[0]=yy/10+0x30;  str[1]=yy%10+0x30;  hzkdis("20");  hzkdis2(str);  hzkdis("年");     lcdwc(0x90+FIRST_ADDR) ;  if(mo/16 != 0){  str[0]=mo/16+0x30;  } //十位消隐  else{str[0]=0x20 ;}//同上   str[1]=mo%16+0x30;  hzk

26、dis2(str);    lcdwc(0x91+FIRST_ADDR);  hzkdis("月");     lcdwc(0x92+FIRST_ADDR);  if(dd/16 != 0){str[0]=(dd/16)+0x30;} //十位消隐  else{str[0]=0x20;}//同上  str[1]=dd%16+0x30;   hzkdis2(str);  lcdwc(0x93+FIRST_ADDR);  hzkdis("日");  lcdwc(0x88+FIRST_ADDR);     str[0]=hh/16+0x30;  str[1]=hh%16+0x

27、30;  hzkdis2(str);  lcdwc(0x89+FIRST_ADDR);  hzkdis(":");  str[0]=(mm/16)+0x30;  str[1]= mm%16+0x30;  hzkdis2(str);     lcdwc(0x81+FIRST_ADDR); }    /*------------------------------------------------ ------------------------------------------------*/     /*  //不同按键实现不同功能  void go

28、ngneng(int gotkeys)  {   int gn,gn10,gn0 ;    gn=gotkeys;    switch(gn)     {  case 0:  DelayM(2000);gn0=gotkey();if(gn0==0){ lcdreset();restlib();Init_DS18B20();Init_1302();DelayM(3000); cxjmlib();}break;  //长按系统初始化;     case 10: lcdreset();       lcdwc(0x80+FIRST_ADDR); hzkdis("1.设置时间");

29、     lcdwc(0x90+FIRST_ADDR); hzkdis("2.设置闹时");  lcdwc(0x88+FIRST_ADDR); hzkdis("3.系统初始化");   lcdwc(0x79+FIRST_ADDR); hzkdis("");      tt:gn10=gotkey();   //  if (gn10!=16) goto tt; tt1:gn10=gotkey();   //  if (gn10==16) goto tt;    switch(gn10)  {  case 1:       {      lcdreset();  rea

30、d_clockS(); rj1lib(); tt2:    gn10=gotkey();         if (gn10!=16) goto tt2;     tt3:    gn10=gotkey();         if (gn10==16) goto tt2;  switch(gn10)  {  case 0:  break;  case 1:  break;  case 2:  break;  case 3:  break;  case 4:  break;  case 5:  break;  case 6:  break;  case 7:  brea

31、k;  case 8:  break;  case 9:  break;  default:goto tt3;  }        break;     }     case 2:   lcdreset();read_clockS();naozhonglib(); tt4:    gn10=gotkey();         if (gn10!=16) goto tt4 ;     gn10=gotkey();         if (gn10==16) goto tt4;                   break;  case 3:   lcdreset()

32、rj3lib();                 tt6:    gn10=gotkey();         if (gn10!=16) goto tt6;     gn10=gotkey();         if (gn10==16) goto tt6;              if(gn10==10)   //键值为10就初始化系统      {       lcdreset();restlib();Init_DS18B20();Init_1302();DelayM(3000); cxjmlib();       }       if(gn10==11) 

33、// 键值为11取消初始化,返回程序主界面;       {        lcdreset();cxjmlib();        }   break; tt8:    gn10=gotkey();         if (gn10!=16) goto tt8 ;     gn10=gotkey();         if (gn10==16) goto tt8 ;                       break;  }    default: goto tt1;                               }              

34、           }   */ void read_clockss(x) {  hh=Read_One_Byte(x*4+0x20);  mm=Read_One_Byte(x*4+0x21);  ss=Read_One_Byte(x*4+0x22);  week_clock_set=Read_One_Byte(x*4+0x23); } void Write_clockss(x) {  Write_One_Byte(x*4+0x20,hh);  Write_One_Byte(x*4+0x21,mm);  Write_One_Byte(x*4+0x22,ss

35、);  Write_One_Byte(x*4+0x23,week_clock_set); } /* bit cmp_clock()     //每分钟检测一次 {  unsigned char a1;  for (a1=0;a1<32;a1++)  {   read_clockss(a1);   //acc0 = a1*4+0x20  ...acc1 ...acc2 ...acc3   if ((hh==clock_data[0]) && (mm==clock_data[1])) { return 1; }  }  return 0; }*/ //unsigned

36、 char yy,mo,dd,xq,hh,mm,ss;//  定义时间映射全局变量(专用寄存器) void clr_xs() {     lcdwc(0x80+FIRST_ADDR); hzkdis("        ");        lcdwc(0x90+FIRST_ADDR); hzkdis("        ");     lcdwc(0x88+FIRST_ADDR); hzkdis("        ");      lcdwc(0x98+FIRST_ADDR); hzkdis("        "); }   void disp_set_clock() {

37、        unsigned char sel;      uchar str[2];      str[2]=0;      lcdwc(0x91+FIRST_ADDR);       str[0]=yy/16+0x30;      str[1]=yy%16+0x30;      hzkdis2(str);       hzkdis2("年");      str[0]=mo/16+0x30;      str[1]=mo%16+0x30;      hzkdis2(str);       hzkdis2("月");      str[0]=dd/16+0x30;

38、      str[1]=dd%16+0x30;      hzkdis2(str);       hzkdis2("日");            lcdwc(0x89+FIRST_ADDR);       str[0]=hh/16+0x30;      str[1]=hh%16+0x30;      hzkdis2(str);       hzkdis2("时");      str[0]=mm/16+0x30;      str[1]=mm%16+0x30;      hzkdis2(str);       hzkdis2("分");      str[0]=

39、ss/16+0x30;      str[1]=ss%16+0x30;      hzkdis2(str);       hzkdis2("秒");    //  lcdwc(0x98+FIRST_ADDR);                                        sel = (read_clock(0x8b))%16; //字节低4位的BCD码放入sel                     lcdwc(0x9c+FIRST_ADDR);//写入指定区域(97H 第二行第8个字)                  if(sel==7)  {hzk

40、dis("07");}    //                    if(sel==6)  {hzkdis("06");}    //                    if(sel==5)  {hzkdis("05");}    //                    if(sel==4)  {hzkdis("04");}    //                    if(sel==3)  {hzkdis("03");}   //                    if(sel==2)  {hzkdis("02");}    //             

41、       if(sel==1)  {hzkdis("01");}    //星期一                     lcdwc(0x9a+FIRST_ADDR);                  hzkdis("星期") ;     } void disp_clock_set() {      uchar str[2];      str[2]=0;      lcdwc(0x89+FIRST_ADDR);       str[0]=hh/16+0x30;      str[1]=hh%16+0x30;      hzkdis2(str);      

42、 hzkdis2("时");      str[0]=mm/16+0x30;      str[1]=mm%16+0x30;      hzkdis2(str);       hzkdis2("分"); /*     str[0]=ss/16+0x30;      str[1]=ss%16+0x30;      hzkdis2(str);       hzkdis2("秒");  */           // week_clock_set    //  lcdwc(0x98+FIRST_ADDR);     //  hzkdis2(" ");       } /

43、bit set_xs_1_flicker(uchar x,bit y)   //修改数据标志 {        uchar a,str[2];   str[1]=0x1e;   bit flicker=0;   key_ok=1;   while (gotkey()!=16) {} xs_fl0: while(1)   { for  (a=0;a<20;a++)    //    {     delay(500);           if (gotkey()!=16) goto xs_fl1;      key_ok=0;    } xs_fl1:  lcdw

44、c(x+FIRST_ADDR);     if (flicker) { hzkdis2("_"); }    else { str[0]=0x31; str[1]=0x1e; hzkdis2(str); }    flicker = ~flicker;    a=gotkey();    if ( (a<10) && (key_ok==0)){key_ok=1; y=a*16+(y%16); goto xs_lf2;}       if (a==0x0b) return(y);    if(a==10)return(y);    if(a==13)    {        

45、lcdwc(x+FIRST_ADDR);      str[0]=y/16+0x30; str[1]=y%16+0x30; hzkdis2(str);      return(y);    }    if(a==14) goto xs_lf2;      } }           */ uchar set_xs_flicker(uchar x,y)   //修改数据标志 {        uchar a,str[2];   bit flicker=0;   key_ok=1;   while (gotkey()!=16) {} xs_fl0: while(1)  

46、 { for  (a=0;a<20;a++)    {     delay(500);           if (gotkey()!=16) goto xs_fl1;      key_ok=0;    } xs_fl1:  lcdwc(x+FIRST_ADDR);     if (flicker) { hzkdis2("_"); }    else { str[0]=y/16+0x30; str[1]=y%16+0x30; hzkdis2(str); }    flicker = ~flicker;    a=gotkey();    if ( (a<10) &&

47、key_ok==0)){key_ok=1; y=a*16+(y%16); goto xs_lf2;}       if (a==0x0b) return(y);    if(a==10)return(y);    if(a==13)    {        lcdwc(x+FIRST_ADDR);      str[0]=y/16+0x30; str[1]=y%16+0x30; hzkdis2(str);      return(y);    }    if(a==14) goto xs_lf2;      } xs_lf2:  while(1)   { for  (

48、a=0;a<20;a++)    {     delay(500);      if (gotkey()!=16) goto xs_fl3;      key_ok=0;    } xs_fl3:     lcdwc(x+FIRST_ADDR);     if (flicker)     {      str[0]=y/16+0x30;     str[1]=0x5f;     hzkdis2(str);    }    else { str[0]=y/16+0x30; str[1]=y%16+0x30; hzkdis2(str); }    flicker =

49、~flicker;    a=gotkey();    if ( (a<10) && (key_ok==0))    {      key_ok=1;     y=(y/16)*16+a;         lcdwc(x+FIRST_ADDR);      str[0]=y/16+0x30; str[1]=y%16+0x30; hzkdis2(str);     return(y);    }    if (a==0x0b) return(y);    if(a==10) return(y);    if(a==13) goto xs_fl0;           

50、if(a==14)     {        lcdwc(x+FIRST_ADDR);      str[0]=y/16+0x30; str[1]=y%16+0x30; hzkdis2(str);      return(y);    }   } }       void xs_pls()                     {  clr_xs();  lcdwc(0x91+FIRST_ADDR); hzkdis("设置已经保存");  delay(10000); } void set_clock() {      while(1)   {      l

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服