单片机原理独立按键识别单片机原理实验报告Word文档格式.docx

上传人:b****1 文档编号:14056813 上传时间:2022-10-17 格式:DOCX 页数:18 大小:332.66KB
下载 相关 举报
单片机原理独立按键识别单片机原理实验报告Word文档格式.docx_第1页
第1页 / 共18页
单片机原理独立按键识别单片机原理实验报告Word文档格式.docx_第2页
第2页 / 共18页
单片机原理独立按键识别单片机原理实验报告Word文档格式.docx_第3页
第3页 / 共18页
单片机原理独立按键识别单片机原理实验报告Word文档格式.docx_第4页
第4页 / 共18页
单片机原理独立按键识别单片机原理实验报告Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机原理独立按键识别单片机原理实验报告Word文档格式.docx

《单片机原理独立按键识别单片机原理实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理独立按键识别单片机原理实验报告Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

单片机原理独立按键识别单片机原理实验报告Word文档格式.docx

F0.6/AD6

F0.7/AD7

P2.2/A10

P2.3/A11

P2.4/A12

P2.5/A13

P2.6/A14

P2.7/A15

D4-ED-GREEN

12

参考原理图

实验目的:

1.掌握查询式按键的原理和编程方法

2.理解按键防抖技术

实验要求:

1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路

2.在电路中增加按键、Led灯、八位7段数码管(共阳/共阴自选),将P2口作数据输出口与7

段数码管数据引脚相连,P3引脚输出位选控制信号。

3.实现单按键控制Led灯闪烁

4.实现单按键多功能识别一一控制4路Led灯闪烁

5.实现0-99的计数器效果,按一下数值加一

6.实现0-99码表(按一次开始计时,第二次停止,第三次清零)

7.扩展要求:

通过3个按键实现时钟的调整(KEY1模式,KEY2+,KEY3-)

实验设备(环境):

计算机、ProteusISIS7Professional应用程序、Keil应用程序

实验内容:

1.实现单按键控制Led灯闪烁

2.实现单按键多功能识别一一控制4路Led灯闪烁

3.实现0-99的计数器效果,按一下数值加一

4.实现0-99码表(按一次开始计时,第二次停止,第三次清零)

5.扩展要求:

F3.0/RXD

F3.1/TXD

F3.2HNT0

R3.3』用L

F3.4/T0

F3.5/T1

P3.6/WR

P37/R旷

实验步骤、实验结果及分析:

1、使用ProteusISIS7Professional应用程序,建立一个.DSN文件

2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:

AT89C51、CAP

CAP-ELECCRYSTALRESPACK-8

3、构建仿真电路

4、创建一个Keil应用程序:

新建工程项目文件;

为工程选择目标器件(AT89C52);

为工程项目创建源程序文件并输入程序代码;

保存创建的源程序项目文件;

把源程序文件添加到项目中。

5、把程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件t文件路径)程序代码:

1.实现单按键控制Led灯闪烁

#include"

reg51.h"

#defineucharunsignedchar

sbitLed仁PUO;

sbitKey=P3A2;

ucharMode=0;

voiddelay(intx)//疋义时间间隔

{

while(x--);

}

voidbutton_Cotrol()//根据按键模式执行相应的代码

if(Key==0)

delay(1000);

Mode=(Mode+1)%2;

while(Key==0);

if(Mode==0)

Led1=0;

if(Mode==1)

Led1=~Led1;

delay(1000);

voidmain()

while

(1)

button_Cotrol();

E席rmiai:

:

l;

l^」」忆益电一

图1单按钮,控制led灯闪烁

sbitLed仁P1A0;

sbitLed2=P1A1;

sbitLed3=P1A2;

sbitLed4=P1A3;

voiddelay(intx)//定义时间间隔

delay(IOOO);

Mode=(Mode+1)%4;

Led4=0;

delay(3000);

Led2=~Led2;

if(Mode==2)

Led2=0;

Led3=~Led3;

delay(3000);

}if(Mode==3)

Led3=0;

Led4=~Led4;

Led1=0;

while

(1)button_Cotrol();

图2单按键多功能识别,控制4路Led灯闪烁

3.实现0-99的计数器效果,按一下数值加1

#definedisp_null10

ucharcodetab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//共阳数码管显示0~9的段码表

ucharDispBuf[8];

ucharsec=0;

voidPutTime()

DispBuf[7]=sec%10;

DispBuf[6]=sec/10;

DispBuf[5]=disp_null;

DispBuf[4]=disp_null;

DispBuf[3]=disp_null;

DispBuf[2]=disp_null;

DispBuf[1]=disp_nuII;

DispBuf[0]=disp_null;

voiddisplay()

uchari;

for(i=0;

i<

8;

i++)

P2=0;

P2=1<

<

i;

PO=tab[DispBuf[i]];

delay(100);

voidButton_Control()

sec++;

while

(1)

display。

PutTime();

Button_Control();

}

图30-99的计数器效果,按一下数值加1

#include"

#defineucharunsignedchar#definedisp_null10sbitKey=P3A2;

II共阳数码管显示0~9的段码表

uchartemp=30;

ucharMode=2;

voiddelay(intx)II定义时间间隔{

delay(1OO);

voidtime_Eclipse()

{temp--;

if(temp==0)

temp=30;

}if(sec>

99)sec=0;

if(Key==O)

{Mode=(Mode+1)%3;

while(Key==O);

}if(Mode==0)sec=O;

if(Mode==1)time_Eclipse();

if(Mode==2);

display();

图40-99码表,按一次开始计时,第二次停止

图50-99码,按表第三次清零

通过3个按键实现时钟的调整

ucharcodetab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};

//共阳数码管显示0~9的段码表

uchardispBuf[8];

ucharhour=13,min=23,sec=25;

//分别给时、分、秒赋初值

sbitkey仁P3A2;

sbitkey2=P3A3;

sbitkey3=P3A4;

dispBuf[7]=sec%10;

dispBuf[6]=sec/10;

dispBuf[5]=disp_null;

dispBuf[4]=min%10;

dispBuf[3]=min/10;

dispBuf[2]=disp_null;

dispBuf[1]=hour%10;

dispBuf[0]=hour/10;

ucharScanKey()

if(key1==0)return'

1'

;

if(key2==0)return'

+'

if(key3==0)return'

-'

return0;

ucharReadKey()

uchartmp;

tmp=ScanKey();

if(tmp==0)return0;

delay(1

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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