网站大量收购闲置独家精品文档,联系QQ:2885784924

实验二串口通讯实验.docx

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

北京航空航天大学计算机测控技术实验实验二串口通讯实验实验报告一、实验目的(1)掌握单片机串行口通讯程序的编制;(2)了解实现串行通讯的硬件环境,数据格式及数据交换的协议;(3)了解PC机通讯的基本要求。二、硬件原理图2.1串口电路原理图实验箱串口电路原理图如图所示:注:使用专门用于STC(宏晶)系列单片机下载的STC -ISP 下载线,无需使用串口线连接电脑与单片机。2.2实验连线图实验接线如下图所示:单片机通过8279芯片驱动数码管,同时以P1口扫描4*4键盘键值,串口中断接收发送显示数据。三、软件流程图3.0单片机资源分配内容中断方式定时\计数器引脚数码管显示定时器中断Timer0P0 P2.2 P2.3扫描键盘无无P1 P3.2串口通讯串口中断Timer1ISP3.1主程序流程图开始串口初始化、定时器初始化、ES=1取键值区分数字字母处理键值,数码管显示变量TempData1赋值向PC发送键值3.2串口发送子程序流程图开始TI=1?TI清零SBUF赋值RETNY3.3串口接收子程序流程图开始RI=1?RI清零数码管显示变量TempData3赋值RETINY3.6定时器中断子程序流程图开始TH0 TL0重新赋值数码管显示TempData3TempData1RETI四、实验步骤⑴参照实验指导书连接杜邦线⑵编写程序,并用KeilC软件调试程序⑶程序编译无错后使用S51ISP 下载软件将程序下载到单片机中⑷观察实验现象,如果实验现象与预期不符则可以使用KeilC的软件仿真调试功能, 通过软件仿真使程序单步运行,从中找到编程错误⑸向实验指导老师讲解程序原理,整理仪器离开实验室五、软件源码#includereg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换#define KeyPort P1 //定义键盘扫描端口 程序中遇到KeyPort 则用P1 替换sbit LATCH1=P2^2;//定义锁存使能端口 段锁存sbit LATCH2=P2^3;//位锁存unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~Funsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData1,TempData3;void DelayUs2x(unsigned char t);//us级延时函数声明 void DelayMs(unsigned char t); //ms级延时void Display(void);//数码管显示函数unsigned char KeyScan(void);//键盘扫描unsigned char KeyPro(void);//取键值void Init_Timer0(void);//定时器初始化void InitUART (void);//串口初始化/*------------------------------------------------ 发送一个字节------------------------------------------------*/void SendByte(unsigned char dat){ SBUF = dat; //while(!TI);}/*------------------------------------------------ 主函数------------------------------------------------*/void main (void){unsigned char num,j;Init_Timer0();InitUART ();ES=1;while (1) //主循环 { num=KeyPro();if(num!=0xff) { TempData1=num;j=num;if(j=0j=9)j=j+48;else if(j=10j=15)j=j+87;SendByte(j); } }}/*------------------------------------------------ uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12

文档评论(0)

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

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

1亿VIP精品文档

相关文档