- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
1
单片机原理及应用随堂实验报告
学院计算机与电子信息学院专业电子信息工程班级电信11-1班
姓名··坚学号11034030132
指导教师左敬龙
实验报告评分:
2
一、实验原理及电路
实验原理:在电路图中,单片机AT89C51的P1口接有一按键矩阵,P0和P2口接15个灯,P3口接一个led数码显示管。刚开始时,电路处于扫描按键是否被按下的状态。当有某个按键被按下时,在键盘扫描函数的作用下,会有一小段消抖动的时间。当确定没抖动情况下,程序就会查找出是哪个按键被按下了。之后就会执行按键功能函数。
以下是按键扫描函数(包括消抖动程序)和按键功能函数:
按键扫描函数
ucharrdkeyO
ucharscan1,scan2,keycode,j;
P1=0x0f;
scan1=P1:
if((scan10x0f)!=0x0f)
delayms(30);
scan1=P1:
if((scan10x0f)!=0x0f)
P1=0xf0;
scan2=P1:
keycode=scan1|scan2;
for(j=0;j=15;j++)
按键功能函数
ucharj:
voidk(ucharn)
{P3=tab[n];
if(n=8)
{
for(i=0;i=8;i++)
{P2=led[i];PO=0x00;
delayms(100);
}}
else{
for(i=0;i=n;i++)
{
PO=led[i];P2=0xff;delayms(100);
if(keycode==key_code[j])
key=j;
return(key);
elseP1=0xff:
return(16);}
按键扫描函数是通过首先检查行(给P1赋值为0x0f,再将P1赋给变量scan1,用0x0f与scan1相与,可检查出第几行的按键被按下),再检查列的方法(将P1赋值为0xf0,再将P1赋给scan2,此时被按下键的那一列的值会变为0),然后再将两次检查的数按位或,最后将按位或后的那个数与组合键编码对比组合键编码,找出被按下的按键数,返回按键值。
按键功能函数是当第n号按键按下时,连接在P3的显示器显示n,同时连接在PO,P2上的灯会从第0个开始,逐一亮到第n个。由于用到两个I/0口,所以当按
键号数大于8时,程序应该将PO口赋值为0x00(共阳极)。
实验电路图如下(此时被按下的按键是六号按键,即第7个按键):
4
LBL4
U1
19TALI
18XTAL2
9
RST
FsEW
畿
1
28
48
8
P10
PI
P1.2
P1.3
P1.4
P1.6
P17
A79ch
P0/ADO
P0.1/AD1P02/ADQ
P0.3/ADSP0.4/AD4P0.5/AD5P0.6/ADPD,7/AD7
P2.0/48P2.,1/A0
P2.2/A10
P23/AII
P2.41A12
P2、51A13P2.N/A14P2.7/A15
P3D/RXD
P3.2/Nm
P3.3INTP3.4/T0
P3.6R
P3,7/RO
*39
38
37
36
K36
34
#33
882
1
222
23
24
025
027
028
m?0
12V12V
L5
V
前
tV断
12NE
12N
i2V12V
口
12V
日
1V
ET
cn
12VTE
4
二、实验程序框图
定义头文件
定义变量key,定义
组合键编码,段码
值,灯状态值
定义按键功能函数,当第n
号按键按下时,连接在P3的
显示器显示n,同时连接在
P0,P2上的灯会从第0个开
始逐一亮到第n个灯
定义一个键盘扫描函数
定义变量scan1,
scan2,keycode,j,
并将0x0f赋给P1,将
P1赋给scan1
N(scan10x0f)!=
N
OxOf
Y
scan1=
P1
N(scan10x0f)!=0
N
xOf
Y
P1=0xf0;
scan2=P1;
keycode=
scan||scan2:
查组合键键值,算出键
值并返回键值
if(keycode==
key_code[j])
key=j;
return(key);
主函数,等待按
键被按下
P1=0xOf
您可能关注的文档
- 会展政策与法规(第三版)教学课件ppt(完整版).pptx
- 森林植物检疫隔离试种苗圃建设项目初步设计.docx
- 第四章 挖掘机械.pptx
- 项目尽职调查表.docx
- 中式面点师国家职业技能标准(2018年版)(word完整精排版).docx
- 2024党风廉政建设工作计划(最新版).docx
- 网络会计对传统会计的冲击(实用应用文).docx
- 蒙古国学前教育发展的历史与现状研究.docx
- 租场所计划书.docx
- 课件:广东台山培训(余暑东).pptx
- 国开景区管理作业2试题及答案.pdf
- 国开景区管理作业1-4试题及答案.pdf
- 河南开放大学本科《地域文化(本)》作业练习1-3试题及答案.pdf
- 2024年大型游乐设施操作证考试题库及答案很全.pdf
- 2024年门座式起重机司机考试题库及答案.pdf
- 2022-2023学年河北省衡水市武强中学高二(下)期末数学试卷【答案版】.docx
- 2022-2023学年河北省保定市崇德实验中学高二(下)期末数学试卷【答案版】.docx
- 江西省2017年中小学教师招聘考试高中化学试卷及答案.docx
- 2024年河北省八年级中考生物真题(解析版).docx
- 2024年南阳市社会保险中心(唐河县企业养老保险分中心)(参公)一级科员招录1人《行政职业能力测验》高频考点、难点(答案详解版).docx
文档评论(0)