- 1、本文档共49页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#includereg51.h sbit LED0=P1^0; sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3; sbit K0=P1^4; sbit K1=P1^5; sbit K2=P1^6; sbit K3=P1^7; void main( ) { while(1) { K0=1;K1=1;K2=1;K3=1; LED0=K0; LED1=K1; LED2=K2; LED3=K3; } } 思考: 为什么在读键状态之前要先置1? 修改: (1)开关闭合时灯灭。 (2)K0控制LED3,K1控制LED2,K2控制LED1,K3控制LED0。 4.3.2 单个按钮开关型 输入信号 【例4-8】按钮开关。编程实现S1按钮按一下,4个灯一组亮、灭交替。 【例4-9】开始是所有的灯都亮,按一下S1,灯变为500ms闪烁,再按一下,变为全亮。 分析: 相当于S1为一个控制开关,控制着等的亮、灭闪烁 注意和例题4-8的不同。定义一个位单元,按键每动作一次,该位单元取反:该单元为0时,灯全亮,该单元为1时,灯闪烁。 4.3.3 多个按钮型开关输入信号—键盘(独立、矩阵) 1.键号、键值、键值表 2.独立式键盘接口技术 【例4-10】P1口作为独立式按键接口示例。编程显示按键的键号0~7。 扩展与修改: 两个输入按键(如P1.6、P1.7)一个为“+1”键,一个为“-1”键,开始显示器显示“5”,然后根据按键显示后面的内容。 2.矩阵键盘接口 (1)硬件: 行输出口、 列输入口 (2)软件: 判断整个键盘是否有键按下 判断被按键的具体位置 计算被按键的键值,以确定要完成的功能。 【例4-11】P1口作为4×4矩阵键盘接口示例。编程显示按键的号码0~F。 当按键的数量比较多时,一种通用的算法是:将行的信息转变为行号(在0000~1111之间),将列的信息转变为列号(在0000~1111之间),这样就可以将行号作为高4位(或低4位),列号作为低4位(或高4位),二者组成一个字节。 4.4 实验与设计 实验1 闸刀型开关输入/8段LED静态显示输出 实验2 按钮型开关输入/8段LED静态显示输出 设计1 计时秒表的设计 (1)两位LED显示,可以显示00~99秒; (2)两个按键,分别为启动/停止键、清零键。 要求:设计硬件电路,编写出软件程序(延时由软件形成)。 设计2 模拟交通信号灯控制装置的设计 (1)6个发光二极管模拟交通灯 南北:黄、红、绿 ;东西:黄、红、绿 。 (2)2个应急开关:南北绿东西红或东西绿南北红。 要求:设计硬件模拟电路,编写软件程序。 花样流水灯(共8个灯) 一个周期由以下7个过程构成: 亮亮亮亮灭灭灭灭 亮亮灭灭灭灭亮亮 灭灭亮亮亮亮灭灭 亮亮亮亮亮亮亮亮 亮灭亮灭亮灭亮灭 亮灭灭亮亮灭灭亮 灭灭灭灭亮亮亮亮 试设计 设计 4个按钮开关,控制4个灯 开始全灭。 按那个开关,相应的灯亮,其余的灭。 完成硬件设计与软件编程。 第4章 P0~P3口应用基础 片内并行I/O口的应用。 4.1 认识51单片机的P0~P3口 4.2 输出操作 4.3 输入操作 4.4 实验与设计 4.1 认识51单片机的P0~P3口 从输出位置看: P0与P1、P2、P3不同, 因此: P0称为“双向口”, 其余的称为“准双向口”。 双向口:单片机的I/O口为了提高接口的驱动能力,具有由场效应管组成的输出驱动器。当驱动器场效应管的漏极具有开路状态时,该口就具有高电平、低电平和高阻抗3种状态,称为双向口。 准双向口:单片机I/O口的输出场效应管的漏极接有上拉电阻,该口具有高电平、低电平两种状态,称为准双向口。 4.2 输出操作 输出高、低电平。 4.2.1 基本输出--字节、位 4.2.2 扩展输出--流水灯、霹雳灯 4.2.3 扩展输出—8段LED显示 4.2.1 基本输出--字节、位【例4-1】字节输出。8灯亮、灭闪烁 #includereg51.h void delay( unsigned int d ) { while(--d0); } void main( ) { while(1) { P1=0xff; delay(50000); P1=0X00; delay(50000); } } 【例4-2】位操作。
文档评论(0)