专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

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

  本次分享的毕设是一个难度系数比较低的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元领取:加微信领取资料
  以下是完整代码,供参考学习:includereg52。h此文件中定义了单片机的一些特殊功能寄存器includeds1302。hincludetemp。hincludelcd。hincludeeeprom。hsbitk1P10;按键sbitk2P11;sbitk3P12;sbitk4P13;sbitlcdledP24;lcd背光sbitbeepP14;蜂鸣器unsignedintti0,alarm0;修改第几个时间参数、修改第几个闹钟参数unsignedcharalarmhour0x12,alarmmin0x00;闹钟时、分参数enumMode定义枚举、三种模式{DISPLAYDATA,MODIFYDATA,SETALARMCLOCK,NONE,ALARMCLOCK}mode;enumAlarmswitch定义闹钟开关{OFF,ON}alarmswitch;延时函数voiddelay(unsignedintt)短延时{while(t);}voiddelayms(unsignedintt)毫秒延时{unsignedinta,b;for(a0;at;a)for(b0;b120;b);}显示日期、时间、星期voiddisplaydata(void){LcdWriteCom(0x80);LcdWritestr(20);LcdWriteData(TIME〔6〕160x30);年LcdWriteData(TIME〔6〕160x30);LcdWriteData();LcdWriteData(TIME〔4〕160x30);月LcdWriteData(TIME〔4〕160x30);LcdWriteData();LcdWriteData(TIME〔3〕160x30);日LcdWriteData(TIME〔3〕160x30);LcdWritestr();switch(TIME〔5〕)显示星期{case0:LcdWritestr(Mon);break;case1:LcdWritestr(Tue);break;case2:LcdWritestr(Wed);break;case3:LcdWritestr(Thu);break;case4:LcdWritestr(Fri);break;case5:LcdWritestr(Sat);break;case6:LcdWritestr(Sun);break;}if(alarmswitchON)LcdWriteData(。);elseLcdWriteData();LcdWriteCom(0xC0);LcdWriteData();LcdWriteData(TIME〔2〕160x30);时LcdWriteData(TIME〔2〕160x30);LcdWriteData(:);LcdWriteData(TIME〔1〕160x30);分LcdWriteData(TIME〔1〕160x30);LcdWriteData(:);LcdWriteData(TIME〔0〕160x30);秒LcdWriteData(TIME〔0〕160x30);LcdWritestr();}显示温度voiddisplaytemp(inttemp)显示温度{floattp;staticcharflag1;if(temp0){LcdWriteCom(0xca);LcdWriteData();temptemp1;temptemp;tptemp;temptp0。06251000。5;}else{LcdWriteCom(0xca);LcdWriteData();tptemp;temptp0。06251000。5;}if(flag){flag0;temp2600;}if(temp8500)return;LcdWriteData(temp1000010000x30);LcdWriteData(temp10001000x30);LcdWriteData(。);LcdWriteData(temp100100x30);LcdWriteData(temp100x30);}函数名:keypros函数功能:按键处理函数,判断按键K1是否按下voidkeypros()初始页面按键检测{if(k10)切换模式{delay(1000);消除抖动一般大约10msif(k10)再次判断按键是否按下{mode1;if(mode3)modeDISPLAYDATA;}while(k10);}elseif(k20)蜂鸣器测试{delay(1000);消除抖动一般大约10msif(k20)再次判断按键是否按下{beep!beep;}while(k20);}elseif(k30)背光灯测试{delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{lcdled!lcdled;}while(k30);}elseif(k40)背光灯测试{delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{alarmswitch!alarmswitch;}while(k40);}}修改时间voidmodify(void){staticinttime0;time;if(k10)切换模式{delay(1000);消除抖动一般大约10msif(k10)再次判断按键是否按下{mode1;if(mode3)modeDISPLAYDATA;}while(k10);}elseif(k20)选择修改参数{delay(1000);消除抖动一般大约10msif(k20)再次判断按键是否按下{ti;if(ti8)ti0;}while(k20);}elseif(k30k40)switch(ti)选择进入修改参数{case0:if(k40k30){delay(1000);消除抖动一般大约10msif(k40k30)再次判断按键是否按下{TIME〔0〕0;}while(k40k30);}break;?case1:if(k30){delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{TIME〔1〕;if(TIME〔1〕160x0a){TIME〔1〕16;TIME〔1〕0xf0;}if(TIME〔1〕0x60)TIME〔1〕0;}while(k30);}if(k40){delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{TIME〔1〕;if(TIME〔1〕160x0fTIME〔1〕!0xff){TIME〔1〕0xf9;}if(TIME〔1〕0xff)TIME〔1〕0x59;}while(k40);}break;?case2:if(k30){delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{TIME〔2〕;if(TIME〔2〕160x0a){TIME〔2〕16;TIME〔2〕0xf0;}if(TIME〔2〕0x24)TIME〔2〕0;}while(k30);}if(k40){delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{TIME〔2〕;if(TIME〔2〕160x0fTIME〔2〕!0xff){TIME〔2〕0xf9;}if(TIME〔2〕0xff)TIME〔2〕0x23;}while(k40);}break;?case3:if(k30){delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{TIME〔3〕;if(TIME〔3〕160x0a){TIME〔3〕16;TIME〔3〕0xf0;}if(TIME〔3〕0x32)TIME〔3〕0;}while(k30);}if(k40){delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{TIME〔3〕;if(TIME〔3〕160x0fTIME〔3〕!0xff){TIME〔3〕0xf9;}if(TIME〔3〕0xff)TIME〔3〕0x31;}while(k40);}break;日case4:if(k30){delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{TIME〔4〕;if(TIME〔4〕160x0a){TIME〔4〕16;TIME〔4〕0xf0;}if(TIME〔4〕0x13)TIME〔4〕0;}while(k30);}if(k40){delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{TIME〔4〕;if(TIME〔4〕160x0fTIME〔4〕!0xff){TIME〔4〕0xf9;}if(TIME〔4〕0xff)TIME〔4〕0x12;}while(k40);}break;月case5:if(k30){delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{TIME〔5〕;if(TIME〔5〕7)TIME〔5〕0;}while(k30);}if(k40){delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{TIME〔5〕;if(TIME〔5〕0xff)TIME〔5〕6;}while(k40);}break;周case6:if(k30){delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{TIME〔6〕;if(TIME〔6〕160x0a){TIME〔6〕16;TIME〔6〕0xf0;}if(TIME〔6〕0xa0)TIME〔6〕0;}while(k30);}if(k40){delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{TIME〔6〕;if(TIME〔6〕160x0fTIME〔6〕!0xff){TIME〔6〕0xf9;}if(TIME〔6〕0xff)TIME〔6〕0x99;}while(k40);}break;年case7:if(k30){delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{modeDISPLAYDATA;ti0;}while(k30);}if(k40){delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{Ds1302Init();时钟初始化modeDISPLAYDATA;返回日期ti0;还原初始修改}while(k40);}break;年}if(time200){displaydata();if(ti7){LcdWriteCom(0xca);LcdWritestr(OK);}}elseif(time400)switch(ti)选择进入修改参数{case0:LcdWriteCom(0xc7);LcdWritestr();break;case1:LcdWriteCom(0xc4);LcdWritestr();break;case2:LcdWriteCom(0xc1);LcdWritestr();break;case3:LcdWriteCom(0x88);LcdWritestr();break;case4:LcdWriteCom(0x85);LcdWritestr();break;case5:LcdWriteCom(0x8c);LcdWritestr();break;case6:LcdWriteCom(0x80);LcdWritestr();break;case7:LcdWriteCom(0xca);LcdWritestr();break;}elseif(time400)time0;delayms(1);}voidsetalarmclock(void)设置闹钟模式{staticinttime0;time;if(k10)切换模式{delay(1000);消除抖动一般大约10msif(k10)再次判断按键是否按下{mode1;if(mode3)modeDISPLAYDATA;}while(k10);}if(k20)选择闹钟修改参数{delay(1000);消除抖动一般大约10msif(k20)再次判断按键是否按下{alarm;if(alarm3)alarm0;}while(k20);}switch(alarm)选择进入修改参数{case0:if(k30)控制闹钟开{delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{alarmswitchON;SectorErase(0x2401);bytewrite(0x2401,alarmswitch);}while(k30);}if(k40)控制闹钟关闭{delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{alarmswitchOFF;SectorErase(0x2401);bytewrite(0x2401,alarmswitch);}while(k40);}break;case1:if(k30)控制闹钟时针加{delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{alarmhour;if(alarmhour160x0a){alarmhour16;alarmhour0xf0;}if(alarmhour0x24)alarmhour0;SectorErase(0x2601);bytewrite(0x2601,alarmhour);}while(k30);}if(k40)控制闹钟时针减{delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{alarmhour;if(alarmhour160x0falarmhour!0xff){alarmhour0xf9;}if(alarmhour0xff)alarmhour0x23;SectorErase(0x2601);bytewrite(0x2601,alarmhour);}while(k40);}break;case2:if(k30){delay(1000);消除抖动一般大约10msif(k30)再次判断按键是否按下{alarmmin;if(alarmmin160x0a){alarmmin16;alarmmin0xf0;}if(alarmmin0x60)alarmmin0;SectorErase(0x2201);bytewrite(0x2201,alarmmin);}while(k30);}if(k40){delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{alarmmin;if(alarmmin160x0falarmmin!0xff){alarmmin0xf9;}if(alarmmin0xff)alarmmin0x59;SectorErase(0x2201);bytewrite(0x2201,alarmmin);}while(k40);}break;}if(time200){alarmhourbyteread(0x2601);alarmminbyteread(0x2201);alarmswitchbyteread(0x2401);LcdWriteCom(0x80);显示LcdWritestr(alarmclock:);LcdWriteCom(0xc0);if(alarmswitchOFF)LcdWritestr(OFF);elseLcdWritestr(ON);LcdWriteCom(0xc9);LcdWriteData(alarmhour160x30);LcdWriteData(alarmhour160x30);LcdWriteData(:);LcdWriteData(alarmmin160x30);LcdWriteData(alarmmin160x30);LcdWritestr();}elseif(time400)switch(alarm)选择进入修改参数{case0:LcdWriteCom(0xc0);LcdWritestr();break;case1:LcdWriteCom(0xc9);LcdWritestr();break;case2:LcdWriteCom(0xcc);LcdWritestr();break;}elseif(time400)time0;delayms(1);}闹钟模式voidalarmclock(void){if(alarmswitchONalarmhourTIME〔2〕alarmminTIME〔1〕)闹钟{beep1;delayms(100);beep0;delayms(100);beep1;delayms(100);beep0;LcdWriteCom(0x80);LcdWritestr(timeout!);LcdWriteCom(0xc0);LcdWritestr(nowtime:);LcdWriteData(alarmhour160x30);LcdWriteData(alarmhour160x30);LcdWriteData(:);LcdWriteData(alarmmin160x30);LcdWriteData(alarmmin160x30);LcdWritestr();delayms(500);LcdClean();}elsemodeDISPLAYDATA;if(k40){delay(1000);消除抖动一般大约10msif(k40)再次判断按键是否按下{alarmswitchOFF;}while(k40);}}函数名:mainvoidmain(void){intucount0;unsignedcharlastSec;beep0;LcdInit();lcd初始化Ds1302Init();时钟初始化Ds18b20Init();温度传感器初始化SectorErase(0x2001);bytewrite(0x2001,0x08);执行一遍初始化bytewrite(0x2201,0x00);bytewrite(0x2401,0x00);alarmhourbyteread(0x2601);alarmminbyteread(0x2201);alarmswitchbyteread(0x2401);while(1){switch(mode)模式选择{caseDISPLAYDATA:时间显示模式Ds1302ReadTime();更新时间if(TIME〔0〕!lastSec){lastSecTIME〔0〕;displaydata();显示时间秒分时日月周年displaytemp(Ds18b20ReadTemp());显示温度if(alarmswitchONalarmhourTIME〔2〕alarmminTIME〔1〕)闹钟{modeALARMCLOCK;}}keypros();按键检测break;caseMODIFYDATA:时间修改模式modify();break;caseSETALARMCLOCK:设置闹钟模式setalarmclock();break;caseALARMCLOCK:闹钟模式alarmclock();break;}}}
  文章链接:
  https:mp。weixin。qq。comsDTIwMy7TD96cUtUNAN0wyw
  转载自:达尔闻说,作者化作尘
  文章链接:毕业设计谁的大学没有一个万年历(基础款分享)

宫颈癌的6个真相!每个女性都应该知道宫颈癌,在女性疾病中也是最常见之一,但它与很多威胁巨大的癌症不同的是,宫颈癌是一种目前可防可控,甚至有可能被消灭的癌症,这又是为什么呢?那就赶快了解一下吧,尽可能地保护自己。真相一力挺哭安倍的曾颖!为毒教材洗白,又一个清华大学教授暴露了7月8日下午,日本前首相安倍晋三在奈良演讲,被41岁的山上彻也枪击。经医护人员现场急救后,被直升机送往医院抢救。在安倍身体已经失去凝血功能后,主治医生依然进行积极抢救输血超过200新婚之夜入洞房,你知道为啥新婚第一夜叫送入洞房吗?结婚一直都是人生的喜事,不论是过去现在还是将来,过去的人比较内敛,所有的私密事情似乎都很隐晦,在说到新婚之夜的夫妻之事时会说洞房花烛夜,这句话也成了人们对于人生大事的代称,可是谁不张伯礼这是目前传播力最强的毒株在7月10日下午举行的上海疫情防控新闻发布会上,上海市卫健委副主任赵丹丹介绍了流行病学调查和病毒基因测序比对结果的综合分析。社会感染者感染的病毒是OmicronBA5。2变种株,是2。13版本前瞻海量更新索尔重做星界龙纹章移除大家好,我是熊熊熊。今天一起来看看2。13版本前瞻海量更新索尔重做星界龙纹章删除。预计更新时间7月14日(星期四),本赛季第一次手端游同步更新!本赛季初,铲铲的更新就一直与端游不同歼灭压制摧毁120毫米反坦克火箭射击试验近日,陆军第81集团军某合成旅在冀北某演训场组织了一场120毫米反坦克火箭射击试验。该反坦克火箭是中国自行设计研制的步兵反坦克武器,用于攻击坦克装甲车辆自行火炮,歼灭和压制暴露的有烂尾楼是谁的过错?请给烂尾楼业主们一个家房子对我们中国人来说有一种特有的情怀,它不仅仅是个遮风挡雨的地方,更是家的象征。期房烂尾十年后,西安的业主们搬进了烂尾楼里,没有水,没有电,毛胚房,简陋的家具,满地的灰尘。每日提水3北京时间7月13日,亚洲足坛爆出超级冷门,国足苦主越南队,在东南亚U19青年锦标赛半决赛中,03惨败马来西亚队,惨遭淘汰出局。本场比赛的惨败,也是越南青年队在历史上首次输给马来西亚数智驱动策略引领北京银行智策零售数字化运营体系获首批认证6月28日,在由中国信通院和通标协TC601大数据技术推进委员会联合发起的企业数智化能力评估(EDMM)企业数字营销应用等级评估中,北京银行智策零售数字化运营体系(以下简称智策体系国际油价7月12日暴跌!国内油价有望三连跌7月12日24时,国内油价迎来了盼望已久的二连跌!全国车主也是深感欣慰,虽说相对国际油价我们国内油价的变动也是暴跌的微调,但是小编也是十分激动,一大早就开着我心爱的小摩托来到加油站知名童星关佩琳近况!转行当上班族归于平淡,43岁仍未婚无儿女7月13日,知名童星关佩琳久违更新社交账号的动态,曝光了自己息影28年后的近况。画面中,关佩琳相约一众闺蜜到餐厅吃冰沙。这里的冰沙制作过程非常有趣,需要自己踩单车发电,榨汁机才会运
李铁日后在中国足坛还能不能混了?谁敢请他做主教练?如果足球报曝光的事被进一步证实是真的话,李铁不但不能继续在中国足坛混了,而且就他的所作所为还有可能面临牢狱之灾。即使日后获释,就他先前的行为,估计没有俱乐部或者个人会再去请他当主教如果亚洲有篮球俱乐部比赛,广东和辽宁能不能拿到最后的冠军?亚洲篮球俱乐部是有比赛的之前只不过是热身赛,CBA也很少有队伍前去参赛,有的也是青年队之类,并没有引起国内球迷的关注,媒体也很少有报道。而到了19年才被大家熟知!因为那年辽宁全主力莫德里奇恩师炮轰C罗自私自大,只在乎自己进球,对此你怎么评价?克罗地亚队主帅达利奇,完全有理由觉得他的爱将莫德里奇,比C罗更有资格获得欧洲最佳球员奖项,但要是因此觉得C罗太自大,上升到质疑C罗人品和球品的高度上,那就不太妥当了。C罗是一个自大麒麟810,麒麟970,骁龙845哪个好,排名一下?我是雪鹿,是一名科技领域创作者,希望我的回答可以对你有帮助。麒麟810,麒麟970,骁龙845哪个好,排名一下?这里先做一个排名,麒麟810gt骁龙845gt麒麟970,以下,做出怎么让hdmi线穿过比它小的管子?电视投影仪等大部分支持hdmi线,家庭装修和工程装修时,如果要部署hdmi线,那么穿线是一个比价麻烦的问题,hdmi的头子比较大,很难穿入穿线管。很多时候走裸线,这样容易损坏。我家想去上军校,哪些原因导致最后上不了军校?感谢邀请,我来回答你的问题。影响上军校的因素主要有以下几种一想去上军校,这是家长的意思还是考生的想法?如果是家长的意思,那么请你慎重考虑,一定要征求孩子的意见。我在军校中见过太多这继发性肥胖有哪些原因导致的?肥胖是当今社会一个非常重要的问题,肥胖可能导致的相关疾病以及死亡率的风险都在逐年上升。而肥胖的分类主要是有这两种。1单纯性肥胖。2继发性肥胖。这两种的肥胖简单概括一下就是单纯性肥胖长时间呆在家里身体会出现什么不适?长时间待在家里第一会感觉累,不是说干活多了的身体累,这是说不上来的一种疲倦,睡了多少觉都解不了的疲乏。自从疫情开始至现在,一直宅在家里。散步,遛弯,都是从客厅到阳台再到厨房再到卧室李铁下课原因究竟是什么?李铁下课的原因,首先是国足战绩不佳濒临被淘汰出局的尴尬境地。另外李铁刚愎自用性格固执偏执,对归化球员的使用上存在偏见临场指挥能力低下,比赛中特别是关键时候,不合理的的换人是导致国足婴儿肌张力高症状有哪些?婴儿肌张力高症状有哪些?婴儿肌张力高症状有姿势异常,还可以出现握拳抽搐全身僵硬以及手脚不自主运动等症状。婴儿肌张力是指肌肉全部的张力总和,是维持身体各种姿势以及运动的基础。新生儿屈小脑萎缩是什么原因导致的?遗传问题脑缺血缺氧脑外伤脑梗脑炎脑动脉硬化煤气和酒精中毒会破坏脑组织,引起脑神经细胞萎缩变形,最终导致小脑萎缩。下面问上医为您详细介绍小脑萎缩及其原因,希望能解决你的一些困惑。1。
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网