- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 8051内部资源_IO
8051 I/O口 8051单片机有4组8位双向I/O端口(P0、P1 、P2、 P3) 各端口功能 P0:通常用作地址/数据总线,即低8位地址与数据线分时复用;同时P0口也可用作I/O,可位寻址 P1:通常用作I/O,可位寻址 P2:通常用作扩展系统的高8位地址,与P0一起组成16位地址总线;同时P2也可用作I/O,可位寻址 P3:双功能口。作第一功能使用时,其功能同P1口,其第二功能见下。 8051 I/O口操作 I/O字节操作(sfr P1=0x90;) 读字节 unsigned char a; a=P1; a=P10x0f; if(checkbit(P1,0)) {;} 写字节 P1=0x01; P1=a[i]; P1=P10x0f; setbit(P1,0); P1=P1|0x01; clrbit(P1,0); P1= P10xfe; xorbit(P1,0); 8051 I/O口操作 I/O位操作(sfr P1=0x90; sbit P1_0=P1^0;) 读位端口 bdata my_bit=0x20; sbit my_bit_0=my_bit^0; my_bit=P1_0; if(P1_0= =1) {;} 写位端口 P1_0=1; P1_0=0; P1_0=~P1_0; 8051 I/O编程示例 LED显示 键盘扫描 十字路口交通灯控制 七段数码显示与8051的接口 数码显示器:发光管LED、液晶LCD 数码显示:静态显示、动态显示 动态显示:I/01不断送待显示字符的段选码,I/02不断送出不同的位扫描码,并使每位显示字符停留显示一段时间,一般为1ms~5ms,利用眼睛的视觉暂留,从显示器上便可以见到相当稳定的数字显示。 LED显示接口 如图是6位LED显示器接口。8051的P1作段选码口,经7407驱动与LED的段相连;8051的P3作位选码口,经7406驱动与LED的位相连。 共阴LED段码 unsigned char code LED_seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴段码 例1 要求6位LED输出200804 LED为共阴极。 试编写程序。 unsigned char idata LED_bit[]={0x01,0x02,0x04,0x08,0x10,0x20}; LED显示参考程序 #include reg51.h unsigned char code LED_seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴段码 unsigned char idata LED_bit[]={0x01,0x02,0x04,0x08,0x10,0x20}; unsigned char LEDBuf[6]={0,0,0,0,0,0}; unsigned long a=200804; void convert(unsigned long n) { unsigned char i=0; while(n) { LEDBuf[i]=(unsigned char)(n%10); n=n/10; i++; } } LED显示参考程序 void main(void) { unsigned char i; while(1) { convert(a); for(i=0;i6;i++) { P1=LED_seg[LEDBuf[i]]; //送段码 P3=LED_bit[i]; //送位码 //delay(10); 延时 } } } 8051 I/O编程示例 LED显示 键盘扫描 十字路口交通灯控制 键盘引入 单个按键电路 键盘与8051的接口 键盘扫描思想 #include reg51.h void main(void) { while(1) { P20=0; if(P24==0) //S0 按下 { delay(200); if(P24==0) //S0 按下 { //S0 按键对应动作 //---- } } } } 键盘扫描思想 #include reg51.h void main(void) { while(1) { P2=P20xfe; if((P20xef)==0) //S0 按下 { delay(200); if((P20xef)==0) //S0 按下 { /
文档评论(0)