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