- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AT89S51共有4个双向的8位并行I/O端口:P0、P1、P2和P3,它们的输出锁存器属于特殊功能寄存器。4个端口除了按字节输入/输出外,还可位寻址,便于实现位控功能。 (1)P0口用作地址/数据总线 当AT89S51外扩存储器或I/O时,P0口作为单片机系统复用的地址/数据总线使用。 真正的双向口,应该是具有高电平、低电平和高阻抗输入3种状态的端口。 因此,P0口作为地址/数据总线使用时是一个真正的双向端口,简称双向口。 当P0口不作为系统的地址/数据总线使用时,也可作为通用I/O使用。 须外接上拉电阻才能有高电平输出; P1口只能作为通用的I/O口使用。 P1口由于有内部上拉电阻,没有高阻抗输入状态,故为准双向口。作为输出口时,不需要在片外接上拉电阻。 P2口是一个双功能口,作为地址输出线使用时,P2口可以输出外部存储器的高8位地址,与P0口输出的低8位地址一起构成16位地址,可以寻址64KB的地址空间。当P2口作为高8位地址输出口时,输出锁存器的内容保持不变。 P2口作为通用I/O口使用时,P2口为一个准双向口。功能与P1口一样。 由于AT89S51的引脚数目有限,因此在P3口电路中增加了引脚的第二功能 P3口内部有上拉电阻,不存在高阻抗输入状态,为准双向口。 #include reg51.h #include intrins.h /*包含移位函数的头文件*/ #define uchar unsigned char #define uint unsigned int void delay(uint i) /*延时函数*/ { uint t; while (i--); { for (t=50000;t0;t--);//循环延时 } } void main( ) /*主程序*/ { P2=0xfe; while (1) { P2=_crol_(P2,1) ; /*C51函数库中的左移函数,P2中的数据循环左移1位*/ delay( 2000 ); /*500为延时参数,可根据实际需要调整*/ } } 本章小结 单片机I/O口基本编程应用包括按键(或开关)状态检测、发光二极管输出控制、数码管动态显示以及行列式键盘扫描编程等内容。 参考程序 运行结果 实例5 计数显示器 统计按键次数并以十进制形式显示,按键次数大于99后重新由0开始计数。 个位LED接P2口,十位LED接P0口(共阴型) 按钮接P3.7口线,按压时为0电平 编程分析: 问题:按键压下时可能被连续计数 如何避免连续计数? 初始化: P2 = P0 = table[0]; 解决办法: 取模运算(%10)→个位 整除10运算(/10)→十位 P2 = table[count%10]; P 0 = table[count/10]; 显示输出:如何将计数值拆成两个独立的数? 参考程序 程序运行效果 4.4 数码管动态显示原理与编程 两种显示接口:静态显示接口和动态显示接口 静态显示接口:一个数码管的引脚独立占据一根I/O口线。 优点:被显示数据只要送入并行口后就不再需要CPU干预,因而显示效果稳定。 缺点:占用资源较多 动态显示接口: 所有数码管的段码线对应并联接在一个并行口上,而每位数码管的公共端分别由一位I/O线控制; 由并口输出的显示码可被所有数码管收到,但只有满足导通条件的数码管可以被驱动。 工作原理: 采用快速切换方式(如10ms),每一时刻只有一只数码管导通工作。利用视力暂留特性,可获得连续显示效果。 优点:占用资源较少 缺点:占用机时较多(需要CPU随时刷新显示值) 实例6 数码管动态显示 采用共阴极动态LED显示原理,实现如下功能: SW1向下拨时显示字符“L2”,向上拨时显示字符“H3”。 分析: Proteus中的双联LED数码管相当于两个并联的数码管。 7SEG-MPX2-CC-BLUE Blue,2 Digit,7-segment Cathode Display A-G→ “0x38”, 1#→“0”,2# → “1” A-G→ “0x5b”, 1#→“1”,2# → “0” P2←led_mode[0], P3 ←xxxx xx10B =2 P2←led_mode[1], P3 ←xxxx xx01B =1 led_mode[ ]={0x38,0x5b} led_point=0 P2=led_mode[led_point] led_point=1-led_point P3 =2 - led_point 如果不考虑开关switch,动态显示“L2”的程序可以如下: ; //LE
您可能关注的文档
最近下载
- 中国云新南航空公司acars系统培训.ppt VIP
- 马克思主义宗教观87814.ppt VIP
- 《城市轨道交通通信与信号》教案 第11课 城市轨道交通通信系统(一).docx VIP
- 大众蔚领保养手册.docx VIP
- 部编人教版小学4四年级语文上册(全册)优秀教案设计.doc VIP
- 道德与法治新教材培训心得体会.pptx VIP
- 2026年高考化学大一轮复习第3讲离子共存 离子的检验与推断.pptx VIP
- 冯唐成事心法读书札记.docx VIP
- 第1课 时代精神的精华-【中职专用】2024年中职思想政治《哲学与人生》金牌课件(高教版2023·基础模块).pptx VIP
- 《新闻采访与写作》电子课件 第三章 新闻采写的客体——新闻事实.ppt VIP
文档评论(0)