“C8051F LCD12864程序”的版本间的差异

来自丢石头百科
(/********************************************************************************************************** File : LCD12864.c* Hardware Environment: DVK501 F320 EX* Build Environment : Silicon LABs 3 ...)
 
(文本替换 - 替换“www.waveshare.net”为“{{SERVERNAME}}”)
第11行: 第11行:
 
*
 
*
 
*                                                          (c) Copyright 2005-2010, WaveShare
 
*                                                          (c) Copyright 2005-2010, WaveShare
*                                                                     <a class="Blue_2_12px_" href="http://www.waveshare.net/" style="color: rgb(7, 66, 184);" target="_blank">http://www.waveshare.net
+
*                                                                     <a class="Blue_2_12px_" href="http://{{SERVERNAME}}/" style="color: rgb(7, 66, 184);" target="_blank">http://{{SERVERNAME}}
  
 
*                                                                         All Rights Reserved
 
*                                                                         All Rights Reserved
第44行: 第44行:
 
*
 
*
 
*                                                          (c) Copyright 2005-2010, WaveShare
 
*                                                          (c) Copyright 2005-2010, WaveShare
*                                                                     <a class="Blue_2_12px_" href="http://www.waveshare.net/" style="color: rgb(7, 66, 184);" target="_blank">http://www.waveshare.net
+
*                                                                     <a class="Blue_2_12px_" href="http://{{SERVERNAME}}/" style="color: rgb(7, 66, 184);" target="_blank">http://{{SERVERNAME}}
  
 
*                                                                         All Rights Reserved
 
*                                                                         All Rights Reserved
第87行: 第87行:
 
*
 
*
 
*                                                          (c) Copyright 2005-2010, WaveShare
 
*                                                          (c) Copyright 2005-2010, WaveShare
*                                                                     <a class="Blue_2_12px_" href="http://www.waveshare.net/" style="color: rgb(7, 66, 184);" target="_blank">http://www.waveshare.net
+
*                                                                     <a class="Blue_2_12px_" href="http://{{SERVERNAME}}/" style="color: rgb(7, 66, 184);" target="_blank">http://{{SERVERNAME}}
  
 
*                                                                         All Rights Reserved
 
*                                                                         All Rights Reserved

2019年11月19日 (二) 09:22的版本

<tbody></tbody>

/********************************************************************************************************

  • File : LCD12864.c
  • Hardware Environment: DVK501 && F320 EX
  • Build Environment : Silicon LABs 3.42.00 / uVision3 V3.80 20100913
  • Version : 
  • By : Su Wei Feng
  •                                                           (c) Copyright 2005-2010, WaveShare
  •                                                                      <a class="Blue_2_12px_" href="http://wiki.diustou.com/" style="color: rgb(7, 66, 184);" target="_blank">http://wiki.diustou.com
  •                                                                          All Rights Reserved
                                                                                                                                                                                                                  • /
  1. define _DVK501_F320_EX_
  2. include <c8051f320.h>
  3. include <../../../../library/C8051F/ws_clock.h>
  4. include <../../../../library/C8051F/ws_delay.h>
  5. include <../../../../library/C8051F/ws_lcd_st7920_port.h>

void main(void) { PCA0MD &= ~0x40; //Clear watchdog timer enable XBR1 = 0x40; clock_external();  delay_ms(100); SPI_Init(); st7920LcdInit();  showLine(2,1,lcd_buffer,"深圳微雪电子"); showLine(2,2,lcd_buffer,"WaveShare.net"); refreshLCD(lcd_buffer); while(1);  }   /********************************************************************************************************

  • File : ws_lcd_st7920_port.h
  • Hardware Environment:
  • Build Environment : Silicon LABs 3.42.00 / uVision3 V3.80 20100913
  • Version : 
  • By : Su Wei Feng
  •                                                           (c) Copyright 2005-2010, WaveShare
  •                                                                      <a class="Blue_2_12px_" href="http://wiki.diustou.com/" style="color: rgb(7, 66, 184);" target="_blank">http://wiki.diustou.com
  •                                                                          All Rights Reserved
                                                                                                                                                                                                                  • /
  1. ifndef _WS_LCD_ST7920_PORT_H
  2. define _WS_LCD_ST7920_PORT_H

void st7920LcdInit(void); void spiSendChar(uchar send_char); void sendCodeST7920(uchar Lcd_code); void sendDataST7920(uchar Lcd_data); void refreshLCD(const uchar *lcd_stack); void decToAscii(uchar* str,uint dec,uchar width); void hexToAscii(uchar* str,uint hex,uchar width); void showLine(const uchar x,const uchar y,uchar* lcd_stack,char * str,...); uchar idata lcd_buffer[64]; /*Hardware Environment:DVK501 && F320 EX*/

  1. if defined(_DVK501_F320_EX_)

sbit CS_LCD = P0^7; void SPI_Init(void) {  XBR0 |= 0x03; P0SKIP |= 0x80; P0MDOUT |= 0xC1; SPI0CFG = 0x40; SPI0CN = 0x01; SPI0CKR = 0x05; }

  1. else
  2. warning "No SPI!"
  3. endif
  4. include <../../../../library/C8051F/ws_lcd_st7920.h>
  5. endif /*_WS_LCD_ST7920_PORT_H*/

 

  • File : ws_lcd_st7920.h
  • Hardware Environment:
  • Build Environment : Silicon LABs 3.42.00 / uVision3 V3.80 20100913
  • Version : 
  • By : Su Wei Feng
  •                                                           (c) Copyright 2005-2010, WaveShare
  •                                                                      <a class="Blue_2_12px_" href="http://wiki.diustou.com/" style="color: rgb(7, 66, 184);" target="_blank">http://wiki.diustou.com
  •                                                                          All Rights Reserved
                                                                                                                                                                                                                  • /
  1. ifndef _WS_LCD_ST7920_H
  2. define _WS_LCD_ST7920_H
  3. include <string.h>
  4. include <stdarg.h>
  5. define LCD_DELAY() delay_us(75)

void st7920LcdInit(void) { sendCodeST7920(0x30); sendCodeST7920(0x0C); sendCodeST7920(0x01); sendCodeST7920(0x02); sendCodeST7920(0x80); delay_ms(2); memset(lcd_buffer,' ',sizeof(lcd_buffer)); } void spiSendChar(uchar send_char) { SPIF = 0; SPI0DAT = send_char; while (!SPIF); } /******************************** Software simulation SPI

                                                                    • /

/*void spiSendChar(uchar send_char)  { uchar i; for(i=8;i>0;i--) {  if(send_char & (1 << (i-1))) RW_SID = 1; else RW_SID = 0; delay_us(10); E_CLK = 1; delay_us(10); E_CLK = 0; delay_us(10); } }*/ void sendCodeST7920(uchar Lcd_code) { /*CS_LCD = 1; delay_us(10);*/ spiSendChar(0xF8); spiSendChar(Lcd_code & 0xF0); spiSendChar((Lcd_code << 4)); LCD_DELAY(); /*delay_us(10); CS_LCD = 0;*/ } void sendDataST7920(uchar Lcd_data) { /*CS_LCD = 1; delay_us(10);*/

spiSendChar(0xFA); spiSendChar(Lcd_data & 0xF0); spiSendChar((Lcd_data << 4)); LCD_DELAY(); /*delay_us(10); CS_LCD = 0;*/  } void refreshLCD(const uchar *lcd_stack) { uchar addr; sendCodeST7920(0x02); for(addr=0;addr<16;addr++) { sendDataST7920(*(lcd_stack + addr)); } for(addr=32;addr<48;addr++) { sendDataST7920(*(lcd_stack + addr)); } for(addr=16;addr<32;addr++) { sendDataST7920(*(lcd_stack + addr)); }

for(addr=48;addr<64;addr++) { sendDataST7920(*(lcd_stack + addr)); } } void decToAscii(uchar* str,uint dec,uchar width) { while(width) { switch(width) { case 5: {

  • str = (dec / 10000 + '0');

dec %= 10000; break; }  case 4: {

  • str = (dec / 1000 + '0');

dec %= 1000; break; } case 3: {

  • str = (dec / 100 + '0');

dec %= 100; break; } case 2: {

  • str = (dec / 10 + '0');

dec %= 10; break; } case 1: {

  • str = (dec + '0');

break; } default: *str = '0'; } width--; str++; } } void hexToAscii(uchar* str,uint hex,uchar width) { uint tmp; while(width) { switch(width) {  case 4: { tmp = (hex >> 12); if(tmp > 9) *str = tmp + ('A' - 10); else *str = tmp + '0'; break; } case 3: { tmp = (hex >> 8) & 0x000F; if(tmp > 9) *str = tmp + ('A' - 10); else *str = tmp + '0'; break; } case 2: { tmp = (hex >> 4) & 0x000F; if(tmp > 9) *str = tmp + ('A' - 10); else *str = tmp + '0'; break; } case 1: { tmp = hex & 0x000F; if(tmp > 9) *str = tmp + ('A' - 10); else *str = tmp + '0'; break; } default: *str = '0'; } width--; str++; } } void showLine(const uchar x,const uchar y,uchar *lcd_stack,char *str,...) { uchar coordinate = 16 * y + x; va_list marker; va_start(marker,str); // Initialize variable arguments.  while(*str != '\0') { if(coordinate > 64) break; if(*str == '\\') { str++; lcd_stack[coordinate] = *str; } else if(*str == '%') { str++; if (*str == 'd' || *str == 'D') { str++; decToAscii(&lcd_stack[coordinate],va_arg(marker,uchar),(*str - '0')); coordinate += (*str - '0' - 1); } else if(*str == 'c' || *str == 'C') { lcd_stack[coordinate] = va_arg(marker,uchar); } else if(*str == 'x' || *str == 'X') { str++; hexToAscii(&lcd_stack[coordinate],va_arg(marker,uchar),(*str - '0')); coordinate += (*str - '0' - 1); } } else { lcd_stack[coordinate] = *str; } str++; coordinate++; } va_end( marker ); // Reset variable arguments.  }

  1. endif /*_WS_LCD_ST7920_H*/