版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、杭州电子科技大学电子设计(A)实验设计报告实验名称1键盘扫描与LCD显示实验次数1小组号26姓名学号潘瑞东姓名学号姓名学号指导教师黄继业2009 年 3月17日键盘扫描与LCD显示一 方案论证与比较 方案一:矩阵键盘有一组I/O口控制,LCD输入数据端口直接与单片机的一组I/O口连接。此方案的设备比较简单,接线也简单,程序简洁。但缺点是所占的I/O资源比较多,实际操作性不强。 矩阵键盘STC 1602LCD方案二:矩阵键盘由一组I/O口控制,使用两块74HC595芯片,实现串行输出,转换并行输出,节约了I/O口,提高了单片机的可操作性。通过在KEIL中用C语言编写HEX文件,控制1602液晶显
2、示屏。键盘单片机74HC595LCD二总体方案设计三理论分析和计算 根据原理图可知,P0.0P0.7口控制矩阵键盘,P1.0-P1.2作为第一块595芯片的输入,其中P1.0接入SH_CP,P1.1接入ST_CP,P1.2接入DS,其输出的Q4,Q5,Q6输出口分别控制LCD的RS,RW,E. P1.3-P1.5作为第二块595芯片的输入,其输出端Q0-Q7分别控制LCD的对应的数据口。 键盘扫描原理:先复位使行线输出口全为0,给高四位低电平,使其处于列线读取状态。然后判断低四位电平状况,如果没有键被按下,则表示没有键被按下,如果有键按下的话,行线和列线的交点处就会被导通,就会出现电平变化。
3、74HC595工作原理:595是串入并出带有锁存功能移位寄存器,Q0-Q7为并行数据输出;Q7-Q9为串行数据输出;MR 10 主复位(低电平);SHCP 11 移位寄存器时钟输入;STCP 12 存储寄存器时钟输入;OE 13 输出有效(低电平);DS 14 串行数据输入。四软硬件的系统设计 本实验只要检测LCD是否在在显示屏的第一行出现“Hello World”.在显示屏的第二行显示所按的键,并在数码管中显示相应位置。五测试 本实验最终测试结果实现了4*4矩阵键盘扫描,并实现了通过键盘控制在1602lcd和数码管上显示数字。在LCD显示屏的第一行出现“Hello World”.在显示屏的第
4、二行显示所按的键,并在数码管中显示相应位置。 六总结 1、通过本次实验,使本人初步掌握了通过C语言,实现单片机控制的基本操作,诸如流水灯,液晶显示控制,键盘扫描。知道了通过查阅PDF技术文档,解决实验中碰到的问题。 2、通过本次实验,提高了我们组的协同合作能力。 参考文献:1 EN_TC1602PDF,74HC595PDF2 51单片机C语言常用模块与综合系统设计实例精讲(第二版) 电子工业出版社附:#include#define uint unsigned int#define uchar unsigned charuchar code table2=0,1,2,3,4,5,6,7,8,9,
5、a,b,c,d,e;uchar code led=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;uchar code table=Hello World!;uchar code table3=The key is;uchar num,temp,key,num1,num2,num3;sbit sh_cp_1=P13;/sh-cp sbit st_cp_1=P14;/st-cpsbit DAT_1=P15;/DSsbit sh_cp_2=P10;/sh-cpsbit st_cp_2=P
6、11;/st-cp sbit DAT_2=P12;/DSvoid delay(unsigned char z)/延时程序 unsigned int x,y; for(x=z;x0;x-) for(y=110;y0;y-) ; void send_1(uchar a) /595给1602发数据 控制流水灯 uchar c; for(c=0;c8;c+) sh_cp_1=0; DAT_1=a&0x80; a=a1; sh_cp_1=1; st_cp_1=0; st_cp_1=1; void send_2(uchar a) / 595给1602发数据 控制数码管 uchar c; for(c=0;c
7、8;c+) sh_cp_2=0; DAT_2=a&0x80; a=a1; sh_cp_2=1; st_cp_2=0; st_cp_2=1;void shumaguan(uchar j,uchar i) /第1个选择送入的地址,0x01,0x02,0x03,0x04,第2个选择显示的数字uchar h;if(j=0x01) h=0x0e; else if(j=0x02)h=0x0d;else if(j=0x03)h=0x0b;else if(j=0x04)h=0x07;send_2(h);send_1(i);void write_cmd(unsigned char cmd)/1602显示控制 /
8、send_2(0xef);/rs=0; send_2(0x8f);/rw=0; delay(5); send_1(cmd);/P0=cmd; send_2(0xcf);/e=1; delay(5); send_2(0x8f);/e=0; void write_date(unsigned char date) /1602写数据 send_2(0x3f);/; rs=1; 0011 send_1(date);/ P0=date; delay(5); send_2(0xdf);/ e=1; 1101 delay(5); send_2(0x3f);/ e=0; 0011void init() /160
9、2初始化程序 send_2(0x3f);/e=0; write_cmd(0x38); write_cmd(0x0e); write_cmd(0x06); write_cmd(0x01); write_cmd(0x80); /第一个地址/*uchar key_scan() /键盘扫描uchar key,temp;/第一列P0=0xef;temp=P0;if(temp!=0xef)delay(5);if(temp!=0xef)switch(temp)case 0xee:key=1;break;case 0xed:key=2;break;case 0xeb:key=3;break;case 0xe7
10、:key=4;break;/第二列P0=0xdf;temp=P0;if(temp!=0xdf)delay(5);if(temp!=0xdf)switch(temp)case 0xde:key=5;break;case 0xdd:key=6;break;case 0xdb:key=7;break;case 0xd7:key=8;break;/第三列P0=0xbf;temp=P0;if(temp!=0xbf)delay(5);if(temp!=0xbf)switch(temp)case 0xbe:key=9;break;case 0xbd:key=10;break;case 0xbb:key=11
11、;break;case 0xb7:key=12;break;/第四列P0=0x7f;temp=P0;if(temp!=0x7f)delay(5);if(temp!=0x7f)switch(temp)case 0x7e:key=13;break;case 0x7d:key=14;break;case 0x7b:key=15;break;case 0x77:key=16;break;return(key);*/void key_scan_1() /按键判断一;P0=0xef;temp=P0;temp=temp&0x0f;while(temp!=0x0f)delay(5); temp=P0;temp
12、=temp&0x0f;while(temp!=0x0f)temp=P0;switch(temp)case 0xee:key=1;break;case 0xed:key=2;break;case 0xeb:key=3;break;case 0xe7:key=4;break;delay(5); while(temp!=0x0f)temp=P0;temp=temp&0x0f;void key_scan_2() /按键判断二;P0=0xdf; temp=P0;temp=temp&0x0f;while(temp!=0x0f)delay(5); temp=P0;temp=temp&0x0f;while(t
13、emp!=0x0f) temp=P0;switch(temp)case 0xde:key=5;break;case 0xdd:key=6;break;case 0xdb:key=7;break;case 0xd7:key=8;break;delay(5); while(temp!=0x0f)temp=P0;temp=temp&0x0f;void key_scan_3() /按键判断三;P0=0xbf; temp=P0;temp=temp&0x0f;while(temp!=0x0f)delay(5); temp=P0;temp=temp&0x0f;while(temp!=0x0f) temp=P
14、0;switch(temp)case 0xbe:key=9;break;case 0xbd:key=10;break;case 0xbb:key=11;break;case 0xb7:key=12;break;delay(5); while(temp!=0x0f)temp=P0;temp=temp&0x0f;void key_scan_4() /按键判断四;P0=0x7f; temp=P0;temp=temp&0x0f;while(temp!=0x0f)delay(5); temp=P0;temp=temp&0x0f;while(temp!=0x0f) temp=P0;switch(temp)
15、case 0x7e:key=13;break;case 0x7d:key=14;break;case 0x7b:key=15;break;case 0x77:key=16;break;delay(5); while(temp!=0x0f)temp=P0;temp=temp&0x0f;void display() for(num=0;num12;num+)write_date(tablenum);delay(20);write_cmd(0x80+0x40+0x04);for(num3=0;num310;num3+) write_date(table3num3); delay(20); void main() init(); disp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 英语视听说3学习通超星期末考试答案章节答案2024年
- 汽车电控技术学习通超星期末考试答案章节答案2024年
- 饭店服务日语学习通超星期末考试答案章节答案2024年
- 2024年社会治安综合治理知识竞赛试题库(附答案)
- 智能餐饮管理系统众筹方案
- 公共图书馆教室管理制度
- 拔火罐中医护理方案
- 公共场所疫情应急处置方案
- 电子产品质量检测与评估方案
- 城市老旧住宅租赁与买卖协议样本
- 马铃薯购销合同范本
- 第3章 一元一次方程(复习课件)-人教版初中数学七年级上册
- 雨污分流管网工程施工方案
- 横河CS3000工程师培训资料
- 江苏省苏州市振华中学2023-2024学年九年级上学期期中物理试卷
- 慢性阻塞性肺疾病急性加重临床路径
- 人教版小学数学一年级上册第七单元《认识钟表》教学课件
- 《活出最乐观的自己》
- 专题20 上海高考说明文阅读技巧点睛(解析版)
- 中小学教师评课评价量表
- 山语间 解读建筑分析
评论
0/150
提交评论