键盘输入与数码管显示实验(共11页)_第1页
键盘输入与数码管显示实验(共11页)_第2页
键盘输入与数码管显示实验(共11页)_第3页
键盘输入与数码管显示实验(共11页)_第4页
键盘输入与数码管显示实验(共11页)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上班级 学号 姓名 实验组别 实验日期 室温 报告日期 成绩 报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验名称:实验5键盘输入与数码管显示实验一、 实验目的学习键盘工作原理,掌握数据输入输出的方法。 二、 实验内容及原理矩阵键盘扫描原理:由处理器通过行线给某一行按键送入低电平信号,按键在未使用的情况下列线上拉高电平信号,处理器对行线输出相连的I/O口进行扫描,当扫描到低电平信号时证明对应的键被按下。本实验中采用的是2*8键盘,为了减少对处理器芯片I/O接口的直接引用,实验中使用了一片74HC595(U6)用来实验数据串并转换

2、。三、实验原理图四、实验步骤1. 实验连线74HC595(U6)时钟控制端接LPC2103总线接口模块的P0.19,数据输入端接总线接口模块的P0.20,选通端接总线接口模块的P0.21。数据输出端接按键行扫描输入端。按键8根行线接74HC595的数据输出端,2根列线分别接LPC2103总线接口模块的P0.17,P0.18.同时在列线上接入+3.3V电源和上拉电阻以确保在没有信号输入的情况下列线给处理器送入的是高电平信号。2仿真器的设置:一般选用JTAG调试,若使用RelInFlash生成目标时,编译连接生成的目标代码会将芯片加密。此时调试无法继续,须将硬件调成ISP模式进行全片擦除。3. 运

3、行程序:keytest.hex4. 接通电源,按下按键并观察实验板上数码管的变化。五、流程图六、实验程序#include "config.h"#include "Num show.h"#include "key.h"#define SPI_IOCON 0xd0/0xd0/SPI接口的设置字/* 名称:main()* 功能:数据送入数码管显示*/int main(void) uint8 key_val=0,dis; uint8 str8=0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00; PINSEL0=0

4、x;/设置所有引脚连接GPIO PINSEL1=0x; IODIR=SPI_IOCON; /设置LED为输出其他为输入 /Num_show(str); while(1) key_val=get_key(); /取键值 if(key_val<16) dis = key_val; if(dis<10) str7=dis;str6=0;elsestr6=1;str7=dis%10;/for(m=0;m<10;m+) /延时显示键值 Num_show(str); /显示改变后的数值 return (0);#include "config.h"#define SPI

5、_CS 0x/P0.8#define SPI_CS1 1<<11/P0.11#define SPI_DATA 0x/P0.6#define SPI_DATA1 0x/P0.7#define SPI_CLK 1<<4/P0.4/* 名称:DelayNS()* 功能:长软件延时* 入口参数:参数越大延时越久* 出口参数:无*/void DelayNS(uint32 dly) uint32 i; for(;dly>0;dly-) for(i=0;i<5000;i+);/* 名称:HC595_SendDat()* 功能:向74HC595发送一个字节的数据* 入口参数

6、:data要发送的数据* 出口参数:无* 说明:高位数据先发送*/void HC595_SendDat(uint8 dat) uint8 i; IOCLR = SPI_CS;/SPI_CS=0 for(i=0;i<8;i+)/发送8位数据 IOCLR = SPI_CLK;/SPI_CLK=0 if(dat&0x80)!=0) IOSET = SPI_DATA; else IOCLR = SPI_DATA; dat<<=1; IOSET = SPI_CLK; /SPI_CLK=1 IOSET = SPI_CS; /SPI_CS=1,输出显示数据void HC595_Se

7、ndDat1(uint8 dat) uint8 i; IOCLR = SPI_CS1;/SPI_CS=0 for(i=0;i<8;i+)/发送8位数据 IOCLR = SPI_CLK;/SPI_CLK=0 if(dat&0x80)!=0) IOSET = SPI_DATA1; else IOCLR = SPI_DATA1; dat<<=1; IOSET = SPI_CLK; /SPI_CLK=1 IOSET = SPI_CS1; /SPI_CS=1,输出显示数据/* 名称:Num_show()* 功能:显示收到的数据* 入口参数:str,要显示的数据*/int Num

8、_show(uint8 str) const uint8 DISP_TAB18 = 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80; const uint8 DISP_TAB = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; /0-f 暗 亮 G P U r - uint8 i; / while(1) for(i=0;i<8;i+) HC595_SendDat(DISP_TABstri); HC595_SendDat1(DISP_TAB1i)

9、; DelayNS(1); HC595_SendDat(0xff); HC595_SendDat1(DISP_TAB1i); return(0);#include "config.h"#include "Num show.h"#define SPI_CS2 1<<21/P0.21#define SPI_DATA2 1<<20/P0.20#define SPI_CLK2 1<<19/P0.19#define KEY1 1<<17/ P0.17#define KEY2 1<<18/ P0.18 /*

10、 名称:HC595_SendDat2()* 功能:向74HC595发送一个字节的数据* 入口参数:data要发送的数据* 出口参数:无* 说明:高位数据先发送*/void HC595_SendDat2(uint8 dat) uint8 i; IOCLR = SPI_CS2;/SPI_CS2=0 for(i=0;i<8;i+)/发送8位数据 IOCLR = SPI_CLK2;/SPI_CLK2=0 if(dat&0x80)!=0) IOSET = SPI_DATA2; else IOCLR = SPI_DATA2; dat<<=1; IOSET = SPI_CLK2;

11、/SPI_CLK2=1 IOSET = SPI_CS2; /SPI_CS2=1,输出显示数据/* 名称:get_key()* 功能:按下按键取数值* 入口参数:无* 出口参数:键值* 说明:高位数据先发送*/uint8 get_key(void)uint8 key_value=16,i,j;uint8 k18=0,1,2,3,4,5,6,7;uint8 k28=8,9,10,11,12,13,14,15;const uint8 DISP_TAB28 = 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F; for(i=0;i<8;i+) HC595_SendDat2(DISP_TAB2i);/扫描 if(IOPIN&KEY1)=0) DelayNS(10); if(IOPIN&KEY1)=0) while(IOPIN&KEY1)=0); key_value=k1i; break; if(key_value=16)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论