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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  單片機(jī)課程設(shè)計報告</b></p><p>  ——液晶點(diǎn)陣顯示屏程序設(shè)計</p><p>  姓 名: </p><p>  專業(yè)班級: 通信1002 </p><p>  學(xué) 號:

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

3、的設(shè)計方法;</p><p>  3、熟練掌握C51系統(tǒng)仿真開發(fā)系統(tǒng)的應(yīng)用;</p><p>  4、加強(qiáng)單片機(jī)的綜合運(yùn)用能力、提高單片機(jī)的軟件編程和調(diào)試能力,為以后的學(xué)習(xí)和開發(fā)工作打下良好基礎(chǔ)。</p><p><b>  二、設(shè)計要求</b></p><p>  1、從下到上滾動顯示:“江蘇大學(xué)計算機(jī)學(xué)院”然后交替顯

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

5、擬量采樣值顯示(溫度、壓力、電位) 。</p><p><b>  三、設(shè)計方案</b></p><p>  3.1 設(shè)計原理及思路</p><p>  實驗中用到的OCM12864液晶顯示模塊是128×64點(diǎn)陣型液晶顯示模塊,可顯示各種字符及圖形,可與CPU直接接口,具有8位標(biāo)準(zhǔn)數(shù)據(jù)總線、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>  主函數(shù)模塊main.c;</p><p>  模數(shù)轉(zhuǎn)換模塊ADC.c;</p><p>  液晶顯示模塊KS0108.c;</p><p>  時鐘模塊I2C.c。</p>&l

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

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

10、數(shù)模塊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) //系統(tǒng)始終初始化</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) //端口初始化函數(shù)</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中斷服務(wù)函數(shù)</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的函數(shù)</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的函數(shù)</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; //關(guān)看門狗</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; //使能片內(nèi)參考電壓</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>  模數(shù)轉(zhuǎn)換模塊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轉(zhuǎn)換模塊初始化<

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) //讀取片內(nèi)溫度傳感器的轉(zhuǎn)換結(jié)果,并將轉(zhuǎn)換結(jié)果返回</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)//發(fā)送一個字節(jié)給7279的函數(shù)</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; //待發(fā)數(shù)據(jù)左移 </p><p>  Delay1us(8); //延時8μ</p><p>  Clr7279CLK; //置CLK低電平 </p><p>  Delay1us(8)

57、; //延時50μ</p><p><b>  }</b></p><p>  Clr7279DAT; //發(fā)送完畢,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端置為高電平,輸入狀態(tài)</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; //接收數(shù)據(jù)左移1位</p><p>  if (HD7279_DAT)</p><p>  ch+=1; //接收1位數(shù)據(jù)</p><p>  Clr7279CLK; //置CLK低電平</p><p>  Delay1us(8);

61、 //延時8μ</p><p><b>  }</b></p><p>  Clr7279DAT; //接收完畢,DATA端重新置成低電平(輸出狀態(tài))</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); //發(fā)讀鍵盤指令 </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[]={};//江蘇大學(xué)計算機(jī)學(xué)院//</p><p>  char code screen1[]={};//2010年單

68、片機(jī)課程設(shè)計//</p><p>  char code screen2[]={};//液晶點(diǎn)陣顯示屏程序設(shè)計//</p><p>  char code screen3[]={};//姓名、班級、學(xué)號//</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>  //數(shù)字“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發(fā)送控制命令</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發(fā)送控制命令</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發(fā)送數(shù)據(jù)命令</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發(fā)送數(shù)據(jù)命令</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點(diǎn)陣漢字</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點(diǎn)陣數(shù)字

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代表列, 一個數(shù)字占8列,顯示在左半屏</p><p><b>  { </b></p><p>  LCD_WriteCommand1(0xB8+y+i/8); //設(shè)置頁地址 y表示頁</p><p>  LCD_WriteCommand1(0x40+x+i%8); //設(shè)置列地址 x表示列,一個數(shù)字占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點(diǎn)陣字母</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);//設(shè)置起始行,實現(xiàn)向上滾動</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); //設(shè)置起始行,實現(xiàn)向下滾動 </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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論