課程設計--基于51單片機的萬年歷設計_第1頁
已閱讀1頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  單片機課程實訓</b></p><p> 實訓設計題目Title Of Training 萬年歷設計_________________       </p><p> 分院(系別)Department信息與電子工程學院_____________        </p>

2、;<p> ?! I(yè)Speciality電子信息工程 班 級Class</p><p> 設計作者Author XXX完成日期Date2015年 12月18日</p><p> 組 別Team 09______  指導教師AdvisorXXX____  </p><p><b>  目 錄</b></

3、p><p>  第一部分 課程設計任務書1</p><p>  一、課程設計題目1</p><p>  二、課程設計時間1</p><p>  三、課程設計提交方式1</p><p><b>  四、設計要求1</b></p><p>  第二部分 課程設計報告2&

4、lt;/p><p>  一、單片機發(fā)展簡史2</p><p>  二、MCS-51單片機系統(tǒng)簡介2</p><p><b>  三、設計思路2</b></p><p>  四、硬件設計電路3</p><p>  五、軟件設計流程6</p><p>  六、程序源代碼

5、10</p><p><b>  七、結束語66</b></p><p><b>  八、參考文獻67</b></p><p>  第一部分 課程設計任務書</p><p><b>  一、課程設計題目</b></p><p><b>  

6、萬年歷的設計</b></p><p><b>  二、課程設計時間</b></p><p><b>  一周</b></p><p><b>  三、實訓提交方式</b></p><p><b>  提交實訓設計報告</b></p>

7、<p><b>  四、設計要求</b></p><p>  設計一臺液晶顯示屏顯示的萬年歷,要求如下。</p><p>  顯示年、月、日、時、分、秒和星期,并有相應的農歷顯示。</p><p>  可通過鍵盤自動調整時間。</p><p><b>  具有鬧鐘功能。</b><

8、/p><p>  能夠顯示環(huán)境溫度,誤差小于±1℃。</p><p>  計時精度:月誤差小于20秒。</p><p>  第二部分 課程設計報告</p><p><b>  一、單片機發(fā)展概況</b></p><p>  單片機誕生于20世紀70年代末,它的發(fā)展史大致可分為三個階段: &

9、lt;/p><p>  第一階段(1976-1978):初級單片機微處理階段。該時期的單片機具有 8 位CPU,并行 I/O 端口、8 位時序同步計數(shù)器,尋址范圍 4KB,但是沒有串行口。 </p><p>  第二階段(1978-1982):高性能單片機微機處理階段,該時期的單片機具有I/O 串行端口,有多級中斷處理系統(tǒng),15 位時序同步技術器,RAM、ROM 容量加大,尋址

10、范圍可達 64KB。 </p><p>  第三階段(1982-至今)位單片機微處理改良型及 16 位單片機微處理階段民用電子產品、計算機系統(tǒng)中的部件控制器、智能儀器儀表、工業(yè)測控、網(wǎng)絡與通信的職能接口、軍工領域、辦公自動化、集散控制系統(tǒng)、并行多機處理系統(tǒng)和局域網(wǎng)絡系統(tǒng)。</p><p>  二、MCS-51單片機系統(tǒng)簡介</p><p>  MCS-51系列單片機

11、產品都是以Intel公司最早的典型產品8051為核心構成的。MCS-51單片機由CPU 、RAM 、ROM 、I/O接口、定時器/計數(shù)器、中斷系統(tǒng)、內部總線等部件組成。</p><p>  MCS-51以其典型的結構和完善的總線專用寄存器的集中管理,眾多的邏輯位操作功能及面向控制的豐富的指令系統(tǒng),為以后的單片機的發(fā)展奠定了基礎。</p><p><b>  三、設計思想</

12、b></p><p>  以AT89C52單片機為核心,外接單片機復位電路,單片機晶振電路,蜂鳴器電路,溫度傳感器DS18B20,時鐘芯片DS1302,按鍵電路,12864液晶顯示電路,通過控制AT89C52單片機的接口來控制蜂鳴器電路,溫度傳感器DS18B20模塊,時鐘芯片DS1302模塊,按鍵電路,12864液晶顯示模塊,使12864液晶能顯示陽歷年、月、日、時、分、秒和溫度及相應的農歷時間。</

13、p><p>  圖為硬件系統(tǒng)設計框架</p><p><b>  硬件電路設計</b></p><p><b>  4.1電路原理圖</b></p><p>  4.2單片機控制模塊</p><p>  AT89C52是一個低電壓,高性能CMOS8位單片機,片內含8k bytes

14、的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器和Flash存儲單元,AT89C52單片機在電子行業(yè)中有著廣泛的應用。</p><p><b>  (1) 復位電路</b></p><p>  按鍵手動復位是通過使復位端

15、經(jīng)電阻與VCC接通而實現(xiàn)的。</p><p>  (2) 時鐘振蕩電路</p><p>  基于系統(tǒng)運行速度,采用12MHZ的石英晶振,并使用兩個小電容作為微調電容。</p><p><b>  4.3溫度模塊</b></p><p>  DS18B20溫度傳感器具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹

16、小空間設備數(shù)字測溫和控制領域。測溫范圍 -55℃~+125℃,固有測溫分辨率0.5℃,工作電源為 3~5V。</p><p>  DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內部

17、有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。</p><p><b>  4.4時鐘模塊</b></p><p>  DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳

18、送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。</p><p><b>  4.5液晶顯示模塊</b></p><p>  本系統(tǒng)選擇的LCD是AMPIRE128×64的漢字圖形型液晶顯示模塊,可顯示漢字及圖形。單片機P1口作為數(shù)據(jù)輸出口,RS,R\W,E分別通過10K的上拉電阻連接到單片機的P

19、0.0,P0.1,P0.2。VDD接5V電源,VSS接地。VEE為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。R/W為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。E(或EN)端為使能(enable)端,下降沿使能。DB0-DB7為雙向數(shù)據(jù)總線,同時最高

20、位DB7也是忙信號檢測位。BLA、BLK分別為顯示器背光燈的正、負極。</p><p><b>  4.6按鍵模塊</b></p><p>  本系統(tǒng)使用5個button元件分別設置為增加鍵、減小鍵、退出鍵、設置/OK鍵。4個按鍵與一個4個驅動電阻相連,作為整個按鍵控制功能系統(tǒng),以觸發(fā)AT89C52中斷為方式使用設置功能。</p><p>&l

21、t;b>  4.7蜂鳴器模塊</b></p><p>  本系統(tǒng)采用BUZZER元件和PNP型三極管及電阻組成了蜂鳴器電路。</p><p><b>  軟件設計框圖</b></p><p><b>  5.1主程序流程圖</b></p><p>  萬年歷的程序主要包括:按鍵識別

22、程序、時間設定程序、溫度數(shù)據(jù)采集程序、時間數(shù)據(jù)采集程序、液晶屏數(shù)據(jù)顯示程序、定時中斷程序、陽歷轉陰歷程序、鬧鐘設定程序、延時子程序等。</p><p>  5.2溫度數(shù)據(jù)模塊設計</p><p>  5.3時間數(shù)據(jù)模塊設計</p><p>  5.4鬧鐘設定模塊設計</p><p>  5.5陽歷轉陰歷模塊設計</p><

23、p>  5.6按鍵設置時間模塊設計</p><p><b>  六、程序源代</b></p><p>  /****************************文件包含*************************************/</p><p>  #include < reg52.h ></p>

24、;<p>  #include < character.h ></p><p>  #include < lcd.h ></p><p>  #include < clock.h ></p><p>  #include < sensor.h></p><p>  #include

25、 < calendar.h ></p><p>  #include < key.h ></p><p>  /*****************************預定義**************************************/</p><p>  #define uchar unsigned char</p&

26、gt;<p>  #define uint unsigned int</p><p>  /****************************************************************************/</p><p>  sbit bell = P2 ^ 0; //定義蜂鳴器端口</p><p>  /**

27、***************************************************************************</p><p>  * 名稱: Timer0_Service() inturrupt 1</p><p>  * 功能: 中斷服務程序 </p><p><b>  * 入口參數(shù):</b><

28、;/p><p><b>  * 出口參數(shù):</b></p><p>  *****************************************************************************/</p><p>  void Timer0_Service() interrupt 1</p><p

29、><b>  {</b></p><p>  static uchar count = 0;</p><p>  static uchar flag = 0; //記錄鳴叫的次數(shù)</p><p>  count = 0;</p><p>  TR0 = 0; //關閉Timer0</p>&

30、lt;p>  TH0 = 0x3c;</p><p>  TL0 = 0XB0; //延時 50 ms</p><p>  TR0 = 1 ; //啟動Timer0</p><p><b>  count ++;</b></p><p>  if( count == 20 ) //鳴叫 1 秒 <

31、/p><p><b>  {</b></p><p>  bell = ~ bell;</p><p>  count = 0;</p><p><b>  flag ++;</b></p><p><b>  } </b></p><p

32、>  if( flag == 6 )</p><p><b>  {</b></p><p><b>  flag = 0;</b></p><p>  TR0 = 0; //關閉Timer0</p><p><b>  }</b></p><p&

33、gt;<b>  }</b></p><p>  /*****************************************************************************</p><p>  * 名稱: Timer2_Servie() interrupt 5</p><p>  * 功能: 中斷服務程序 &

34、lt;/p><p><b>  * 入口參數(shù): </b></p><p><b>  * 出口參數(shù):</b></p><p>  *****************************************************************************/</p><p>

35、  uchar HexNum_Convert(uchar HexNum)/*時間存儲個位和十位的方式*/</p><p><b>  {</b></p><p>  uchar Numtemp;</p><p>  Numtemp=(HexNum>>4)*10+(HexNum&0X0F);</p><p&

36、gt;  return Numtemp;</p><p><b>  }</b></p><p>  /******************************************************************************</p><p>  * 函數(shù)名稱:main()</p><p&g

37、t;<b>  * 功 能:</b></p><p><b>  * 入口參數(shù):</b></p><p><b>  * 出口參數(shù):</b></p><p>  *******************************************************************

38、*************/</p><p>  void main( void )</p><p>  { </p><p>  uchar clock_time[6] = {0X00,0X59,0X23,0X09,0X04,0X11}; //定義時間變量 秒 分 時 日 月 年</p><p>  uch

39、ar alarm_time[2] = { 10, 06}; //鬧鐘設置 alarm_time[0]: 分鐘 alarm_time[1] :小時</p><p>  uchar temperature[2]; //定義溫度變量 temperature[0] 低8位 temperature[1] 高8位</p><p>  Lcd_Initial(); //LCD初

40、始化</p><p>  Clock_Fresh( clock_time ); //時間刷新,proteus會調用當前系統(tǒng)時間</p><p>  Clock_Initial( clock_time ); //時鐘初試化</p><p>  /***********************中斷初始化***************************/</p

41、><p>  EA = 1; //開總中斷</p><p>  ET0 = 1; //Timer0 開中斷</p><p>  ET2 = 1; //Timer2 開中斷</p><p>  TMOD = 0x01 ; //Timer0 工作方式 1</p><p>  RCAP2H = 0x3c; </p>

42、<p>  RCAP2L = 0xb0; //Timer2 延時 50 ms</p><p>  while( 1 )</p><p><b>  {</b></p><p>  switch( Key_Scan() )</p><p><b>  {</b></p>&

43、lt;p>  case up_array: </p><p><b>  {</b></p><p>  Key_Idle();</p><p><b>  }</b></p><p>  break; </p><p>  case down_array:

44、 </p><p><b>  {</b></p><p>  Key_Idle();</p><p><b>  }</b></p><p>  break; </p><p>  case clear_array: </p&g

45、t;<p><b>  { </b></p><p>  Key_Idle();</p><p><b>  } </b></p><p><b>  break;</b></p><p>  case function_array:{</p>

46、<p>  Key_Function( clock_time, alarm_time );</p><p><b>  }</b></p><p>  case null: </p><p><b>  {</b></p><p>  Clock_Fresh( clock_ti

47、me ); //時間刷新</p><p>  Lcd_Clock( clock_time ); //時間顯示</p><p>  Sensor_Fresh( temperature ); //溫度更新</p><p>  Lcd_Temperture( temperature ); //溫度顯示</p><p>  Calendar_Co

48、nvert( 0 , clock_time );</p><p>  Week_Convert( 0, clock_time );</p><p><b>  //鬧鐘報警</b></p><p>  if( * alarm_time == HexNum_Convert(* ( clock_time + 1 ) )) //分鐘相吻合</p

49、><p>  if( * ( alarm_time + 1 ) == HexNum_Convert(*( clock_time + 2 )) ) //小時相吻合</p><p><b>  {</b></p><p><b>  bell = 0;</b></p><p>  TR2 = 1; //啟動

50、Timer2</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }<

51、;/b></p><p><b>  }</b></p><p>  #ifndef _SUN_MOON</p><p>  #define _SUN_MOON</p><p>  /******************************************************************

52、*******/</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  /********************************************************************************</p>

53、<p>  * 名稱: get_moon_day(uchar month_p,uint table_addr)</p><p>  * 功能: 讀取數(shù)據(jù)表中農歷的大月或小月 ,如果大月返回1, 小月返回0</p><p><b>  * 入口參數(shù):</b></p><p><b>  * 出口參數(shù):</b>&

54、lt;/p><p>  *********************************************************************************/</p><p>  bit get_moon_day( uchar month_p,uint calendar_address )</p><p><b>  {</

55、b></p><p>  uchar temp,temp1;</p><p>  temp1=(month_p+3)/8;</p><p>  temp=0x80>>((month_p+3)%8);</p><p>  temp=year_code[calendar_address+temp1]&temp;</

56、p><p>  if(temp==0){return(0);}else{return(1);}</p><p><b>  }</b></p><p>  /**************************************************************************</p><p> 

57、 * 名稱: void Calendar_Convert( uchar * clock_time )</p><p>  * 功能: 輸入BCD的陽歷數(shù)據(jù), 輸出BCD陰歷數(shù)據(jù)( 1901 - 2099 )</p><p>  * 入口參數(shù): c_flag:陽歷的世紀標志 clock_time: 時鐘地址</p><p><b>  * 出口參數(shù): 無&

58、lt;/b></p><p>  * 說明: c_flag = 0 :21世紀 c_flag = 1 :19世紀 </p><p>  *****************************************************************************/</p><p>  void Calendar_Convert( u

59、char c_flag, uchar * clock_time )</p><p><b>  {</b></p><p>  bit flag_month, flag_year;</p><p>  uchar year, month, day, month_point; //定義 年 月 天</p><p>  uc

60、har temp1, temp2, temp3;</p><p>  uint calendar_address; //定義農歷地址</p><p>  uint day_number;</p><p>  uchar clock_moon[3]; //定義陰歷</p><p>  clock_time += 3; //指向日</p&g

61、t;<p>  day = ( * clock_time >> 4 ) * 10 + ( *clock_time & 0x0f ); //BCD轉換十進制</p><p>  clock_time ++; //指向月</p><p>  month = ( * clock_time >> 4 ) * 10 + ( * clock_time &a

62、mp; 0x0f ); //BCD轉換十進制</p><p>  clock_time ++; //指向年</p><p>  year = ( * clock_time >> 4 ) * 10 + ( * clock_time & 0x0f ); //BCD轉換十進制 </p><p><b>  //定位日歷地址</b>

63、</p><p>  if( c_flag == 0 )</p><p>  calendar_address = ( year + 99 ) * 3; </p><p><b>  else</b></p><p>  calendar_address = ( year - 1 ) * 3;</p>&

64、lt;p>  //春節(jié)(正月初一)所在的陽歷月份</p><p>  temp1 = year_code[ calendar_address + 2 ] & 0x60; //Bit6~~Bit5:春節(jié)所在的陽歷月份</p><p>  temp1 >>= 5 ;</p><p>  //春節(jié)(正月初一)所在的陽歷日期</p>

65、<p>  temp2 = year_code[ calendar_address + 2 ] & 0x1f; //Bit4~~Bit0:春節(jié)所在的陽歷日期</p><p>  //計算春節(jié)(正月初一)離當年元旦{ 1月1日(陽歷) }的天數(shù);春節(jié)只會在陽歷的1月 或 2月</p><p>  temp3=temp2-1;</p><p>  if

66、(temp1!=1) temp3+=0x1f;</p><p>  //計算陽歷月離當年元旦{ 1月1日(陽歷) }的天數(shù)</p><p>  if( month < 10 )</p><p>  {day_number = day_code1[ month - 1 ] + day ;} </p><p><b>  els

67、e</b></p><p>  {day_number = day_code2[ month - 10 ] + day ;}</p><p>  //如果陽歷的月大于2 且該年的2月為閏月,天數(shù)加1 </p><p>  //閏年指的就是陽歷有閏日或陰歷有閏月的一年;</p><p>  //陽歷四年一閏,在二月加一天,這一天叫做

68、閏日:</p><p>  //農歷三年一閏,五年兩閏,十九年七閏,每逢閏年所加的一個月叫做閏月。</p><p>  if( ( month <= 2 ) || ( year % 0x04!= 0) ) day_number-=1;</p><p>  // day_number ++;</p><p>  // if ((m

69、onth<2)||(year%0x04!=0))</p><p>  // day_number-=1;</p><p>  //判斷陽歷日 在春節(jié)(正月初一) 之前 還是 之后</p><p>  if( day_number >= temp3 ) //陽歷在春節(jié)之后 或者 春節(jié)當日</p><p><b>  {

70、</b></p><p>  day_number -= temp3;</p><p>  month = 1;</p><p>  month_point = 1; // month_point 為月份指向,陽歷日在春季前就是春季</p><p>  flag_month = get_moon_day( month_point,

71、 calendar_address ); //檢查該陰歷月的大小 大月返回1 小月返回0</p><p>  flag_year = 0;</p><p>  if (flag_month==0) {temp1=29;} else{temp1=30;}</p><p><b>  //閏月所在的月分</b></p><p

72、>  temp2 = year_code[ calendar_address ] & 0xf0;</p><p>  temp2 >>= 4; //提取高四位 假如是0 表示沒有閏月</p><p>  while( day_number >= temp1 )</p><p><b>  {</b></p

73、><p>  day_number -= temp1;</p><p>  month_point ++;</p><p>  if( month == temp2 )</p><p><b>  {</b></p><p>  flag_year = ~ flag_year; </p>

74、<p>  if( flag_year == 0 ) </p><p>  month +=1;</p><p><b>  }</b></p><p><b>  else</b></p><p>  month ++ ;</p><p>  flag_mont

75、h = get_moon_day( month_point, calendar_address );</p><p>  if( flag_month )</p><p>  temp1 = 30;</p><p><b>  else</b></p><p>  temp1 = 29;</p><p

76、><b>  }</b></p><p>  day = day_number + 1;</p><p><b>  }</b></p><p>  else //陽歷在春節(jié)之前使用以下代碼進行運算</p><p><b>  {</b></p><p

77、>  temp3 -= day_number;</p><p>  if( year == 0 )</p><p>  { year = 0xe3; c_flag = 1; }</p><p><b>  else</b></p><p>  year -= 1;</p><p>  cal

78、endar_address -= 3;</p><p>  month = 0xc;</p><p>  temp2 = year_code[ calendar_address ] & 0xf0;</p><p>  temp2 >>= 4; //提取高4位</p><p>  flag_year=0;</p>

79、<p>  if( temp2 == 0 )</p><p>  month_point = 12;</p><p><b>  else</b></p><p>  month_point = 13;</p><p>  //flag_year = 0;</p><p>  fla

80、g_month = get_moon_day( month_point, calendar_address );</p><p>  if( flag_month )</p><p>  temp1 = 30;</p><p><b>  else</b></p><p>  temp1 = 29;</p>

81、<p>  while( temp3 > temp1 )</p><p><b>  {</b></p><p>  temp3 -= temp1;</p><p>  month_point --;</p><p>  if( flag_year == 0 )</p><p>

82、  month -=1;</p><p>  if( month == temp2 )</p><p>  flag_year = ~ flag_year;</p><p>  flag_month = get_moon_day( month_point, calendar_address );</p><p>  if( flag_mont

83、h )</p><p>  temp1 = 0x1e;</p><p><b>  else</b></p><p>  temp1 = 0x1d;</p><p><b>  }</b></p><p>  day = temp1 - temp3 + 1;</p>

84、;<p><b>  }</b></p><p>  //HEX->BCD ,運算結束后,把數(shù)據(jù)轉換為BCD數(shù)據(jù)</p><p>  temp1 = year / 10;</p><p>  temp1 <<= 4;</p><p>  clock_moon[2] = temp1 | (

85、year % 10 );</p><p>  temp1 = month / 10;</p><p>  temp1 <<= 4;</p><p>  clock_moon[1] = temp1 | ( month % 10 );</p><p>  temp1 = day / 10;</p><p>  

86、temp1 <<= 4;</p><p>  clock_moon[0] = temp1 | ( day % 10 );</p><p>  Lcd_Lunar_Calendar( clock_moon );</p><p><b>  }</b></p><p>  /*******************

87、*************************************************************</p><p>  * 名稱: void Week_convert( uchar * clock_time )</p><p>  * 功能: 輸入BCD陽歷數(shù)據(jù);輸出BCD星期</p><p><b>  * 入口參數(shù): </

88、b></p><p><b>  * 出口參數(shù):</b></p><p>  * 說明: 算法: ( 日期 + 年份 + 所過閏年 + 月校正 ) / 7 的余數(shù)就是星期 如果是閏年又不到 3 月份上述之和 要減一天 再</p><p>  *************************************************

89、*******************************/</p><p>  void Week_Convert( bit c, uchar * clock_time )</p><p><b>  {</b></p><p>  uchar year, month, day; //定義 年 月 天</p><p&g

90、t;  uchar temp;</p><p>  clock_time += 3; //指向日</p><p>  day = ( * clock_time >> 4 ) * 10 + ( *clock_time & 0x0f ); //BCD轉換十進制</p><p>  clock_time ++; //指向月</p><

91、;p>  month = ( * clock_time >> 4 ) * 10 + ( * clock_time & 0x0f );</p><p>  clock_time ++; //指向年</p><p>  year = ( * clock_time >> 4 ) * 10 + ( * clock_time & 0x0f ); <

92、/p><p>  if( c == 0 ) //如果為21世紀,年份數(shù)加100</p><p>  year += 100;</p><p>  temp = year / 4; //所過閏年數(shù)只算1900年之后的</p><p>  temp = year + temp;</p><p>  temp = temp %

93、0x07; //為節(jié)省資源,先進行一次取余,避免數(shù)大于0xff,避免使用整型數(shù)據(jù)</p><p>  temp = temp + day + table_week[ month - 1 ];</p><p>  if( ( year % 4 == 0 ) && ( month <3 ) )</p><p><b>  temp -

94、=1;</b></p><p>  Lcd_Week( temp % 7 );</p><p><b>  }</b></p><p>  /********************************************************************************/</p><

95、;p><b>  #endif</b></p><p>  #ifndef _CHARACTER</p><p>  #define _CHARACTER</p><p>  /*****************************預定義**************************************/</p>

96、<p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p><p>  /********************************************************************************************</p>&l

97、t;p>  *內容: 0 1 2 3 4 5 6 7 8 9 空白 - T :</p><p>  *大小: 8X16字符 </p><p>  *********************************************************************************************/</p><p>

98、;  uchar code letter_logo[16][16]={</p><p>  /*-- 文字: 0 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20

99、,0x20,0x10,0x0F,0x00,</p><p>  /*-- 文字: 1 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x0

100、0,0x00,</p><p>  /*-- 文字: 2 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,</p&

101、gt;<p>  /*-- 文字: 3 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,</p><p>

102、  /*-- 文字: 4 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,</p><p>  /*-- 文字: 5

103、 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,</p><p>  /*-- 文字: 6 --*/</p&g

104、t;<p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,</p><p>  /*-- 文字: 7 --*/</p><p> 

105、 /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,</p><p>  /*-- 文字: 8 --*/</p><p>  /*-- 宋體12;

106、此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,</p><p>  /*-- 文字: 9 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高

107、=8x16 --*/</p><p>  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,</p><p>  /*-- 文字: : --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/&l

108、t;/p><p>  0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,</p><p>  /*-- 文字: - --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><

109、p>  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,</p><p>  /*-- 文字: T --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0x

110、1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,</p><p>  /*-- 文字: 空白 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/</p><p>  0x00,0x00,0x00,0x00,0

111、x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p>  /*-- 文字: ( --*/</p><p>  0x00,0x00,0xF0,0xF8,0x0C,0x04,0x00,0x00,0x00,0x00,0x03,0x07,0x0C,0x08,0x00,0x00,</p><p&

112、gt;  /*-- 文字: ) --*/</p><p>  0x00,0x00,0x04,0x0C,0xF8,0xF0,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,0x00,0x00,</p><p><b>  };</b></p><p>  /***************************

113、****************************************************</p><p><b>  * 內容 年月日</b></p><p>  * 大小 16X16</p><p>  **************************************************************

114、*******************/</p><p>  uchar code data_logo[3][32] = {</p><p>  /*-- 文字: 年 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/</p><p>  0x40,0x20,0x10,0x0C

115、,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00,</p><p>  0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00,</p><p>  /*-- 文字: 月 --*/</p><

116、;p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/</p><p>  0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00,</p><p>  0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0

117、x21,0x41,0x3F,0x00,0x00,0x00,0x00,</p><p>  /*-- 文字: 日 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/</p><p>  0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE

118、,0x00,0x00,0x00,0x00,</p><p>  0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00,</p><p><b>  };</b></p><p>  /****************************

119、***************************************************</p><p><b>  * 內容 時分秒</b></p><p>  * 大小 16X16</p><p>  ***************************************************************

120、******************/</p><p>  uchar code time_logo[3][32] = {</p><p>  /*-- 文字: 時 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/</p><p>  0x00,0xFC,0x44,0x44,

121、0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,</p><p>  0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,</p><p>  /*-- 文字: 分 --*/</p><

122、p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/</p><p>  0x80,0x40,0x20,0x98,0x87,0x82,0x80,0x80,0x83,0x84,0x98,0x30,0x60,0xC0,0x40,0x00,</p><p>  0x00,0x80,0x40,0x20,0x10,0x0F,0x00,0x00,0x20,0x

123、40,0x3F,0x00,0x00,0x00,0x00,0x00,</p><p>  /*-- 文字: 秒 --*/</p><p>  /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/</p><p>  0x12,0x12,0xD2,0xFE,0x91,0x11,0xC0,0x38,0x10,0x00,0xFF,0x00,

124、0x08,0x10,0x60,0x00,</p><p>  0x04,0x03,0x00,0xFF,0x00,0x83,0x80,0x40,0x40,0x20,0x23,0x10,0x08,0x04,0x03,0x00,</p><p><b>  };</b></p><p>  /*****************************

125、****************************************************</p><p>  * 內容: 日一二三四五六星期 </p><p>  * 大小: 16X16</p><p>  /***********************************************************************

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論