




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实训报告九实训目的:通过实现在LCD1602上显示由键盘输入的字符或数字的学习来掌握LCD1602的相关知识,掌握LCD1602的C语言程序设计,学会LCD1602的应用和加强矩阵按键的使用。实训原理图:实训步骤:1. 在ptoteus平台找出所需的元器件2. 理解该实验的原理,按照原理图画出仿真图;3. 根据实验要求写出如下程序:#include #include #include#define uchar unsigned char #define uint unsigned intsbit RS=P35; sbit RW=P36; sbit E=P37; uchar a=0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,;/延时函数 void delay_lcd(uchar k) uint i,j; for(j=0;jk;j+) for(i=0;i60;j+); /测忙函数 void test_1602busy() P1=0xff; E=1;RS=0;RW=1; _nop_();_nop_(); while(P1&0x80 )/检测LCD DB7 是否为1 E=0; _nop_(); E=1; _nop_(); E=0; /写命令函数 void write_1602Command(uchar co) test_1602busy(); /检测LCD是否忙 RS=0;RW=0;E=0; _nop_(); P1=co; _nop_(); E=1; /LCD的使能端 高电平有效 _nop_(); E=0; /写数据函数 void write_1602Data(uchar Data) test_1602busy(); P1=Data; RS=1; RW=0; E=1; _nop_(); E=0; /初始化函数 void init_1602(void) write_1602Command(0x38); /LCD功能设定,DL=1(8位),N=1(2行显示) delay_lcd(5); write_1602Command(0x01); /清除LCD的屏幕 delay_lcd(5); write_1602Command(0x06); /LCD模式设定,I/D=1(计数地址加1) delay_lcd(5); write_1602Command(0x0F); /显示屏幕 delay_lcd(5); void DisplayOneChar(uchar X,uchar Y,uchar DData) Y&=1; X&=15; if(Y)X|=0x40; /若y为1(显示第二行),地址码+0X40 X|=0x80; /指令码为地址码+0X80 write_1602Command(X); write_1602Data(DData);void display_1602(uchar *DData,X,Y)/显示函数 uchar ListLength=0; Y&=0x01; X&=0x0f; while(X16) DisplayOneChar(X,Y,DDataListLength); ListLength+; X+; /延时程序void delay(uint i)uint j;for (j=0;ji; j+);/ 检测有没有键按下uchar checkkey()uchar i ; uchar j ; j=0x0f; P2=j; i=P2; i=i&0x0f; if (i=0x0f) return (0); else return (0xff); /键盘扫描程序uchar keyscan()uchar scancode;uchar codevalue;uchar a;uchar m=0;uchar k;uchar i,j; if (checkkey() =0) return (0xff); else delay(100); if (checkkey()=0) return (0xff);else scancode=0xf7;m=0x00; /键盘行扫描初值,M为列数 for (i=1;i=4;i+) k=0x10; P2=scancode; a=P2; for (j=0;j4;j+)/J为行数 if (a&k)=0) codevalue = m+j; while (checkkey()!=0); return (codevalue); else k=k1; scancode=scancode; /主函数void main() uchar *s;uchar z;uchar i=0,j=0; /i为LCD的行,j为LCD的列 delay_lcd(15); init_1602(); /1602初始化 s=WELCOME TO HERE!; display_1602(s,0,0); /第一行显示WELCOM TO HERE ! delay_lcd(200); delay_lcd(200); delay_lcd(200); while(1) if (checkkey()=0x00) continue; else i=1; /LCD在第二行显示 z= keyscan(); if (j=16) j=0;i=1; break; else DisplayOneChar(j,i,az);j+;delay(100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年滁州职业技术学院公开招聘工作人员56人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025年新乡市开发公益性岗位安置就业困难毕业生25人考前自测高频考点模拟试题(含答案详解)
- 2025安徽工程大学高层次人才招聘60人考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025江苏鑫氟天科技有限公司招聘1人考前自测高频考点模拟试题及完整答案详解
- 2025河北承德市消防救援支队政府专职消防队员招聘73人考前自测高频考点模拟试题附答案详解(模拟题)
- 2025年河北秦皇岛抚宁区为部分区直单位选调全额事业工作人员12人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025年烟台莱阳市卫生健康局所属事业单位公开招聘工作人员(35人)考前自测高频考点模拟试题及答案详解(名校卷)
- 2025吉林白城师范学院招聘高层次人才57人(1号)模拟试卷有答案详解
- 2025广东广州市公安局招聘辅警48人考前自测高频考点模拟试题及完整答案详解
- 2025春季中国核工业二四建设有限公司社会招聘考前自测高频考点模拟试题及1套完整答案详解
- 婚礼婚纱款式指南
- 高三运动会课件
- 法语幼儿教学课件1
- 钩针课件教学课件
- 淮阳豆门乡消防安全培训课件
- 海上风电场安全培训课件
- 2025版CSCO非小细胞肺癌诊疗指南解读
- 红星照耀中国第九章课件
- GB/T 13090-2025饲料中六六六、滴滴涕的测定
- (2025)学法用法考试题及答案
- 巴以冲突的原因
评论
0/150
提交评论