当前位置:    首页  虚拟仿真实验平台
键盘及LED显示实验
发布部门:  发布时间: 2017-07-25  浏览次数: 196

实验项目名称:

键盘及LED显示实验

项目介绍:

课程性质及背景:

本课程是测控技术与仪器专业的主干专业课,是一门实践性、应用性较强的课程。通过介绍智能仪器的特点、技术标准、发展概况、基本构成和先进控制技术,使学生掌握智能仪器的分析、设计、控制及选型等工作所需基本知识和技术。

实验课程特点及必要性:

实验教学是本课程的重要环节,是课堂教学的加强与提高,要充分重视学生综合能力的培养,利用实验结果和数据,分析系统的性质,提高学生的设计能力和解决实际问题能力。

项目目的:

1)掌握键盘和显示器的接口方法和编程方法;

2)掌握键盘扫描和LED显示器的工作原理。

面向理论课程:

智能仪器仪表设计

面向专业:

测控技术与仪器、车辆

仪器硬件设备及软件环境:

1)Proteus仿真软件1套;

2)Keil C51编程软件1套;

3)PC机1台;

实验项目功能及效果:

实验内容或任务:

利用Proteus环境,绘制4X4键盘扫描电路和LED显示电路,做一个扫描键盘和键值数码显示实验,把按键输入的键码值在数码管上显示出来。

实验效果:

1)打开Proteus绘制电路图

2)打开Keil C51建立工程,参数设置

3)编辑源程序

4)运行和调试程序

键盘及LED显示实验C源程序

#include <regx52.h>

#define uchar unsigned char

#define uint unsigned int

//段码

uchar code DSY_CODE[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x00};

sbit BEEP=P3^7;

//上次按键和当前按键的序号,该矩阵中序号范围 0~15,16表示无按键

uchar Pre_KeyNo=16,KeyNo=16;

//延时

void DelayMS(uint x)

{

uchar i;

while(x--)

for(i=0;i<120;i++);

}  

//矩阵键盘扫描

void Keys_Scan()

{

uchar Tmp;

P0=0xf0; //低4位置0

DelayMS(1);

Tmp=P0>>4^0x0f;//按键后0f变成0000XXXX,X中一个为0,3个仍为1,通过异或把3个1变为0,唯0变为1

switch(Tmp)//判断按键发生于 0~3 列

{

case 1: KeyNo=0;break;

case 2: KeyNo=1;break;

case 4: KeyNo=2;break;

case 8: KeyNo=3;break;

default:KeyNo=16; //无键按下  

}

P0=0x0f;   //高4位置0

DelayMS(1);

Tmp=P0^0x0f;//按键后f0变成XXXX0000,X中有1个为0,三个仍为1;高4位转移到低4位并异或得到改变的值

switch(Tmp)//对0~3 列分别附加起始值 0,4,8,12

{

case 1: KeyNo+=0;break;

case 2: KeyNo+=4;break;

case 4: KeyNo+=8;break;

case 8: KeyNo+=12;break;

default:KeyNo=16; //无键按下

}

}

//蜂鸣器

void Beep()

{

uchar i;

for(i=0;i<100;i++)

{

DelayMS(1);

BEEP=~BEEP;

}

BEEP=0;

}

//主程序

void main()

{

P1=0x00;

BEEP=0;

while(1)

{

P0=0xf0;

if(P0!=0xf0) Keys_Scan();  //获取键序号

if(Pre_KeyNo!=KeyNo)

{

P1=DSY_CODE[KeyNo];

Beep();

Pre_KeyNo=KeyNo;

}

DelayMS(100);

}


备注

要求学生有C语言编程能力



联系方式 网站地图 留言板
李立伟设计
地址:郑州市东风路5号郑州轻工业学院机电工程学院    邮编:450002    电话:0371-63556785