欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    诺基亚5110 LCD屏幕驱动程序.docx

    • 资源ID:5639083       资源大小:20.39KB        全文页数:20页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    诺基亚5110 LCD屏幕驱动程序.docx

    1、诺基亚5110 LCD屏幕驱动程序/*文件名 : Nokia5110Lcd.h描述 : 诺基亚 5110 LCD 驱动头文件作者 : xylch101编辑器 : Notepad 2日期 : 2008年06月27日*/#ifndef NOKIA_5110_LCD_H#define NOKIA_5110_LCD_H/宽高像素#define LCD_X_RES 84#define LCD_Y_RES 48/管脚配置 (atmega16L) 自行修改#define LCD_DC_PIN (12) / P4.2 D/C#define LCD_CE_PIN (14) / P4.4 /SCE#define

    2、SPI_MOSI_PIN (11) / P4.1 DIN#define LCD_RST_PIN (13) / P4.3 /RST#define SPI_CLK_PIN (10) / P4.0 /SCLK#define DIN_0() P4OUT&=SPI_MOSI_PIN#define DIN_1() P4OUT|= SPI_MOSI_PIN#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 u

    3、nsigned char byte;typedef unsigned int word;/枚举 D/C 模式选择 typedef enum DC_CMD = 0, /写命令 DC_DATA = 1 /写数据 LcdExecType;/枚举 画点类型选择 typedef enum PIXEL_CLEAR = 0, /擦除 PIXEL_DRAW = 1, /画点 PIXEL_XOR = 2 /取反 LcdPixelMode;/驱动函数声明void LcdInit ( void );void LcdSetContrast ( byte contrast );void LcdSetXY (byte X

    4、, 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 BufferPixelStuff ( byte type, byte index, byte x, byte y, byte width, byte height);void CacheEnglishString ( byte x,

    5、 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/*文件名 : Nokia5110Lcd.c描述 : 诺基亚 5110 LCD 驱动源文件作者 : xylch101编辑器 : Notepad 2日期 : 2008年06月27日*/#include Nokia5110Lcd.h#include P

    6、ixelStuff.h /中、英文字、图片字模/全屏缓存 ( 6x84 bytes )byte LcdPixelBuffer LCD_Y_RES / 8 84 = 0, 0 ; /*函数名 : LcdInit功能 : LCD SPI 初始化参数 : 无返回 : 无编辑器 : Notepad 2*/void LcdInit( void ) P4OUT |= LCD_RST_PIN; P4DIR |= LCD_RST_PIN | LCD_DC_PIN | LCD_CE_PIN | SPI_MOSI_PIN | SPI_CLK_PIN; P4OUT &= LCD_RST_PIN; P4OUT |=

    7、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 对比度值:0127返回 : 无编辑

    8、器 : Notepad 2*/void LcdSetContrast( byte contrast ) LcdExec( 0x21, DC_CMD ); LcdExec( 0x80 | contrast, DC_CMD ); LcdExec( 0x20, DC_CMD );/*函数名 : LcdSetXY功能 : 设置 LCD 当前坐标参数 : byte X 横坐标:083 byte Y 纵坐标:005返回 : 无编辑器 : Notepad 2*/void LcdSetXY(byte X, byte Y) LcdExec( 0x40 | Y, DC_CMD); / 行 LcdExec( 0x8

    9、0 | X, DC_CMD); / 列/*函数名 : LcdExec功能 : 执行 LCD 指令/数据参数 : byte data 指令/数据值 LcdExecType dc 指令/数据选择(DC_CMD/DC_DATA)返回 : 无编辑器 : Notepad 2*/void LcdExec( byte data, LcdExecType dc ) unsigned char i=0; P4OUT &= LCD_CE_PIN; if ( dc = DC_DATA ) P4OUT |= LCD_DC_PIN; else P4OUT &= LCD_DC_PIN; for(i=0;i8;i+)/串行

    10、写入八位数据 先写高位 上升沿写入 if(data&0x80) DIN_1(); else DIN_0(); SCLK_0(); data=data 00011000编辑器 : Notepad 2*/byte UnClear( byte data, byte n ) byte tmpData, i; tmpData = 0; for( i = 0; i n; i+ ) tmpData |= ( 1 00011000编辑器 : Notepad 2*/byte LnClear( byte data, byte n ) byte tmpData, i; tmpData = 0; for( i = 0

    11、; i n; i+ ) tmpData |= ( 1 bytes0=11111100、bytes1=00000011编辑器 : Notepad 2*/void SplitByte( byte data, byte nByLow, byte bytes 2 ) bytes 0 = data ( 8 - nByLow );/注意该函数在绘图时会覆盖原来的内容/*函数名 : BufferPixelStuff功能 : 把图片、文字点阵写入全屏缓存(精确定位,右上角坐标可以为LCD上任意位置。 字符大小不限,自行修改数组点阵数据,单个字符的宽高参数不要传错了,16号 字模不要传成12,12了,12号字模

    12、不要传成16,16了)参数 : byte type type=1-图片点阵 / type=2-ascii字符 / type=3-中文字符 byte index 数据在数组中的位置(当type=2时,直接传ascii字符,如:A) byte x 横坐标:083 byte y 纵坐标:047 byte width 点阵数据的宽度(位数) 如果是字符就为一个字符的宽度、如果是图片就为整个图片的宽度 byte height 点阵数据的高度(位数) 如果是字符就为一个字符的高度、如果是图片就为整个图片的高度返回 : 无编辑器 : Notepad 2*/void BufferPixelStuff( byt

    13、e 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 width; j+ ) tmpRow = row; byteTmp = UnClear( LcdPixelBuffer tmpRow x

    14、+ j , 8 - offset ); for( i=0; i level; i+ ) 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 ) SplitByte( PIXEL_CHINESE_CHAR index i * width + j , offset, bytes); el

    15、se return; /*if(offset 擦除、PIXEL_DRAW-画点、PIXEL_XOR-取反)返回 : 无编辑器 : Notepad 2*/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 = LcdPixelBuffer row x ; if ( mode = PIXEL_CLEAR

    16、) data &= (0x01 offset); else if ( mode = PIXEL_DRAW ) data |= (0x01 offset); else if ( mode = PIXEL_XOR ) data = (0x01 offset); LcdPixelBuffer row x = data;/*函数名 : CommitBuffer功能 : 提交缓存,把当前缓存上的数据写到LCD上参数 : 无返回 : 无编辑器 : Notepad 2*/void CommitBuffer( void ) byte row, col; LcdSetXY( 0x00, 0x00 ); for

    17、( row = 0; row LCD_Y_RES / 8; row+ ) for ( col = 0; col LCD_X_RES; col+ ) LcdExec( LcdPixelBuffer row col , DC_DATA ); /*函数名 : ClearBuffer功能 : 清空缓存参数 : 无返回 : 无编辑器 : Notepad 2*/void ClearBuffer( void ) byte row, col; for( row = 0; row LCD_Y_RES / 8; row+ ) for( col=0; col LCD_X_RES; col+ ) LcdPixelBu

    18、ffer row col = 0x00; /*文件名 : PixelStuff.h描述 : 点阵数据作者 : xylch101编辑器 : Notepad 2日期 : 2008年06月27日*/#ifndef PIXEL_STUFF_H#define PIXEL_STUFF_H/*数组名 : PIXEL_ENGLISH_CHAR功能 : 5X7ASCII点阵数据编辑器 : Notepad 2*/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


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开