单片机8051A串行通讯.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机8051A串行通讯

8051A串行通讯 实验要求 利用8088/86CPU控制8251A可编程串行通讯控制器,实现两个实验台之间的串行通讯。其中一个实验台作为发送方。发送方读入按键值,并发送给接收方,接收方收集到数据后在LED上显示。 实验目的 掌握8088/86实验串行口通讯的方法。 了解实现串行通讯的硬件环境、数据格式的协议、数据的交换的协议。 学习串行口通讯程序编写方法。 实验电路 1、显示电路如图1所示 图1:显示电路 2、键盘电路如图2所示 图2:键盘电路 3、实验连接方法如图3所示 图3:实验的连接图及方法 四、实验说明 1、8088/86CPU通过外接的8251可编程串行控制器实现串口通信。通过8251的控制口写入其工作方式或读入当前状态,通过数据口发送或接受串行口数据。本实验是通过查询方式和输入输出串行数据。 2、通讯双方的RXD、TXD信号本应经过电平转换后再进行交叉相连,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD,这样按下的键就会在本机的LED上显示。 3、若想与标准的RS232设备通信,就要做电平转换,输出时将TTL电平换成RS232电平,输入时要将RS2332电平换成TTL电平。可以将仿真板上的RXD、TXD信号接到实验板上的“用户串行楼接线”的相应RXD和TXD端,经过电平转换,通过“用户串口”接到外部的RS232设备。 4、将分频器的Fin接到4MHz脉冲发生器,就可以得到1MHz和250KHz脉冲。 五、实验框图 主程序 六、实验程序如下所示 #define LEDLen 6 #define IN_KEY 0x8001 #define OUTBIT 0x8002 #define OUTSEG 0x8004 #define CS8251D 0xd000 #define CS8251C 0xd001 extern unsigned char IN(unsigned int port); extern void OUT(unsigned int port, unsigned char v); unsigned char LEDBuf[LEDLen]; /* 显示缓冲 */ unsigned char const LEDMAP[] = { /* 八段管显示码 */ 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; unsigned char const KeyTable[] = { /* 键码定义 */ 0x16, 0x15, 0x14, 0xff, 0x13, 0x12, 0x11, 0x10, 0x0d, 0x0c, 0x0b, 0x0a, 0x0e, 0x03, 0x06, 0x09, 0x0f, 0x02, 0x05, 0x08, 0x00, 0x01, 0x04, 0x07 }; void Delay(unsigned char CNT) { unsigned char i; while (CNT-- !=0) for (i=100; i !=0; i--); } void DisplayLED() { unsigned char i, j, k; unsigned char Pos; unsigned char LED; Pos = 0x20; /* 从左边开始显示 */ for (i = 0; i LEDLen; i++) { OUT(OUTBIT,0); /* 关所有八段管 */ LED = LEDBuf[i]; OUT(OUTSEG,LED); OUT(OUTBIT, Pos); /* 显示一位八段管 */ Delay(1); Pos = 1; /* 显示下一位 */ } } unsigned char TestKey() { OUT(OUTBIT, 0); /* 输出线置为0 */ return (~IN(IN_KEY) 0x0f); /* 读入键状态 (高四位不用) */ } unsigned char GetKey() { unsigned char Pos; unsigned char i; unsigned char j; unsigned char k; i = 6; Pos = 0x20; /* 找出键所在列 */ do { OUT(OUTBIT

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档