2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設計報告</b></p><p>  ——液晶點陣顯示屏程序設計</p><p>  姓 名: </p><p>  專業班級: 通信1002 </p><p>  學 號:

2、 </p><p>  指導老師: </p><p>  設計日期: 2013.01.07~2013.01.11 </p><p><b>  一、設計目的</b></p><p>  1、了解液晶顯示屏的工作原理;</p><p>  2、掌握液晶顯示屏顯示程序

3、的設計方法;</p><p>  3、熟練掌握C51系統仿真開發系統的應用;</p><p>  4、加強單片機的綜合運用能力、提高單片機的軟件編程和調試能力,為以后的學習和開發工作打下良好基礎。</p><p><b>  二、設計要求</b></p><p>  1、從下到上滾動顯示:“江蘇大學計算機學院”然后交替顯

4、示:“2010年單片機課程設計”“液晶點陣顯示屏程序設計”“作者姓名、班級、學號” </p><p>  2、改變字庫的內容,顯示其它漢字。</p><p>  3、改變頁地址或列地址,使顯示的內容改變位置。 </p><p>  4、其它功能不限,可自由發揮(左、右移,上下卷、顯示圖片、時鐘等)。</p><p>  5、能進行正常的模

5、擬量采樣值顯示(溫度、壓力、電位) 。</p><p><b>  三、設計方案</b></p><p>  3.1 設計原理及思路</p><p>  實驗中用到的OCM12864液晶顯示模塊是128×64點陣型液晶顯示模塊,可顯示各種字符及圖形,可與CPU直接接口,具有8位標準數據總線、6條控制線及電源線。采用KS0107控制IC

6、。</p><p>  OCM12864的邏輯工作電壓(Vcc):4.5~5.5V;工作溫度(Ta):0~55℃(常溫)/-20~70℃(寬溫);保存溫度(Tstg):-10~65℃。</p><p>  電氣特性(測試條件 Ta=25,Vdd=5.0+/-0.25V):輸入高電平(Vih):3.5Vmin;輸入低電平(Vil):0.55Vmax;輸出高電平(Voh):3.75Vmin;輸

7、出低電平(Vol):1.0Vmax;工作電流:2.0mAmax。</p><p>  程序可分為四個模塊:</p><p>  主函數模塊main.c;</p><p>  模數轉換模塊ADC.c;</p><p>  液晶顯示模塊KS0108.c;</p><p>  時鐘模塊I2C.c。</p>&l

8、t;p>  其中,主函數模塊做一些初始化和函數調用工作,模數轉換模塊主要將溫度、壓力和電壓的值轉化為數字量供液晶顯示用,時鐘模塊主要讀取時間,可以讓時鐘正常運行,液晶顯示模塊將得到的模數轉換傳遞過來的數字量和時鐘模塊的時間顯示到液晶面板上。</p><p><b>  3.2 程序框圖</b></p><p><b>  1、主流程圖</b>

9、;</p><p>  2、主函數模塊main.c</p><p>  3、模數轉換模塊ADC.c</p><p>  4、液晶顯示模塊KS0108.c</p><p>  5、時鐘模塊I2C.c</p><p><b>  3.3 源程序</b></p><p>  主函

10、數模塊main.c</p><p>  #include "c8051f020.h" </p><p>  #include <intrins.h> </p><p>  void Delay1us(unsigned char us)</p><p><b>  {<

11、/b></p><p>  while (us)</p><p><b>  {</b></p><p>  _nop_(); _nop_(); _nop_(); _nop_(); _nop_();</p><p><b>  --us;</b></p><p><

12、;b>  }</b></p><p><b>  }</b></p><p>  void SYSCLK_Init (void) //系統始終初始化</p><p><b>  {</b></p><p>  int i;

13、 </p><p>  OSCXCN = 0x67; </p><p>  for (i=0; i < 256; i++) ; </p><p>  while (!(OSCXCN & 0x80)) ;

14、 </p><p>  OSCICN = 0x88; </p><p><b>  }</b></p><p>  #define PRT

15、0CF P0MDOUT</p><p>  #define PRT1CF P1MDOUT</p><p>  #define PRT2CF P2MDOUT</p><p>  void PORT_Init (void) //端口初始化函數</p><p><b>  {</b></p&g

16、t;<p>  XBR0 = 0x07; // Enable SMBus, SPI0, and UART0</p><p>  XBR1 = 0x00;</p><p>  XBR2 = 0x44; // Enable crossbar and weak pull-ups</p>

17、<p>  EMI0CF = 0x27;</p><p>  EMI0TC = 0x21;</p><p>  P74OUT = 0xFF;</p><p>  P0MDOUT = 0x15;</p><p>  P1MDOUT |= 0x3C; //P1.2-P1.5推挽輸出</p><p&

18、gt;  P1 &= 0xc3; //P1.2-P1.5=0</p><p><b>  }</b></p><p>  void SPI0_Init (void) //SPIO初始化</p><p><b>  {</b></p><p>  SPI0

19、CFG = 0x07; // data sampled on 1st SCK rising edge</p><p>  SPI0CFG|=0xC0; //CKPOL =1;</p><p>  SPI0CN = 0x03; // Master mode; SPI enabled; flags<

20、;/p><p>  SPI0CKR = SYSCLK/2/8000000-1;// SPI clock <= 8MHz</p><p><b>  }</b></p><p>  unsigned char Count1ms;</p><p>  void Timer0_Init (void)

21、 //定時器0 初始化</p><p><b>  {</b></p><p>  CKCON|=0x8;</p><p>  TMOD|=0x1; //16Bit</p><p>  Count1ms=10;</p><p>  TR0 = 0;

22、 // STOP Timer0</p><p>  TH0 = (-SYSCLK/1000) >> 8; // set Timer0 to overflow in 1ms</p><p>  TL0 = -SYSCLK/1000;</p><p>  TR0 = 1;

23、 // START Timer0</p><p>  IE|= 0x2; </p><p><b>  }</b></p><p>  void Timer0_ISR (void) interrupt 1 //定時器0中斷服務函數</p><p><b>  {</b><

24、;/p><p>  TH0 = (-SYSCLK/1000) >> 8; </p><p>  TL0 = -SYSCLK/1000;</p><p>  if (Count1ms) Count1ms--;</p><p><b>  }</b></p><p>  void Delay

25、1ms(unsigned char T) //延時1ms的函數</p><p><b>  {</b></p><p>  Count1ms=T;</p><p>  while (Count1ms);</p><p><b>  }</b></p><p>  

26、void Delay1s(unsigned char T) //延時1s的函數</p><p><b>  {</b></p><p><b>  while (T)</b></p><p><b>  {</b></p><p>  Delay1ms(200);&

27、lt;/p><p>  Delay1ms(200);</p><p>  Delay1ms(200);</p><p>  Delay1ms(200);</p><p>  Delay1ms(200);</p><p><b>  T--;</b></p><p><b&

28、gt;  }</b></p><p><b>  }</b></p><p>  void init_adc(void);</p><p>  void TestLCD(void);</p><p>  void TestI2C(void);</p><p>  void main (

29、void) </p><p><b>  {</b></p><p>  WDTCN = 0xde;</p><p>  WDTCN = 0xad; //關看門狗</p><p>  SYSCLK_Init (); //初始化時鐘</p><p>  Timer

30、0_Init();//初始化定時器</p><p>  PORT_Init (); //初始化IO口</p><p>  SPI0_Init (); //初始化SPI0</p><p>  init_adc(); //初始化ADC</p><p>  CPT1CN|=0x8

31、0; //使能比較器1</p><p>  REF0CN = 0x03; //使能片內參考電壓</p><p>  DAC0CN |= 0x80; //使能DAC0</p><p><b>  DAC0H=0;</b></p><p><b>  DAC0L=

32、0;</b></p><p>  EA=1; //開中斷</p><p>  TestLCD();</p><p>  TestI2C();</p><p><b>  }</b></p><p>  模數轉換模塊ADC.c</p><p>  #

33、include "c8051F020.h"</p><p>  #include <intrins.h></p><p>  #define MUX_TEMP0x08</p><p>  #define MUX_VOLT0x01</p><p>  #define MUX_PRESS0x02&

34、lt;/p><p>  unsigned int idata Temp, Press, Volt;</p><p>  unsigned char idata mux_select;</p><p>  sfr16 ADC0 = 0xbe; // ADC0 data</p><p>  //AD轉換模塊初始化<

35、;/p><p>  void init_adc(void)</p><p><b>  {</b></p><p>  ADC0CN = 0x81; </p><p>  REF0CN = 0x07; </

36、p><p>  mux_select = MUX_TEMP; // CPU on-chip temp sensor</p><p>  AMX0SL = MUX_TEMP; </p><p>  ADC0CF = (SYSCLK/2500000) << 3;// ADC conversion clock = 2.5MHz</p>&l

37、t;p>  EIE2 &= ~0x02; // disable ADC0 EOC interrupt</p><p>  EIE1 &= ~0x04; // disable ADC0 window compare interrupt</p><p><b>  }</b></p>

38、<p>  void read_analog_inputs(void)</p><p><b>  {</b></p><p>  long temp_long;</p><p>  AD0INT = 0; // clear conversion complete indicator</p&

39、gt;<p>  AD0BUSY = 1; // initiate conversion</p><p>  while (AD0INT == 0); // wait for conversion complete</p><p>  switch (mux_select)</p><p><b&g

40、t;  {</b></p><p>  case MUX_TEMP:</p><p>  temp_long = ADC0 - 42380/2;</p><p>  temp_long = (temp_long * 200L) / 156;</p><p>  Temp=temp_long;</p><p>

41、;  AMX0SL = MUX_VOLT; // Select AIN1 for next read</p><p>  mux_select = MUX_VOLT;</p><p><b>  break;</b></p><p>  case MUX_VOLT:</p><p>  temp_long = ADC0

42、;</p><p>  Volt = 24*temp_long/655;</p><p>  AMX0SL = MUX_PRESS;// Select on-chip temp sensor</p><p>  mux_select = MUX_PRESS;</p><p><b>  break;</b></p

43、><p>  case MUX_PRESS:</p><p>  temp_long = ADC0;</p><p>  temp_long = 24*temp_long/655;</p><p>  Press = temp_long;</p><p>  AMX0SL = MUX_TEMP; </p>

44、<p>  mux_select = MUX_TEMP;</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  AMX0SL = MUX_TEMP;</p><p>  mux_select = MUX_TEMP;<

45、;/p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  unsigned int GetADCValue(char No) //讀取片內溫度傳感器的轉換結果,并將轉換結果返回</p&

46、gt;<p><b>  {</b></p><p>  read_analog_inputs();</p><p>  read_analog_inputs();</p><p>  read_analog_inputs();</p><p>  switch (No)</p><p&

47、gt;<b>  {</b></p><p><b>  case 1:</b></p><p>  return Temp;</p><p><b>  case 2:</b></p><p>  return Volt;</p><p><b&

48、gt;  case 3:</b></p><p>  if (Press<10) Press=0;</p><p>  return Press;</p><p><b>  }</b></p><p><b>  }</b></p><p>  液晶顯示模

49、塊KS0108.c</p><p>  #include "c8051F020.h"</p><p>  #include <intrins.h></p><p>  //Test7279</p><p>  sbitHD7279_DAT=P1^7;</p><p>  sbitHD

50、7279_CLK=P1^6;</p><p>  #define NOSELECT7279 P5 |= 0x80//SPICS4(P57)=1</p><p>  #define SELECT7279 P5 &= ~(0x80) //SPICS4(P57)=0;</p><p>  #define Set7279DAT HD7279_DA

51、T=1</p><p>  #define Clr7279DAT HD7279_DAT=0</p><p>  #define Set7279CLK HD7279_CLK=1</p><p>  #define Clr7279CLK HD7279_CLK=0</p><p>  void Delay1ms(unsigned cha

52、r T);</p><p>  void Delay1s(unsigned char T);</p><p>  void Delay1us(unsigned char T);</p><p>  void Send7279Byte(unsigned char ch)//發送一個字節給7279的函數</p><p><b>  {

53、</b></p><p><b>  char i;</b></p><p>  SELECT7279; //置CS低電平 </p><p>  Delay1us(50); //延時50μ</p><p>  for (i=0;i<8;i+

54、+)</p><p><b>  {</b></p><p>  if (ch&0x80) //輸出7位到HD7279A的DATA端 </p><p><b>  {</b></p><p>  Set7279DAT;</p><p>&l

55、t;b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  Clr7279DAT;</p><p><b>  }</b></p><p>  Set7279CLK;

56、 //置CLK高電平 </p><p>  ch=ch<<1; //待發數據左移 </p><p>  Delay1us(8); //延時8μ</p><p>  Clr7279CLK; //置CLK低電平 </p><p>  Delay1us(8)

57、; //延時50μ</p><p><b>  }</b></p><p>  Clr7279DAT; //發送完畢,DATA端置低,返回 </p><p><b>  }</b></p><p>  unsigned char Receive7279Byte(v

58、oid)</p><p><b>  {</b></p><p>  unsigned char i,ch;</p><p><b>  ch=0;</b></p><p>  Set7279DAT; //DATA端置為高電平,輸入狀態</p><p>  

59、Delay1us(50); //延時50μ</p><p>  for (i=0;i<8;i++)</p><p><b>  {</b></p><p>  Set7279CLK; //置CLK高電平</p><p>  Delay1us(8); //延時8μ</p

60、><p>  ch=ch<<1; //接收數據左移1位</p><p>  if (HD7279_DAT)</p><p>  ch+=1; //接收1位數據</p><p>  Clr7279CLK; //置CLK低電平</p><p>  Delay1us(8);

61、 //延時8μ</p><p><b>  }</b></p><p>  Clr7279DAT; //接收完畢,DATA端重新置成低電平(輸出狀態)</p><p>  return ch;</p><p><b>  }</b></p><p>  uns

62、igned char code BdSeg[]={</p><p>  0x7e,0x30,0x6d,0x79, // 0 1 2 3 </p><p>  0x33,0x5b,0x5f,0x70, // 4 5 6 7</p><p>  0x7f,0x7b,0x77,0x1f, // 8 9 a b</p><p>  0x4e,0x3d

63、,0x4f,0x47, // c d e f</p><p>  0x00,0x01}; </p><p>  char GetKeyValue(void) //獲取鍵值</p><p><b>  {</b></p><p>  char KeyValue;</p>&

64、lt;p>  if (CPT1CN&0x40) return -1; //無鍵按下 </p><p>  Send7279Byte(0x15); //發讀鍵盤指令 </p><p>  KeyValue=Receive7279Byte();</p><p>  NOSELECT7279;

65、 //置CS高電平 </p><p>  return KeyValue; </p><p><b>  }</b></p><p>  //KS0108模塊</p><p>  #define LCD_DATA P2</p><p>  #define LCD_RS P

66、30</p><p>  #define LCD_RW P31</p><p>  #define LCD_E P32</p><p>  #define LCD_CS1 P33</p><p>  #define LCD_CS2 P34</p><p>  #define LCD_RST P35</p&

67、gt;<p>  #define SELECTCS 0</p><p>  char code Number[]={};/*-- 文字: 0123456789:/ --*/</p><p>  char code screen[]={};//江蘇大學計算機學院//</p><p>  char code screen1[]={};//2010年單

68、片機課程設計//</p><p>  char code screen2[]={};//液晶點陣顯示屏程序設計//</p><p>  char code screen3[]={};//姓名、班級、學號//</p><p>  char code screen4[]={};//主菜單//</p><p>  char code ni[]={}

69、;/*-- 文字: 你 --*/</p><p>  char code hao[]={};/*-- 文字: 好 --*/</p><p>  char code wen[]={};/*-- 文字: 溫 --*/</p><p>  char code du[]={};/*-- 文字: 度 --*/</p><p> 

70、 char code dian[]={};/*-- 文字: 電 --*/</p><p>  char code ya1[]={};/*-- 文字: 壓 --*/</p><p>  char code ya2[]={};/*-- 文字: 壓 --*/</p><p>  char code li[]={};/*-- 文字: 力 --*/<

71、;/p><p>  char code maohao[]={};/*-- “:” --*/</p><p>  char code sheshidu[]={};/*-- 字母: C --*/</p><p>  char code fu[]={};/*-- 字母: V --*/</p><p>  char code niu[]={

72、};/*-- 字母: N --*/</p><p>  //數字“0~9”“.”//</p><p>  char code led0[]={};</p><p>  char code led1[]={};</p><p>  char code led2[]={};</p><p>  char code led

73、3[]={};</p><p>  char code led4[]={};</p><p>  char code led5[]={};</p><p>  char code led6[]={};</p><p>  char code led7[]={};</p><p>  char code led8[]={

74、};</p><p>  char code led9[]={};</p><p>  char code led[]={};</p><p>  char code Dot[]={};</p><p>  void LCD_WaitReady1(void) //判斷LCD控制芯片KS0108是否忙</p><p>&

75、lt;b>  {</b></p><p>  LCD_DATA=0xff;</p><p><b>  _nop_();</b></p><p>  LCD_CS2=SELECTCS;</p><p><b>  LCD_RW=1;</b></p><p>

76、<b>  LCD_RS=0;</b></p><p><b>  LCD_E=1;</b></p><p>  while (LCD_DATA&0x80);</p><p>  LCD_CS2=!SELECTCS;</p><p><b>  }</b></p&

77、gt;<p>  void LCD_WaitReady2(void) //判斷LCD控制芯片KS0108是否忙</p><p><b>  {</b></p><p>  LCD_DATA=0xff;</p><p><b>  _nop_();</b></p><p>  LCD_C

78、S1=SELECTCS;</p><p><b>  LCD_RW=1;</b></p><p><b>  LCD_RS=0;</b></p><p><b>  LCD_E=1;</b></p><p>  while (LCD_DATA&0x80);</p&

79、gt;<p>  LCD_CS1=!SELECTCS;</p><p><b>  }</b></p><p>  void LCD_WriteCommand1(char ch) //向LCD控制芯片KS0108發送控制命令</p><p><b>  {</b></p><p>  

80、LCD_WaitReady1();</p><p>  LCD_CS2=SELECTCS;</p><p><b>  LCD_RW=0;</b></p><p><b>  LCD_RS=0;</b></p><p>  LCD_DATA=ch;</p><p><b

81、>  LCD_E=1;</b></p><p><b>  LCD_E=0;</b></p><p>  LCD_CS2=!SELECTCS;</p><p><b>  }</b></p><p>  void LCD_WriteCommand2(char ch)//向LCD控

82、制芯片KS0108發送控制命令</p><p><b>  {</b></p><p>  LCD_WaitReady2();</p><p>  LCD_CS1=SELECTCS;</p><p><b>  LCD_RW=0;</b></p><p><b> 

83、 LCD_RS=0;</b></p><p>  LCD_DATA=ch;</p><p><b>  LCD_E=1;</b></p><p><b>  LCD_E=0;</b></p><p>  LCD_CS1=!SELECTCS;</p><p><

84、;b>  }</b></p><p>  void LCD_WriteData1(char ch)//向LCD控制芯片KS0108發送數據命令</p><p><b>  {</b></p><p>  LCD_WaitReady1();</p><p>  LCD_CS2=SELECTCS;<

85、/p><p><b>  LCD_RW=0;</b></p><p><b>  LCD_RS=1;</b></p><p>  LCD_DATA=ch;</p><p><b>  LCD_E=1;</b></p><p><b>  LCD_E

86、=0;</b></p><p>  LCD_CS2=!SELECTCS;</p><p><b>  }</b></p><p>  void LCD_WriteData2(char ch)//向LCD控制芯片KS0108發送數據命令</p><p><b>  {</b></p

87、><p>  LCD_WaitReady2();</p><p>  LCD_CS1=SELECTCS;</p><p><b>  LCD_RW=0;</b></p><p><b>  LCD_RS=1;</b></p><p>  LCD_DATA=ch;</p>

88、;<p><b>  LCD_E=1;</b></p><p><b>  LCD_E=0;</b></p><p>  LCD_CS1=!SELECTCS;</p><p><b>  }</b></p><p>  void InitLCD(void)

89、 //初始化LCD</p><p><b>  {</b></p><p><b>  char i,j;</b></p><p>  LCD_RST=0;</p><p>  Delay1ms(1);</p><p>  LCD_RST=1;</

90、p><p>  LCD_WriteCommand1(0xc0);</p><p>  LCD_WriteCommand2(0xc0);</p><p>  LCD_WriteCommand1(0x3f); //開顯示</p><p>  LCD_WriteCommand2(0x3f);</p><p>  f

91、or (j=0;j<8;j++) //清屏</p><p><b>  {</b></p><p>  LCD_WriteCommand1(0xB8+j);//清左半屏</p><p>  LCD_WriteCommand1(0x40);</p><p>  for (i=0;i<64;

92、i++)</p><p>  LCD_WriteData1(0x00);</p><p>  LCD_WriteCommand2(0xB8+j);//清右半屏</p><p>  LCD_WriteCommand2(0x40);</p><p>  for (i=0;i<64;i++)</p><p>  LC

93、D_WriteData2(0x00);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void LCD_WriteHZ(char x,char y,char *Dot) //顯示16*16點陣漢字</p><p><b>  {<

94、/b></p><p><b>  char i;</b></p><p>  for (i=0;i<32;i++)</p><p><b>  {</b></p><p>  if ((x+i%16)<64)</p><p><b>  {<

95、;/b></p><p>  LCD_WriteCommand1(0xB8+y+i/16);</p><p>  LCD_WriteCommand1(0x40+x+i%16);</p><p>  LCD_WriteData1(Dot[i]);</p><p><b>  }</b></p><

96、p><b>  else</b></p><p><b>  {</b></p><p>  LCD_WriteCommand2(0xB8+y+i/16);</p><p>  LCD_WriteCommand2(0x40+x-64+i%16);</p><p>  LCD_WriteData

97、2(Dot[i]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void LCD_WriteSZ(char x,char y,char *Dat) //顯示16*8點陣數字

98、 </p><p><b>  { </b></p><p><b>  char i; </b></p><p>  for (i=0;i<16;i++) </p><p>  { </p><p>  if ((x+i%8)<64)

99、//x代表列, 一個數字占8列,顯示在左半屏</p><p><b>  { </b></p><p>  LCD_WriteCommand1(0xB8+y+i/8); //設置頁地址 y表示頁</p><p>  LCD_WriteCommand1(0x40+x+i%8); //設置列地址 x表示列,一個數字占8列</p>

100、<p>  LCD_WriteData1(Dat[i]); </p><p><b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p>  LCD_WriteCommand2(0xB8+y+i/

101、8); </p><p>  LCD_WriteCommand2(0x40+x-64+i%8);//減去64列,表示寫在右屏</p><p>  LCD_WriteData2(Dat[i]); </p><p><b>  } </b></p><p><b>  } </b></p>

102、<p><b>  } </b></p><p>  void LCD_WriteZM(char x,char y,char *Dot) //顯示16*16點陣字母</p><p><b>  { </b></p><p><b>  char i;</b></p>

103、<p>  for (i=0;i<16;i++)</p><p><b>  {</b></p><p>  if ((x+i%8)<64)</p><p><b>  {</b></p><p>  LCD_WriteCommand1(0xB8+y+i/8);</p&g

104、t;<p>  LCD_WriteCommand1(0x40+x+i%8);</p><p>  LCD_WriteData1(Dot[i]);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b&

105、gt;</p><p>  LCD_WriteCommand2(0xB8+y+i/8);</p><p>  LCD_WriteCommand2(0x40+x-64+i%8);</p><p>  LCD_WriteData2(Dot[i]);</p><p><b>  }</b></p><p&g

106、t;<b>  }</b></p><p><b>  }</b></p><p>  void DispBmp(char *buf)//顯示一幅位圖</p><p><b>  {</b></p><p><b>  int i,j;</b></

107、p><p>  for (j=0;j<8;j++)//顯示位圖</p><p><b>  {</b></p><p>  LCD_WriteCommand1(0xB8+j);</p><p>  LCD_WriteCommand1(0x40);</p><p>  for (i=0;i

108、<64;i++)</p><p>  LCD_WriteData1(buf[(j*2)*64+i]);</p><p>  LCD_WriteCommand2(0xB8+j);</p><p>  LCD_WriteCommand2(0x40);</p><p>  for (i=0;i<64;i++)</p>&

109、lt;p>  LCD_WriteData2(buf[(j*2+1)*64+i]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void DispBmpUp(char *buf) //顯示一幅位圖,上移</p><p><b&

110、gt;  { </b></p><p><b>  int i;</b></p><p>  DispBmp(buf);</p><p>  for (i=0;i<64;i++)</p><p><b>  {</b></p><p>  Delay1ms(

111、50);</p><p>  LCD_WriteCommand1(0xc0+i%64);//設置起始行,實現向上滾動</p><p>  LCD_WriteCommand2(0xc0+i%64);</p><p><b>  }</b></p><p><b>  } </b></p>

112、<p>  void DispBmpDown(char *buf) //顯示一幅位圖,下移</p><p><b>  { </b></p><p><b>  int i;</b></p><p>  DispBmp(buf);</p><p>  for (i=63;i>

113、;=0;i--) </p><p><b>  { </b></p><p>  Delay1ms(50); </p><p>  LCD_WriteCommand1(0xc0+i%64); //設置起始行,實現向下滾動 </p><p>  LCD_WriteCommand2(0xc0+i%64); </p>

114、;<p><b>  } </b></p><p><b>  } </b></p><p>  void DispBmpLeft(char *buf) //顯示一幅位圖,左移</p><p><b>  { </b></p><p>  int i,j,k

115、; </p><p>  for (k=0;k<128;k++) </p><p><b>  { </b></p><p>  for (j=0;j<8;j++) //顯示位圖 </p><p><b>  { </b></p><p>  LCD_W

116、riteCommand1(0xB8+j); </p><p>  LCD_WriteCommand1(0x40); </p><p>  for (i=0;i<64;i++) //左移</p><p><b>  { </b></p><p>  if((i+k)<128) </p>

117、;<p>  LCD_WriteData1(buf[(j*2)*64+i+k]); </p><p><b>  else </b></p><p>  LCD_WriteData1(buf[(j*2)*64+i+k-128]); </p><p><b>  } </b></p><p&

118、gt;  LCD_WriteCommand2(0xB8+j); </p><p>  LCD_WriteCommand2(0x40); </p><p>  for (i=0;i<64;i++) </p><p><b>  { </b></p><p>  if((i+k)<64) </p>

119、<p>  LCD_WriteData2(buf[(j*2+1)*64+i+k]); </p><p><b>  else </b></p><p>  LCD_WriteData2(buf[(j*2+1)*64+i+k-128]); </p><p><b>  } </b></p><

120、p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void DispBmpRight(char *buf) //顯示一幅位圖,右移 </p><p><b>  { <

121、;/b></p><p>  int i,j,k; </p><p>  for (k=0;k<128;k++) </p><p><b>  { </b></p><p>  for (j=0;j<8;j++) //顯示位圖 </p><p><b>  { &

122、lt;/b></p><p>  LCD_WriteCommand1(0xB8+j); </p><p>  LCD_WriteCommand1(0x40); </p><p>  for (i=0;i<64;i++) //右移</p><p><b>  { </b></p><

123、;p>  if((i-k)>0) </p><p>  LCD_WriteData1(buf[(j*2)*64+i-k]); </p><p><b>  else </b></p><p>  LCD_WriteData1(buf[(j*2)*64+i-k+128]); </p><p><b>

124、  } </b></p><p>  LCD_WriteCommand2(0xB8+j); </p><p>  LCD_WriteCommand2(0x40); </p><p>  for (i=0;i<64;i++) </p><p><b>  { </b></p><p&

125、gt;  if((i-k)>-64) </p><p>  LCD_WriteData2(buf[(j*2+1)*64+i-k]); </p><p><b>  else </b></p><p>  LCD_WriteData2(buf[(j*2+1)*64+i-k+128]); </p><p><b&

126、gt;  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void LCD_DispChar(char x,char y,char ch) //128*6

127、4 取值x=0-128 y=0-8</p><p><b>  {</b></p><p>  if ((ch>=0)&&(ch<=0xb))</p><p><b>  {</b></p><p>  LCD_WriteSZ(x,y,&Number[ch*16

128、]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  //液晶屏顯示溫度、電壓,壓力值</p><p>  void Display (char *DispBuf,char ShowDot,char x,char y) </p>

129、<p><b>  {</b></p><p>  char i,ch,j=-16;</p><p>  ShowDot--;</p><p>  for (i=2;i<6;i++)</p><p><b>  {</b></p><p><b> 

130、 j+=16;</b></p><p>  ch=DispBuf[i];</p><p>  switch(ch)</p><p><b>  {</b></p><p>  case 0: LCD_WriteSZ(x+j,y,led0); break;</p><p>  ca

131、se 1: LCD_WriteSZ(x+j,y,led1); break;</p><p>  case 2: LCD_WriteSZ(x+j,y,led2); break;</p><p>  case 3: LCD_WriteSZ(x+j,y,led3); break;</p><p>  case 4: LCD_WriteSZ(x+j,y,led

132、4); break;</p><p>  case 5: LCD_WriteSZ(x+j,y,led5); break;</p><p>  case 6: LCD_WriteSZ(x+j,y,led6); break;</p><p>  case 7: LCD_WriteSZ(x+j,y,led7); break;</p><p

133、>  case 8: LCD_WriteSZ(x+j,y,led8); break;</p><p>  case 9: LCD_WriteSZ(x+j,y,led9); break;</p><p>  default: LCD_WriteZM(x+j,y,led); break;</p><p><b>  }</b>&l

134、t;/p><p>  if(i==ShowDot)</p><p>  LCD_WriteSZ(x+j+8,y,Dot);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void ShowVolt(void) /

135、/顯示電壓</p><p><b>  { </b></p><p>  LCD_WriteHZ(2,3,dian); </p><p>  LCD_WriteHZ(20,3,ya1); </p><p>  LCD_WriteHZ(36,3,maohao); </p><p>  LCD_Wri

136、teZM(108,3,fu); </p><p><b>  } </b></p><p>  void ShowPress(void) //顯示壓力</p><p><b>  { </b></p><p>  LCD_WriteHZ(2,3,ya2); </p>&l

137、t;p>  LCD_WriteHZ(20,3,li); </p><p>  LCD_WriteHZ(36,3,maohao); </p><p>  LCD_WriteZM(108,3,niu); </p><p><b>  } </b></p><p>  void ShowTemp(void)

溫馨提示

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

評論

0/150

提交評論