基于51單片機(jī)的萬(wàn)年歷設(shè)計(jì).doc
《基于51單片機(jī)的萬(wàn)年歷設(shè)計(jì).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于51單片機(jī)的萬(wàn)年歷設(shè)計(jì).doc(70頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
山 東 工 商 學(xué) 院 SHANDONG INSTITUTE OF BUSINESS AND TECHNOLOGY 單片機(jī)課程實(shí)訓(xùn) SCM PRACTICAL TRAINING 實(shí)訓(xùn)設(shè)計(jì)題目 Title Of Training 萬(wàn)年歷設(shè)計(jì)_________________ 分院(系別) Department 信息與電子工程學(xué)院_____________ ?! I(yè) Speciality 電子信息工程 班 級(jí) Class 2013級(jí)1班 設(shè)計(jì)作者 Author XXX 完成日期 Date 2015年 12月18日 組 別 Team 09______ 指導(dǎo)教師 Advisor XXX____ 目 錄 第一部分 課程設(shè)計(jì)任務(wù)書 1 一、課程設(shè)計(jì)題目 1 二、課程設(shè)計(jì)時(shí)間 1 三、課程設(shè)計(jì)提交方式 1 四、設(shè)計(jì)要求 1 第二部分 課程設(shè)計(jì)報(bào)告 2 一、單片機(jī)發(fā)展簡(jiǎn)史 2 二、MCS-51單片機(jī)系統(tǒng)簡(jiǎn)介 2 三、設(shè)計(jì)思路 2 四、硬件設(shè)計(jì)電路 3 五、軟件設(shè)計(jì)流程 6 六、程序源代碼 10 七、結(jié)束語(yǔ) 66 八、參考文獻(xiàn) 67 第一部分 課程設(shè)計(jì)任務(wù)書 一、課程設(shè)計(jì)題目 萬(wàn)年歷的設(shè)計(jì) 二、課程設(shè)計(jì)時(shí)間 一周 三、實(shí)訓(xùn)提交方式 提交實(shí)訓(xùn)設(shè)計(jì)報(bào)告 四、設(shè)計(jì)要求 設(shè)計(jì)一臺(tái)液晶顯示屏顯示的萬(wàn)年歷,要求如下。 (1) 顯示年、月、日、時(shí)、分、秒和星期,并有相應(yīng)的農(nóng)歷顯示。 (2) 可通過(guò)鍵盤自動(dòng)調(diào)整時(shí)間。 (3) 具有鬧鐘功能。 (4) 能夠顯示環(huán)境溫度,誤差小于1℃。 (5) 計(jì)時(shí)精度:月誤差小于20秒。 第二部分 課程設(shè)計(jì)報(bào)告 一、單片機(jī)發(fā)展概況 單片機(jī)誕生于20世紀(jì)70年代末,它的發(fā)展史大致可分為三個(gè)階段: 第一階段(1976-1978):初級(jí)單片機(jī)微處理階段。該時(shí)期的單片機(jī)具有 8 位CPU,并行 I/O 端口、8 位時(shí)序同步計(jì)數(shù)器,尋址范圍 4KB,但是沒(méi)有串行口。 第二階段(1978-1982):高性能單片機(jī)微機(jī)處理階段,該時(shí)期的單片機(jī)具有I/O 串行端口,有多級(jí)中斷處理系統(tǒng),15 位時(shí)序同步技術(shù)器,RAM、ROM 容量加大,尋址范圍可達(dá) 64KB。 第三階段(1982-至今)位單片機(jī)微處理改良型及 16 位單片機(jī)微處理階段民用電子產(chǎn)品、計(jì)算機(jī)系統(tǒng)中的部件控制器、智能儀器儀表、工業(yè)測(cè)控、網(wǎng)絡(luò)與通信的職能接口、軍工領(lǐng)域、辦公自動(dòng)化、集散控制系統(tǒng)、并行多機(jī)處理系統(tǒng)和局域網(wǎng)絡(luò)系統(tǒng)。 二、MCS-51單片機(jī)系統(tǒng)簡(jiǎn)介 MCS-51系列單片機(jī)產(chǎn)品都是以Intel公司最早的典型產(chǎn)品8051為核心構(gòu)成的。MCS-51單片機(jī)由CPU 、RAM 、ROM 、I/O接口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)、內(nèi)部總線等部件組成。 MCS-51以其典型的結(jié)構(gòu)和完善的總線專用寄存器的集中管理,眾多的邏輯位操作功能及面向控制的豐富的指令系統(tǒng),為以后的單片機(jī)的發(fā)展奠定了基礎(chǔ)。 三、設(shè)計(jì)思想 以AT89C52單片機(jī)為核心,外接單片機(jī)復(fù)位電路,單片機(jī)晶振電路,蜂鳴器電路,溫度傳感器DS18B20,時(shí)鐘芯片DS1302,按鍵電路,12864液晶顯示電路,通過(guò)控制AT89C52單片機(jī)的接口來(lái)控制蜂鳴器電路,溫度傳感器DS18B20模塊,時(shí)鐘芯片DS1302模塊,按鍵電路,12864液晶顯示模塊,使12864液晶能顯示陽(yáng)歷年、月、日、時(shí)、分、秒和溫度及相應(yīng)的農(nóng)歷時(shí)間。 DS18B20溫度電路 復(fù)位電路 晶振電路 蜂鳴器電路 按鍵電路 AT89C52單片機(jī) 液晶顯示電路 DS1302時(shí)鐘電路 圖為硬件系統(tǒng)設(shè)計(jì)框架 4、 硬件電路設(shè)計(jì) 4.1電路原理圖 4.2單片機(jī)控制模塊 AT89C52是一個(gè)低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。 (1) 復(fù)位電路 按鍵手動(dòng)復(fù)位是通過(guò)使復(fù)位端經(jīng)電阻與VCC接通而實(shí)現(xiàn)的。 (2) 時(shí)鐘振蕩電路 基于系統(tǒng)運(yùn)行速度,采用12MHZ的石英晶振,并使用兩個(gè)小電容作為微調(diào)電容。 4.3溫度模塊 DS18B20溫度傳感器具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。測(cè)溫范圍 -55℃~+125℃,固有測(cè)溫分辨率0.5℃,工作電源為 3~5V。 DS1302 是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。 4.4時(shí)鐘模塊 DS1302 是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。 4.5液晶顯示模塊 本系統(tǒng)選擇的LCD是AMPIRE12864的漢字圖形型液晶顯示模塊,可顯示漢字及圖形。單片機(jī)P1口作為數(shù)據(jù)輸出口,RS,R\W,E分別通過(guò)10K的上拉電阻連接到單片機(jī)的P0.0,P0.1,P0.2。VDD接5V電源,VSS接地。VEE為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度)。RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。R/W為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。E(或EN)端為使能(enable)端,下降沿使能。DB0-DB7為雙向數(shù)據(jù)總線,同時(shí)最高位DB7也是忙信號(hào)檢測(cè)位。BLA、BLK分別為顯示器背光燈的正、負(fù)極。 4.6按鍵模塊 本系統(tǒng)使用5個(gè)button元件分別設(shè)置為增加鍵、減小鍵、退出鍵、設(shè)置/OK鍵。4個(gè)按鍵與一個(gè)4個(gè)驅(qū)動(dòng)電阻相連,作為整個(gè)按鍵控制功能系統(tǒng),以觸發(fā)AT89C52中斷為方式使用設(shè)置功能。 4.7蜂鳴器模塊 本系統(tǒng)采用BUZZER元件和PNP型三極管及電阻組成了蜂鳴器電路。 5、 軟件設(shè)計(jì)框圖 5.1主程序流程圖 萬(wàn)年歷的程序主要包括:按鍵識(shí)別程序、時(shí)間設(shè)定程序、溫度數(shù)據(jù)采集程序、時(shí)間數(shù)據(jù)采集程序、液晶屏數(shù)據(jù)顯示程序、定時(shí)中斷程序、陽(yáng)歷轉(zhuǎn)陰歷程序、鬧鐘設(shè)定程序、延時(shí)子程序等。 5.2溫度數(shù)據(jù)模塊設(shè)計(jì) 5.3時(shí)間數(shù)據(jù)模塊設(shè)計(jì) 開(kāi)始 DS1302初始化 從DS1302中讀出數(shù)據(jù),放入RAM 調(diào)用顯示子程序 LCD顯示時(shí)間 掃描按鍵 時(shí)間設(shè)置 數(shù)據(jù)寫回DS1302保存 返回主顯單 5.4鬧鐘設(shè)定模塊設(shè)計(jì) 5.5陽(yáng)歷轉(zhuǎn)陰歷模塊設(shè)計(jì) 5.6按鍵設(shè)置時(shí)間模塊設(shè)計(jì) 六、程序源代 /****************************文件包含*************************************/ #include < reg52.h > #include < character.h > #include < lcd.h > #include < clock.h > #include < sensor.h> #include < calendar.h > #include < key.h > /*****************************預(yù)定義**************************************/ #define uchar unsigned char #define uint unsigned int /****************************************************************************/ sbit bell = P2 ^ 0; //定義蜂鳴器端口 /***************************************************************************** * 名稱: Timer0_Service() inturrupt 1 * 功能: 中斷服務(wù)程序 * 入口參數(shù): * 出口參數(shù): *****************************************************************************/ void Timer0_Service() interrupt 1 { static uchar count = 0; static uchar flag = 0; //記錄鳴叫的次數(shù) count = 0; TR0 = 0; //關(guān)閉Timer0 TH0 = 0x3c; TL0 = 0XB0; //延時(shí) 50 ms TR0 = 1 ; //啟動(dòng)Timer0 count ++; if( count == 20 ) //鳴叫 1 秒 { bell = ~ bell; count = 0; flag ++; } if( flag == 6 ) { flag = 0; TR0 = 0; //關(guān)閉Timer0 } } /***************************************************************************** * 名稱: Timer2_Servie() interrupt 5 * 功能: 中斷服務(wù)程序 * 入口參數(shù): * 出口參數(shù): *****************************************************************************/ uchar HexNum_Convert(uchar HexNum)/*時(shí)間存儲(chǔ)個(gè)位和十位的方式*/ { uchar Numtemp; Numtemp=(HexNum>>4)*10+(HexNum&0X0F); return Numtemp; } /****************************************************************************** * 函數(shù)名稱:main() * 功 能: * 入口參數(shù): * 出口參數(shù): ********************************************************************************/ void main( void ) { uchar clock_time[6] = {0X00,0X59,0X23,0X09,0X04,0X11}; //定義時(shí)間變量 秒 分 時(shí) 日 月 年 uchar alarm_time[2] = { 10, 06}; //鬧鐘設(shè)置 alarm_time[0]: 分鐘 alarm_time[1] :小時(shí) uchar temperature[2]; //定義溫度變量 temperature[0] 低8位 temperature[1] 高8位 Lcd_Initial(); //LCD初始化 Clock_Fresh( clock_time ); //時(shí)間刷新,proteus會(huì)調(diào)用當(dāng)前系統(tǒng)時(shí)間 Clock_Initial( clock_time ); //時(shí)鐘初試化 /***********************中斷初始化***************************/ EA = 1; //開(kāi)總中斷 ET0 = 1; //Timer0 開(kāi)中斷 ET2 = 1; //Timer2 開(kāi)中斷 TMOD = 0x01 ; //Timer0 工作方式 1 RCAP2H = 0x3c; RCAP2L = 0xb0; //Timer2 延時(shí) 50 ms while( 1 ) { switch( Key_Scan() ) { case up_array: { Key_Idle(); } break; case down_array: { Key_Idle(); } break; case clear_array: { Key_Idle(); } break; case function_array:{ Key_Function( clock_time, alarm_time ); } case null: { Clock_Fresh( clock_time ); //時(shí)間刷新 Lcd_Clock( clock_time ); //時(shí)間顯示 Sensor_Fresh( temperature ); //溫度更新 Lcd_Temperture( temperature ); //溫度顯示 Calendar_Convert( 0 , clock_time ); Week_Convert( 0, clock_time ); //鬧鐘報(bào)警 if( * alarm_time == HexNum_Convert(* ( clock_time + 1 ) )) //分鐘相吻合 if( * ( alarm_time + 1 ) == HexNum_Convert(*( clock_time + 2 )) ) //小時(shí)相吻合 { bell = 0; TR2 = 1; //啟動(dòng)Timer2 } } break; } } } #ifndef _SUN_MOON #define _SUN_MOON /*************************************************************************/ #define uchar unsigned char #define uint unsigned int /******************************************************************************** * 名稱: get_moon_day(uchar month_p,uint table_addr) * 功能: 讀取數(shù)據(jù)表中農(nóng)歷的大月或小月 ,如果大月返回1, 小月返回0 * 入口參數(shù): * 出口參數(shù): *********************************************************************************/ bit get_moon_day( uchar month_p,uint calendar_address ) { uchar temp,temp1; temp1=(month_p+3)/8; temp=0x80>>((month_p+3)%8); temp=year_code[calendar_address+temp1]&temp; if(temp==0){return(0);}else{return(1);} } /************************************************************************** * 名稱: void Calendar_Convert( uchar * clock_time ) * 功能: 輸入BCD的陽(yáng)歷數(shù)據(jù), 輸出BCD陰歷數(shù)據(jù)( 1901 - 2099 ) * 入口參數(shù): c_flag:陽(yáng)歷的世紀(jì)標(biāo)志 clock_time: 時(shí)鐘地址 * 出口參數(shù): 無(wú) * 說(shuō)明: c_flag = 0 :21世紀(jì) c_flag = 1 :19世紀(jì) *****************************************************************************/ void Calendar_Convert( uchar c_flag, uchar * clock_time ) { bit flag_month, flag_year; uchar year, month, day, month_point; //定義 年 月 天 uchar temp1, temp2, temp3; uint calendar_address; //定義農(nóng)歷地址 uint day_number; uchar clock_moon[3]; //定義陰歷 clock_time += 3; //指向日 day = ( * clock_time >> 4 ) * 10 + ( *clock_time & 0x0f ); //BCD轉(zhuǎn)換十進(jìn)制 clock_time ++; //指向月 month = ( * clock_time >> 4 ) * 10 + ( * clock_time & 0x0f ); //BCD轉(zhuǎn)換十進(jìn)制 clock_time ++; //指向年 year = ( * clock_time >> 4 ) * 10 + ( * clock_time & 0x0f ); //BCD轉(zhuǎn)換十進(jìn)制 //定位日歷地址 if( c_flag == 0 ) calendar_address = ( year + 99 ) * 3; else calendar_address = ( year - 1 ) * 3; //春節(jié)(正月初一)所在的陽(yáng)歷月份 temp1 = year_code[ calendar_address + 2 ] & 0x60; //Bit6~~Bit5:春節(jié)所在的陽(yáng)歷月份 temp1 >>= 5 ; //春節(jié)(正月初一)所在的陽(yáng)歷日期 temp2 = year_code[ calendar_address + 2 ] & 0x1f; //Bit4~~Bit0:春節(jié)所在的陽(yáng)歷日期 //計(jì)算春節(jié)(正月初一)離當(dāng)年元旦{ 1月1日(陽(yáng)歷) }的天數(shù);春節(jié)只會(huì)在陽(yáng)歷的1月 或 2月 temp3=temp2-1; if(temp1!=1) temp3+=0x1f; //計(jì)算陽(yáng)歷月離當(dāng)年元旦{ 1月1日(陽(yáng)歷) }的天數(shù) if( month < 10 ) {day_number = day_code1[ month - 1 ] + day ;} else {day_number = day_code2[ month - 10 ] + day ;} //如果陽(yáng)歷的月大于2 且該年的2月為閏月,天數(shù)加1 //閏年指的就是陽(yáng)歷有閏日或陰歷有閏月的一年; //陽(yáng)歷四年一閏,在二月加一天,這一天叫做閏日: //農(nóng)歷三年一閏,五年兩閏,十九年七閏,每逢閏年所加的一個(gè)月叫做閏月。 if( ( month <= 2 ) || ( year % 0x04!= 0) ) day_number-=1; // day_number ++; // if ((month<2)||(year%0x04!=0)) // day_number-=1; //判斷陽(yáng)歷日 在春節(jié)(正月初一) 之前 還是 之后 if( day_number >= temp3 ) //陽(yáng)歷在春節(jié)之后 或者 春節(jié)當(dāng)日 { day_number -= temp3; month = 1; month_point = 1; // month_point 為月份指向,陽(yáng)歷日在春季前就是春季 flag_month = get_moon_day( month_point, calendar_address ); //檢查該陰歷月的大小 大月返回1 小月返回0 flag_year = 0; if (flag_month==0) {temp1=29;} else{temp1=30;} //閏月所在的月分 temp2 = year_code[ calendar_address ] & 0xf0; temp2 >>= 4; //提取高四位 假如是0 表示沒(méi)有閏月 while( day_number >= temp1 ) { day_number -= temp1; month_point ++; if( month == temp2 ) { flag_year = ~ flag_year; if( flag_year == 0 ) month +=1; } else month ++ ; flag_month = get_moon_day( month_point, calendar_address ); if( flag_month ) temp1 = 30; else temp1 = 29; } day = day_number + 1; } else //陽(yáng)歷在春節(jié)之前使用以下代碼進(jìn)行運(yùn)算 { temp3 -= day_number; if( year == 0 ) { year = 0xe3; c_flag = 1; } else year -= 1; calendar_address -= 3; month = 0xc; temp2 = year_code[ calendar_address ] & 0xf0; temp2 >>= 4; //提取高4位 flag_year=0; if( temp2 == 0 ) month_point = 12; else month_point = 13; //flag_year = 0; flag_month = get_moon_day( month_point, calendar_address ); if( flag_month ) temp1 = 30; else temp1 = 29; while( temp3 > temp1 ) { temp3 -= temp1; month_point --; if( flag_year == 0 ) month -=1; if( month == temp2 ) flag_year = ~ flag_year; flag_month = get_moon_day( month_point, calendar_address ); if( flag_month ) temp1 = 0x1e; else temp1 = 0x1d; } day = temp1 - temp3 + 1; } //HEX->BCD ,運(yùn)算結(jié)束后,把數(shù)據(jù)轉(zhuǎn)換為BCD數(shù)據(jù) temp1 = year / 10; temp1 <<= 4; clock_moon[2] = temp1 | ( year % 10 ); temp1 = month / 10; temp1 <<= 4; clock_moon[1] = temp1 | ( month % 10 ); temp1 = day / 10; temp1 <<= 4; clock_moon[0] = temp1 | ( day % 10 ); Lcd_Lunar_Calendar( clock_moon ); } /******************************************************************************** * 名稱: void Week_convert( uchar * clock_time ) * 功能: 輸入BCD陽(yáng)歷數(shù)據(jù);輸出BCD星期 * 入口參數(shù): * 出口參數(shù): * 說(shuō)明: 算法: ( 日期 + 年份 + 所過(guò)閏年 + 月校正 ) / 7 的余數(shù)就是星期 如果是閏年又不到 3 月份上述之和 要減一天 再 ********************************************************************************/ void Week_Convert( bit c, uchar * clock_time ) { uchar year, month, day; //定義 年 月 天 uchar temp; clock_time += 3; //指向日 day = ( * clock_time >> 4 ) * 10 + ( *clock_time & 0x0f ); //BCD轉(zhuǎn)換十進(jìn)制 clock_time ++; //指向月 month = ( * clock_time >> 4 ) * 10 + ( * clock_time & 0x0f ); clock_time ++; //指向年 year = ( * clock_time >> 4 ) * 10 + ( * clock_time & 0x0f ); if( c == 0 ) //如果為21世紀(jì),年份數(shù)加100 year += 100; temp = year / 4; //所過(guò)閏年數(shù)只算1900年之后的 temp = year + temp; temp = temp % 0x07; //為節(jié)省資源,先進(jìn)行一次取余,避免數(shù)大于0xff,避免使用整型數(shù)據(jù) temp = temp + day + table_week[ month - 1 ]; if( ( year % 4 == 0 ) && ( month <3 ) ) temp -=1; Lcd_Week( temp % 7 ); } /********************************************************************************/ #endif #ifndef _CHARACTER #define _CHARACTER /*****************************預(yù)定義**************************************/ #define uchar unsigned char #define uint unsigned int /******************************************************************************************** *內(nèi)容: 0 1 2 3 4 5 6 7 8 9 空白 - T : *大小: 8X16字符 *********************************************************************************************/ uchar code letter_logo[16][16]={ /*-- 文字: 0 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, /*-- 文字: 1 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, /*-- 文字: 2 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, /*-- 文字: 3 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: 4 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, /*-- 文字: 5 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: 6 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: 7 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, /*-- 文字: 8 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, /*-- 文字: 9 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, /*-- 文字: : --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00, /*-- 文字: - --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01, /*-- 文字: T --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00, /*-- 文字: 空白 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: ( --*/ 0x00,0x00,0xF0,0xF8,0x0C,0x04,0x00,0x00,0x00,0x00,0x03,0x07,0x0C,0x08,0x00,0x00, /*-- 文字: ) --*/ 0x00,0x00,0x04,0x0C,0xF8,0xF0,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,0x00,0x00, }; /******************************************************************************* * 內(nèi)容 年月日 * 大小 16X16 *********************************************************************************/ uchar code data_logo[3][32] = { /*-- 文字: 年 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00, 0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00, /*-- 文字: 月 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00, 0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0x21,0x41,0x3F,0x00,0x00,0x00,0x00, /*-- 文字: 日 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00, }; /******************************************************************************* * 內(nèi)容 時(shí)分秒 * 大小 16X16 *********************************************************************************/ uchar code time_logo[3][32] = { /*-- 文字: 時(shí) --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00, 0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00, /*-- 文字: 分 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x80,0x40,0x20,0x98,0x87,0x82,0x80,0x80,0x83,0x84,0x98,0x30,0x60,0xC0,0x40,0x00, 0x00,0x80,0x40,0x20,0x10,0x0F,0x00,0x00,0x20,0x40,0x3F,0x00,0x00,0x00,0x00,0x00, /*-- 文字: 秒 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x12,0x12,0xD2,0xFE,0x91,0x11,0xC0,0x38,0x10,0x00,0xFF,0x00,0x08,0x10,0x60,0x00, 0x04,0x03,0x00,0xFF,0x00,0x83,0x80,0x40,0x40,0x20,0x23,0x10,0x08,0x04,0x03,0x00, }; /********************************************************************************* * 內(nèi)容: 日一二三四五六星期 * 大小: 16X16 /********************************************************************************/ uchar code week_logo[9][32] = { /*-- 文字: 日 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00, /*-- 文字: 一 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字: 二 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x00, 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00, /*-- 文字: 三 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00, 0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00, /*-- 文字: 四 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0xFE,0x02,0x02,0x02,0xFE,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0xFE,0x00,0x00, 0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x7F,0x00,0x00, /*-- 文字: 五 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x02,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0xC2,0x82,0x02,0x00,0x00,0x00, 0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x30,0x20,0x00, /*-- 文字: 六 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x10,0x10,0x10,0x10,0x10,0x91,0x12,0x1E,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x00, 0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x00,0x00,0x01,0x02,0x0C,0x78,0x30,0x00,0x00, /*-- 文字: 星 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00, 0x00,0x48,0x46,0x41,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x49,0x41,0x40,0x00, /*-- 文字: 期 --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00, 0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00, }; /******************************************************************************************* * 內(nèi)容: 農(nóng)歷 * 大小: 16X16 ********************************************************************************************/ uchar code lunar_calendar_logo[2][32] = { /*-- 文字: 農(nóng) --*/ /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/ 0x00,0x20,0x18,0x08,0x88,0xE8,0x1F,0x6A,0x88,0x08,0x88,0xC8,0xA8,0x1C,0x08,0x00, 0x08,0x04,0x02,0x41,0xFF,0x40,0x20,0x10,0x01,0x02,0x0D,0x18,0x70,0x20,0x20,0x00, /*-- 文字- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 基于 51 單片機(jī) 萬(wàn)年歷 設(shè)計(jì)
鏈接地址:http://www.820124.com/p-6664509.html