资源描述:
《最新单片机作品 液晶显示多功能电子钟 带音乐闹铃》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、最新单片机作品液晶显示多功能电子钟带音乐闹铃(写在前面的:很想了解无线供电技术,志同道合者共勉。力求把QQ空间打造成技术交流中心--张自变)最新单片机作品:液晶显示多功能电子钟(带音乐闹铃)楼主卜晓旸2011-05-2312:28最近重温了一下单片机的部分知识,做了一个LCD1602的电子钟。还记得上次做的电子钟已经是09年初的事情了。不说什么先上图:图一、正面(实际比图片稍微漂亮点)图二、背面(因为用手拿的时候会碰到时钟芯片和单片机的晶振焊点,所以贴了这么一个标签挡一下:))视频:功能简介:1、日期,星期,时间的显示功能。2、一路闹钟。铃声为那个啥歌曲来着忘了,以前
2、单片机书上的一个例子。3、实时温度显示。4、自定义logo。5、三级背光亮度调节。6、掉电走时(貌似这是必须的)。电路图:点击下载大图源代码(Keil编译通过):1602万年历_带闹钟_MT1.zip估算了一下所有器件成本大概二十多块钱。不过人工成本太高。写程序不说,光焊这块板子就花了我一整天,咱一天的工资也不菲啊。呵呵。不过如果做成PCB倒是可以省相当部分时间。/*///LCD1602单片机万年历(带闹钟功能)//作者:卜晓旸//时间:2011年5月8日//版本:1.0/*/#includereg52.h#defineuintunsignedint#defineuc
3、harunsignedchar//LCD1602引脚定义sbitrs=P2^7;sbitrd=P2^6;sbitlcdcs=P2^5;sbitlcdbacklight1=P2^1;sbitlcdbacklight0=P2^0;ucharbacklight=2;//DS18B20定义ucharcount,s1num,tempint,f,tempth,settemp;//温度整数部分和小数部分;inttempdf,c;sbitTMDAT=P1^6;//DS18B20数据线//DS1302定义ucharnian,yue,ri,shi,fen,miao,zhou;sbitAC
4、C0=ACC^0;sbitACC7=ACC^7;sbitT_RST=P2^2;//ds1302-5sbitT_IO=P2^3;//ds1302-6sbitT_CLK=P2^4;//ds1302-7//显示缓冲区ucharlcd1602_one="2011-05-086MT1";aucharlcd1602_two="11:08:2330^C";//运行状态标志位ucharstatus=0;//0:正常运行1:年调节2:月调节3:日调节4:周调节//5:时调节6:分调节7:秒调节8:闹钟设置是否开启9:闹钟时设置//10:闹钟分设置11:logo第一位设置12:logo第
5、二位设置13:logo第三位设置//20:保存设置21:闹钟模式//按键定义sbitMODE=P3^2;sbitUP=P3^3;sbitDOWN=P3^4;//每月天数定义用于日期调整codeuchardays={31,28,31,30,31,30,31,31,30,31,30,31};//按键按下时当前秒数用于长时间没有设置操作时时钟进入正常走时状态ucharkey_click_sec,now_sec;//闹钟设置显示缓冲区ucharalarm_on="OFF";ucharalarm_time="07:10";//闹钟设置缓冲区codeucharalarm_set_
6、one="Alarm:";codeucharalarm_set_two="Logo:";//闹钟显示缓冲区codeucharalarm_one="*?:?*";codeucharalarm_two="*Alarm*";//闹钟用变量定义sbitBEEP=P1^4;codeuintcyc={1800,1600,1440,1351,1200,1079,960};//音阶1-7的半周期数codeuchartone={13,15,16,16,15,16,13,12,12,13,15,16,16,15,16,13,13,13,15,16,16,15,16,13,12,12,15
7、,13,12,13,12,11,12,6,6,12,15,13,12,6,6,15,13,12,13,12,11,12,6,5,6,0xff};//乐曲《康定情歌》的简谱表codeuchartime={8,8,8,4,4,8,8,12,4,8,8,8,4,4,8,16,8,8,8,8,4,4,8,8,12,4,8,8,4,4,4,4,8,24,8,24,8,24,8,16,8,8,8,4,4,4,4,8,16,8,32};//节拍表ucharH0,L0,cnt;/*延时函数*/voiddelay(uintms){uinti,j;for(j=0;jms