实验5键盘输入与数码管显示实验Word格式.docx

上传人:b****6 文档编号:21216136 上传时间:2023-01-28 格式:DOCX 页数:10 大小:81.96KB
下载 相关 举报
实验5键盘输入与数码管显示实验Word格式.docx_第1页
第1页 / 共10页
实验5键盘输入与数码管显示实验Word格式.docx_第2页
第2页 / 共10页
实验5键盘输入与数码管显示实验Word格式.docx_第3页
第3页 / 共10页
实验5键盘输入与数码管显示实验Word格式.docx_第4页
第4页 / 共10页
实验5键盘输入与数码管显示实验Word格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

实验5键盘输入与数码管显示实验Word格式.docx

《实验5键盘输入与数码管显示实验Word格式.docx》由会员分享,可在线阅读,更多相关《实验5键盘输入与数码管显示实验Word格式.docx(10页珍藏版)》请在冰豆网上搜索。

实验5键盘输入与数码管显示实验Word格式.docx

按键8根行线接74HC595的数据输出端,2根列线分别接LPC2103总线接口模块的P0.17,P0.18.同时在列线上接入+3.3V电源和上拉电阻以确保在没有信号输入的情况下列线给处理器送入的是高电平信号。

2.仿真器的设置:

一般选用JTAG调试,若使用RelInFlash生成目标时,编译连接生成的目标代码会将芯片加密。

此时调试无法继续,须将硬件调成ISP模式进行全片擦除。

3.运行程序:

keytest.hex

4.接通电源,按下按键并观察实验板上数码管的变化。

五、流程图

六、实验程序

#include"

config.h"

Numshow.h"

key.h"

#defineSPI_IOCON0x003809d0//0x000003d0//SPI接口的IO设置字

/****************************************************************************

*名称:

main()

*功能:

数据送入数码管显示

****************************************************************************/

intmain(void)

{

uint8key_val=0,dis;

uint8str[8]={0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

PINSEL0=0x00000000;

//设置所有引脚连接GPIO

PINSEL1=0x00000000;

IODIR=SPI_IOCON;

//设置LED为输出其他为输入

//Num_show(str);

while

(1)

{

key_val=get_key();

//取键值

if(key_val<

16)

{

dis=key_val;

if(dis<

10)

str[7]=dis;

str[6]=0;

}

else

str[6]=1;

str[7]=dis%10;

}

//for(m=0;

m<

10;

m++)//延时显示键值

}

Num_show(str);

//显示改变后的数值

return(0);

}

#defineSPI_CS0x00000100//P0.8

#defineSPI_CS11<

<

11//P0.11

#defineSPI_DATA0x00000040//P0.6

#defineSPI_DATA10x00000080//P0.7

#defineSPI_CLK1<

4//P0.4

DelayNS()

长软件延时

*入口参数:

dly 参数越大延时越久

*出口参数:

voidDelayNS(uint32dly)

uint32i;

for(;

dly>

0;

dly--)

for(i=0;

i<

5000;

i++);

HC595_SendDat()

向74HC595发送一个字节的数据

data 要发送的数据

*说明:

高位数据先发送

voidHC595_SendDat(uint8dat)

uint8i;

IOCLR=SPI_CS;

//SPI_CS=0

8;

i++)//发送8位数据

IOCLR=SPI_CLK;

//SPI_CLK=0

if((dat&

0x80)!

=0)IOSET=SPI_DATA;

elseIOCLR=SPI_DATA;

dat<

=1;

IOSET=SPI_CLK;

//SPI_CLK=1

IOSET=SPI_CS;

//SPI_CS=1,输出显示数据

voidHC595_SendDat1(uint8dat)

IOCLR=SPI_CS1;

{

=0)IOSET=SPI_DATA1;

elseIOCLR=SPI_DATA1;

IOSET=SPI_CS1;

Num_show()

显示收到的数据

str[],要显示的数据

intNum_show(uint8str[])

constuint8DISP_TAB1[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80};

constuint8DISP_TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

//0--f暗亮GPUr-

//while

(1)

i++)

HC595_SendDat(DISP_TAB[str[i]]);

HC595_SendDat1(DISP_TAB1[i]);

DelayNS

(1);

HC595_SendDat(0xff);

}

return(0);

#defineSPI_CS21<

21//P0.21

#defineSPI_DATA21<

20//P0.20

#defineSPI_CLK21<

19//P0.19

#defineKEY11<

17//P0.17

#defineKEY21<

18//P0.18

HC595_SendDat2()

voidHC595_SendDat2(uint8dat)

IOCLR=SPI_CS2;

//SPI_CS2=0

IOCLR=SPI_CLK2;

//SPI_CLK2=0

=0)IOSET=SPI_DATA2;

elseIOCLR=SPI_DATA2;

IOSET=SPI_CLK2;

//SPI_CLK2=1

IOSET=SPI_CS2;

//SPI_CS2=1,输出显示数据

get_key()

按下按键取数值

键值

uint8get_key(void)

uint8key_value=16,i,j;

uint8k1[8]={0,1,2,3,4,5,6,7};

uint8k2[8]={8,9,10,11,12,13,14,15};

constuint8DISP_TAB2[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

for(i=0;

HC595_SendDat2(DISP_TAB2[i]);

//扫描

if((IOPIN&

KEY1)==0)

{DelayNS(10);

if((IOPIN&

{while((IOPIN&

KEY1)==0);

key_value=k1[i];

break;

if(key_value==16)

for(j=0;

j<

j++)

HC595_SendDat2(DISP_TAB2[j]);

KEY2)==0)

{

while((IOPIN&

KEY2)==0);

key_value=k2[j];

break;

}

returnkey_value;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1