《单片机应用技术》实训任务书03.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、实现按键控制小灯 有了按键结构及其工作原理的理论知识,下面来具体实现按键控制小灯,其实现过程如下。 1.硬件电路 按照图3-5所示搭建电路。 图3-5 一个LED控制电路 注意 图3-5中省略了一些辅助电路包括电源电路、晶振电路、程序下载电路和复位电路等。要想实现完整的功能这些电路是必不可少的,但为了理解方便这里略去了。在P1.0接了一个发光二极管和一个限流电阻,在P3.0接了一个带上拉电阻的按键。 2.程序设计 单片机的编程或者说大多数嵌入式系统的编程主要有两种方式:一种是中断的方式;另一种是查询的方式。对于图3-5所示的电路,因为没有连接到中断相关的引脚或与其建立联系,所以应该先应用查询的方式来编写相应的程序,P3.0端口最初的状态为高电平,当有按键按下时为低电平,所以应该在程序中查询这个端口的状态是为低电平来确定有按键按下了。 下面利用图3-5来实现这样一个现象,监视按键S1(接在P3.0端口上),用发光二极管D1(接在单片机P1.0端口上)显示按键状态,若按下按键S1,则发光二极管D1亮;若未按下按键S1,则发光二极管D1熄灭。 按键S1状态的检测过程为单片机对按键状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当按键未按下时,输入高电平;当按键按下时,输入低电平。 输出控制:如图3-5所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管D1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管D1亮。 基于此可形成按键控制小灯的程序框图,如图3-6所示。 图3-6 按键控制小灯的程序框图 由图3-6可以形成如下C语言程序。 #include AT89X52.h sbit S1=P3^0; sbit D1=P1^0; 此句话引出下面的编程,但是此句话叙述的太过口语化了,请规范下吧。 void main(void) { while(1) { if(S1= =0) { D1=0; //灯亮 } else { D1=1; //灯灭 } } } 二、实现多路按键状态指示 1.硬件电路 如图3-7所示,单片机的P1.0~P1.3接四个发光二极管D1~D4,P1.4~P1.7接四个按键S1~S4,编程将按键的状态反映到发光二极管上。(按键按下,对应的灯亮,按键未按下,对应的灯灭)。 图3-7 四个LED控制电路 2.程序设计 按键状态检测:对于按键状态检测,相对单片机来说是输入关系,可轮流检测每个按键状态,根据每个开关的状态让相应的发光二极管指示;也可以一次性检测四路开关状态,然后让其指示。 输出控制:根据按键的状态,由发光二极管D1~D4来指示,可逐个显示,也可采用一次指示。基于此可形成多路按键状态显示的程序框图,如图3-8所示。 图3-8 多路按键状态显示的程序框图 由图3-8可以形成如下C语言程序。 #include AT89X52.h unsigned char temp; void main(void) { ??while(1) ????{ ??????temp=P14; ??????temp=temp | 0xf0; ??????P1=temp; ??? ?} } 根据每个按键的状态让相应的发光二极管指示,其思路较为简单,这里仅列出相应的C语言程序。 #include AT89X52.h void main(void) { while(1) { if(P1_4= =0) { P1_0=0; } else { P1_0=1; } if(P1_5= =0) { P1_1=0; } else { P1_1=1; } if(P1_6= =0) { P1_2=0; } else { P1_2=1; } if(P1_7= =0) { P1_3=0; } else { P1_3=1; } } } 三、实现按键控制流水灯 1.硬件电路 这里仍然可以用图3-7所示电路,只不过按键我们在这只用到了S1,在单片机的P1端口仍然连接有四个发光二极管。要实现的现象是上电的时候,D1接在P1.0管脚上的发光二极管在闪烁,当每一次按下按键S1的时候,D2接在P1.1管脚上的发光二极管在闪烁,再按下按键S1的时候,D3接在P1.2管脚上的发光二极管在闪烁,再按下按键S1的时候,D4接在P1.3管脚上的发光二极管在闪烁,再按下按键S1的时候,又轮到D1在闪烁了,如此轮流下去,从而实现由按键控制的流水灯。 2.程序设计 在我们生活中,我们很容易通过不同的人名来区分不同的人;那是因为每个人有不同的名子,我们就很快认出。同样,对于要通过一个按键来识别每种不同的功能,我们给每个不同的功能模块用不同的ID号标识,这样,每按下一次按键,ID的值是不相同的,

文档评论(0)

139****1983 + 关注
实名认证
文档贡献者

副教授、一级建造师持证人

从事职业教育近20年,高级职称。

领域认证该用户于2023年06月21日上传了副教授、一级建造师

1亿VIP精品文档

相关文档