版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C51单片机对1602lcd模块的驱动手上有一片1602的LCD,ks0066的驱动芯片,带LED背光。参考网站上的一些资料,写了个驱动程序,写完了才发现,跟网上流传的代码基本上差不多/*=======================================1602lcd模块驱动程序===============说明:1.晶体:11.0592MHz2.1602驱动:ks0066******************************************/#include#include#definelcm_rsP2_7//寄存器选择#definelcm_rwP2_6//读/写控制#definelcm_eP2_5//读/写使能#definelcm_blkP2_4//背光led1.off0.on#definelcm_dataP0//函数声明voiddelay5ms(void);voiddelay400ms(void);voidlcm_write_command(unsignedcharwc_lcm,busy_c);/***********************************//函数名称:voidlcm_ini(void)//传递参数:无//返回值:无//函数功能:LCM初始化//函数说明:***********************************/voidlcm_ini(void){lcm_data=0;lcm_write_command(0x38,0);//16*2显示,5*7点阵,8位数据接口,不检测忙delay5ms();lcm_write_command(0x38,0);delay5ms();lcm_write_command(0x38,0);//三次显示模式,不检测忙delay5ms();lcm_write_command(0x38,1);//16*2显示,5*7点阵,8位数据接口,需要检测忙lcm_write_command(0x80,1);//关闭显示lcm_write_command(0x01,1);//clear显示lcm_write_command(0x06,1);//指针和光标+1,不滚屏lcm_write_command(0x0c,1);//开显示,不显示光标}/***********************************//函数名称:unsignedcharlcm_read_status(void)//传递参数:无//返回值:unsignedchar//函数功能:读lcm状态,等待lcm空闲//函数说明:DB7=1,忙***********************************/unsignedcharlcm_read_status(void){lcm_data=0xff;lcm_rs=0;lcm_rw=1;lcm_e=0;lcm_e=0;lcm_e=1;while(lcm_data&0x80);returnlcm_data;}/***********************************//函数名称:voidlcm_write_data(unsignedcharwd_lcm)//传递参数:unsignedcharwd_lcm//返回值:无//函数功能:lcm写数据//函数说明:***********************************/voidlcm_write_data(unsignedcharwd_lcm){lcm_read_status();//判断lcm忙标志lcm_data=wd_lcm;lcm_rs=1;lcm_rw=0;lcm_e=0;lcm_e=0;lcm_e=1;}/***********************************//函数名称:voidlcm_write_command(unsignedcharwc_lcm,busy_c)//传递参数:unsignedcharwc_lcm,busy_c//返回值:无//函数功能:lcm写命令//函数说明:busy_c=0是,不用检测忙信号***********************************/voidlcm_write_command(unsignedcharwc_lcm,busy_c){if(busy_c)lcm_read_status();lcm_data=wc_lcm;lcm_rs=0;lcm_rw=0;lcm_e=0;lcm_e=0;lcm_e=1;}/***********************************//函数名称:voiddisp_one_char(unsignedcharx,unsignedchary,unsignedchardisp_data)//传递参数:unsignedcharx,unsignedchary,unsignedchardisp_data//返回值:无//函数功能:指定位置显示一个字符//函数说明:***********************************/voiddisp_one_char(unsignedcharx,unsignedchary,unsigneddisp_data){y=y&0x01;x=x&0x0f;//限制2行,没行15个字if(y)x=x+0x40;//算RAM地址x=x+0x80;lcm_write_command(x,0);lcm_write_data(disp_data);}/***********************************//函数名称:voiddisp_one_char(unsignedcharx,unsignedchary,unsignedchar*disp_data)//传递参数:unsignedcharx,unsignedchary,unsignedchar*disp_data//返回值:无//函数功能:指定位置显示一串字符//函数说明:***********************************/voiddisp_list_char(unsignedcharx,unsignedchary,unsignedchar*disp_data){unsignedcharchar_length,j;char_length=strlen(disp_data);y=y&0x1;x=x&0x0f;for(j=0;j{disp_one_char(x,y,disp_data[j]);//显示一个字符x++;}}/***********************************//函数名称:voiddelay5ms(void)//传递参数:无//返回值:无//函数功能:延时5MS//函数说明:***********************************/voiddelay5ms(void){unsignedintTempCyc=5552;while(TempCyc--);}/***********************************//函数名称:voiddelay400ms(void)//传递参数:无//返回值:无//函数功能:L延时400MS//函数说明:LCM开机延时***********************************/voiddelay400ms(void){unsignedcharTempCycA=5;unsignedintTempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);};}/*****d******************************//函数名称:voidmain(void)//传递参数:无//返回值:无//函数功能:主函数//函数说明:************************************/voidmain(void){delay400ms();lcm_ini();disp_list_char(1,0,“Welcome”);disp_list_char(1,0,“”)while(1);}以上的程序只是简单的显示两行字符,没有滚屏和背光4线液晶1602的C51程序----------------------------------|LCM-----51|LCM-----51|----------------------------------|RS-----P2.1|DB4-----P1.4||RW-----P2.0|DB5-----P1.5||E-----P2.2|DB6-----P1.6||VLCD接1K电阻到GND|DB7-----P1.7|---------------------------------------------------[注:AT89S51使用12M晶振]=============================================================*/voidwritelcd(bitcommand,unsignedcharddata){ReadStatusLCM();//检测忙LCM_Data=(ddata&0xf0)|(P1&0x0f);LCM_RW=0;if(command==0)LCM_RS=0;elseLCM_RS=1;LCM_E=1;LCM_E=0;LCM_E=0;LCM_Data=((ddata《《4)&0xf0)|(P1&0x0f);if(command==0)LCM_RS=0;elseLCM_RS=1;LCM_E=1;LCM_E=0;LCM_E=0;}//读状态unsign
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年绿茵茵拼音测试题及答案
- 2026年人品德知识测试题及答案
- 2026年幸运爆米花读本测试题及答案
- 电增容工程施工组织设计方案
- 水平冻结法超前支护专项方案
- 雨季施工安全防护施工工艺
- 2026年特种设备安全管理技能试卷含答案
- 声乐教学法论文
- 2025年一级建造师考试真题及答案
- 老年人防摔伤的感官训练
- 液压基础知识培训
- 爱永在混声四声部合唱简谱
- 康复评定技术学课程大纲与教学目标
- 机械原理考试模拟题(含答案)
- 成都环境集团笔试题库
- 血透患者钙磷的管理
- 全媒体运营师职业技能竞赛试题及答案(251-500单选题)
- JCT2460-2018 预制钢筋混凝土化粪池
- (完整版)口腔科学试题库
- 硬笔书法全册教案共20课时
- 冀教版七年级数学上册第五章《一元一次方程》课件
评论
0/150
提交评论