万年历 电子闹钟
- 格式:doc
- 大小:143.50 KB
- 文档页数:3
C语言Lcd1602万年历闹钟Proteus仿真单片机毕业课程电子设计
C语言Lcd1602万年历闹钟Proteus仿真单片机设计
AT89C51+Lcd1602+DS1302+独立按键+蜂鸣器
Lcd1602万年历闹钟。
时间信息来自DS1302,显示采用
Lcd1602,蜂鸣器提供闹音和按键提示音。
液晶上面显示年月日时分秒星期以及闹钟时间。
有时间调节和闹钟调节,可以调节年月日时分秒星期信息以及闹钟时间。
具体介绍如下。
1.做好的仿真图,如下图所示。
2.启动仿真后,先在液晶屏显示系统信息,然后在第二屏显示需要的万年历闹钟信息。
如下图所示!
3.通过单片机右侧的三个按键,即可设置闹钟。
如下图所示。
4.通过单片机左侧的四个按键,来设置年月日时分秒星期的值。
设置时,参数闪烁,同时会有按键提示音。
5.本设计默认套餐1,具体套餐详情请看下面的发货清单。
如需要其它套餐,请联系客服询问。
详情请:点击此处。
多功能电子万年历的设计与实现
随着科技的不断发展,电子产品也在逐渐普及和多样化。
在日常生活中,万年历是人们生活和工作中不可或缺的一部分。
作为较为重要的时间管理工具之一,电子万年历也不断地更新升级,以更好地满足人们多方面的需求。
设计与实现多功能电子万年历,方法有很多,但首先要明确该产品的目标群体以及设计的功能。
在考虑该产品的功能时,应从常见的日常生活中的需求出发,包括:复杂的时间操作、跨时区时间计算、任务提醒、文本存储、闹钟等。
同时,还应该注意产品的造型、操作界面以及用户体验的设计。
基于以上需求和目标,多功能电子万年历应该具备以下几点:
1. 多时区显示:可以根据不同时区进行时间转换,并将不同时区的时间分别显示在时钟面板上。
2. 日历显示:显示公历、农历以及节气等数据,并能够根据用户需要进行时间计算。
3. 任务提醒:支持用户设置任务提醒时间,并能够提前提醒用户。
4. 文本存储:支持文本信息的输入、存储与浏览功能。
5. 闹钟提醒:支持多个闹钟设置,并能够设置重复提醒。
6. 界面及造型设计:应该使界面简洁明了,并且外形要美观实用。
在实现部分,多功能电子万年历应该采用微控制器作为主控制单元,并应有充电电池可供不间断使用,同时也需要在产品设计阶段充分考虑硬件接口设计,以方便用户进行新的功能扩展和升级。
总之,对于多功能电子万年历的设计与实现而言,光有我们想到的不足以满足用户的多样化需求,必须在产品的设计和制造过程中充分考虑到人们的日常实际需求,这样才能真正的得到用户的青睐,达到产品的最终目标。
#include<Windows.h>#include<string.h>#include<mmsystem.h>#include<wingdi.h>#include"resource.h"#include<math.h>#include<commdlg.h>#pragma comment(lib,"WinLib.lib")#pragma comment(lib,"WINMM.LIB")//导入声音用void SetDlgMenuID(UINT nMainDlgID,UINT nCalendarDlgID,UINT nMenuID); void SetButtonID(UINT nCalendarID,UINT nExitID,UINT nBiaoPan1,UINT nBiaoPan2,UINT nBiaoPan3);INT_PTR ShowMainDlg();/**********************************************************API函数参考:GetLocalTime: 获得当前时间(公历:年、月、日、周)MoveToEx: 移动划线的起点LineTo: 绘制到某一点SetTextColor: 设置要绘制的文字颜色TextOut: 绘制文字SetBkMode: 设置背景显示模式wsprintf: 整数转换为字符串,宽字符,用Unicode码GetClientRect: 获取窗口大小GetDC: 获取内存设备SetTimer: 设置定时器FillRect: 填充矩形CreateSolidBrush: 创建刷子RGB: 设置RGB颜色CreateFont:创建一种有特殊性的字体结构体类型参考:SYSTEMTIME: 描述时间类型,包括年月日、时分秒、周**********************************************************/HINSTANCE g_hInst;//保存操作系统传递进来的"应用程序实例句柄"//Windows程序入口函数int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ){g_hInst = hInstance;SetDlgMenuID(IDD_DLG_CLOCK,IDD_DLG_CALENDAR,IDR_MENU);SetButtonID(ID_CALENDAR,ID_EXIT,ID_BIAO1,ID_BIAO2,ID_BIAO3);ShowMainDlg(IDD_DLG_CLOCK);}typedef struct _stDateTime{int nYear;int nMonth;int nDay;}stDateTime;//定义表格,存储年-2099年的农历信息:每年的大小月、闰月信息、春节所在的公历日期unsigned int LunarCalendarTable[199] ={0x04AE53,0x0A5748,0x5526BD,0x0D2650,0x0D9544,0x46AAB9,0x056A4D, 0x09AD42,0x24AEB6,0x04AE4A,/*1901-1910*/0x6A4DBE,0x0A4D52,0x0D2546,0x5D52BA,0x0B544E,0x0D6A43,0x296D37, 0x095B4B,0x749BC1,0x049754,/*1911-1920*/0x0A4B48,0x5B25BC,0x06A550,0x06D445,0x4ADAB8,0x02B64D,0x095742, 0x2497B7,0x04974A,0x664B3E,/*1921-1930*/0x0D4A51,0x0EA546,0x56D4BA,0x05AD4E,0x02B644,0x393738,0x092E4B, 0x7C96BF,0x0C9553,0x0D4A48,/*1931-1940*/0x6DA53B,0x0B554F,0x056A45,0x4AADB9,0x025D4D,0x092D42,0x2C95B6, 0x0A954A,0x7B4ABD,0x06CA51,/*1941-1950*/0x0B5546,0x555ABB,0x04DA4E,0x0A5B43,0x352BB8,0x052B4C,0x8A953F, 0x0E9552,0x06AA48,0x6AD53C,/*1951-1960*/0x0AB54F,0x04B645,0x4A5739,0x0A574D,0x052642,0x3E9335,0x0D9549, 0x75AABE,0x056A51,0x096D46,/*1961-1970*/0x54AEBB,0x04AD4F,0x0A4D43,0x4D26B7,0x0D254B,0x8D52BF,0x0B5452, 0x0B6A47,0x696D3C,0x095B50,/*1971-1980*/0x049B45,0x4A4BB9,0x0A4B4D,0xAB25C2,0x06A554,0x06D449,0x6ADA3D, 0x0AB651,0x093746,0x5497BB,/*1981-1990*/0x04974F,0x064B44,0x36A537,0x0EA54A,0x86B2BF,0x05AC53,0x0AB647, 0x5936BC,0x092E50,0x0C9645,/*1991-2000*/0x4D4AB8,0x0D4A4C,0x0DA541,0x25AAB6,0x056A49,0x7AADBD,0x025D52, 0x092D47,0x5C95BA,0x0A954E,/*2001-2010*/0x0B4A43,0x4B5537,0x0AD54A,0x955ABF,0x04BA53,0x0A5B48,0x652BBC, 0x052B50,0x0A9345,0x474AB9,/*2011-2020*/0x06AA4C,0x0AD541,0x24DAB6,0x04B64A,0x69573D,0x0A4E51,0x0D2646, 0x5E933A,0x0D534D,0x05AA43,/*2021-2030*/0x36B537,0x096D4B,0xB4AEBF,0x04AD53,0x0A4D48,0x6D25BC,0x0D254F, 0x0D5244,0x5DAA38,0x0B5A4C,/*2031-2040*/0x056D41,0x24ADB6,0x049B4A,0x7A4BBE,0x0A4B51,0x0AA546,0x5B52BA, 0x06D24E,0x0ADA42,0x355B37,/*2041-2050*/0x09374B,0x8497C1,0x049753,0x064B48,0x66A53C,0x0EA54F,0x06B244, 0x4AB638,0x0AAE4C,0x092E42,/*2051-2060*/0x3C9735,0x0C9649,0x7D4ABD,0x0D4A51,0x0DA545,0x55AABA,0x056A4E, 0x0A6D43,0x452EB7,0x052D4B,/*2061-2070*/0x8A95BF,0x0A9553,0x0B4A47,0x6B553B,0x0AD54F,0x055A45,0x4A5D38, 0x0A5B4C,0x052B42,0x3A93B6,/*2071-2080*/0x069349,0x7729BD,0x06AA51,0x0AD546,0x54DABA,0x04B64E,0x0A5743, 0x452738,0x0D264A,0x8E933E,/*2081-2090*/0x0D5252,0x0DAA47,0x66B53B,0x056D4F,0x04AE45,0x4A4EB9,0x0A4D4C, 0x0D1541,0x2D92B5 /*2091-2099*/};char* TianGanDizhi[60]={"甲子", "乙丑","丙寅","丁卯","戊辰","已巳","庚午","辛未","壬申","癸酉","甲戌","乙亥","丙子","丁丑","戊寅","已卯","庚辰","辛巳","壬午","癸未","甲申","乙酉","丙戌","丁亥","戊子","已丑","庚寅","辛卯","壬辰","癸巳","甲午","乙未","丙申","丁酉","戊戌","已亥","庚子","辛丑","壬寅","癸卯","甲辰","乙巳","丙午","丁未","戊申","已酉","庚戌","辛亥","壬子","癸丑","甲寅","乙卯","丙辰","丁巳","戊午","已未","庚申","辛酉","壬戌","癸亥"char *ChDayTable[] ={"*","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"};char *ChMonthTable[] = {"*","正","二","三","四","五","六","七","八","九","十","十一","腊"};//定义表格,存储每月日离元旦的天数(不考虑瑞年)unsigned int MonthAdd[12] ={0,31,59,90,120,151,181,212,243,273,304,334};//定义用户要显示的年、月、日unsigned int nCurrentYear=0; //button控制年unsigned int nCurrentMonth=0;//月unsigned int nCurrentDay=0; //日UINT LiteSongs = 0; //判断是否听歌UINT Total=0; //我自定义的变量,当月的总天数UINT PreTotal=0; //自定义的当月的前一月的总天数UINT BUTTON6=0;UINT BUTTON4=0;int k=0;int m=0;//TCHAR Hours[255];SYSTEMTIME BellTime;UINT Inthour=0;//判断某年是否为公历瑞年int IsLeapYear(WORD iYear) //学生需要修改此函数,已经修改{if(((iYear%4==0)&&!(iYear%100==0))||(iYear%400==0))return 1;elsereturn 0;}//公历日期转农历日期的函数void SunToLunar(const stDateTime* pSunDay,stDateTime* pLunarDay) {int i=0;int SunDiff=0;int SpringDiff=0;int nSpringYear=pSunDay->nYear;int nSpringMonth=1;int nSpringDay=0;//计算当前公历日离当年元旦的天数SunDiff = MonthAdd[pSunDay->nMonth-1] + pSunDay->nDay - 1;if(IsLeapYear(pSunDay->nYear) && (pSunDay->nMonth > 2) )//若是瑞年且大于月,天数再加SunDiff++;//计算春节所在公历日离元旦的天数:通过查表,计算当年的春节所在的公历日期,if(((LunarCalendarTable[pSunDay->nYear - 1901] & 0x60)>>5)==1)//若春节在公历月SpringDiff=(LunarCalendarTable[pSunDay->nYear-1901]&0x1F)-1;else//若春节在公历月SpringDiff=(LunarCalendarTable[pSunDay->nYear-1901]&0x1F)-1+31;//SunDiff和SpringDiff的差就是当前公历日离春节的天数if(SunDiff>=SpringDiff)//公历日在春节后{int x = SunDiff - SpringDiff;int bLunar = (LunarCalendarTable[nSpringYear - 1901] & 0xF00000)>>20;//闰月月份i=0;nSpringMonth=1;for(;;){int a = (LunarCalendarTable[pSunDay->nYear-1901] & (0x80000>>i));//计算大小月if(a==0)a=29;elsea=30;if(x<a)break;x =x - a;i++;nSpringMonth++;}nSpringDay =x+1;//如果有闰月if(nSpringMonth>bLunar && bLunar>0)nSpringMonth--;}else//公历日在春节前{int x = SpringDiff-SunDiff;int nShift=0;int bLunar = (LunarCalendarTable[nSpringYear - 1901] & 0xF00000)>>20;//闰月月份i=0;nSpringYear--;//需要上一年的农历信息nSpringMonth=12;//从最后一个月开始计算if (bLunar == 0)//如果没有润月nShift = 0x100;elsenShift = 0x80;for(;;){int a = (LunarCalendarTable[nSpringYear-1901] & (nShift<<i));//计算大小月if(a==0)a=29;elsea=30;if(x<a){x = a-x;break;}x =x - a;i++;nSpringMonth--;}nSpringDay =x+1;if(nSpringMonth<bLunar && bLunar>0)nSpringMonth++;}pLunarDay->nYear = nSpringYear;pLunarDay->nMonth= nSpringMonth;pLunarDay->nDay = nSpringDay;}//根据公历日期获得星期int GetDayOfWeek(const stDateTime* pSunDay){//根据泰勒公式//nWeek = [nYear1÷] - 2*nYear1 + nYear2 + [nYear2÷] + [26(nMonth+1)÷] + nDay - 1int nWeek=0;int nYear1=pSunDay->nYear/100;//年的前两位数字int nYear2=pSunDay->nYear%100;//年的后两位数字int nDay=pSunDay->nDay; //公立日int nMonth=pSunDay->nMonth;//公立月数,所求的月份如果是月或月,//则应视为上一年的月或月,//也就是公式中nMonth的取值范围是从到而不是从到if(nMonth==1 || nMonth==2){nMonth=12+nMonth;nYear1=(pSunDay->nYear-1)/100;//年的前两位数字nYear2=(pSunDay->nYear-1)%100;//年的后两位数字}nWeek = nYear1/4 - 2*nYear1 + nYear2 + nYear2/4 + (26*(nMonth+1))/10 + nDay - 1;if(nWeek < 0)nWeek = ((nWeek)%7+7);// 有问题吗?nWeek可能小于零,循环加elsenWeek = (nWeek)%7;return nWeek;}//根据公立年得到农历干支年char* GetGanZhi(int nYear){int i=(nYear-1984)%60;return TianGanDizhi[i];}//日历绘制函数,学生自己实现该函数void DrawCalendar(HDC hDC,int nWidth,int nHeight){//获得日历的背景色stDateTime SunDay,LunarDay; //存储当时年月日SYSTEMTIME DateTime; //系统时间RECT rc;HBRUSH hBrush;HFONT hFont;TCHAR RILI[255]; //日历的标题TCHAR GraTime[255]; //表格日期UINT xOrg=50; //x起始坐标UINT yOrg=50; //y起始坐标UINT xRight=nWidth-45; //X的右端不包括UINT yBottom = nHeight-30; //Y的底部UINT i=0,biaoGe=0; //日历表格用TCHAR *WeekDay[] = {"日","一","二","三","四","五","六"};TCHAR *ShuXiang[]= {"鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"};UINT Week=0;//列数UINT Hang=0;//行数TCHAR Str[255];//农历和公历年月字符UINT week=0;UINT hangkuan=0,liekuan=0;UINT First=0;UINT xLeft=0;UINT yRigth=0;UINT ShengXiao=0;UINT BeiJing=0;HBITMAP hBkmap;//得到图片HDC hdc;//绘制日历的矩形背景(改变皮肤)hdc = CreateCompatibleDC(hDC);switch (nCurrentMonth%12){case 0:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/yiyue.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 1:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/eryue.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 2:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/sanyue.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) ;break;case 3:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/siyue.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 4:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/wuyue.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 5:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/liuyue.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) ;break;case 6:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/qi.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 7:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/ba.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 8:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/jiu.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 9:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/shi.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 10:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/shiyi.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 11:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/beijing/shier.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;}SelectObject(hdc,hBkmap);BitBlt(hDC,0,0,nWidth,nHeight,hdc,0,0,SRCCOPY);SetRect (&rc,xOrg+65,yOrg,xRight-65,yOrg+25);hBrush=CreateSolidBrush(RGB(230,0,150));FillRect(hDC,&rc,hBrush);SetRect (&rc,xOrg,yOrg,xOrg+65,yOrg+25);hBrush=CreateSolidBrush(RGB(0,255,255));FillRect(hDC,&rc,hBrush);SetRect (&rc,xRight-65,yOrg,xRight,yOrg+25);hBrush=CreateSolidBrush(RGB(0,255,255));FillRect(hDC,&rc,hBrush);//绘制星期背景色MoveToEx(hDC,xOrg,yOrg,NULL);LineTo(hDC,xRight,yOrg);MoveToEx(hDC,xOrg,yOrg,NULL);LineTo(hDC,xOrg,yBottom);MoveToEx(hDC,xRight,yOrg,NULL);LineTo(hDC,xRight,yBottom);MoveToEx(hDC,xOrg,yBottom,NULL);LineTo(hDC,xRight,yBottom);//星期标题框MoveToEx(hDC,xOrg,yOrg+25,NULL);LineTo(hDC,xRight,yOrg+25);//行biaoGe = yBottom-yOrg-25;//只是日历的高度biaoGe = biaoGe/6;//高度分为六块hangkuan=biaoGe;for(i=0;i<5;i++)//画五行{MoveToEx(hDC,xOrg,yOrg+25+biaoGe*(i+1),NULL);LineTo(hDC,xRight,yOrg+25+biaoGe*(i+1));}//列biaoGe = xRight-xOrg;//只是日历的宽度biaoGe = biaoGe/7;//要七列liekuan=biaoGe;for(i=0;i<6;i++)//画七列{MoveToEx(hDC,xOrg+biaoGe*(i+1),yOrg,NULL);LineTo(hDC,xOrg+biaoGe*(i+1),yBottom);}//绘制‘星期’标题框内的文字SetTextColor(hDC,RGB(255,0,0));TextOut(hDC,xOrg+20,yOrg+6,WeekDay[0],strlen(WeekDay[0]));//星期日的//绘制“属相”的文字SetTextColor(hDC,RGB(0,100,255));switch((nCurrentYear-4)%12)//jisuan{case 0:TextOut(hDC,xOrg-35,yOrg,ShuXiang[0],strlen(ShuXiang[0]));break;case 1:TextOut(hDC,xOrg-35,yOrg,ShuXiang[1],strlen(ShuXiang[1]));break;case 2:TextOut(hDC,xOrg-35,yOrg,ShuXiang[2],strlen(ShuXiang[2]));break;case 3:TextOut(hDC,xOrg-35,yOrg,ShuXiang[3],strlen(ShuXiang[3]));break;case 4:TextOut(hDC,xOrg-35,yOrg,ShuXiang[4],strlen(ShuXiang[4]));break;case 5:TextOut(hDC,xOrg-35,yOrg,ShuXiang[5],strlen(ShuXiang[5]));break;case 6:TextOut(hDC,xOrg-35,yOrg,ShuXiang[6],strlen(ShuXiang[6]));break;case 7:TextOut(hDC,xOrg-35,yOrg,ShuXiang[7],strlen(ShuXiang[7]));break;case 8:TextOut(hDC,xOrg-35,yOrg,ShuXiang[8],strlen(ShuXiang[8]));break;case 9:TextOut(hDC,xOrg-35,yOrg,ShuXiang[9],strlen(ShuXiang[9]));break;case 10:TextOut(hDC,xOrg-35,yOrg,ShuXiang[10],strlen(ShuXiang[10]));break;case 11:TextOut(hDC,xOrg-35,yOrg,ShuXiang[11],strlen(ShuXiang[11]));break;}SetTextColor(hDC,RGB(0,0,0));for(i=1;i<6;i++)//星期一到六{TextOut(hDC,xOrg+20+biaoGe*i,yOrg+6,WeekDay[i],strlen(WeekDay[i ]));}SetTextColor(hDC,RGB(255,0,0));TextOut(hDC,xOrg+20+biaoGe*6,yOrg+6,WeekDay[6],strlen(WeekDay[6 ]));//以下代码是公历显示if(nCurrentYear==0)//如果当前日期还没有被设定{GetLocalTime(&DateTime);nCurrentYear = DateTime.wYear;nCurrentMonth= DateTime.wMonth;nCurrentDay =DateTime.wDay;}SunDay.nYear = nCurrentYear;SunDay.nMonth = nCurrentMonth;SunDay.nDay = nCurrentDay;SunToLunar(&SunDay,&LunarDay);//得到农历TextOut(hDC,80,28,ChMonthTable[LunarDay.nMonth],strlen(ChMonthTable[LunarDay.nMonth]));//农历显示TextOut(hDC,110,28,"月",strlen("月"));SunDay.nDay = 1;wsprintf(GraTime,"%.4d年%.2d月%.2d日",nCurrentYear,nCurrentMonth,nCurrentDay);//现在时间TextOut(hDC,50,10,GraTime,strlen(GraTime));//标题的时间//十二生肖图片hdc = CreateCompatibleDC(hDC);switch((nCurrentYear-4)%12){case 0:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/0.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 1:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 2:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/2.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 3:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/3.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 4:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/4.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 5:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/5.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 6:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/6.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 7:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/7.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 8:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/8.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 9:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/9.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 10:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/10.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;case 11:hBkmap = (HBITMAP)LoadImage(g_hInst,"../image/shengxiao/11.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);break;}SelectObject(hdc,hBkmap);BitBlt(hDC,7,20,150,150,hdc,0,0,SRCCOPY);//该月的总天数if(SunDay.nMonth==12){//PreTotal=30;Total=31;elseTotal=MonthAdd[SunDay.nMonth]-MonthAdd[SunDay.nMonth-1];if(IsLeapYear(SunDay.nYear)&&SunDay.nMonth==2){Total++;}//前一月的总天数if(SunDay.nMonth==1)PreTotal=31;else if(SunDay.nMonth==3){PreTotal=28;if(IsLeapYear(SunDay.nYear))PreTotal++;}else if(SunDay.nMonth==12)PreTotal=30;elsePreTotal=MonthAdd[SunDay.nMonth-1]-MonthAdd[SunDay.nMonth-2];First=GetDayOfWeek(&SunDay); //该月的第一天是星期几for(i=1;i<=Total;i++){SunDay.nYear = nCurrentYear;SunDay.nMonth = nCurrentMonth;SunDay.nDay=i; //从一号开始week=GetDayOfWeek(&SunDay);//得到该月第i号是星期几 SunToLunar(&SunDay,&LunarDay);//得到农历Week=week%7; //从第Week列开始Hang=((First+i-1)-(First+i-1)%7)/7; //从第Hang行开始xLeft=xOrg+15+(Week)*liekuan;yRigth=yOrg+40+(Hang)*hangkuan;if(DateTime.wYear==SunDay.nYear&&DateTime.wMonth==SunDay.nMonth &&DateTime.wDay==i)//显示今天{SetRect (&rc,xOrg+(Week)*liekuan,yOrg+25+(Hang)*hangkuan,xOrg+(Week)*liekuan+liekuan,yOrg+25+(Hang)*hangkuan+hangkuan) ;hBrush=CreateSolidBrush(RGB(0,255,255));FillRect(hDC,&rc,hBrush);}if(nCurrentYear==SunDay.nYear&&nCurrentMonth==SunDay.nMonth&&nC urrentDay==i)//动态显示每一天{SetRect (&rc,xOrg+(Week)*liekuan,yOrg+25+(Hang)*hangkuan,xOrg+(Week)*liekuan+liekuan,yOrg+25+(Hang)*hangkuan+hangkuan) ;hBrush=CreateSolidBrush(RGB(255,255,0));FillRect(hDC,&rc,hBrush);}SetTextColor(hDC,RGB(0,0,255));//节日颜色if(SunDay.nMonth==1&&SunDay.nDay==1){TextOut(hDC,xLeft,yRigth,"元旦",strlen("元旦"));//显示公历}else if(SunDay.nMonth==2&&SunDay.nDay==14){TextOut(hDC,xLeft,yRigth,"情人节",strlen("情人节"));}else if(SunDay.nMonth==5&&SunDay.nDay==1){TextOut(hDC,xLeft,yRigth,"劳动节",strlen("劳动节"));else if(SunDay.nMonth==5&&SunDay.nDay==4){TextOut(hDC,xLeft,yRigth,"青年节",strlen("青年节"));}else if(SunDay.nMonth==9&&SunDay.nDay==10){TextOut(hDC,xLeft,yRigth,"教师节",strlen("教师节"));}else if(SunDay.nMonth==10&&SunDay.nDay==1){TextOut(hDC,xLeft,yRigth,"国庆节",strlen("国庆节"));}else if(SunDay.nMonth==11&&SunDay.nDay==11){TextOut(hDC,xLeft,yRigth,"光棍节",strlen("光棍节"));}else if(SunDay.nMonth==11&&SunDay.nDay==24){TextOut(hDC,xLeft,yRigth,"感恩节",strlen("感恩节"));}else if(SunDay.nMonth==12&&SunDay.nDay==25){TextOut(hDC,xLeft,yRigth,"圣诞节",strlen("圣诞节"));}else{wsprintf(Str,"%i",i);SetTextColor(hDC,RGB(0,0,255));TextOut(hDC,xLeft,yRigth,Str,strlen(Str));//显示公历}//显示农历SetTextColor(hDC,RGB(0,0,255));//节日颜色if(LunarDay.nMonth==1&&LunarDay.nDay==1){TextOut(hDC,xLeft,yRigth+15,"春节",strlen("春节"));//农历显示else if(LunarDay.nMonth==1&&LunarDay.nDay==15){TextOut(hDC,xLeft,yRigth+15,"元宵节",strlen("元宵节"));//农历显示}else if(LunarDay.nMonth==5&&LunarDay.nDay==5){TextOut(hDC,xLeft,yRigth+15,"端午节",strlen("端午节"));//农历显示}else if(LunarDay.nMonth==9&&LunarDay.nDay==15){TextOut(hDC,xLeft,yRigth+15,"中秋节",strlen("中秋节"));//农历显示}else if(LunarDay.nMonth==9&&LunarDay.nDay==9){TextOut(hDC,xLeft,yRigth+15,"重阳节",strlen("重阳节"));//农历显示}else{SetTextColor(hDC,RGB(255,255,0));if(LunarDay.nDay==1)//月初改为月名{TextOut(hDC,xLeft,yRigth+15,ChMonthTable[LunarDay.nMonth],strlen(ChMonthTable[LunarDay.nMonth]));TextOut(hDC,xLeft+20,yRigth+15,"月",strlen("月"));}elseTextOut(hDC,xLeft,yRigth+15,ChDayTable[LunarDay.nDay],strlen(ChDayTable[LunarDay.nDay]));//农历显示}}//forhFont=CreateFont(44,20,0,100,FW_NORMAL,TRUE,0,0,ANSI_CHARSET,OU T_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_MODERN, "华文新魏"); //字体输出格式SelectObject(hDC,hFont);SetTextColor(hDC,RGB(50,50,255));wsprintf(RILI,"My>>万年历>> ");TextOut(hDC,200,10,RILI,10);}//事件函数:点击日历界面上各个按钮后被调用,学员自己实现该函数//注意:该函数调用完后,系统自动调用DrawCalendar函数// 因此,可以理解为,该函数和DrawCalendar函数是联动的void CalendarButtonEvent(UINT nID,HWND hDlg) //学生需要修改此函数{TCHAR Hours[255];int temp1;switch (nID){case IDC_BTN_YEARUP://点击了"年↑"按钮nCurrentYear++;break;case IDC_BTN_YEARDOWN:nCurrentYear--;break;case IDC_BTN_MONTHUP:{nCurrentMonth++;if(nCurrentMonth>12){nCurrentYear+=1;nCurrentMonth=1;}}break;case IDC_BTN_MONTHDOWN:{if(nCurrentMonth==1){nCurrentYear--;nCurrentMonth=12;}elsenCurrentMonth--;}break;case IDC_BTN_TODAY://GetDlgItemText(hDlg,IDC_BELL,Hours,sizeof(Hours));//nCurrentYear = atoi(Hours);nCurrentYear=0;break;case IDC_BUTTON_Day1://动态显示显示每一天{nCurrentDay++;if(nCurrentDay>Total){nCurrentDay=1;nCurrentMonth++;if(nCurrentMonth>12){nCurrentYear+=1;nCurrentMonth=1;}}}break;case IDC_BUTTON_Day2://动态显示显示每一天{nCurrentDay--;if(nCurrentDay<=0)nCurrentDay=PreTotal;nCurrentMonth--;if(nCurrentMonth==0){nCurrentYear--;nCurrentMonth=12;}}}break;case IDC_PLAYSONG:k++;{switch ( k%3){case 0:mciSendString("stop ../image/sound/b.mp3","",0,NULL); mciSendString("play ../image/sound/a.mp3","",0,NULL);break;case 1:mciSendString("stop ../image/sound/a.mp3","",0,NULL); mciSendString("play ../image/sound/y.mp3","",0,NULL);break;case 2:mciSendString("stop ../image/sound/y.mp3","",0,NULL); mciSendString("play ../image/sound/b.mp3","",0,NULL);break;}}break;case IDC_BUTTON6:m++;{switch ( m%3){case 0:mciSendString("pause ../image/sound/a.mp3","",0,NULL);break;case 1:mciSendString("pause ../image/sound/y.mp3","",0,NULL);break;case 2:mciSendString("pause ../image/sound/b.mp3","",0,NULL);break;}}break;case IDC_BUTTON_BELL:GetDlgItemText(hDlg,IDC_EDIT_YEAR,Hours,sizeof(Hours));temp1 = atoi(Hours);nCurrentYear = temp1;nCurrentMonth = 1;break;}}//该函数每.5秒被调用一次,时钟界面上的文字绘制,学生自己实现该函数void DrawClockText(HDC hDC){ //TCHAR year[255];//获得本地年月日时间stDateTime DateTime;stDateTime DateTime1,DateTime2; //得到公历农历日期 TCHAR HTime[255]; //存储时分秒TCHAR YTime[255]; //存储年TCHAR MTime[255]; //存储月TCHAR DTime[255];TCHAR TGAN[255]; //获得天干地支SYSTEMTIME LocTime; //定义当地时间RECT rec;HBRUSH hBrush;HFONT hfon;GetClientRect(hDC,&rec) ; //得到背影区域SetRect (&rec,33,52,94,65) ; //设置这块区域hBrush = CreateSolidBrush( RGB(0,0,222)); //建立画刷颜色FillRect(hDC,&rec,hBrush);SetBkMode(hDC,TRANSPARENT); //设置背景涂画,以备下次调用//获取星期和时间(时分秒)SetTextColor(hDC,RGB(111,208,252)); //字体颜色GetLocalTime(&LocTime);wsprintf(HTime,"%.2d:%.2d:%.2d",LocTime.wHour,LocTime.wMinute,L ocTime.wSecond);SetTextColor(hDC,RGB(235,255,0));SetBkMode(hDC,3);TextOut(hDC,35,50,HTime,8) ;//获得星期GetLocalTime(&LocTime);if(LocTime.wHour==Inthour)mciSendString("play ../image/sound/12.mp3","",0,NULL);//整点报时if(LocTime.wSecond==0&&LocTime.wMinute==0){switch(LocTime.wHour){case 6:mciSendString("play ../image/sound/06.mp3","",0,NULL);break;case 7:mciSendString("play ../image/sound/07.mp3","",0,NULL);break;case 8:mciSendString("play ../image/sound/08.mp3","",0,NULL);break;case 9:mciSendString("play ../image/sound/09.mp3","",0,NULL);break;case 10:mciSendString("play ../image/sound/10.mp3","",0,NULL);break;case 11:mciSendString("play ../image/sound/11.mp3","",0,NULL);break;case 12:mciSendString("play ../image/sound/12.mp3","",0,NULL);break;case 13:mciSendString("play ../image/sound/13.mp3","",0,NULL);break;case 14:mciSendString("play ../image/sound/14.mp3","",0,NULL);break;case 15:mciSendString("play ../image/sound/15.mp3","",0,NULL);break;case 16:mciSendString("play ../image/sound/16.mp3","",0,NULL);break;}}DateTime.nYear = LocTime.wYear ;DateTime.nMonth = LocTime.wMonth ;DateTime.nDay = LocTime.wDay ;SetTextColor(hDC,RGB(255,255,0));//字体颜色switch(GetDayOfWeek(&DateTime)){case 1:TextOut(hDC,41,69,"星期一",6) ;break;case 2:TextOut(hDC,41,69,"星期二",6) ;break;case 3:TextOut(hDC,41,69,"星期三",6) ;break;case 4:TextOut(hDC,41,69,"星期四",6) ;break;case 5:TextOut(hDC,41,69,"星期五",6) ;break;case 6:TextOut(hDC,41,69,"星期六",6) ;break;case 7:TextOut(hDC,41,69,"星期日",6) ;break;default:break;}//得到天干GetLocalTime(&LocTime);wsprintf(TGAN,GetGanZhi(LocTime.wYear));SetTextColor(hDC,RGB(250,100,100)); //字体颜色TextOut(hDC,48,89,TGAN,4);//获得农历的年月日GetLocalTime(&LocTime);DateTime1.nYear = LocTime.wYear ;DateTime1.nMonth = LocTime.wMonth ;DateTime1.nDay = LocTime.wDay ;SetTextColor(hDC,RGB(255,255,0));SunToLunar(&DateTime1,&DateTime2);//调用农历函数TextOut(hDC,70,35,ChDayTable[DateTime2.nDay],4);if(DateTime2.nMonth<11){TextOut(hDC,31,35,ChMonthTable[DateTime2.nMonth],2);TextOut(hDC,52,35,"月",2);}else{TextOut(hDC,31,35,ChMonthTable[DateTime2.nMonth],4);TextOut(hDC,52,35,"月",2);}//获得年GetLocalTime(&LocTime);hfon=CreateFont(13,0,380,67,FW_NORMAL,FALSE,0,0,ANSI_CHARSET,OU T_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS, ("Arial")); //字体输出格式SelectObject(hDC,hfon);wsprintf(YTime,"%.4d",LocTime.wYear);SetTextColor(hDC,RGB(255,255,0)); //字体颜色TextOut(hDC,25,25,YTime,4);//得到月hfon=CreateFont(13,0,3400,67,FW_NORMAL,FALSE,0,0,ANSI_CHARSET,O UT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS, ("Arial")); //字体输出格式SelectObject(hDC,hfon);wsprintf(MTime,"%.2d",LocTime.wMonth);SetTextColor(hDC,RGB(255,255,0)); //字体颜色TextOut(hDC,68,8,MTime,2);//得到日。
华伟鑫led数码万年历表说明【实用版】目录1.华伟鑫 LED 数码万年历表简介2.华伟鑫 LED 数码万年历表功能特点3.华伟鑫 LED 数码万年历表使用说明4.华伟鑫 LED 数码万年历表的优点与不足正文一、华伟鑫 LED 数码万年历表简介华伟鑫 LED 数码万年历表是一款集时尚与实用于一体的日历产品,它采用高清 LED 显示屏,呈现出清晰的日期、星期和温度等信息,方便用户随时查看。
此款万年历表具有简约的外观设计,适合摆放在办公室或居家环境中,为您的生活带来便利。
二、华伟鑫 LED 数码万年历表功能特点1.显示日期、星期和温度:华伟鑫 LED 数码万年历表通过高清 LED 显示屏,清晰地显示出当前的日期、星期和温度等信息,方便用户快速了解。
2.闹钟功能:该款万年历表具备闹钟功能,可设置多个闹钟时间,为您的日常生活提供便利。
3.台历和挂历模式:华伟鑫 LED 数码万年历表可根据用户需求,切换台历和挂历模式,满足不同场景的使用。
4.节能环保:采用低功耗设计,节能环保,使用寿命长。
三、华伟鑫 LED 数码万年历表使用说明1.开机:按下侧面的开关键,屏幕将显示当前日期、星期和温度等信息。
2.设置闹钟:长按闹钟键,待屏幕出现“闹钟设置”字样时,按上下键设置闹钟时间,再按闹钟键确认。
3.切换台历/挂历模式:按下模式键,可在台历和挂历模式之间切换。
4.关闭:长按侧面的开关键,关闭万年历表。
四、华伟鑫 LED 数码万年历表的优点与不足优点:1.高清 LED 显示屏,显示信息清晰。
2.具备闹钟功能,实用性强。
3.节能环保,使用寿命长。
不足:1.功能相对单一,无其他附加功能。
2.屏幕较小,查看信息时可能需走近。
总之,华伟鑫 LED 数码万年历表凭借其时尚的外观、实用的功能以及节能环保的特点,成为现代家庭和办公场所的理想选择。
然而,功能相对单一以及屏幕较小,可能无法满足部分用户的需求。
综合设计实验报告设计题目:课程名称:学生姓名:学号:所在院系:专业:班级:指导教师:目录第一章、前言 (1)第二章、设计要求及实现的功能 (1)2.1 设计要求 (1)2.2 设计实现的功能 (1)第三章、整体设计 (2)第四章、系统详细设计 (2)4.1硬件详细设计. (2)4.1.1主控制系统 (2)4.1.2时钟振荡电路和复位电路 (4)4.1.3 DS1302模块设计 (5)4.1.4 DS18B20模块设计 (6)4.1.5 按键电路 (8)4.1.6 LCD显示电路 (8)4.2 软件详细设计 (9)4.2.1系统软件详细设计 (9)4.2.2 DS1302的时间处理 (9)4.2.3 环境温度采集 (12)4.2.4 系统软件按键检测流程图 (12)第五章、系统仿真及程序编写及调试 (13)5.1 仿真软件介绍 (13)5.2系统硬件PROTEUS仿真原理图 (13)5.3 系统硬件仿真运行情况图 (14)第六章、课程设计总结 (14)第七章、仪器仪表清单 (15)第八章、参考文献 (16)第九章、附录 (16)显示温度的万年历第一章、前言随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
如今万年历已经在人们生活中广泛的使用,它不仅是记录日期和时间的工具,而且也成为了一种装饰品。
现在的万年历可以说是多种多样,外观精美。
放在家里既可以计时也可作为风景壁画,因此越来越受到大众消费者的喜爱。
美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。
它可以对年、月、日、周日、时、分、秒进行计时,而且DS1302的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。
在本次设计中,采用单片机STC89C52,辅助以必要的外围电路,用C语言编写程序,并进行模块化设计而成的电子万年历系统。
基于51单片机的万年历中文摘要本设计万年历以AT89C51为控制中心,与温度传感器DS18B20,时钟芯片DS1302综合应用为一体,不仅能够准确显示时间、日期,闹钟设置,环境温度测量及温度高低温报警等功能。
单片机是一种集CPU、RAM、ROM、I/O接口和中断系统等于一体的器件,只需要外加电源和晶振就可实现对数字信息的处理和控制。
单片机与数字万年历相结合,用于时间显示,温度测试等不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被检测数值的技术指标,从而能够大大提高产品的质量和数量。
关键词:单片机,温度传感器,C语言,液晶显示ABSTRACTThis design USES AT89C51 as calendar control center, and the temperature sensor DS18B20, the clock DS1302 chip integrated application as a whole, and not only be able to accurately display the time, date, alarm, the environment temperature measurement and high temperature, low temperature alarm functions.SCM is a collection of CPU, RAM, ROM, I/O interface and interrupt system is one of the devices, only require additional power can be used for vibration and grain is the process of digital information and control. Single-chip microcomputer and digital calendar, combining for time to show, temperature testing has not only control convenient, simple and flexible configuration advantages, and which could increase the technical index of the tested value, which can greatly improve the quality of the products and quantity.Key words:Single-chip microcomputer, Temperature Sensor,C language,Liquid crystal displ目录第一章前言 (4)1.1系统开发背景及现状 (4)1.2 系统开发的目的 (4)第二章总体设计 (5)2.1 本设计实现的功能和要求 (5)2.2 设计的选择方案和论证 (5)2.2.1单片机芯片的选择方案和论证 (5)2.2.2显示模块选择方案和论证 (5)2.2.3 时钟芯片的选择方案和论证 (6)2.3.4 温度传感器的选择方案与论证 (6)2.3总体设计框图 (6)第三章硬件设计 (8)3.1 主要元器件介绍 (8)3.1.1 单片机简介 (8)3.1.2 传感器DS18B20介绍 (9)3.1.3 LCD1602液晶显示介绍 (10)3.2 各模块设计 (11)3.2.1 主控制电路 (11)3.2.2 LCD1602显示模块设计 (12)3.2.3 DS18B20温度传感器模块 (13)3.2.4 键盘输入模块设计 (13)3.2.5 蜂鸣器模块设计 (13)3.2.6 DS1302时钟电路模块 (14)第四章软件设计 (16)第五章安装与调试 (18)5.1 安装制作 (18)5.2 硬件调试 (18)5.2.1布线的原则与焊接 (18)5.2.2 硬件调试与测试 (19)5.3 软件调试 (19)5.3.1 软件测试仪器 (19)5.3.2 软件调试与测试 (19)5.4 联调 (20)5.5测试结果分析与结论 (21)第六章总结 (22)参考文献 (23)附录A (24)附录B (26)致谢 (28)第一章前言1.1系统开发背景及现状当今世界,知识更新的速度越来越快。
恒运星电子万年历说明书功能介绍:万年历显示信息分上下两部分,屏幕上半部分固定显示时间,下半部分轮流显示日期、星期、温度、农历日期以及24 节气。
信息轮流显示的时间间隔固定为5秒,不可调整。
万年历配备两组闹钟。
万年历可以进行红绿双色显示,周一至周五使用红色进行显示,周六周日使用绿色进行显示。
屏幕的亮度根据白天和黑夜进行调整,白天的时间定义为早晨6点至晚上8点,这段时间屏幕亮度高;另外的时间定义为黑夜,这段时间屏幕的亮度低。
系统供电电压为5v,电压波动区间为正负0.5v,供电电压过高可能损坏单片机,过低系统可能不会正常工作。
系统有备用电池,在断电的情况下依然可以保证正确计时,保持时间视电池电量而定,通常短时间断电不会出现时间丢失的情况。
系统24小时的误差不超过1秒。
设置说明:控制板上设有五个按键,红色按键为系统复位键,如果屏幕显示异常(几乎没有),可以通过此按键对系统进行复位。
另外四个按键用于进行系统设置,分别定义为“设置”“参数加(+)”、“参数减(-)”、“下一参数(next)”。
第一次按下“设置”按钮进入时间调整状态。
首先进入“时”调整状态,屏幕下半部分显示提示信息,上半部分对要调整的参数进行闪烁显示。
根据目标时间分别用“参数加”和“参数减”按键进行调节。
按next 键依次进入分、秒、年、月、日的调整状态。
星期不需要调整,系统根据当前日期自动进行换算。
第二次按下“设置”按钮进入“闹钟一”设置状态。
屏幕会显示该组闹钟的开关状态,按“参数加”开启闹钟,按“参数减”关闭闹钟。
按next进入闹钟时间设置,首先进入“时”设置状态,屏幕依然用闪烁进行提示。
进入闹钟时间设置状态后,再按“参数加”或者“参数减”设置目标时间。
再按next 依次进入分、周一至周日七天的闹钟开关设定。
在周一至周日七天的闹钟开关设定中,“参数加”为选中,显示“y”,“参数减”为不选,显示“x”。
第三次按下“设置”按钮进入“闹钟二”设置状态。
单片机毕业设计有哪些单片机毕业设计有哪些单片机类毕业设计题目有哪些呢?下面是由小编为大家带来的关于单片机毕业设计题目汇总,希望能够帮到您!单片机毕业设计题目1. 电子时钟的设计2. 全自动节水灌溉系统--硬件部分3. 数字式温度计的设计4. 温度监控系统设计5. 基于单片机的语音提示测温系统的研究6. 简易无线电遥控系统7. 数字流量计8. 基于单片机的全自动洗衣机9. 水塔智能水位控制系统10. 温度箱模拟控制系统11. 超声波测距仪的设计12. 基于51单片机的LED点阵显示屏系统的设计与实现16×16点阵显示屏13. 基于AT89S51单片机的数字电子时钟14. 基于单片机的步进电机的控制15. 基于单片机的交流调功器设计16. 基于单片机的数字电压表的设计17. 单片机的数字钟设计18. 智能散热器控制器的设计19. 单片机打铃系统设计20. 基于单片机的交通信号灯控制电路设计21. 基于单片机的电话远程控制家用电器系统设计22. 基于单片机的安全报警器23. 基于单片机的八路抢答器设计24. 基于单片机的超声波测距系统的设计25. 基于MCS-51数字温度表的设计26. 电子体温计的设计27. 基于AT89C51的电话远程控制系统28. 基于AVR单片机幅度可调的DDS信号发生器29. 基于单片机的数控稳压电源的设计30. 基于单片机的室内一氧化碳监测及报警系统的研究31. 基于单片机的空调温度控制器设计32. 基于单片机的可编程多功能电子定时器33. 单片机的数字温度计设计34. 红外遥控密码锁的设计35. 基于51单片机的语音识别系统设计36. 家用可燃气体报警器的设计37. 基于数字温度计的多点温度检测系统38. 基于凌阳单片机的语音实时采集系统设计39. 基于单片机的数字频率计的设计40. 基于单片机的数字电子钟设计41. 设施环境中温度测量电路设计42. 汽车倒车防撞报警器的设计43. 篮球赛计时记分器44. 基于单片机的家用智能总线式开关设计45. 设施环境中湿度检测电路设计46. 基于单片机的音乐合成器设计47. 设施环境中二氧化碳检测电路设计48. 基于单片机的水温控制系统设计49. 基于单片机的数字温度计的设计50. 基于单片机的火灾报警器51. 基于单片机的红外遥控开关设计52. 基于单片机的电子钟设计53. 基于单片机的红外遥控电子密码锁54. 大棚温湿度自动监控系统55. 基于单片机的电器遥控器的设计56. 单片机的语音存储与重放的研究57. 基于单片机的电加热炉温度控制系统设计58. 红外遥控电源开关59. 基于单片机的低频信号发生器设计60. 基于单片机的呼叫系统的设计61. 基于PIC16F876A单片机的超声波测距仪62. 基于单片机的密码锁设计63. 单片机步进电机转速控制器的设计64. 由AT89C51控制的太阳能热水器65. 防盗与恒温系统的设计与制作66. AT89S52单片机实验系统的开发与应用67. 基于单片机控制的数字气压计的设计与实现68. 智能压力传感器系统设计69. 智能定时器70. 基于单片机的智能火灾报警系统71. 基于单片机的电子式转速里程表的设计72. 公交车汉字显示系统73. 单片机数字电压表的设计74. 精密VF转换器与MCS-51单片机的接口技术75. 基于单片机的居室安全报警系统设计76. 基于89C2051 IC卡读/写器的设计77. PC机与单片机串行通信设计78. 球赛计时计分器设计79. 松下系列PCL五层电梯控制系统设计80. 自动起闭光控窗帘设计81. 单片机控制交通灯系统设计82. 基于单片机的电子密码锁83. 基于51单片机的多路温度采集控制系统84. 点阵电子显示屏--毕业设计85. 超声波测距仪--毕业设计86. 单片机对玩具小车的智能控制毕业设计论文87. 基于单片机控制的电机交流调速毕业设计论文88. 单片机智能火灾报警器毕业设计论文89. 基于单片机的锁相频率合成器毕业设计论文90. 单片机控制的数控电流源毕业设计论文91. 基于单片机的数字显示温度系统毕业设计论文92. 单片机串行通信发射部分毕业设计论文93. 基于单片机控制直流电机调速系统毕业设计论文94. 单片机控制步进电机毕业设计论文95. 基于MCS51单片机温度控制毕业设计论文96. 基于单片机的自行车测速系统设计97. 单片机汽车倒车测距仪98. 基于单片机的数字电压表99. 单片机脉搏测量仪100. 单片机控制的全自动洗衣机毕业设计论文101. 基于单片机的电器遥控器设计102. 单片机控制的微型频率计设计103. 基于单片机的音乐喷泉控制系统设计104. 等精度频率计的设计105. 自行车里程,速度计的设计106. 基于单片机的数字电压表设计107. 自行车车速报警系统108. 大棚仓库温湿度自动控制系统109. 自动剪板机单片机控制系统设计110. 单片机电器遥控器的设计111. 基于单片机技术的自动停车器的`设计112. 基于单片机的金属探测器设计113. ATMEIL AT89系列通用单片机编程器的设计114. 单片机水温控制系统115. 基于单片机的IC卡智能水表控制系统设计116. 基于MP3格式的单片机音乐播放系统117. 节能型电冰箱研究118. 基于单片机控制的PWM调速系统119. 交流异步电动机变频调速设计120. 基于单片机的数字温度计的电路设计121. 基于Atmel89系列芯片串行编程器设计122. 基于MCS-51通用开发平台设计123. 基于单片机的实时时钟124. 用单片机实现电话远程控制家用电器125. 中频感应加热电源的设计126. 家用豆浆机全自动控制装置127. 基于ATmega16单片机的高炉透气性监测仪表的设计128. 用单片机控制的多功能门铃129. 基于8051单片机的数字钟130. 红外快速检测人体温度装置的设计与研制131. 三层电梯的单片机控制电路132. 交通灯89C51控制电路设计133. 基于单片机的短信收发系统设计――硬件设计134. 大棚温湿度自动控制系统135. 串行显示的步进电机单片机控制系统136. 微机型高压电网继电保护系统的设计137. 基于单片机mega16L的煤气报警器的设计138. 智能毫伏表的设计139. 基于单片机的波形发生器设计140. 基于单片机的电子时钟控制系统141. 火灾自动报警系统142. 基于PIC16F74单片机串行通信中继控制器143. 遥控小汽车的设计研究144. 基于单片机对氧气浓度检测控制系统145. 单片机的数字电压表设计146. 基于单片机的压电智能悬臂梁振动控制系统设计147. 单片机的打印机的驱动设计148. 单片机音乐演奏控制器设计149. 自动选台立体声调频收音机150. 直流数字电压表的设计151. 具有红外保护的温度自动控制系统的设计152. 基于单片机的机械通风控制器设计153. 音频信号分析仪154. 单片机波形记录器的设计155. 公交车站自动报站器的设计156. 基于单片机的温度测量系统的设计157. 龙门刨床的可逆直流调速系统的设计158. 智能型充电器的电源和显示的设计159. 80C196MC控制的交流变频调速系统设计160. 步进电机运行控制器的设计161. 自动车库门的设计162. 家庭智能紧急呼救系统的设计163. 单片机病房呼叫系统设计164. 电子闹钟设计165. 电子万年历设计166. 定时闹钟设计167. 计算器模拟系统设计168. 数字电压表设计169. 数字定时闹钟设计170. 数字温度计设计171. 数字音乐盒设计172. 智能定时闹钟设计173. 电子风压表设计174. 8×8LED点阵设计175. 可编程的LED(16×64)点阵显示屏176. 无线智能报警系统177. 温湿度智能测控系统178. 单片机电量测量与分析系统179. 多通道数据采集记录系统180. 单片机控制直流电动机调速系统181. 步进电动机驱动器设计182. DS18B20温度检测控制183. 6KW电磁采暖炉电气设计184. 基于电流型逆变器的中频冶炼电气设计185. 新型电磁开水炉设计186. 新型洗浴器设计187. 中频淬火电气控制系统设计188. 中型电弧炉单片机控制系统设计189. 基于单片机的电火箱调温器190. LCD数字式温度湿度测量计191. 单片机与计算机USB接口通信192. 万年历的设计193. 基于单片机的家电远程控制系统设计194. 超声波测距器设计195. 多路温度采集系统设计196. 交通灯控制系统设计197. 数字电容表的设计198. 100路数字抢答器设计199. 单片机与PC串行通信设计200. 基于DS18B20温度传感器的数字温度计设计201. 基于单片机的大棚温、湿度的检测系统202. 智能型客车超载检测系统的设计203. 语音控制小汽车控制系统设计204. 万年历可编程电子钟控电铃205. 基于单片机的步进电机控制系统206. 基于MCS-51单片机温控系统设计的电阻炉207. 基于单片机89C52的啤酒发酵温控系统208. 基于单片机的温度采集系统设计209. PIC单片机在空调中的应用210. 列车测速报警系统211. 多点温度数据采集系统的设计212. 遥控窗帘电路的设计213. 基于单片机的数字式温度计设计214. 87C196MC单片机最小系统单板电路模板的设计与开发215. 基于87C196MC交流调速实验系统软件的设计与开发216. 基于87C196MC交流调速系统主电路软件的设计与开发217. 基于80C196MC交流调速实验系统软件的设计与开发218. 基于单片机的水位控制系统设计219. 基于单片机的液位检测220. 基于单片机的定量物料自动配比系统221. 智能恒压充电器设计222. 单片机的水温控制系统223. 基于单片机的车载数字仪表的设计224. 基于单片机的室温控制系统设计225. 基于MAX134与单片机的数字万用表设计226. 基于单片机防盗报警系统的设计227. 18B20多路温度采集接口模块228. 基于单片机的乳粉包装称重控制系统设计229. 基于单片机的户式中央空调器温度测控系统设计230. 步进电机实现的多轴运动控制系统231. IC卡读写系统的单片机实现232. 单片机电阻炉温度控制系统设计233. 单片机控制PWM直流可逆调速系统设计234. 单片机自动找币机械手控制系统设计235. 基于89C52的多通道采集卡的设计236. 基于AT89C51单片机控制的双闭环直流调速系统设计237. 单片机控制的PWM直流电机调速系统的设计238. 基于单片机的电阻炉温度控制系统设计239. 公交车报站系统的设计240. 智能多路数据采集系统设计241. 基于单片机控制的红外防盗报警器的设计242. 篮球比赛计时器设计243. 超声波测距仪的设计及其在倒车技术上的应用244. 汽车侧滑测量系统的设计245. 自动门控制系统设计246. 基于51单片机的液晶显示器设计247. 基于AT89C51单片机的电源切换控制器的设计248. 基于单片机的普通铣床数控化设计249. 基于AT89C51单片机的号音自动播放器设计250. 基于单片机的玻璃管加热控制系统设计。
ZXTL—13A电子台历说明书一、功能简介1、公(农)历月、日、温度、时(24小时制)、分、星期显示,公历和农历的日期会自动轮换显示(有指示灯指示);2、50年万年历查询;3、日期时间记忆功能,停电时显示关闭但仍继续走时,来电时不需重新设置日期时间;4、整点报时功能(22:00~6:00不报);5、三组闹钟功能,且响铃时报时;6、六组生日提醒功能;7、即时报时功能;8、自动测试温度,温度范围:-9~50℃;9、亮度自动调整,22:00~7:00亮度降低一半。
二、操作说明1、按键名称:设置键、移动键、修改键、定闹键、报时键(轻触型电子薄膜按键)。
2、日期时间设置:①、在正常日期时间显示状态下,按设置键进入日期时间设置状态,小时和分钟位同时显示年且闪烁;②、此时按修改键修改年(若不要修改闪烁位内容,则不压修改键,下同),修改好后按移动键月闪烁,按修改键修改月,修改好后按移动键日闪烁,按修改键修改日,在设置过程中,星期和农历月日将自动跟随公历年月日而变化;③、再按移动键,则年不显示了,小时位闪烁,按修改键修改小时,按移动键,分钟位闪烁,按修改键修改分钟;④、按设置键回到正常日期时间显示状态。
3、整点报时设置:在正常日期时间显示状态下,按修改键,则可以打开/关闭整点报时功能(整点报时指示灯亮/灭)。
4、定闹时间设置:①、在正常日期时间显示状态下,按定闹键进入定闹时间查询,定闹(闹钟)指示灯亮,在温度位显示“A1”,表示当前您看到的是第一组定闹信息,在小时、分钟位显示“―∶――”表示该组定闹时间无效,显示具体时间表示该组定闹时间有效,按修改键可以切换有效或无效;②、若要修改定闹时间则按设置键进入定闹时间设置,小时位闪烁,按修改键修改小时,按移动键分钟位闪烁,按修改键修改分钟;③、按定闹键进入第二组定闹时间查询,其设置与第一组相同,用同样方法可完成第三组的查询、设置.查询、设置三组定闹时间后再按定闹键则退出定闹时间设置,进入生日提醒查询。
一、产品概述1.1产品介绍1.2主要特点1)中文语音报时功能,清晰准确;2)万年历功能,显示年、月、日;3)小闹钟功能,可设置多个闹钟;4)光感传感器,自动调节亮度;5)记忆功能,保留设置时钟信息。
二、产品外观2.1主机外观该电子报时器万年历床头电子小闹钟外观小巧玲珑,简约大方。
主机采用高质量塑料材料制作,表面涂有耐磨的亮面漆,光滑且易于清洁。
2.2显示屏该产品配有2.8寸高清彩色显示屏,能够清晰显示时间、日期以及相关设置信息。
显示屏的背光采用LED灯源,保证观察时间的清晰度,同时根据环境光线自动调节亮度。
三、产品功能3.1报时功能该电子报时器万年历床头电子小闹钟为用户提供准确的时间信息。
通过设置,每整点、半点、1分钟、5分钟或10分钟,都会发出中文语音报时。
用户也可以根据需要,选择关闭或开启报时功能。
3.2万年历功能万年历功能能够显示当前的年、月、日信息。
通过操作按钮,用户可以切换显示的日期信息,确保了准确的时间参考。
3.3小闹钟功能该产品配有多个小闹钟功能,用户可根据个人需求设置不同时间的闹钟,以提醒重要的事情。
每个闹钟都可以单独设置时间和日期,同时还可以设置闹钟的音量。
3.4光感传感器为了满足用户的不同需求,该产品采用了光感传感器。
根据环境光线的变化,自动调节背光的亮度,保证在不同光照条件下的清晰可见度。
3.5记忆功能产品具备记忆功能,可以保留设置的时钟信息。
即使断电或者关闭产品,再次打开时,之前设置的时间和日期信息仍然可以保留,方便用户的使用。
四、使用说明4.1电源该产品采用AC220V电源供电,用户只需将电源线插入家庭电源插座即可。
4.2设置时间和日期在产品的底部设置区,有相关的设置按钮,用户可以通过长按或短按不同的按钮进行设置时间和日期。
具体操作流程,请参照产品附带的说明书。
4.3设置报时功能用户可以根据个人需求设置报时功能,并选择报时的时间间隔。
同时还可以设置报时的音量大小。
具体操作流程,请参照产品附带的说明书。
店铺地址:
http://shop61477301.taobao.c om/
电子闹钟可以设定八个单独的闹钟,闹钟的参数保存到了EEPROM中,断电后也不会消失,闹钟可以设定路数,时间,打开状态,以及闹铃的歌曲。
歌曲的播放用的是蜂鸣器。
也许大家会问如果我想更换闹钟的铃声怎么办类,放心我们的设计不是市面上的那种只能播放规定的几首歌曲,我们开发了针对我们产品专用的上位机,只要你到网上吧你想要听的歌曲的简谱下载下来,然后对应输入到我们的软件里面,就可以立马转换成单片机可以识别的音频数据,链接上电子闹钟的串口,直接点下载就可以吧歌曲保存起来了,这样就可以在你设定的时间里响起你刚刚下载的歌曲。
怎么样是不是很过瘾啊。
上面就是我们的上位机。
这就是我们的闹钟,采用1602液晶显示,液晶上面有8个LED灯,随着时间的流动,LED会显示不同的花样。
液晶下面是按键,可以用来设定好闹钟时间,以及校准时间,器件的布局很是合理。
小店为购买此闹钟的用户提供原理图,源程序,上位机软件。