ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:20.39KB ,
资源ID:18626186      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18626186.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(诺基亚5110 LCD屏幕驱动程序文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

诺基亚5110 LCD屏幕驱动程序文档格式.docx

1、#define SCLK_0() P4OUT&=SPI_CLK_PIN#define SCLK_1() P4OUT|= SPI_CLK_PIN/P4.0-SCLK/P4.1-DIN/P4.2-D/C/P4.3-/RST/P4.4-/SCEtypedef unsigned char byte;typedef unsigned int word;/枚举 D/C 模式选择 typedef enum DC_CMD = 0, /写命令 DC_DATA = 1 /写数据 LcdExecType;/枚举 画点类型选择 PIXEL_CLEAR = 0, /擦除 PIXEL_DRAW = 1, /画点 PIXE

2、L_XOR = 2 /取反 LcdPixelMode;/驱动函数声明void LcdInit ( void );void LcdSetContrast ( byte contrast );void LcdSetXY (byte X, byte Y);void LcdExec ( byte data, LcdExecType cd );byte UnClear ( byte data, byte n );byte LnClear ( byte data, byte n );void SplitByte ( byte data, byte nByLow, byte bytes 2 );void B

3、ufferPixelStuff ( byte type, byte index, byte x, byte y, byte width, byte height);void CacheEnglishString ( byte x, byte y, byte width, byte height, byte bWidth, byte *dataPtr );void CachePixel ( byte x, byte y, LcdPixelMode mode );void CommitBuffer ( void );void ClearBuffer ( void );#endif Nokia511

4、0Lcd.c 诺基亚 5110 LCD 驱动源文件#include Nokia5110Lcd.hPixelStuff.h /中、英文字、图片字模/全屏缓存 ( 6x84 bytes )byte LcdPixelBuffer LCD_Y_RES / 8 84 = 0, 0 ; /*函数名 : LcdInit功能 : LCD SPI 初始化参数 : 无返回 :*/void LcdInit( void ) P4OUT |= LCD_RST_PIN; P4DIR |= LCD_RST_PIN | LCD_DC_PIN | LCD_CE_PIN | SPI_MOSI_PIN | SPI_CLK_PIN;

5、 P4OUT &= LCD_RST_PIN; P4OUT |= LCD_CE_PIN; /设置LCD LcdExec( 0x21, DC_CMD ); LcdExec( 0xC8, DC_CMD ); LcdExec( 0x06, DC_CMD ); LcdExec( 0x13, DC_CMD ); LcdExec( 0x20, DC_CMD ); LcdExec( 0x0C, DC_CMD ); /清屏 ClearBuffer( ); CommitBuffer( ); LcdSetContrast 设置 LCD 对比度 byte contrast 对比度值:0127void LcdSetCo

6、ntrast( byte contrast ) LcdExec( 0x80 | contrast, DC_CMD ); LcdSetXY 设置 LCD 当前坐标 byte X 横坐标:083 byte Y 纵坐标:005void LcdSetXY(byte X, byte Y) LcdExec( 0x40 | Y, DC_CMD); / 行 LcdExec( 0x80 | X, DC_CMD); / 列 LcdExec 执行 LCD 指令/数据 byte data 指令/数据值 LcdExecType dc 指令/数据选择(DC_CMD/DC_DATA)void LcdExec( byte d

7、ata, LcdExecType dc ) unsigned char i=0;= LCD_CE_PIN; if ( dc = DC_DATA ) P4OUT |= LCD_DC_PIN; else= LCD_DC_PIN; for(i=0;i8;i+)/串行写入八位数据 先写高位 上升沿写入 if(data&0x80) DIN_1(); DIN_0(); SCLK_0(); data=data 00011000byte UnClear( byte data, byte n ) byte tmpData, i; tmpData = 0; for( i = 0; i n; i+ ) tmpDat

8、a |= ( 1 byte LnClear( byte data, byte n ) i ); SplitByte 一个字节拆成两个字节 byte data 8位数据 byte nByLow 从低位起多少位拆开 byte bytes 2 存放返回的两个字节 data取11111111 nByLow取2 - bytes0=11111100、bytes1=00000011void SplitByte( byte data, byte nByLow, byte bytes 2 ) bytes 0 = data ( 8 - nByLow );/注意该函数在绘图时会覆盖原来的内容 BufferPixel

9、Stuff 把图片、文字点阵写入全屏缓存(精确定位,右上角坐标可以为LCD上任意位置。 字符大小不限,自行修改数组点阵数据,单个字符的宽高参数不要传错了,16号 字模不要传成12,12了,12号字模不要传成16,16了) byte type type=1-图片点阵 / type=2-ascii字符 / type=3-中文字符 byte index 数据在数组中的位置(当type=2时,直接传ascii字符,如:A) byte x 横坐标: byte y 纵坐标:047 byte width 点阵数据的宽度(位数) 如果是字符就为一个字符的宽度、如果是图片就为整个图片的宽度 byte heigh

10、t 点阵数据的高度(位数) 如果是字符就为一个字符的高度、如果是图片就为整个图片的高度void BufferPixelStuff( byte type, byte index, byte x, byte y, byte width, byte height) byte i, j, tmpRow; byte row = y / 8; byte offset = y % 8; byte level = ( height % 8 = 0 ? height / 8 : ( height / 8 + 1 ) ); byte bytes 2 = 0 ; byte byteTmp; for( j=0; j

11、width; j+ ) tmpRow = row; byteTmp = UnClear( LcdPixelBuffer tmpRow x + j , 8 - offset ); for( i=0; level; if( type = 1 ) SplitByte(PIXEL_BMP index i * width + j , offset, bytes); else if( type = 2 ) SplitByte( PIXEL_ENGLISH_CHAR index - 32 i * width + j , offset, bytes); else if( type = 3 ) SplitByt

12、e( PIXEL_CHINESE_CHAR index i * width + j , offset, bytes); else return; /*if(offset 擦除、PIXEL_DRAW-画点、PIXEL_XOR-取反)void CachePixel( byte x, byte y, LcdPixelMode mode ) byte row; byte offset; byte data; if ( x LCD_X_RES ) return; if ( y LCD_Y_RES ) return; row = y / 8; offset = y % 8; data = LcdPixel

13、Buffer row x ; if ( mode = PIXEL_CLEAR ) data &= (0x01 offset); else if ( mode = PIXEL_DRAW ) data |= (0x01 offset); else if ( mode = PIXEL_XOR ) data = (0x01 LcdPixelBuffer row x = data; CommitBuffer 提交缓存,把当前缓存上的数据写到LCD上void CommitBuffer( void ) byte row, col; LcdSetXY( 0x00, 0x00 ); for ( row = 0;

14、 row LCD_Y_RES / 8; row+ ) for ( col = 0; col LCD_X_RES; col+ ) LcdExec( LcdPixelBuffer row col , DC_DATA ); ClearBuffer 清空缓存void ClearBuffer( void ) byte row, col; for( row = 0; for( col=0; LcdPixelBuffer row col = 0x00; PixelStuff.h 点阵数据#ifndef PIXEL_STUFF_H#define PIXEL_STUFF_H数组名 : PIXEL_ENGLISH

15、_CHAR 5X7ASCII点阵数据const unsigned char PIXEL_ENGLISH_CHAR 5 = 0x00, 0x00, 0x00, 0x00, 0x00 , / sp 0x00, 0x00, 0x2f, 0x00, 0x00 , / ! 0x00, 0x07, 0x00, 0x07, 0x00 , / 0x14, 0x7f, 0x14, 0x7f, 0x14 , / # 0x24, 0x2a, 0x7f, 0x2a, 0x12 , / $ 0xc4, 0xc8, 0x10, 0x26, 0x46 , / % 0x36, 0x49, 0x55, 0x22, 0x50 , / & 0x00, 0x05, 0x03, 0x00, 0x00 , / 0x00, 0x1c, 0x22, 0x41, 0x00 , / ( 0x00, 0x41, 0x22, 0x1c

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1