已阅读1页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1:12864protues图2:范例程序滚动显示“白日依山尽,黄河入海流。”#include#include#define uchar unsigned char#define uint unsigned intsbit e=P20;sbit rw=P21;sbit rs=P22;sbit cs2=P23;sbit cs1=P24;sbit busy=P07;sbit reset=P25;uchar code data1=; /省略了字模O(_)O哈哈/*延时程序*delay() uchar q; for(q=0;q10;q+) ; /*写控制命令*trans1(uchar receive) delay(); e=1; rw=0; rs=0; P0=receive; delay(); e=0;/*写数据命令*trans2(uchar receive1) delay(); e=1; rw=0; rs=1; P0=receive1; delay(); e=0;/*初始化程序*init() uchar i; delay(); trans1(0x3e); /显示开 delay(); trans1(0x40); / 起始行位置为第一行/*主程序*void main(void) uint k=0,q,clycle,ct=0,ct2=63,yy=0,ty; uint w; delay(); init(); /初始化 delay();while(1) w=0; trans1(0xb8); /页0显示 trans1(0x4f); /从0列开始显示 for(q=0;q4;q+) /八页显示 for(clycle=0;clycle2;clycle+) ty=0x4f; cs1=0; cs2=1; if(clycle=1) cs1=1;cs2=0;delay();ty=0x40; for(yy=0;yy3;yy+) /*64*列显示 trans1(0xb8+q*2); trans1(ty+16*yy); delay(); for(k=0;k32;k+) if(k=16) trans1(0xb8+q*2+1);trans1(ty+16*(yy); trans2(data1w+k); w+=32; ct2-; cs1=0;cs2=0; for(k=0;k200;k+) trans1(0xc0+ct2); if(ct2=0) ct2=63;reset=1;reset=0; 3:1602protues图4:例程#include#include#define uchar unsigned char#define uint unsigned intsbit ds=P20;sbit wr=P21;sbit e=P22;uchar clycle;uchar code data_1=you are the NO.1;uchar code data_2=we support you;/*时间延时*void delay(void) /延时时间为十毫秒TH0=0XFF; TL0=0X9C; TR0=1; while(!TF0); TF0=0; TR0=0;/*数据发送*dis(uchar receive) ds=clycle; e=0; wr=0; P0=receive; delay(); e=1; delay(); e=0;/*初始化设置*init() uchar temp; temp=0X3F; /数据显示方式 dis(temp); delay(); temp=0X0F; /开显示,显示光标,光标闪 dis(temp); delay(); temp=0X06; / dis(temp); delay(); temp=0X14; /光标左移 dis(temp);/*主程序*void main(void) uint i,k; TMOD=0x01; TH0=0XFF; TL0=0X9C; EA=1; ET0=1; clycle=0; init(); /初始化 delay(); k=0x80; /第一行数据显示地址 clycle=0; dis(k); clycle=1; for(i=0;i16;i+) k=data_1i; dis(k); delay(); k=0xc0; /第二行数据显示地址 clycle=0; dis(k); clycle=1; for(i=0;i14;i+) k=data_2i; dis(k); while(1);5:16*16LED点阵显示protues6:程序示例#include#include#define uchar unsigned char#define uint unsigned intsbit oe=P00;sbit mr=P01;sbit st_cp=P02;sbit control=P10;sbit ds=P30;sbit sh_cp=P31;uchar trans;uchar buff4;uchar word,clycle,h,yid=0,d=10;uint i=0;uchar code dis_data=/*- 文字: 好 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x00,0x11,0xFC,0x10,0x08,0x10,0x10,0xFC,0x20,0x24,0x20,0x24,0x20,0x27,0xFE,0x44,0x20,0x64,0x20,0x18,0x20,0x08,0x20,0x14,0x20,0x26,0x20,0x44,0xA0,0x80,0x40,/*- 文字: 人 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x01,0x00,0x01,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x80,0x04,0x40,0x08,0x60,0x08,0x30,0x10,0x18,0x20,0x0E,0x40,0x04,0x00,0x00,/*- 文字: 一 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*- 文字: 生 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x80,0x10,0xC0,0x10,0x80,0x10,0x88,0x1F,0xFC,0x20,0x80,0x20,0x80,0x40,0x88,0x9F,0xFC,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x84,0x7F,0xFE,0x00,0x00,/*- 文字: 平 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x7F,0xFC,0x01,0x00,0x21,0x10,0x11,0x18,0x09,0x10,0x0D,0x20,0x09,0x40,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,/*- 文字: 安 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x02,0x00,0x01,0x00,0x3F,0xFE,0x20,0x04,0x44,0x08,0x06,0x00,0x04,0x00,0xFF,0xFE,0x08,0x20,0x08,0x20,0x08,0x40,0x06,0x80,0x01,0x00,0x06,0xC0,0x18,0x38,0xE0,0x10;/uchar code scan_data16=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f;/*缓冲器change*dis_c() for(h=0;h16;h+) change(); /调整数据 data_out(); /发射数据 for(i=0;i250;i+) ; st_cp=0; st_cp=1; oe=0; control=0; P2=h; for(i=0;i=0;s-) buff2*s+1=dis_dataword+1+32*s+2*h; buff2*s=dis_dataword+32*s+2*h; /*数据输出*data_out() uchar s; uchar inc,tempyid,temp; if(yid8) inc=0; else inc=1; for(s=0+inc;s2+inc;s+) if(yid8) tempyid=yid; else tempyid=yid-8; temp=(buffs(8-tempyid); SBUF=temp; while(!TI) ; TI=0; control=1; oe=1; st_cp=0; / for(i=0;i10;i+) ; st_cp=1;/*主程序*void main(void) PCON=0x00; SCON=0X00; oe=1; mr=0; mr=1; word=0; control=1; while(1) while(yid16) for(i=0;id;i+) dis_c(); yid+; /for(i=0;i=160) word=0; / for(i=0;i5000;i+) ;、液晶屏显示模块与数码管相比,它显得更为专业、漂亮。液晶显示屏以其微功耗、体积小、显示内容丰富、超薄轻巧、使用方便等诸多优点,在通讯、仪器仪表、电子设备、家用电器等低功耗应用系统中得到越来越广泛的应用,使这些电子设备的人机界面变得越来越直观形象,目前已广泛应用于电子表、计算器、IC卡电话机、液晶电视机、便携式电脑、掌上型电子玩具、复印机、传真机等许多方面。1602字符型液晶模块(带背光),是目前工控系统中使用最为广泛的液晶屏之一。1602采用标准的16脚接口,其引脚功能如下:第1脚:VSS为电源地,接GND。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:BLA背光电源正极(+5V)输入引脚。第16脚:BLK背光电源负极,接GND。 1602液晶模块内带标准字库,内部的字符发生存储器(CGROM)已经存储了192个57点阵字符,32个510点阵字符。另外还有字符生成RAM(CGRAM)512字节,供用户自定义字符。如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。 C51程序如下: 注:AT89S51使用12M晶振/*=*/#include #define LCM_Data P1#define Busy 0x80 /用于检测LCM状态字中的Busy标识sbitLCM_RW P20; /定义引脚sbitLCM_RS P21;sbitLCM_E P22;void WriteDataLCM(unsigned char WDLCM);void WriteCommandLCM(unsigned char WCLCM,BuysC);unsigned char ReadDataLCM(void);unsigned char ReadStatusLCM(void);void LCMInit(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);void Delay5Ms(void);void Delay400Ms(void);unsigned char code csdn = csdn;unsigned char code net = ;void main(void)LCMInit(); /LCM初始化Delay5Ms(); /延时片刻(可不要)DisplayListChar(0, 5, csdn);DisplayListChar(1, 0, net);ReadDataLCM();/测试用句无意义while(1);/写数据void WriteDataLCM(unsigned char WDLCM)ReadStatusLCM(); /检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; /若晶振速度太高可以在这后加小的延时LCM_E = 0; /延时LCM_E = 1;/写指令void WriteCommandLCM(unsigned char WCLCM,BuysC) /BuysC为0时忽略忙检测if (BuysC) ReadStatusLCM(); /根据需要检测忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0; LCM_E = 0;LCM_E = 0;LCM_E = 1; /读数据unsigned char ReadDataLCM(void)LCM_RS = 1; LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;return(LCM_Data);/读状态unsigned char ReadStatusLCM(void)LCM_Data = 0xFF; LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;while (LCM_Data & Busy); /检测忙信号return(LCM_Data);void LCMInit(void) /LCM初始化LCM_Data = 0;WriteCommandLCM(0x38,0); /三次显示模式设置,不检测忙信号Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,1); /显示模式设置,开始要求每次检测忙信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中粤教版第一节 位置和疆域教学设计
- Unit 11 Children's Day教学设计小学英语四年级下册牛津上海版(深圳用)
- 安庆医药高等专科学校《当代教育心理学》2025-2026学年期末试卷
- 中国药科大学《薪酬管理》2025-2026学年期末试卷
- 江西理工大学《中外教育简史》2025-2026学年期末试卷
- 长春电子科技学院《教育学基础》2025-2026学年期末试卷
- 中国矿业大学《中国古代史》2025-2026学年期末试卷
- 漳州职业技术学院《民俗学》2025-2026学年期末试卷
- 儿童烧烫伤风险报告
- 国家智慧教育云平台在跨校协作教学中的信息技术与课程整合研究教学研究课题报告
- 基于模拟教学的急危重症团队快速反应培训
- QC/T 1238-2025燃料电池发动机用空气滤清器
- 2026第十三届“大学生新一代信息通信科技大赛”省赛备考试题库(500题)
- GA/T 2164-2024城市道路路段交通组织通用技术规程
- 2026广西壮族自治区供销合作联社直属院校公开招聘工作人员63人考试参考题库及答案解析
- 2026年中国航空电机系统行业市场现状、前景分析研究报告(智研咨询发布)
- 资产评估业务报备内部管理制度
- 2025年高层建筑消防培训
- (2026春新版)部编版二年级语文下册全册教案
- 2025年河南工业职业技术学院单招职业技能测试题库附答案解析
- 2026四川成都新津文旅集团招聘1人参考考试试题附答案解析
评论
0/150
提交评论