亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lcd_3200.c

?? 增強(qiáng)型單片機(jī)UPSD33XX系列芯片做音頻發(fā)生器例程。內(nèi)含KEIL源碼和PLD源碼。
?? C
字號:
 /* `=========================================================================`

                    ***************************************
                  ****   *                           *   ****
                                Title: LCD_3200
                             File name: lcd_3200.c
                           Project name: DK3200 demo
                  ***                                    ****
                    ****************** * ******************
                  ****                                   ****
                              Author: Petr PFEIFER
                           MPG Prague, Czech Republic
                  ****   *                           *   ****
                    ***************************************

                 $Version:  0.027   Build: 2004-01-28,10:59:02




                                  Description:
                                  ============

                               Universal Version

                        *** LCD IO with copy buffer ***

                          USB/IAP project source file




                                     Notes:
                                     ======
                      Version 0.020 - Universal structure
                  Version 0.019 - fixed bug in PrinfLC \n part




                           ..........................
                          .                          .
                          .      ******************  .
                          .     **PPPPPPPPPPPPPPPP   .
                          .     *PPPP*******PP****   .
                          .    **PPP********PP***    .
                          .    ***PPP******PP****    .
                          .   *****PPP****PP****     .
                          .   *****PPP****PP****     .
                          .  PPPPPPPP****PP****  (R) .
                          .                          .
                           ..........................


                                  =-=-=-=-=-=
                           =-=-=-=-=-=-=-=-=-=-=-=-=
                =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

                       Copyright 2003 ST Microelectronics

             This code/file is provided as is and has no warranty,
     implied or otherwise.  You are free to use/modify any of the provided
    code at your own risk in your applications with the expressed limitation
        of liability (see below) so long as your product using the code
                 contains at least one uPSD products (device).

                            LIMITATION OF LIABILITY:
                            ========================
              NEITHER STMicroelectronics NOR ITS VENDORS OR AGENTS
      SHALL BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, LOSS OF DATA,
       INTERRUPTION OF BUSINESS, NOR FOR INDIRECT, SPECIAL, INCIDENTAL OR
       CONSEQUENTIAL DAMAGES OF ANY KIND WHETHER UNDER THIS AGREEMENT OR
         OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

                =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                           =-=-=-=-=-=-=-=-=-=-=-=-=
                                  =-=-=-=-=-=

                   For current information on uPSD products,
                please consult our pages on the World Wide Web:

                                 www.st.com/psm

                            - - - - - - - - - - - -

                     STMicroelectronics GROUP OF COMPANIES
    Australia - Brazil - China - Czech Republic - Finland - France - Germany
   Hong Kong - India - Italy - Japan - Malaysia - Malta - Morocco - Singapore
             Spain - Sweden - Switzerland - United Kingdom - U.S.A.

                               http://www.st.com


 `========================================================================` */

#pragma NOAREGS

#include "upsd3200.h"
#include "lcd_3200.h"
//#include "app_intr.h"



// LCD Display copy buffer

xdata DISPLAY LCD_reg _at_ LCD_BASE_ADDR;    // XDATA address for display

#ifdef LCD_BCBuffer
data char LCD_buffer[LCD_ColNumBuf*LCD_RowNum];                    // IAP&D Memory
#endif

data unsigned char LCDDisp_XPos,LCDDisp_YPos;// Actual cursor position

static data uchar Cursor_LCD;

// User design CG data
static uchar code cg_data[] =
 {

  0x1F,
  0x1F,
  0x1F,
  0x1F,
  0x1F,
  0x1F,
  0x1F,
  0x1F,

  -1                                         // Terminator, end of data char
 }
  ;





void LCD_delay_ms(int cnt)
/******************************************************************************
 Function   : void delay_xms()
 Parameters : (int cnt)
 Description: Delay
 ******************************************************************************/
 {

  int w;
  while (cnt>0)
   {
    for (w = 0; w<600; w++);                 // 5T/cycle(.33us) =>1.67
    cnt--;
   }
 }





void BusyCheck(void)
/******************************************************************************
 Function   : void BusyCheck()
 Parameters : (void)
 Description: Tests LCD Busy flag, waits until BF is cleared
 ******************************************************************************/
 {
  while (LCD_reg.LCD_CMD_RD & BF_BIT);
 }



void SetUserCG(unsigned char *data_ptr)
/******************************************************************************
 Function   : void SetUserCG()
 Parameters : (unsigned char *data_ptr)
 Description: Sets user character set / initialize user character pattern
 ******************************************************************************/
 {
  BusyCheck();                               // Check display ability to comm.
  LCD_reg.LCD_CMD_WR = CG_ADDR;              // | (8*0);
                                         //start custom char.set from character #0
  while (*data_ptr != -1)
   {
    BusyCheck();
    LCD_reg.LCD_RAM_WR = *data_ptr++;
   }
 }





static char htoa_lo(byte) uchar byte;
/******************************************************************************
 Function   : static char htoa_lo()
 Parameters : (byte)
 Description: converts low nibble of unsigned byte
 ******************************************************************************/
 {
  byte = byte & 0x0F;                        // keep lower nibble only
  if (byte <= 0x09)
  return(byte + 0x30);
  else
  return (byte + 0x37);
 }


static char htoa_hi(byte) uchar byte;
/******************************************************************************
 Function   : static char htoa_hi()
 Parameters : (byte)
 Description: converts hi nibble of unsigned byte
 ******************************************************************************/
 {
  byte = byte & 0xF0;                        // keep upper nibble only
  byte = byte >> 4;
  if (byte <= 0x09)
  return(byte + 0x30);
  else
  return (byte + 0x37);
 }



void initLCD(void)
/******************************************************************************
 Function   : void initLCD()
 Parameters : (void)
 Description: initialize LCD module per specs
 ******************************************************************************/
 {
  #ifdef LCD_BCBuffer
   int i;
  #endif

  LCD_delay_ms(15);
  LCD_reg.LCD_CMD_WR = 0x30;
  LCD_delay_ms(4);
  LCD_reg.LCD_CMD_WR = 0x30;
  LCD_delay_ms(1);
  LCD_reg.LCD_CMD_WR = 0x30;
  LCD_delay_ms(1);

  LCD_reg.LCD_CMD_WR = 0x38;                 // 8 bits, 2 lines, 5 x 7 font
  LCD_delay_ms(4);                           // delay 4 ms
  BusyCheck();
  LCD_reg.LCD_CMD_WR = 0x0C;                 //Display on, Cursor off, Non-Blink
  BusyCheck();
  LCD_reg.LCD_CMD_WR = 0x01;                 //Clear display
  BusyCheck();
  LCD_reg.LCD_CMD_WR = 0x02;                 //Cursor home
  BusyCheck();
  LCD_reg.LCD_CMD_WR = 0x06;                 //Cursor inc, no shift/cursor move

  SetUserCG(&cg_data);                       //set user desfined character

  Cursor_LCD = DD_ADDR;                      //Display from 1st row, 1st column
  BusyCheck();
  LCD_reg.LCD_CMD_WR = Cursor_LCD;

  #ifdef LCD_BCBuffer
                                             // Initialize mirror buffer
  for (i=0;i<LCD_ColNumBuf*LCD_RowNum;i++)   // Clear IAP&D display memory
   {
    LCD_buffer[i] = ' ';
   }
                                           //add user character at the end of line
  LCD_buffer[LCD_ColNum+0] = 13;
  LCD_buffer[LCD_ColNum+1] = 10;          //new line indicator for WinApp terminal

  LCD_buffer[LCD_ColNumBuf+LCD_ColNum+0] = 0;
  LCD_buffer[LCD_ColNumBuf+LCD_ColNum+1] = 0;// END OF STRING
  #endif

  LCDDisp_XPos = 0;                          // Cursor position at home
  LCDDisp_YPos = 0;

//please see LCD_3200.H for more details about the buffer

 }




void putch_LCD(unsigned char ch)
/******************************************************************************
 Function   : void putch_LCD()
 Parameters : (unsigned char ch)
 Description: basic char out function
 ******************************************************************************/
 {
  BusyCheck();
  LCD_reg.LCD_RAM_WR = ch;

  #ifdef LCD_BCBuffer
  if (LCDDisp_XPos<LCD_ColNum)
   {
    LCD_buffer[LCDDisp_YPos*LCD_ColNumBuf+LCDDisp_XPos] = ch;
   }
  #endif

  if (LCDDisp_XPos <= LCD_ColNum)
   {
    LCDDisp_XPos++;
   }

 }





void printfLCD(uchar *chr_ptr, ...)
/******************************************************************************
 Function   : void printfLCD()
 Parameters : (uchar *chr_ptr, ...)
 Description: works as prinf, but for LCD
 ******************************************************************************/
 {

  unsigned char *var_ptr=&chr_ptr+1;
  unsigned char var;
  unsigned int i;

  while (*chr_ptr != NULL)
   {
    BusyCheck();
    if (*chr_ptr == '\r')
     {
      chr_ptr++;
      Cursor_LCD &= 0xC0;                   //return to position 0 at current line
      LCD_reg.LCD_CMD_WR = Cursor_LCD;

      LCDDisp_XPos = 0;
     }
    else
    if (*chr_ptr == '\n')
     {
      chr_ptr++;
      Cursor_LCD ^= 0x40;                    //goto next line
      Cursor_LCD &= 0xC0;                    //return to position 0
      LCD_reg.LCD_CMD_WR = Cursor_LCD;

      LCDDisp_XPos = 0;
      LCDDisp_YPos = LCDDisp_YPos < LCD_RowNum-1 ? LCDDisp_YPos+1:0;
     }
    else
    if (*chr_ptr == '%')
     {
      chr_ptr++;
      if (*chr_ptr == 'd')                   // display 1 digit decimal 0-9
       {
        chr_ptr++;
        var = *var_ptr++;
        putch_LCD((var & 0x0F)+'0');         // Out character to LCD Display RAM
       }
      else
      if (*chr_ptr == 'x')                   // display 1 byte hex 00-FF
       {
        chr_ptr++;
        var = *var_ptr++;
        putch_LCD(htoa_hi(var));             // Out character to LCD Display RAM
        putch_LCD(htoa_lo(var));             // Out character to LCD Display RAM
       }
      else
      if (*chr_ptr == 'w')                   // display 1 word hex 0000-FFFF
       {
        chr_ptr++;
        var = *var_ptr++;
        putch_LCD(htoa_hi(var));             // Out character to LCD Display RAM
        putch_LCD(htoa_lo(var));             // Out character to LCD Display RAM
        var = *var_ptr++;
        putch_LCD(htoa_hi(var));             // Out character to LCD Display RAM
        putch_LCD(htoa_lo(var));             // Out character to LCD Display RAM
       }
      else
      if (*chr_ptr == 'c')                   // Display 1 character
       {
        chr_ptr++;
        var = *var_ptr++;
        putch_LCD(var);                      // Out character to LCD Display RAM
       }
      else
      if (*chr_ptr == 'B')                   // display 1 byte
       {
        chr_ptr++;
        var = *var_ptr++;
        putch_LCD(48+(var/100));             // Out character to LCD Display RAM
        var = var % 100;
        putch_LCD(48+(var/10));              // Out character to LCD Display RAM
        var = var % 10;
        putch_LCD(48+var);                   // Out character to LCD Display RAM
       }
      else
      if (*chr_ptr == 'W')                   // display 1 word
       {
        chr_ptr++;
        i = (*var_ptr++);
        i = i*256;
        i = i+(*var_ptr++);
        putch_LCD(48+(i/10000));             // Out character to LCD Display RAM
        i = i % 10000;
        putch_LCD(48+(i/1000));              // Out character to LCD Display RAM
        i = i % 1000;
        putch_LCD(48+(i/100));               // Out character to LCD Display RAM
        i = i % 100;
        putch_LCD(48+(i/10));                // Out character to LCD Display RAM
        i = i % 10;
        putch_LCD(48+i);                     // Out character to LCD Display RAM
       }


      else
       {
        putch_LCD(*chr_ptr++);               // Out character to LCD Display RAM
       }

     }
    else
     {
      putch_LCD(*chr_ptr++);                 // Out character to LCD Display RAM
     }
   }
 }



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一二三区不卡| 91免费版pro下载短视频| 91精品国产麻豆| 美女久久久精品| 久久久久久久av麻豆果冻| 国产成人午夜精品5599| 欧美国产综合一区二区| 91小视频免费观看| 亚洲777理论| 久久中文字幕电影| 97国产一区二区| 午夜久久久久久久久久一区二区| 欧美一区二区啪啪| 国产精品1024| 一区二区三区成人| 日韩欧美中文一区二区| 成人性生交大片免费看中文| 亚洲人被黑人高潮完整版| 欧美丰满一区二区免费视频| 久久国产夜色精品鲁鲁99| 国产精品久久久久久久久晋中 | 久久国产精品无码网站| 国产亚洲一本大道中文在线| 日本韩国一区二区| 美腿丝袜在线亚洲一区| 中文在线一区二区| 欧美美女直播网站| 国产成人av一区| 午夜成人在线视频| 国产精品嫩草影院av蜜臀| 欧美精品一级二级| 成人精品国产福利| 蜜臀av一区二区在线免费观看| 中文成人综合网| 日韩午夜av电影| 91久久精品日日躁夜夜躁欧美| 狠狠色伊人亚洲综合成人| 亚洲一区二区精品3399| 久久精品男人的天堂| 欧美日韩一卡二卡三卡| 成人丝袜18视频在线观看| 首页综合国产亚洲丝袜| 国产精品久久久久久久久晋中| 欧美一区二区视频在线观看2022| 成人动漫视频在线| 久久av资源站| 日韩电影免费在线看| 亚洲精品va在线观看| 国产蜜臀av在线一区二区三区| 在线综合亚洲欧美在线视频| 91麻豆国产福利在线观看| 国产成人在线看| 久久机这里只有精品| 天天综合色天天综合色h| 亚洲品质自拍视频| 日本一区二区三区在线不卡| 日韩欧美国产综合| 制服丝袜中文字幕亚洲| 欧美亚洲高清一区二区三区不卡| av亚洲精华国产精华精华| 国产乱码字幕精品高清av| 久久国产夜色精品鲁鲁99| 日韩成人精品视频| 国产成人av在线影院| 激情图区综合网| 免费观看在线综合| 美女网站在线免费欧美精品| 亚洲成人av电影| 亚洲成a人片在线观看中文| 亚洲女厕所小便bbb| 亚洲视频1区2区| 中文字幕一区二区视频| 国产精品高潮久久久久无| 中文字幕在线观看一区| 亚洲欧美在线另类| 亚洲色图丝袜美腿| 亚洲一区二区精品3399| 午夜视频在线观看一区二区三区| 亚洲v精品v日韩v欧美v专区| 亚洲一区二区三区免费视频| 亚洲成人av中文| 日韩精品三区四区| 久久精品国产**网站演员| 国产高清不卡二三区| 成人激情免费电影网址| 99国产精品久| 欧美日韩免费一区二区三区 | 免费在线观看精品| 蜜臀久久99精品久久久久宅男| 蜜桃av一区二区在线观看| 久久99国产精品久久99果冻传媒| 久久aⅴ国产欧美74aaa| 国产精品一区二区x88av| 99视频有精品| 欧美亚洲动漫精品| 精品电影一区二区三区| 国产欧美综合在线观看第十页 | 精品捆绑美女sm三区| 国产无一区二区| 亚洲天堂久久久久久久| 亚洲超碰精品一区二区| 激情五月播播久久久精品| 北条麻妃国产九九精品视频| 欧美在线观看一区| 精品国产区一区| 中文字幕一区在线观看视频| 亚洲电影在线免费观看| 国模少妇一区二区三区| av一区二区久久| 日韩免费一区二区| 国产精品久久影院| 日本网站在线观看一区二区三区| 国产精品一二三| 色国产综合视频| 精品国产区一区| 亚洲一区免费观看| 国产成人精品亚洲午夜麻豆| 欧美亚洲自拍偷拍| 国产色综合久久| 亚洲地区一二三色| 成人毛片在线观看| 91精品国产综合久久香蕉麻豆| 欧美激情在线一区二区三区| 午夜影视日本亚洲欧洲精品| 高清在线观看日韩| 制服丝袜av成人在线看| 亚洲欧洲精品一区二区三区不卡| 青椒成人免费视频| 91久久免费观看| 久久久久久久久久电影| 日韩不卡在线观看日韩不卡视频| av电影天堂一区二区在线观看| 日韩午夜精品视频| 亚洲国产视频直播| 99热国产精品| 国产日韩欧美一区二区三区乱码| 午夜精品免费在线| 色综合久久综合| 欧美国产一区二区在线观看| 免费欧美高清视频| 欧美三级日韩在线| 中文字幕亚洲在| 国产高清不卡一区二区| 精品国产免费一区二区三区香蕉| 亚洲成人激情社区| 一本大道久久a久久精二百 | 日韩一区二区三区免费看| 亚洲综合激情网| 91婷婷韩国欧美一区二区| 国产欧美综合在线观看第十页| 久久99精品久久久久久国产越南| 欧美男人的天堂一二区| 亚洲在线一区二区三区| 91影视在线播放| 最新日韩在线视频| www.亚洲激情.com| 国产精品乱人伦| 成人黄页毛片网站| 欧美精彩视频一区二区三区| 国产麻豆成人精品| 国产亚洲欧洲一区高清在线观看| 麻豆精品一区二区综合av| 91精品国产欧美日韩| 青青草视频一区| 欧美成人一区二区三区在线观看| 奇米色777欧美一区二区| 在线不卡的av| 秋霞国产午夜精品免费视频| 日韩欧美激情在线| 国产乱码精品1区2区3区| 国产亚洲欧美一区在线观看| 国产成人8x视频一区二区| 日本一区二区动态图| 成人毛片视频在线观看| 成人欧美一区二区三区黑人麻豆| 99久久婷婷国产精品综合| 中文字幕在线一区| 91福利社在线观看| 天天av天天翘天天综合网| 欧美一区二区在线播放| 韩国三级在线一区| 欧美激情在线一区二区| 91一区在线观看| 午夜精品久久久久久久99水蜜桃| 欧美一区二区女人| 国产很黄免费观看久久| 国产精品情趣视频| 色综合久久综合网97色综合| 日韩—二三区免费观看av| 亚洲精品一区二区三区精华液| 国产成人免费视频网站高清观看视频| 中文字幕乱码日本亚洲一区二区| 99r国产精品| 日本欧美肥老太交大片| 国产日本欧洲亚洲| 91黄视频在线| 韩国三级电影一区二区| 一区二区三区欧美视频| 日韩免费视频一区| 色美美综合视频|