宁德师范学院计算机系
实验报告
课程名称 单片机原理
实验名称 独立按键识别
专 业 计算机科学与技术(软工)
年 级
指导教师
实验日期
实验目的与要求:
目的:
1. 掌握查询式按键的原理和编程方法
2. 理解按键防抖技术
要求:
1. 在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路
2. 在电路中增加7段数码管(共阳/共阴自选)将P口作数据输出口与7段数码管数据引脚相连 ,P引脚输出选控制信号
3. 实现单按键控制Led灯闪烁
4. 实现单按键多功能识别——控制4路Led灯闪烁
5. 实现0-99的计数器效果,按一下数值加一
6. 实现0-99码表 ( 按一次开始计时,第二次停止,第三次清零 )
7. 扩展要求: 通过3个按键实现时钟的调整 ( KEY1 模式 , KEY2 + ,KEY3 - )
实验设备(环境):
计算机
Proteus ISIS 7 Professional应用程序
Keil应用程序
实验内容:
按键识别 要求实现:
实现单按键控制Led灯闪烁
2. 实现单按键多功能识别——控制4路Led灯闪烁
3. 实现0-99的计数器效果,按一下数值加一
4. 实现0-99码表 ( 按一次开始计时,第二次停止,第三次清零 )
扩展要求: 通过3个按键实现时钟的调整 ( KEY1 模式 , KEY2 + ,KEY3 - )
参考原理图
实验步骤、实验结果及分析:
1 实验步骤:
1、使用Proteus ISIS 7 Professional应用程序,建立一个.DSN文件
2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、CAP、CAP-ELEC、CRYSTAL、RESPACK-8。
3、构建仿真电路
4、创建一个Keil应用程序:新建一个工程项目文件;为工程选择目标器件(AT89C52);为工程项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。
5、把用户程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件→文件路径)
2 实验程序
(1)按键识别 ( 按下LED灯亮,再按灭)
#include
#define uint unsigned int
#define uchar unsigned char
sbit led=P2^6;
sbit key=P2^7;
void delay(uint x)
{
while(x--);
}
void main()
{
while (1)
{
if(key==0)
{
delay(1000);
if(key==0)
{
led=~led;
while(key==0);
}
}
}
}
(2)按键识别 ( 按下灭,再按闪)
#include
#define uint unsigned int
#define uchar unsigned char
sbit led=P2^6;
sbit key=P2^7;
void delay(uint x)
{
while(x--);
}
void main()
{
uint i,j;
while (1)
{ led=1;
if(key==0)
{
delay(1000);
if(key==0)
{
i++;
j=i%2;
while(key==0);
}
}
switch(j)
{
case 0 : led=0;break;
case 1 : led=~led;delay(100);break;
default:break;
}
}
}
(3)按键识别 ( 按下数码管数值加1)
#include
#define uint unsigned int
#define uchar unsigned char
uchar code LedCode[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar