范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

毕业设计谁的大学没有一个万年历(基础款分享)

  本次分享的毕设是一个难度系数比较低的51单片机时钟万年历。如果你是零基础的话,是非常适合入手的。如果作为毕设的话,部分院校应该比较难通过,但是在此基础上可以添加更多的功能,让作品的难度有所提升,功能更加完善。
  先来看下功能有哪些:
  1、可以显示当前时间、星期、日期
  2、可以修改当前时间、星期、日期
  3、可以获取环境的温度,并显示到LCD
  4、可以设置闹钟,当时间到蜂鸣器鸣叫、按下按键后关闭鸣叫
  主控选择:STC89C52RC
  STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。目前STC89C52还是有一些市场的。
  显示屏选择:LCD1602
  LCD1602不用说了,硬件毕设最常见的。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。不同厂家生产的LCD1602芯片可能有所不同,但使用方法都是一样的。为了降低成本,绝大多数制造商都直接将裸片做到板子上。
  时钟芯片选择:DS1302
  DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,并且具有闰年补偿等多种功能。
  温度传感器选择:DS18B20
  DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。[1] DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
  外围器件:按键、蜂鸣器、开关、纽扣电池、电位器、三极管等
  原理图设计上,首先是单片机的最小系统,包含供电、晶振、复位电路。
  显示屏电路:数据线接到P0,注意要接1K上拉电阻
  时钟芯片电路:3个引脚接到单片机IO口控制
  PCB设计:
  嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
  无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
  点击这里找小助理0元领取:加微信领取资料
  以下是完整代码,供参考学习: #include "reg52.h"       //此文件中定义了单片机的一些特殊功能寄存器 #include "ds1302.h" #include "temp.h" #include "lcd.h" #include "eeprom.h"   sbit k1 = P1^0;        //按键 sbit k2 = P1^1;        sbit k3 = P1^2; sbit k4 = P1^3;   sbit lcdled = P2^4;        //lcd背光 sbit beep = P1^4;      //蜂鸣器   unsigned int ti=0,alarm=0;       //修改第几个时间参数 、修改第几个闹钟参数 unsigned char alarm_hour=0x12,alarm_min=0x00;   //闹钟时、分参数   enum Mode        //定义枚举、三种模式 {   DISPLAYDATA,MODIFYDATA,SETALARMCLOCK,NONE,ALARMCLOCK }mode;   enum Alarmswitch   //定义闹钟开关 {   OFF,ON }alarmswitch;   /*********延时函数***********/       void delay(unsigned int t)   //短延时 {    while(t--); } void delay_ms(unsigned int t)  //毫秒延时 {   unsigned int a,b;   for(a=0;a400) time=0;      delay_ms(1);    } void setalarmclock(void)  //设置闹钟模式 {   static int time=0;   time++;      if(k1 == 0)       //切换模式   {     delay(1000);   //消除抖动 一般大约10ms     if(k1==0)   //再次判断按键是否按下     {       mode+= 1;if(mode == 3)mode = DISPLAYDATA;     }       while(k1 == 0);   }   if(k2 == 0)       //选择闹钟修改参数   {     delay(1000);   //消除抖动 一般大约10ms     if(k2==0)   //再次判断按键是否按下     {       alarm++;        if(alarm == 3)alarm=0;      }     while(k2 == 0);   }      switch(alarm)      //选择进入修改参数   {     case 0:         if(k3 == 0)        //控制闹钟开         {           delay(1000);   //消除抖动 一般大约10ms           if(k3==0)   //再次判断按键是否按下           {             alarmswitch = ON;             SectorErase(0x2401);             byte_write(0x2401,alarmswitch);           }           while(k3 == 0);         }         if(k4 == 0)       //控制闹钟关闭         {           delay(1000);   //消除抖动 一般大约10ms           if(k4==0)   //再次判断按键是否按下           {             alarmswitch = OFF;             SectorErase(0x2401);             byte_write(0x2401,alarmswitch);           }           while(k4 == 0);         }         break;     case 1:                                        if(k3==0)      //控制闹钟时针加             {               delay(1000);   //消除抖动 一般大约10ms               if(k3 ==0)   //再次判断按键是否按下               {                  alarm_hour++;                  if(alarm_hour%16 == 0x0a)                  {                      alarm_hour += 16;                   alarm_hour &= 0xf0;                  }if(alarm_hour==0x24)alarm_hour=0;                   SectorErase(0x2601);                 byte_write(0x2601,alarm_hour);               }               while(k3==0);             }             if(k4==0)        //控制闹钟时针减             {               delay(1000);   //消除抖动 一般大约10ms               if(k4 ==0)   //再次判断按键是否按下               {                  alarm_hour--;                  if(alarm_hour%16==0x0f && alarm_hour!=0xff)                  {                   alarm_hour &= 0xf9;                  }                  if(alarm_hour==0xff)alarm_hour=0x23;                  SectorErase(0x2601);                  byte_write(0x2601,alarm_hour);               }               while(k4==0);             }         break;     case 2:                      if(k3==0)             {               delay(1000);   //消除抖动 一般大约10ms               if(k3 ==0)   //再次判断按键是否按下               {                  alarm_min++;                  if(alarm_min%16 == 0x0a)                  {                      alarm_min += 16;                   alarm_min &= 0xf0;                  }if(alarm_min==0x60)alarm_min=0;                  SectorErase(0x2201);                  byte_write(0x2201,alarm_min);               }               while(k3==0);             }             if(k4==0)             {               delay(1000);   //消除抖动 一般大约10ms               if(k4 ==0)   //再次判断按键是否按下               {                  alarm_min--;                  if(alarm_min%16==0x0f && alarm_min!=0xff)                  {                   alarm_min &= 0xf9;                  }                  if(alarm_min==0xff)alarm_min=0x59;                  SectorErase(0x2201);                  byte_write(0x2201,alarm_min);               }               while(k4==0);             }         break;   }     if(time == 200)   {     alarm_hour=byte_read(0x2601);     alarm_min=byte_read(0x2201);     alarmswitch=byte_read(0x2401);     LcdWriteCom(0x80);       //显示     LcdWritestr("alarm clock:    ");     LcdWriteCom(0xc0);      if(alarmswitch == OFF)LcdWritestr("  OFF    ");     else LcdWritestr("  ON     ");     LcdWriteCom(0xc9);      LcdWriteData(alarm_hour/16+0x30);     LcdWriteData(alarm_hour%16+0x30);     LcdWriteData(":");      LcdWriteData(alarm_min/16+0x30);     LcdWriteData(alarm_min%16+0x30);     LcdWritestr("    ");   }  else if(time == 400)   switch(alarm)           //选择进入修改参数   {     case 0:          LcdWriteCom(0xc0);         LcdWritestr("      ");       break;     case 1:          LcdWriteCom(0xc9);         LcdWritestr("  ");     break;     case 2:          LcdWriteCom(0xcc);         LcdWritestr("  ");                    break;        }else if(time>400) time=0;       delay_ms(1); }   /************闹钟模式*****************/ void alarmclock(void) {     if(alarmswitch==ON && alarm_hour==TIME[2] && alarm_min==TIME[1])  //闹钟   {           beep=1;     delay_ms(100);     beep=0;     delay_ms(100);       beep=1;     delay_ms(100);     beep=0;     LcdWriteCom(0x80);     LcdWritestr("   time out!    ");     LcdWriteCom(0xc0);     LcdWritestr("now time: ");     LcdWriteData(alarm_hour/16+0x30);     LcdWriteData(alarm_hour%16+0x30);     LcdWriteData(":");      LcdWriteData(alarm_min/16+0x30);     LcdWriteData(alarm_min%16+0x30);     LcdWritestr("    ");     delay_ms(500);     LcdClean();     }   else mode=DISPLAYDATA;   if(k4==0)   {     delay(1000);   //消除抖动 一般大约10ms     if(k4 ==0)   //再次判断按键是否按下     {        alarmswitch=OFF;     }     while(k4==0);   }        } /******************************************************************************* * 函 数 名         : main *******************************************************************************/ void main(void) {   int ucount=0;   unsigned char lastSec;   beep= 0;   LcdInit();       //lcd初始化   //Ds1302Init();      //时钟初始化   Ds18b20Init();      //温度传感器初始化   SectorErase(0x2001); //  byte_write(0x2001,0x08);     //执行一遍初始化 //  byte_write(0x2201,0x00); //  byte_write(0x2401,0x00);   alarm_hour=byte_read(0x2601);   alarm_min=byte_read(0x2201);   alarmswitch=byte_read(0x2401);     while(1)       {     switch(mode)  //模式选择     {       case DISPLAYDATA:    //时间显示模式         Ds1302ReadTime(); //更新时间         if(TIME[0] !=  lastSec)         {           lastSec = TIME[0];           display_data();      //显示时间    秒分时日月周年           displaytemp(Ds18b20ReadTemp());//显示温度           if(alarmswitch==ON && alarm_hour==TIME[2] && alarm_min==TIME[1])  //闹钟           {             mode = ALARMCLOCK;            }         }          keypros();         //按键检测         break;       case MODIFYDATA:        //时间修改模式         modify();         break;       case SETALARMCLOCK:         //设置闹钟模式         setalarmclock();         break;       case ALARMCLOCK:         //闹钟模式         alarmclock();         break;     }   }         }
  文章链接:
  https://mp.weixin.qq.com/s/DTIwMy7TD96cUtUNAN0wyw
  转载自:达尔闻说 ,作者 化作尘
  文章链接: 毕业设计| 谁的大学没有一个万年历(基础款分享)

爱吃甜食,下一个易长痘的就是你很多人爱吃冰激凌喝奶茶喝甜饮料等等。吃完甜食后血糖升高,性激素结合球蛋白水平会下降,就没法去结合更多的游离雄性激素睾酮了。睾酮可能会转化成双氢睾酮,导致你的皮脂腺分泌亢进,进而可能男性怎么样会更显年轻?1吃早餐不管工作有多么繁忙,必须要有营养丰盛的早餐,早餐能加快新陈代谢速度,保持免疫系统处于正常状态,同时保持了血管的弹性。早餐应该包括奶制品水果和五谷类,可以吃两片全麦面包一个鸡治了半辈子前列增生,我总结出4个经验,助你少走20年弯路患者王先生,55岁,主诉前列增生6年。起病最初还是6年前,因夙夜饮酒导致尿潴留,治愈后出院,谁料半年后开始出现尿频排尿无力的情况,渐渐地夜尿也开始增多,从23次增加到56次。期间多吃葡萄干等于吃糖?看看你对葡萄干的误解有多深有人不解,为什么许多健康饮食推荐食谱中会推荐食用葡萄干,特别是黑葡萄干呢?跟这类疑问相对应的比较流行的说法是葡萄干不就是糖么?它有什么营养价值?经过干燥之后,它还有抗氧化活性吗?的女篮世界杯综述美国狂胜波多黎各日本惜败塞尔维亚东道主迎首胜北京时间9月23日,2022年国际篮联女篮世界杯迎来小组赛第二轮赛事。A组,美国队净胜波多黎各队64分,韩国队惨败比利时队遭遇2连败。B组,日本队5分惜败塞尔维亚队,加拿大队战胜法皮克全面塌房,巴萨功臣将被扫地出门?202223赛季,财政暂时稳住了,新援悉数到位了,这意味着巴萨的清算时刻也到了。梅西效力巴萨20年且功高盖主,但对于加泰罗尼亚来说终究是个外人。然而万万想不到,就连皮克这样根正苗红世界杯交通系统会成为阻碍吗?距离2022年世界杯只剩2个月了,在获得世界杯主办权12年后,这个海湾小国卡塔尔建造了体育场,开通了五车道高速公路和价值360亿美元的地铁系统,并在紧迫的时间内进行了巨大的建设工作朋友圈如何发高清无损视频?教程来啦大家好,我是鸭鸭眼瞅着iPhone14系列灵动岛大,隔壁小米彻底坐不住了(bushi)。于是人奋发图强挑灯夜战夜以继日愣是在9月公布了新机小米CIVI2从正面来看,小米CIVI2采OPPO用户放心更新!由内到外四大升级,ColorOS13带来升级新体验前不久2022OPPO开发者大会上,OPPO正式带来了全新的ColorOS13系统,作为安卓阵营的主流系统之一,此次ColorOS13的发布迎来了巨大的改变,包括了水生设计智慧互融呼唤世界级种业科技企业湖北省未来农业产业研究院,是西北农林科技大学校友乡村振兴平台,农业全产业链创新实践机构。研究院以未来农业发展视野,对标国际先进经验,结合中国实情,提供全新模式和解决方案,整合校友及中国联通8月份新增用户126。1万,王卡限定版功不可没2022年9月20日,工信部公布了8月份的移动用户数据,全国移动用户数量为16。775亿,其中包含了传统三大运营商的用户数据,而中国广电这个新秀,可能因为试运营缘故,并未统计在内。
文化评析深入挖掘实体书店的隐藏价值文化评析作者韩浩月(作家)实体书店回暖了,无论是人气还是销售码洋,都证实了这一点。据媒体报道,今年春节期间,北京市有近20万市民逛书店,160多家实体书店的图书销售码洋累计超过20杭州超山景区梅树上开满大妈惹争议,景区回应很多梅树是百年以上,不许攀爬折枝罚款近日,杭州一市民发布超山风景区的梅树上有多位游客攀爬拍照的视频,并附文春天来了,树上开满了鲜花也开满了大妈。网传视频显示,在多株梅树竞相开花的超山风景区东园,天气晴好,数位身着红黑多地密集出台房地产新政华东楼市加快复苏或迎暖春本报记者郭阳琛石英婧上海报道不论外部环境市场走向如何变化,为企业做好服务保障都是政府工作的重中之重。2月11日,在江苏省无锡市房地产企业座谈会上,无锡市市长赵建军如是说道。赵建军表太太太太太太美了!人间仙境,就在东湖梅园以下内容来自东湖磨山景区盛花期的东湖梅园也太好看了一朵朵一簇簇梅花绽放枝头花色雅丽枝干苍劲清香沁脾盛开的梅花同园中古风古韵的建筑相映成趣东湖梅园是中国著名的赏梅胜地以其品种繁多位居云南省体育产业大会22日开幕6大展区面向市民开放来源昆明日报掌上春城掌上春城讯2月22日至25日,云南省体育产业大会将在云南海埂会堂拉开帷幕。目前,州市风采品牌赛事智慧体育行业领军企业全域体育全域旅游融合发展户外运动六大展区已准小鹏汽车广州工厂正式投产设计年产能12万辆将投产G9等车型爱卡汽车行业资讯原创据广州凯得投资控股有限公司消息,由广州凯得投资建设的区域重点项目小鹏汽车广州智能网联智造基地(以下简称小鹏汽车广州工厂)近日正式投产。该工厂位于广州开发区内的中足够精彩!十师一八七团七人制雪地足球比赛鸣哨开赛2月18日上午,全民健身健康中国中西部地区县域乡村足球系列活动暨十师一八七团七人制雪地足球比赛在十师北屯职业技术学校鸣哨开赛。白雪皑皑的操场上,一场雪地足球比赛激战正酣,寒冷的天气迷之操作!韩国棋院一次性招入3位女棋手,这是灌水还是改革?韩国棋院高层,绝对是一群想事的干事的人。为了借助崔精九段宣传韩国围棋,举办了湖盘杯世界女子霸王战为了让围棋吸引当今韩国社会主流阶层MZ世代,以迅雷不及掩耳盗铃之势举办MZ擂台赛在韩伦纳德团队不满威少加盟交易可能存在变数自从威斯布鲁克加盟洛杉矶湖人后,很多人开始猜测这笔签约是否会给球队带来负面影响。同样的担忧也出现在了洛杉矶快船队。近日,据报道,快船队内部有人对威斯布鲁克的加盟表示不满,并担心他会瓦妮莎罕见穿透视衣,身材不输卡戴珊!40岁有韵味,绯闻男友曝光科比遗孀瓦妮莎,在社交媒体上晒出自己观看全明星周末的照片。瓦妮莎和湖人总经理佩林卡合影,瓦妮莎嘟着嘴,太有韵味了。说起来,瓦妮莎和佩林卡还有一段绯闻。在科比遗骸照片外泄案中,为了研37岁金球巨星真乃神核!生吃18岁小将,完爆2大新星,对手被打服北京时间2月22日,欧冠淘汰赛首回合,皇马在安菲尔德2球落后的情况下,依靠本泽马和维尼修斯的双双梅开二度,银河战舰客场52带走胜利,已经基本确定了晋级8强,而37岁的金球先生莫德里