单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx

上传人:b****2 文档编号:15379369 上传时间:2022-10-29 格式:DOCX 页数:8 大小:270.31KB
下载 相关 举报
单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx_第1页
第1页 / 共8页
单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx_第2页
第2页 / 共8页
单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx_第3页
第3页 / 共8页
单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx_第4页
第4页 / 共8页
单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx

《单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。

单片机原理及应用实验六按键识别数码管显示实验Word文档格式.docx

名:

吴限

 

评语:

(1)电路连接调试:

□正确

□基本正确

□不正确

(2)实验程序编写:

(3)数据测量分析:

□准确

□基本准确

□不准确

1、实验内容或题目

1)题目:

按键识别数码管显示实验

2)实验内容:

数码管显示矩阵按键号。

2、实验目的与要求

1)实验目的:

掌握按键识别及数码管显示的实现方法。

2)实验要求:

通过XL2000的16位矩阵按键,在数码管上分别显示0~9,A,B,C,D,E,F。

用Keil

编译、Proteus仿真,代码下载到单片机实验箱上验证。

3、实验仪器

(1)pc微机

(2)实验箱

4、实验程序流程图

5、实验程序

(实验程序清单作为附件放在最后)

6、实验步骤

f

结束

L」

1)keil中C语言程序实现。

2)在proteus中完成电路图设计,并实现仿真

3)硬件实验部分:

用一条8PIN数据排线,把矩阵按键部份的JP50,接到CPU部份的P1口JP44;

接8位数码管的数据线。

将数码管部份的数据口JP5接到CPU部份的P0口

JP51;

接8位数码管的显示位线。

将数码管部份的显示位口JP8接到CPU部份

的P2口JP52.

7、实验数据及结果

&

思考题

采用P3口控制矩阵按键输入,程序应该如何修改

答:

本实验的程序中可以不用蜂鸣器驱动线,把以下程序的sbitBEEP=P3A7;

及函数voidbeep()

等删掉后;

需要把扫描键值的函数改一下:

unsignedcharkeyscan()

{

unsignedcharscan1,scan2,keycodej;

P13=OxfO;

scan1=P3;

if(scan1!

=0xf0)〃判键是否按下

delayms(10);

scan1=P3;

=0xf0)〃二次判键是否按下

P1=0x0f;

scan2=P3;

keycode=scanl|scan2;

组合成键扫描编码

for(j=0;

j<

16;

j++)

if(keycode==key_code[j])〃查表得键值

key=j;

return(key);

//返回有效键值

}

else

P3=Oxff;

return(key=16);

〃返回无效码

}即P1口换成P3口,而键编码数组是固定的,可以不变;

此外主函数中的P1口也要改为P3口:

voidmain(void)

P0=0xf7;

//数码管初始显示"

-"

P2=0xfd;

//数码管显示在第二位

P3=0xff;

while

(1)

keyscan();

if(key<

16)//有效键值

P0=disp_code[key];

〃显示键值

<

附件>

实验程序清单

#inelude<

>

#include<

sbitBEEP=P3A7;

〃蜂鸣器驱动线

unsignedcharkey;

unsignedcharcodedisp_code[]=

0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,

0x90,0x88,0x83,0xc6,

0xc0,0x86,0x8e,0xc0};

unsignedcharcodekey_code[]=

Oxee,Oxed,Oxeb,0xe7,Oxde,Oxdd,Oxdb,0xd7,Oxbe,Oxbd,Oxbb,

0xb7,Ox7e,Ox7d,Ox7b,Ox77〃键编码数组

};

charcodeSST516[3]_at_OxOO3b;

〃保留仿真器

延时子函数

**************

*/

voiddelayms(unsignedintms){

unsignedchart;

while(ms--)

for(t=0;

t<

114;

t++);

voiddelayus(unsignedcharx){

unsignedchari;

while(x--)

for(i=0;

i<

14;

i++)

{;

蜂鸣器驱动子函数

voidbeep()

250;

delayus(6);

BEEP=!

BEEP;

//BEEP取反

BEEP=1;

delayms(150);

〃关闭蜂鸣器

//延时

键盘扫描子函数

unsignedcharkeyscan()

unsignedcharscan1,scan2,keycode,j;

P1=OxfO;

scan1=P1;

//延时10ms

sean1=P1;

P1=OxOf;

scan2=P1;

for(j=0;

if(keycode==key_code[j])//查表得键值

P1=0xff;

^主函^数***********************

voidmain(void){

〃数码管显示在第二位

P1=Oxff;

16)//有效键值

beep();

〃蜂鸣器响一声

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

当前位置:首页 > 医药卫生 > 基础医学

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

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