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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bsp_lcd.c

?? IAR 平臺ATMEL 的例程, 和說明
?? C
字號:
/*-----------------------------------------------------------------------------
*   EUROPE TECHNOLOGIES Software Support
*------------------------------------------------------------------------------
* The software is delivered "AS IS" without warranty or condition of any
* kind, either express, implied or statutory. This includes without
* limitation any warranty or condition with respect to merchantability or
* fitness for any particular purpose, or against the infringements of
* intellectual property rights of others.
*------------------------------------------------------------------------------
*
* Processor   : easyCAN
* File Name   : bsp_lcd.c
* Description : Function declarations for LCD for the BSP
* Version     : 1.01
*
*       +----- (NEW | MODify | ADD | DELete)
*       |
*  No   |   when       who                what
*-----+---+----------+------------------+--------------------------------------
* 000  NEW  06/12/99   Patrice VILCHEZ    Creation
* 001  MOD  01/04/01   Olivier MAZUYER    Clean up
* 002  MOD  23/07/01   Frederic SAMSON    - Add CGRAM Pattern definition
*                                         - Create BSP_LCDCustomCharDefinition()
*                                         - Modify BSP_LCDDisplayChar()
*                                         - Add BSP_LCDCustomCharDefinition()
*                                           to BSP_LCDInit()
* 003  ADD             Olivier MAZUYER    Add BSP_LCDConvertIntASCII function
* 004  MOD  07/08/2001 Frederic SAMSON    Corrections in BSP_LCDConvertIntASCII
*                                         to take account of 0
* 005  MOD  31/01/02   Mahmoud Mesgarzadeh   Clean Up
*----------------------------------------------------------------------------*/


/******************************************************************************
* Includes
******************************************************************************/
#include "csp.h"
#include "bsp.h"

CSP_PIO_T   *const UPIO    = ((CSP_PIO_T*)   UPIO_BASE_ADDRESS);   /* United PIO Controller

/******************************************************************************
* Function          : CSP_PIOGetStatus
* Description       : Get PIO Pin Data Status
* Inputs            : <*pio> = Pointer to PIO structure
* Functions called  : None
* Returns           : 32-bit value of pin data status
******************************************************************************/
U32_T CSP_PIOGetStatus(CSP_PIO_T *const pio)
{
   /* Return PIO State */
   return (CSP_PIO_GET_PDSR(pio));
}


/******************************************************************************
* Function          : CSP_PIOClear
* Description       : Set the PIO to low level
* Inputs            : <*pio>     = Pointer to PIO structure
*                     <pio_mask> = Configure which pins are set to low level
* Functions called  : None
* Returns           : None
******************************************************************************/
void CSP_PIOClear(CSP_PIO_T *const pio, U32_T pio_mask)
{
   /* Set PIO State */
   CSP_PIO_SET_CODR(pio, pio_mask);
}


/******************************************************************************
* Function          : CSP_PIOSet
* Description       : Set the PIO to high level
* Inputs            : <*pio>     = Pointer to PIO structure
*                     <pio_mask> = Configure which pins are set to high level
* Functions called  : None
* Returns           : None
******************************************************************************/
void CSP_PIOSet(CSP_PIO_T *const pio, U32_T pio_mask)
{
   /* Set PIO State */
   CSP_PIO_SET_SODR(pio, pio_mask);
}

/******************************************************************************
* Custom Characters Definition
******************************************************************************/
U8_T CGRAM[NUMB_OF_CHAR_CGRAM*8]=
{
   /* ARROW UP */
   /* Line 0, Line 1, Line 2, Line 3, Line 4, Line 5, Line 6, Line 7*/
   0x04, 0x0E, 0x15, 0x04, 0x04, 0x04, 0x04, 0x04,
   /* ARROW DOWN */
   0x04, 0x04, 0x04, 0x04, 0x04, 0x15, 0x0E, 0x04
};



/******************************************************************************
* Function          : LCD_Init
* Description       : Init Lcd Mode
* Input             : None
* Functions called  : PIO_EnableClock, PIO_OutputEnable, BSP_LCDWrite,
*                     BSP_LCDCustomCharDefinition
* Returns           : None
******************************************************************************/
void BSP_LCDInit(void)
{
   /* Enable the PIO clock */
   CSP_PIO_SET_ECR(UPIO, PIO);

   /* Define Lcd pio as output (Default) */
   CSP_PIO_SET_OER(UPIO, (LCD_RW | LCD_E | LCD_RS | LCD_BUS));

   /* Write Lcd sequence initialization */
   BSP_LCDWrite(LCD_FUNCTION_SET,  LCD_CONTROL);
   BSP_LCDWrite(LCD_DISPLAY_ON, LCD_CONTROL);
   BSP_LCDWrite(LCD_CLEAR_DISPLAY, LCD_CONTROL);
   BSP_LCDWrite(LCD_ENTRY_MODE, LCD_CONTROL);

   /* Define User Pattern in CGRAM */
      BSP_LCDCustomCharDefinition();
}


/******************************************************************************
* Function          : LCD_Clear
* Description       : Clear the LCD display
* Input             : None
* Functions called  : BSP_LCDWrite
* Returns           : None
******************************************************************************/
void BSP_LCDClear(void)
{
    BSP_LCDWrite(LCD_CLEAR_DISPLAY, LCD_CONTROL);
    BSP_LCDWrite(LCD_ENTRY_MODE, LCD_CONTROL);
}


/******************************************************************************
* Function          : LCD_Busy
* Description       : Wait while LCD is busy
* Input             : None
* Functions called  : PIO_OutputDisable, PIO_ClearOutputData, PIO_SetOutputData,
*                     PIO_PinDataStatus
* Returns           : None
******************************************************************************/
void BSP_LCDBusy(void)
{
  /* Local Variable */
  U32_T data = 0x80;

  /* Set LCD Bus as input */
     CSP_PIO_SET_ODR(UPIO, LCD_BUS);

  /* Clear RS */
     CSP_PIOClear(UPIO, LCD_RS);

     while( (data & 0x80) == 0x80 )
     {
     /* Set RW to 1 (Read) */
     CSP_PIOSet(UPIO, LCD_RW);


     /********************************************************************/
     /* Be careful if internal chip clock is faster than 40MHz:          */
     /* The delay between rising edge for RW and rising edge for enable  */
     /* need to be at least of 100ns (4 assembler instructions at 40MHz) */
     /********************************************************************/

     /* Enable LCD */
        CSP_PIOSet(UPIO, LCD_E);

     /* Read Data */
        data = CSP_PIOGetStatus(UPIO);

     /* Disable LCD */
        CSP_PIOClear(UPIO, LCD_E);
     }
}


/******************************************************************************
* Function          : LCD_Read
* Description       : Read data on LCD
* Input             : section (RS value)
* Functions called  : BSP_LCDWrite, BSP_LCDBusy, PIO_OutputDisable,
*                     PIO_SetOutputData, PIO_ClearOutputData, PIO_PinDataStatus
* Returns           : data
******************************************************************************/
U8_T BSP_LCDRead(U8_T row, U8_T column, U8_T section)
{
  /* Local Variable */
     U32_T pio_val;
     U8_T  lcd_parameter;

  /* Calculate LCD start address for string. */
  /* Start of first row is address 0x00, start of second row is 0x40 */
     if(row == 0)
       lcd_parameter = 0x80 + column;
     else
       lcd_parameter = 0xC0 + column;

  /* Set DDRAM address in LCD */
     BSP_LCDWrite(lcd_parameter, LCD_CONTROL);

  /* Wait Lcd Busy */
     BSP_LCDBusy();

  /* Set LCD Bus as input */
     CSP_PIO_SET_ODR(UPIO, LCD_BUS);

  /* Set RS (Control or Data section) */
     if( section == LCD_DATA)
       CSP_PIO_SET_SODR(UPIO, LCD_RS);
     else
       CSP_PIO_SET_CODR(UPIO, LCD_RS);

  /* Set RW to 1 (Read) */
     CSP_PIO_SET_SODR(UPIO, LCD_RW);

  /* Enable LCD */
     CSP_PIO_SET_SODR(UPIO, LCD_E);

  /* Read Data */
     pio_val = CSP_PIOGetStatus(UPIO);

  /* Disable LCD */
     CSP_PIO_SET_CODR(UPIO, LCD_E);

  /* Return Value */
     return(pio_val);
}


/******************************************************************************
* Function          : LCD_Write
* Description       : Write a data on LCD
* Input             : data
* Input             : section (ram or register)
* Functions called  : BSP_LCDBusy, PIO_OutputEnable, PIO_SetOutputData,
*                     PIO_ClearOutputData
* Returns           : None
******************************************************************************/
void  BSP_LCDWrite(U8_T data, U8_T section)
{
  /* Wait Lcd Not Busy */
     BSP_LCDBusy();

  /* Set LCD Bus as output */
     CSP_PIO_SET_OER(UPIO, LCD_BUS);

  /* Check Section to be Written */
     if(section == LCD_DATA)
       CSP_PIO_SET_SODR(UPIO, LCD_RS);
     else
     CSP_PIO_SET_CODR(UPIO, LCD_RS);

  /* Set LCD_RW Low Level 0 (Write) */
     CSP_PIO_SET_CODR(UPIO, LCD_RW);

  /* Set Lcd Enable */
     CSP_PIO_SET_SODR(UPIO, LCD_E);

  /* Write Data */
     CSP_PIO_SET_SODR(UPIO, data);

  /* Clear LCD_E */
     CSP_PIO_SET_CODR(UPIO, LCD_E);

  /* Set LCD_RW Hight Level 1 (Read) */
     CSP_PIO_SET_SODR(UPIO, LCD_RW);

  /* Clear the data */
     CSP_PIO_SET_CODR(UPIO, (LCD_BUS));
}


/******************************************************************************
* Function          : LCD_DisplayMessage
* Description       : Displays a message on the LCD at the given position.
* Input             : column - column number for start of message
*                     row - row number for start of message
*                     message - pointer to character string to be displayed
* Functions called  : BSP_LCDWrite
* Returns           : None
******************************************************************************/
void BSP_LCDDisplayMessage(U8_T row, U8_T column, char *message)
{
  U8_T lcd_parameter;

  /* Calculate LCD start address for string. */
  /* Start of first row is address 0x00, start of second row is 0x40 */
     if(row == 0)
       lcd_parameter = 0x80 + column;
     else
       lcd_parameter = 0xC0 + column;

  /* Set DDRAM address in LCD */
     BSP_LCDWrite(lcd_parameter, LCD_CONTROL);

  /* Write string to LCD */
     while( *message != '\0' )
     {
     /* Display the current character */
        BSP_LCDWrite((U8_T)*message, LCD_DATA);

     /* Get Next Char */
        message++;
     }
}

/******************************************************************************
* Function          : BSP_LCDDisplayChar
* Description       : Displays a 8 bit character on the LCD at the given position.
* Input             : column - column number for start of message
*                     row - row number for start of message
*                     message - Character Code in DDRAM (DDRAM data)
* Functions called  : BSP_LCDWrite
* Returns           : None
******************************************************************************/
void BSP_LCDDisplayChar(U8_T row, U8_T column, U8_T message)
{
  U8_T lcd_parameter;

   /* Calculate LCD start address for string. */
   /* Start of first row is address 0x00, start of second row is 0x40 */
   lcd_parameter = (U8_T) (row * LCD_ROW_OFFSET) ;
   lcd_parameter += column;

   /* Set Display Address */
   lcd_parameter |= LCD_DDRAM_ADDRESS ;

   /* Set DDRAM address in LCD */
   BSP_LCDWrite(lcd_parameter, LCD_CONTROL);

   /* Display the current character */
   BSP_LCDWrite(message, LCD_DATA);

}



/******************************************************************************
* Function          : BSP_LCDCustomCharDefinition
* Description       : Init CGRAM data with User Patterns
* Input             : None
* Functions called  : BSP_LCDWrite
* Returns           : None
******************************************************************************/
void BSP_LCDCustomCharDefinition(void)
{
   U8_T lcd_parameter;
   U8_T i_u8;

   /* Set Display Address */
   lcd_parameter = CG_RAM_ADDRESS ;

   /* Set CGRAM address in LCD */
   BSP_LCDWrite(lcd_parameter, LCD_CONTROL);

   /* Write string to CGRAM */
   for (i_u8=0; i_u8 < (NUMB_OF_CHAR_CGRAM*8); i_u8++)
   {
      /* Display the current character */
      BSP_LCDWrite(CGRAM[i_u8], LCD_DATA);
   }
}


/******************************************************************************
* Function          : BSP_LCDConvertIntASCII
* Description       : Convert Integer into a ASCII chain which can be display
* Input             : None
* Functions called  : None
* Returns           : None
******************************************************************************/
void BSP_LCDConvertIntASCII(char *string, U32_T data_u32)
{
   /* Local variable */
   char buff[16] ;
   char offset = 0;
   char length = 0;

   /* Loop to convert integer into a sring coded in ASCII */
   do
   {
      /* Convert the last digit of integer freq to ASCII value */
      buff[length++] = (char)((data_u32 %10) + '0');
   } while ((data_u32/=10) > 0);


   /* Loop to replace the string in order */
   do
   {
      length-- ;
      /* The first character of string receive the last character of buffer */
      string[offset++] =buff[length] ;
   } while(length>0);

   string[offset] = '\0';
}

/******************************************************************************
* Function          : BSP_LCDConvertHexASCII
* Description       : Convert Hexadecimal integer into a ASCII chain which can be display
* Input             : None
* Functions called  : None
* Returns           : None
******************************************************************************/
void BSP_LCDConvertHexASCII(char *string, U32_T data_u32)
{
   /* Local variable */
   char buff[16] ;
   char offset = 0;
   char length = 0;
   U32_T val   = 0 ;

   /* Loop to convert integer into a sring coded in ASCII */
   do
   {
      val = (data_u32 %16) ;
      /* Convert the last digit of integer freq to ASCII value */
      if (val>9)
      {
         buff[length++] =(char)('A' + (val-10)) ;
      }
      else
      {
         buff[length++] =(char)( val + '0');
      }
   } while ((data_u32/=16) > 0);


   /* Loop to replace the string in order */
   do
   {
      length-- ;
      /* The first character of string receive the last character of buffer */
      string[offset++] = buff[length] ;
   } while(length>0);

   string[offset] = '\0';
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
黄网站免费久久| 欧美日韩不卡一区| 26uuu精品一区二区在线观看| 久久久久久久久蜜桃| 麻豆精品视频在线观看免费 | 26uuu成人网一区二区三区| 三级亚洲高清视频| 欧洲另类一二三四区| 日本一区二区在线不卡| 蜜臀av国产精品久久久久| 欧美老年两性高潮| 日韩二区三区四区| 精品人在线二区三区| 亚洲欧美日韩在线| 91在线免费播放| 午夜伦理一区二区| 国产午夜精品久久久久久免费视 | 欧美日韩精品免费观看视频| 亚洲老司机在线| 日本黄色一区二区| 亚洲超丰满肉感bbw| 欧美日韩亚州综合| 蜜臀精品久久久久久蜜臀| www国产精品av| 国产精品亚洲综合一区在线观看| 国产精品福利一区二区三区| 95精品视频在线| 国产欧美日韩视频在线观看| 成人免费视频免费观看| 日韩久久一区二区| 日韩午夜激情电影| 91在线看国产| 国产99久久久久久免费看农村| 最新日韩在线视频| 欧美日韩免费不卡视频一区二区三区 | 欧美国产视频在线| 精品动漫一区二区三区在线观看| bt7086福利一区国产| 激情综合色综合久久| 天堂一区二区在线| 日韩三级视频在线观看| 色婷婷久久久亚洲一区二区三区| 一区二区三区国产精华| 久久美女高清视频| 日韩午夜av电影| 欧美在线播放高清精品| www.亚洲激情.com| 国产成人av网站| 日韩二区三区四区| 亚洲午夜在线视频| 国产婷婷精品av在线| 日韩精品一区二区三区四区| 宅男噜噜噜66一区二区66| 国产成人在线观看| 蜜桃在线一区二区三区| 美女免费视频一区| 国产成人免费高清| 成人性生交大片免费看视频在线| 五月天国产精品| 欧美白人最猛性xxxxx69交| 久久日一线二线三线suv| 91精品国产日韩91久久久久久| 成人丝袜高跟foot| 国产精品中文字幕一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 中文字幕欧美一区| 国产无遮挡一区二区三区毛片日本| 欧美欧美欧美欧美| 97精品久久久久中文字幕| 成人av免费在线播放| 粉嫩13p一区二区三区| 91老师国产黑色丝袜在线| 欧美写真视频网站| 欧美日韩第一区日日骚| 色乱码一区二区三区88| 91麻豆国产福利在线观看| 欧美色图一区二区三区| 欧美成人乱码一区二区三区| 中文字幕一区二区三区在线观看| 欧美一个色资源| 精品国产乱码久久久久久老虎 | 国产综合久久久久久鬼色 | 一区二区三区蜜桃网| 亚洲成人777| 激情五月激情综合网| 成人黄页在线观看| 色综合久久久久| 久久亚洲春色中文字幕久久久| 综合自拍亚洲综合图不卡区| 亚洲成人综合网站| 日本成人在线网站| 在线观看精品一区| 国产精品看片你懂得| 国产精品每日更新| 水蜜桃久久夜色精品一区的特点| 一本一道综合狠狠老| 欧美一区永久视频免费观看| 一区二区中文字幕在线| 国产精品一品视频| 欧美日韩在线一区二区| 欧美在线观看禁18| 久久婷婷成人综合色| 亚洲与欧洲av电影| 成人免费视频国产在线观看| 欧美老肥妇做.爰bbww| 精品对白一区国产伦| 日本vs亚洲vs韩国一区三区二区| 懂色av一区二区夜夜嗨| 日韩你懂的在线播放| 亚洲成人tv网| 成人精品一区二区三区中文字幕| 日韩片之四级片| 一区二区三区在线视频免费| 国产麻豆视频一区二区| 日韩写真欧美这视频| 亚洲成人综合在线| 91精品婷婷国产综合久久性色| 国产精品欧美极品| 懂色av一区二区三区免费观看| 久久综合一区二区| 国产成人免费视频精品含羞草妖精| 欧美一区二区三区电影| 亚洲成人av在线电影| 欧美一卡2卡三卡4卡5免费| 亚洲成a人片在线不卡一二三区| 一本久久综合亚洲鲁鲁五月天 | 欧美日本一道本在线视频| 日本一区二区在线不卡| 菠萝蜜视频在线观看一区| 国产精品麻豆久久久| 日本韩国欧美三级| 丝袜美腿亚洲一区| 国产午夜精品久久久久久久| 国产九色精品成人porny| 一区二区三区不卡视频在线观看| 3atv一区二区三区| 色综合天天综合狠狠| 国产成人综合网站| 国产精品456| 免费人成网站在线观看欧美高清| 午夜在线成人av| 亚洲综合激情网| 国产精品久久久久9999吃药| 国产性天天综合网| 国产精品免费丝袜| 亚洲在线观看免费| 日本中文字幕一区二区有限公司| 性做久久久久久免费观看| 日韩美一区二区三区| 夜夜嗨av一区二区三区网页| 精品美女一区二区| 91浏览器在线视频| jizz一区二区| 国产九色sp调教91| 精品成人在线观看| 日韩欧美国产1| 久久久久99精品一区| 国产视频一区二区在线观看| 国产精品免费视频网站| 亚洲综合免费观看高清完整版 | 欧美日韩卡一卡二| 欧美福利一区二区| 日韩欧美一区在线| 国产片一区二区| 一区二区理论电影在线观看| 石原莉奈在线亚洲二区| 精品综合免费视频观看| 不卡电影一区二区三区| 精品视频1区2区3区| 久久精品一区蜜桃臀影院| 亚洲欧美国产高清| 国产美女精品在线| 欧美视频一区二区三区四区| 精品国产制服丝袜高跟| 亚洲一区二区免费视频| 国产精品一区一区| 91精品午夜视频| 亚洲福利一区二区三区| 99久久er热在这里只有精品15 | 国产精品午夜久久| 精品88久久久久88久久久| 4438x成人网最大色成网站| 欧美日韩一区二区三区在线| 日韩欧美高清一区| 国产精品午夜春色av| 国模娜娜一区二区三区| 欧美大尺度电影在线| 精品精品欲导航| 欧美高清在线视频| 亚洲电影视频在线| 精品一区在线看| 国产精品资源在线看| 国内精品国产成人国产三级粉色 | 欧美亚男人的天堂| 久久精品免费在线观看| 国产麻豆91精品| 欧美大肚乱孕交hd孕妇| 日韩黄色在线观看| 欧美电影免费观看高清完整版在 | 久久综合九色综合欧美亚洲|