欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    LCD1602驱动程序(C51)(6页).doc

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

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

    LCD1602驱动程序(C51)(6页).doc

    -LCD1602驱动程序(C51)-第 6 页 *Module:lcd1602_drv.h *Function:lcd1602显示屏驱动程序和中间接口 *Author:槐之林 *Version: 2016-05-29#ifndef _lcd1602_drv_h_#define _lcd1602_drv_h_#ifndef NULL #define NULL (void *) 0L)#endiftypedef unsigned char uchar;typedef unsigned int uint;/LCD1602显示IO#define LCD_DATA P0sbit LCD_RS = P20; sbit LCD_RW = P21;sbit LCD_EP = P22;#include "app_common.h"#define LCD_CLEAR 1#define LCD_NORMER 2#define LCD_CURSOR_BLINK 3/对外接口bit Lcd_bz(); /忙时判断,1表示忙void Lcd_cmd(uchar cmd); /写指令 void Lcd_ctrl(uchar L, uchar C, uchar CC);/控制函数void Lcd_pos(uchar x,uchar y); /定位void Lcd_ch(uchar ch); /写数据,单个字符并显示void Lcd_str(uchar *str, uint len); /写入字符串并显示(用到Lcd_ch()函数)void Lcd_num(int num); /显示整数void Lcd_init();void Lcd_flo(float s,uint n); /浮点显示,n<=8; #endif *Module:lcd1602_drv.c *Function:lcd1602显示屏驱动程序和中间接口 *Author:槐之林 *Version: 2016-05-29#include <intrins.h>#include <string.h>#include <math.h>#include "lcd1602_drv.h"函数名: bit Lcd_bz()功能 : 测试是否为忙时,返回1为忙,0为闲说明 : bit Lcd_bz() /判是否为忙时bit result;LCD_RS=0;LCD_RW=1;LCD_EP=1;delay_us(5);result=(bit)(LCD_DATA&0x80);LCD_EP=0;return result;函数名: void Lcd_cmd(uchar cmd)功能 : 写指令:cmd说明 : 指令库: 清屏函数: 0X01; 1.64ms 光标归位: 0X02; 1.64ms 模式设置: DB2=1 DB1=I/D DB0=S; I/D=0-写入数据后,光标左移; I/D=1-写入数据后,光标右移; S=0-写入数据后,显示屏不移动; S=1-写入数据后,显示屏右移1; 显示开关控制: DB3=1 DB2=D DB1=C DB0=B; D=0 显示功能关 D=1 显示功能开 C=0 无光标 C=1 有光标 B=0 光标无闪烁 B=1 光标闪烁 设置光标/屏移动方向指令: DB4=1 DB3=S/C DB2=R/L DB1=x DB0=x; S/C R/L 对应指令 0 0 光标左移一格,AC减一 0 1 光标右移一格,AC加一 1 0 显示器上所有字符左移一格,光标不动 1 1 显示器上所有字符右移一格,光标不动 功能设置: 0X38 16*2显示,5*7点阵,8位数据void Lcd_cmd(uchar cmd)while(Lcd_bz();LCD_RS=0;LCD_RW=0; LCD_EP=0;delay_us(5);LCD_DATA=cmd;delay_us(5);LCD_EP=1;delay_us(5);LCD_EP=0; delay_us(5);/控制函数,比如清屏/L/C表示行/列(12)/(116)/CC表示控制指令,指令在.h文件中定义/有些指令没有用于参数C和L,可以赋值为0void Lcd_ctrl(uchar L, uchar C, uchar CC)switch(CC)case LCD_CLEAR:Lcd_cmd(0x01);delay_ms(3);break;case LCD_CURSOR_BLINK:Lcd_pos(L, C);Lcd_cmd(0x0F);break;case LCD_NORMER:Lcd_cmd(0x0C);Lcd_cmd(0x06);Lcd_cmd(0x01);break;default: break;函数名: void Lcd_pos(uchar pos)功能 : 定位说明 : x表示第x行(116) y表示第y列(12)void Lcd_pos(uchar x,uchar y) y=y-1; if (x=1) Lcd_cmd(0x80+y);/表示第一行,位置y处 else if(x=2) Lcd_cmd(0x80 + 0x40 + y);/表示第二行,位置y处函数名:void Lcd_dat(uchar dat)功能 :写数据,显示单个字符说明 :直接写入单个字符,如'c'void Lcd_ch(uchar ch)while(Lcd_bz();LCD_RS=1;LCD_RW=0; LCD_EP=0;LCD_DATA=ch;delay_us(5);LCD_EP=1;delay_us(5);LCD_EP=0; delay_ms(1); /必须有函数名:void Lcd_str(uchar *str, uint len)功能 :写数据,显示字符串说明 :str 为字符串首地址,左对齐 , len字串长度void Lcd_str(uchar *str,uint len)uint i=0;uchar *s=str;while(len>0)Lcd_ch(*(s+i);i+;len-;函数名:void Lcd_num(int num)功能 :写数据,显示正整数,从右往左,低位到高位显示,注意定位时应在最左边开始说明 :num 显示数字, DIS_MAX_LEN 显示最大长度,负号'-'也表示一位#define DIS_MAX_LEN 6void Lcd_num(int num)uchar i, dat_bufDIS_MAX_LEN = 0x00;if(num < 0)dat_buf0 = '-'num = -1 * num;elsedat_buf0 = '+'i = DIS_MAX_LEN - 1;while(num > 0)dat_bufi = (num%10)+'0'num = num/10;i = i-1;i = 1;while(dat_bufi = 0)i+;if(dat_buf0 = '-')dat_bufi-1 = '-'i = i-1;Lcd_str(dat_buf+i, DIS_MAX_LEN-i);函数名:void Lcd_flo2(float s,uint n)功能:浮点数显示说明:严格按有效位 n显示,n<=8void Lcd_flo(float s,uint n) uint i=0,k=0;if(s<0) Lcd_ch('-'); s=-1*s;/判断正负do /获得整数位位数 i s=s/10; i+;while(uint)s!=0);for(k=0;k<n+1;k+)if(i>k) s=s*10; Lcd_ch(uint)s+'0');s=s-(uint)s;elseif(i=n) Lcd_ch(0x20);else Lcd_ch('.'); i=99; /只要保证i>k 执行上面的if() 语句函数名:void Lcd_init()功能 :初始化说明 :无void Lcd_init()Lcd_cmd(0x38); /16*2显示,5*7点阵,8位数据delay_ms(1);Lcd_cmd(0x0c); /显示开,关光标delay_ms(1);Lcd_cmd(0x06); /移动光标delay_ms(1);Lcd_cmd(0x01); /清除LCD的显示内容delay_ms(10);

    注意事项

    本文(LCD1602驱动程序(C51)(6页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开