- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
任务要求:
·单片机与4个独立按键k1~k4及8个LED指示灯的一个独立式键盘。4个按键接在P1.0~P1.3引脚,P3口接8个LED指示灯,控制LED指示灯亮与灭。
·按下k1键,P3口8个LED正向(由上至下)流水点亮;
·按下k2键,P3口8个LED反向(由下而上)流水点亮;
·按下k3键,高、低4个LED交替点亮;
·按下k4键,P3口8个LED闪烁点亮。
任务4--按键控制LED灯的多种闪烁样式
分析:
1.首先判断是否有按键按下。将接有4个按键的P1口低4位(P1.0~P1.3)写入“1”,使P1口低4位为输入状态。然后读入低4位的电平,只要有一位不为“1”,则说明有键按下;
2.按键去抖动。当判别有键按下时,调用软件延时子程序,延时约10ms后再进行判别,若按键确实按下,则执行相应的按键功能,否则重新开始进行扫描;
3.获得键值。确认有键按下时,可采用扫描方法,来判哪个键按下,并获取键值。
4.实现四个函数,分别实现四种不同的LED显示形式;
5.使用switchcase语句实现按键的分支控制,每个分支调用一个函数。
#includereg52.h
sbitKEY=P3^3;//定义按键输入端口
sbitLED=P1^2;//定义led输出端口
pelay10Ms();//函数声明
voidmain(void)
|{
KEY=1;
while(1)
{
if(!KEY)//如果检测到低电平,说明按键按下
{
Delayl0Ms();//延时去抖,一般10-20ms
if(!KEY)//再次确认按键是否按下,没有按下则退出
{
while(!KEY);//如果按键没有释放则一直等待{
LED=!LED;//释放则执行需要的程序
}
}
//其它操作
代码的可读性非常重要,在该源程序中,有一处代码写的很容易引发理解错误,你认为是哪个地
方,应该怎样修改?
开始
按键按下?
真
调用延时
去抖
再次检测按键按下?
假
真
取反LED
P1=0xff;
if((P10x0f)!=0x0f)
{
(ly1)();
keyval=1;
if(S2==0)
keyval=2;
if(S3==0)
keyval=3;
if(S4==0)
keyval=4;
}
//检测到有键按下
//延时10ms再去检测//按键k1被按下
//按键k2被按下
//按键k3被按下
//按键k4被按下
S
a
if
de
voidled_delay(void)
{
d;;ii+,);
for(j=0;j220;j++)
//流水灯延时函数
0
r
0
e
(
i
r
s
fo
un
//包含51单片机寄存器定义的头文件
//将S1位定义为P1.0引脚
//将S2位定义为P1.1引脚
//将S3位定义为P1.2引脚
//将S4位定义为P1.3引脚
keyval;//定义键值储存变量单元
voiddelay10ms(void){
unsignedchari,j;for(i=0;i100;i++)
for(j=0;j100;j++)
;
}
//独立式键盘
#includereg51.h
sbitS1=P1^0;
sbitS2=P1^1;
sbitS3=P1^2;sbitS4=P1^3;unsignedchar
key_scan(void)//键盘扫描函数
//软件消抖延时函数
void
{
voidforward(void
)
//正向流水点亮LED函数
{
P3=0xfe;
//LED0亮
led_delay();
P3=0xfd;
//LED1亮
led_delay();
P3=0xfb;
//LED2亮
led_delay();
P3=0xf7;
//LED3亮
led_delay();
P3=0xef;
//LED4亮
led_delay();
P3=0xdf;
//LED5亮
led_delay();
P3=0xbf;
//LED6亮
led_delay();
P3=0x7f;
led_delay();
//LED7亮
}
voidAlter(void)
P3=0x0f;
led_dela
您可能关注的文档
- 学习情境1单片机控制LED彩灯的亮灭-项目2-7C语言基础知识9-for循环.pptx
- 学习情境2单片机控制数码管的显示-项目1-1知识准备.pptx
- 学习情境2单片机控制数码管的显示-项目2-1知识准备.pptx
- 学习情境2单片机控制数码管的显示-项目2-2数码管计数操作.pptx
- 学习情境2单片机控制数码管的显示-项目2-3知识扩展作.pptx
- 学习情境3交通灯控制系统的制作-项目1-1知识准备.pptx
- 学习情境3交通灯控制系统的制作-项目1-2知识扩展.pptx
- 学习情境3交通灯控制系统的制作-项目2-1知识准备.pptx
- 学习情境3交通灯控制系统的制作-项目2-2知识扩展作.pptx
- 学习情境3交通灯控制系统的制作-项目3-1知识准备.pptx
- 中考语文总复习语文知识及应用专题5仿写修辞含句子理解市赛课公开课一等奖省课获奖课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第二课《藏猫猫》精品课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第三课《我向国旗敬个礼》精品课件.pptx
- 高中生物第四章生物的变异本章知识体系构建全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 整数指数幂市公开课一等奖省赛课微课金奖课件.pptx
- 一年级音乐上册第二单元你早全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级数学上册第二章实数27二次根式第四课时习题省公开课一等奖新课获奖课件.pptx
- 九年级物理全册11简单电路习题全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级语文下册第五单元19邹忌讽齐王纳谏省公开课一等奖新课获奖课件.pptx
- 2024年秋季新人教PEP版3年级上册英语全册教学课件 (2).pptx
最近下载
- 18全国生物奥林匹克竞赛试题及答案.pdf VIP
- 导游员的职业素质.ppt VIP
- 高考中立体几何问题的热点题型.pptx
- 大班美术《青花瓷盘》.pptx VIP
- 2025年山东力明科技职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 钢铁冶金概论全套课件.ppt
- 2024年宁夏银川中考物理试题及答案.doc VIP
- 人教(2024)新教材下册(教学计划)- 七年级地理下册(人教版2024).docx
- 辽宁省丹东七中七年级英语下册《Unit 10 Where did you go on vacation》教案 人教新目标版.doc VIP
- 智能建造体系机器人介绍.pptx
文档评论(0)