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

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

?? portlcd.c

?? 這是LPC2368的LCD範例~~~提供給大家使用~~~請大家用用看
?? C
字號:
/*****************************************************************************
 *   portlcd.c:  4-bit port LCD C file for NXP LPC23xx/34xx Family 
 *   Microprocessors
 *
 *   Copyright(C) 2006, NXP Semiconductor
 *   All rights reserved.
 *
 *   History
 *   2006.07.12  ver 1.00    Prelimnary version, first Release
 *
*****************************************************************************/
#include "LPC23xx.H"                        /* LPC23xx/24xx definitions */
#include "type.h"
#include "irq.h"
#include "portlcd.h"

#define USE_FIO		0

#if USE_FIO
#define IO1DIR    FIO1DIR
#define IO1SET    FIO1SET
#define IO1CLR    FIO1CLR
#define IO1PIN    FIO1PIN
#else
#define IO1DIR    IODIR1
#define IO1SET    IOSET1
#define IO1CLR    IOCLR1
#define IO1PIN    IOPIN1
#endif

/* Please note, on old MCB2300 board, the LCD_E bit is p1.30, on the new board
it's p1.31, please check the schematic carefully, and change LCD_CTRL and LCD_E 
accordingly if you have a different board. */ 
/* LCD IO definitions */
//#define LCD_E     0x80000000            /* Enable control pin                */
#define LCD_E     0x80000000            /* Enable control pin                */
#define LCD_RW    0x20000000            /* Read/Write control pin            */
#define LCD_RS    0x10000000            /* Data/Instruction control          */
//#define LCD_CTRL  0xB0000000            /* Control lines mask                */
#define LCD_CTRL  0xB0000000            /* Control lines mask                */
#define LCD_DATA  0x0F000000            /* Data lines mask                   */

/* Local variables */
static DWORD lcd_ptr;

/* 8 user defined characters to be loaded into CGRAM (used for bargraph) */
static const BYTE UserFont[8][8] = {
  { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
  { 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 },
  { 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18 },
  { 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C },
  { 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E },
  { 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F },
  { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
  { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }
};

/* Local Function Prototypes */
void delay( DWORD cnt );
void lcd_write( DWORD c );
void lcd_write_4bit( DWORD c );
DWORD lcd_read_stat( void );
void lcd_write_cmd( DWORD c );
void lcd_write_data( DWORD d );
void lcd_wait_busy( void );

/******************************************************************************
** Function name:		delay
**
** Descriptions:		
**
** parameters:			delay counter
** Returned value:		None
** 
******************************************************************************/
void delay (DWORD cnt) 
{
   /* Delay in while loop cycles. */
   while (cnt--);
}

/******************************************************************************
** Function name:		lcd_write_4bit
**
** Descriptions:		
**
** parameters:			four bits to write
** Returned value:		None
** 
******************************************************************************/
void lcd_write_4bit( DWORD c ) 
{
   /* Write a 4-bit command to LCD controller. */
   IO1DIR |= LCD_DATA | LCD_CTRL;
   IO1CLR  = LCD_RW   | LCD_DATA;
   IO1SET  = (c & 0xF) << 24;
   IO1SET  = LCD_E;
   delay (10);
   IO1CLR  = LCD_E;
   delay (10);
   return;
}

/******************************************************************************
** Function name:		lcd_write
**
** Descriptions:		
**
** parameters:			word to write
** Returned value:		None
** 
******************************************************************************/
void lcd_write( DWORD c ) 
{
   /* Write data/command to LCD controller. */
   lcd_write_4bit (c >> 4);
   lcd_write_4bit (c);
   return;
}

/******************************************************************************
** Function name:		lcd_read_stat
**
** Descriptions:		
**
** parameters:			None
** Returned value:		status
** 
******************************************************************************/
DWORD lcd_read_stat( void ) 
{
   /* Read status of LCD controller (ST7066) */
   DWORD stat;

   IO1DIR &= ~LCD_DATA;
   IO1CLR  = LCD_RS;
   IO1SET  = LCD_RW;
   delay (10);
   IO1SET  = LCD_E;
   delay (10);
   stat    = (IO1PIN >> 20) & 0xF0;
   IO1CLR  = LCD_E;
   delay (10);
   IO1SET  = LCD_E;
   delay (10);
   stat   |= (IO1PIN >> 24) & 0xF;
   IO1CLR  = LCD_E;
   return (stat);
}

/******************************************************************************
** Function name:		lcd_wait_busy
**
** Descriptions:		
**
** parameters:			None
** Returned value:		None
** 
******************************************************************************/
void lcd_wait_busy( void ) 
{
   /* Wait until LCD controller (ST7066) is busy. */
   DWORD stat;

   do 
   {
      stat = lcd_read_stat();
   } while (stat & 0x80);               /* Wait for busy flag                */
   return;
}

/******************************************************************************
** Function name:		lcd_write_cmd
**
** Descriptions:		
**
** parameters:			command word
** Returned value:		None
** 
******************************************************************************/
void lcd_write_cmd( DWORD c ) 
{
   /* Write command to LCD controller. */
   lcd_wait_busy();
   IO1CLR = LCD_RS;
   lcd_write(c);
   return;
}

/******************************************************************************
** Function name:		lcd_write_data
**
** Descriptions:		
**
** parameters:			data word
** Returned value:		None
** 
******************************************************************************/
void lcd_write_data( DWORD d ) 
{
   /* Write data to LCD controller. */
   lcd_wait_busy();
   IO1SET = LCD_RS;
   lcd_write(d);
   return;
}

/******************************************************************************
** Function name:		LCD_init
**
** Descriptions:		
**
** parameters:			None
** Returned value:		None
** 
******************************************************************************/
void LCD_init( void ) 
{
   /* Initialize the ST7066 LCD controller to 4-bit mode. */
   PINSEL3 = 0x00000000; 
#if USE_FIO
	SCS |= 0x00000001;	/* set GPIOx to use Fast I/O */
#endif
   IO1DIR |= LCD_CTRL | LCD_DATA;
   IO1CLR  = LCD_RW   | LCD_RS   | LCD_DATA;

   lcd_write_4bit(0x3);                /* Select 4-bit interface            */
   delay (100000);
   lcd_write_4bit(0x3);
   delay (10000);
   lcd_write_4bit(0x3);
   lcd_write_4bit(0x2);

   lcd_write_cmd(0x28);                /* 2 lines, 5x8 character matrix     */
   lcd_write_cmd(0x0e);                /* Display ctrl:Disp/Curs/Blnk=ON    */
   lcd_write_cmd(0x06);                /* Entry mode: Move right, no shift  */

   LCD_load( (BYTE *)&UserFont, sizeof (UserFont) );
   LCD_cls();
   return;
}

/******************************************************************************
** Function name:		LCD_load
**
** Descriptions:		
**
** parameters:			pointer to the buffer and counter
** Returned value:		None
** 
******************************************************************************/
void LCD_load( BYTE *fp, DWORD cnt ) 
{
   /* Load user-specific characters into CGRAM */
   DWORD i;

   lcd_write_cmd( 0x40 );                /* Set CGRAM address counter to 0    */
   for (i = 0; i < cnt; i++, fp++)  
   {
      lcd_write_data( *fp );
   }
   return;
}

/******************************************************************************
** Function name:		LCD_gotoxy
**
** Descriptions:		
**
** parameters:			pixel X and Y
** Returned value:		None
** 
******************************************************************************/
void LCD_gotoxy( DWORD x, DWORD y ) 
{
   /* Set cursor position on LCD display. Left corner: 1,1, right: 16,2 */
   DWORD c;

   c = --x;
   if (--y) 
   {
      c |= 0x40;
   }
   lcd_write_cmd (c | 0x80);
   lcd_ptr = y*16 + x;
   return;
}

/******************************************************************************
** Function name:		LCD_cls
**
** Descriptions:		
**
** parameters:			None
** Returned value:		None
** 
******************************************************************************/
void LCD_cls( void ) 
{
   /* Clear LCD display, move cursor to home position. */
   lcd_write_cmd (0x01);
   LCD_gotoxy (1,1);
   return;
}

/******************************************************************************
** Function name:		LCD_cur_off
**
** Descriptions:		
**
** parameters:			None
** Returned value:		None
** 
******************************************************************************/
void LCD_cur_off( void ) 
{
   /* Switch off LCD cursor. */
   lcd_write_cmd(0x0c);
   return;
}


/******************************************************************************
** Function name:		LCD_on
**
** Descriptions:		
**
** parameters:			None
** Returned value:		None
** 
******************************************************************************/
void LCD_on( void ) 
{
   /* Switch on LCD and enable cursor. */
   lcd_write_cmd (0x0e);
   return;
}

/******************************************************************************
** Function name:		LCD_putc
**
** Descriptions:		
**
** parameters:			byte character
** Returned value:		None
** 
******************************************************************************/
void LCD_putc( BYTE c ) 
{ 
   /* Print a character to LCD at current cursor position. */
   if (lcd_ptr == 16) 
   {
      lcd_write_cmd (0xc0);
   }
   lcd_write_data(c);
   lcd_ptr++;
   return;
}

/******************************************************************************
** Function name:		LCD_puts
**
** Descriptions:		
**
** parameters:			pointer to the buffer
** Returned value:		None
** 
******************************************************************************/
void LCD_puts ( BYTE *sp ) 
{
   /* Print a string to LCD display. */
   while (*sp) 
   {
      LCD_putc (*sp++);
   }
   return;
}

/******************************************************************************
** Function name:		LCD_bargraph
**
** Descriptions:		
**
** parameters:			value and size
** Returned value:		None
** 
******************************************************************************/
void LCD_bargraph( DWORD val, DWORD size ) 
{
   /* Print a bargraph to LCD display.  */
   /* - val:  value 0..100 %            */
   /* - size: size of bargraph 1..16    */
   DWORD i;

   val = val * size / 20;               /* Display matrix 5 x 8 pixels       */
   for (i = 0; i < size; i++) 
   {
      if (val > 5) 
	  {
         LCD_putc(5);
         val -= 5;
      }
      else 
	  {
         LCD_putc(val);
         break;
      }
   }
   return;
}

/*****************************************************************************
**                            End Of File
******************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av一区二区在线影视| 欧美一级在线视频| 国产一区二区导航在线播放| 人妖欧美一区二区| 奇米影视一区二区三区| 有码一区二区三区| 亚洲精品视频观看| 午夜亚洲国产au精品一区二区| 亚洲综合男人的天堂| 一区二区三区在线免费| 国产精品久久久久一区二区三区共| 精品国产乱码久久久久久1区2区| 日韩三区在线观看| 精品久久久久久久久久久久久久久久久 | 亚洲成人你懂的| 天天综合网天天综合色| 另类小说图片综合网| 国产精品资源在线看| eeuss鲁片一区二区三区在线看| 福利电影一区二区三区| 91亚洲精品久久久蜜桃网站| 在线观看成人免费视频| 欧美日本乱大交xxxxx| 日韩免费看的电影| 中文字幕精品三区| 亚洲视频1区2区| 一区二区三区不卡视频| 麻豆精品精品国产自在97香蕉| 免费成人你懂的| 成人教育av在线| 欧美三片在线视频观看| 欧美电影免费观看高清完整版 | 亚洲免费伊人电影| 日本中文字幕一区二区视频| 成人性生交大片免费看视频在线 | 中文字幕中文字幕在线一区| 亚洲午夜精品一区二区三区他趣| 麻豆91在线看| 99久久精品费精品国产一区二区 | 成人免费视频一区| 欧美亚洲另类激情小说| 久久久91精品国产一区二区精品| 亚洲自拍欧美精品| 国产一区二区三区高清播放| 色天天综合色天天久久| 国产日产欧产精品推荐色| 亚洲国产精品麻豆| av成人免费在线观看| 91麻豆精品国产91久久久| 国产精品国产三级国产普通话蜜臀| 日本成人在线看| 欧美影片第一页| 中文字幕在线一区二区三区| 精品一区二区av| 欧美美女黄视频| 亚洲自拍偷拍av| 日本久久一区二区三区| 国产亚洲成年网址在线观看| 久久精品久久久精品美女| 91视频一区二区| 国产精品久久久久久久蜜臀| 国产成人日日夜夜| 久久综合狠狠综合久久综合88| 午夜欧美一区二区三区在线播放| 91蜜桃视频在线| 国产精品私人影院| 国产91精品一区二区麻豆网站| 欧美日韩1234| 中文字幕一区免费在线观看| 精品一区二区三区影院在线午夜 | 中文字幕日韩一区| 国产精品一区久久久久| 亚洲精品一区二区三区蜜桃下载 | 欧美日韩你懂得| 一区二区三区四区蜜桃| 色网综合在线观看| 亚洲精品中文字幕乱码三区| 91浏览器在线视频| 亚洲欧美日韩中文字幕一区二区三区| 成人av影视在线观看| 亚洲人成精品久久久久| 色综合视频在线观看| 亚洲一区二区不卡免费| 欧美性一区二区| 亚洲国产你懂的| 欧美日韩国产不卡| 日本在线不卡一区| 日韩限制级电影在线观看| 蜜臀av亚洲一区中文字幕| 欧美一级在线视频| 国产精品一区2区| 国产性做久久久久久| 北条麻妃国产九九精品视频| 亚洲另类在线视频| 欧美日韩精品欧美日韩精品一| 亚洲成人激情自拍| 日韩女优视频免费观看| 懂色av中文字幕一区二区三区| 亚洲欧洲韩国日本视频| 91福利精品视频| 免费在线观看一区二区三区| 337p日本欧洲亚洲大胆精品| 成人av动漫在线| 国产精品久线观看视频| 色欧美乱欧美15图片| 亚洲国产一二三| 久久精品免费在线观看| 91年精品国产| 九色|91porny| 国产亚洲美州欧州综合国| 国产福利一区二区三区| 国产精品初高中害羞小美女文| 欧美日韩国产一级片| 国产酒店精品激情| 一区2区3区在线看| 欧美激情综合五月色丁香小说| 欧美午夜精品免费| 丰满少妇在线播放bd日韩电影| 一区二区三区国产精华| 国产丝袜美腿一区二区三区| 欧美日韩国产片| 国产91在线观看丝袜| 爽好多水快深点欧美视频| 国产肉丝袜一区二区| 制服丝袜亚洲色图| 91原创在线视频| 国产剧情一区二区| 麻豆高清免费国产一区| 亚洲男人的天堂在线aⅴ视频| 精品噜噜噜噜久久久久久久久试看| 在线观看三级视频欧美| 国产精品66部| 精品一区二区免费看| 亚洲mv在线观看| 伊人一区二区三区| 日韩理论片网站| 日本一区二区免费在线| 精品福利在线导航| 欧美一卡2卡3卡4卡| 欧美日韩成人一区二区| 欧美三区在线观看| 欧美三级日韩在线| 色欧美88888久久久久久影院| 91色在线porny| 99v久久综合狠狠综合久久| 成人一区二区三区中文字幕| 国产资源在线一区| 精品一区二区三区av| 久久国产三级精品| 激情国产一区二区| 日韩国产高清在线| 美日韩一区二区| 久久国产精品99久久久久久老狼 | 成人高清伦理免费影院在线观看| 久久成人免费日本黄色| 经典三级在线一区| 国产精品自拍三区| av色综合久久天堂av综合| 91美女视频网站| 色先锋资源久久综合| 欧美性淫爽ww久久久久无| 3d成人h动漫网站入口| 91精品在线免费观看| 欧美一区二区在线播放| 精品日韩成人av| 国产欧美一区二区精品久导航 | 国产精品美女久久久久av爽李琼| 国产精品欧美一级免费| 亚洲男同性视频| 亚洲国产视频一区二区| 日本视频在线一区| 国产精选一区二区三区| gogogo免费视频观看亚洲一| 欧美最猛黑人xxxxx猛交| 91麻豆精品久久久久蜜臀| 日韩视频一区二区| 国产精品美女久久久久久久久久久| 国产精品成人午夜| 亚洲第一福利视频在线| 狠狠狠色丁香婷婷综合久久五月| 国产传媒日韩欧美成人| 91福利视频久久久久| 日韩欧美精品三级| 国产精品毛片久久久久久| 午夜影院在线观看欧美| 麻豆成人免费电影| 93久久精品日日躁夜夜躁欧美| 欧美亚洲综合网| 精品乱人伦小说| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 夜夜嗨av一区二区三区中文字幕| 看电视剧不卡顿的网站| 99久久免费精品| 日韩欧美二区三区| 欧美韩日一区二区三区四区| 亚洲免费色视频| 国产高清精品网站| 欧美福利视频一区| 亚洲你懂的在线视频| 国产精品1024|