




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南科技大学实验报告课程名称: 单片机原理及应用A 实验名称:UART串口通信及驱动程序设计 姓 名:张德蓉 学 号: 5120141524 班 级: 生医1402 指导教师: 雷华军 西南科技大学信息工程学院制实验题目:1、单片机点对点串口通信要求:甲单片机外接一个33矩阵键盘和8个LED;乙单片机外接一个独立按键和一个数码管;甲乙两个单片机通过串口进行通信(即TXD和RXD引脚)。按下甲单片机矩阵键盘的任意一个按键,将该键编号(编号自己设定)通过串口发送给乙单片机,乙单片机在数码管上显示出对应的按键号;按下乙单片机的外接独立按键控制甲单片机的8个LED(按键之前8个LED灯均点亮),具体关系为:(1)第1次按键,乙单片机向甲单片机通过串口发送命令字符A,甲收到该命令,使前4个LED灯亮,后4个不亮;(2)第2次按键,乙单片机向甲单片机通过串口发送命令字符B,甲收到该命令,使前4个LED不亮,后4个亮;(3)第3次按键,乙单片机向甲单片机通过串口发送命令字符C,甲收到该命令,使奇数个灯亮,偶数个灯不亮;(4)第4次按键,乙单片机向甲单片机通过串口发送命令字符D,甲收到该命令,使偶数个灯亮,奇数个灯不亮;(5)第5次按键,乙单片机向甲单片机通过串口发送命令字符E,甲收到该命令,使所有灯都不亮; 2、单片机与计算机串口通信要求:设置单片机的串口为工作方式1,波特率设置为9600。计算机通过串口调试助手向单片机依次发送字符1、2、3、4,单片机收到每个字符后向计算机回复相应的内容 实验目的1、 理解串口通信原理2、 掌握串口调试二、 实验原理1、 矩阵键盘按键设置在行、列线交点上,行、列线分别连接到按键开关的 两端。行线通过上拉电阻接到+5V 电源上。无按键按下时,行线处 于高电平的状态, 而当有按键按下时, 行线电平与此行线相连的列 线电平决定。使行线为编程的输入线,列线是输出线,拉低所有的列线, 判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则 所有的行线都为高电平。在第一步判断有键按下后, 延时 10ms 消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下 一步,否则返回第一步重新判断。开始扫描按键位置,采用逐 行扫描,每间隔 1ms 的时间,分别拉低第一列,第二列,第三列,第四 列,无论拉低哪一列其他三列都为高电平,读取行值找到按键的位置, 分别把行值和列值储存在寄存器里。从寄存器中找到行值和列 值并把其合并,得到按键值,对此按键值进行编码,按照从第一行第一 个一直到第四行第四个逐行进行编码,编码值从“0000” 至“1111” , 再进行译码,最后显示按键号码。2、 数码管显示数码管动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。3、 串口串行端口可提供标准的连接器和协议,允许我们将调制解调器等设备连接到计算机上。当今人们使用的所有计算机操作系统都支持串行端口;取名为“串行”端口,是因为这种端口会将数据“串行化”。更具体地说,它一次获取一个字节的数据并传输该字节的8位。这样做的优势在于,串行端口只需要一条线路就能传输8个位,而并行端口则需要8条。相应的劣势在于,其传输数据的用时是拥有八条线路时的8倍。此外,串行端口还可以降低线缆成本,使线缆更加小巧。在发送数据的每个字节之前,串行端口会发送一个开始位,这是一个值为0的单个位。在发送完数据的每个字节之后,它将发送一个停止位,表示该字节已传输完成。此外,它还可以发送奇偶校验位。串行端口也称为通信(COM)端口,是一种双向端口。在双向通信中,每个设备都可以接收数据和传输数据。串行设备使用不同的针脚来接收和传输数据如果使用相同的针脚,通信将限制为半双工模式,这表示信息一次只能在一个方向上传播。使用不同的针脚可以实现全双工通信,在这种模式中,信息可以同时在两个方向上传播。三、 实验步骤1、 在编程软件(Keil5)中编写源程序,并编译,改错,形成.hex文件;2、 在仿真软件(Ptoteus)中画出实验所需的外设电路;3、 将生成的.hex文件下载到仿真电路中进行测试;4、 分析结果。四、 实验结果及分析题目1:单片机甲源程序#includesbit P10 = P10;sbit P11 = P11;sbit P12 = P12;/位设置sbit P13 = P13;sbit P14 = P14;sbit P15 = P15; /位设置void ConfigUART(unsigned int baud)/波特率设置SCON = 0x50;/模式选择TMOD &= 0x0f;/定时器模式选择TMOD |= 0x20; /定时器模式选择TH1 = 256 - (11059200/12/32)/baud;/定时器设置初值TL1 = TH1;/自动重装载ET1 = 0;/禁止定时器中断ES = 1;/启动串口中断TR1 = 1;/启动定时器void delay(int t) /延时函数int j;for(j = 0;j t; j +);void InterruptUART() interrupt 4 /串口中断函数 if(RI) /接收信号 RI = 0; /手动清零接收中断标志位switch(SBUF) /判断按键次数case 1:P2 = 0xef;break; case 2:P2 = 0xaa;break;case 3:P2 = 0x55;break;case 4:P2 = 0xda;break;case 5:P2 = 0xb6;break;case 6:P2 = 0xf0;break; if(TI) /发送信号 TI = 0; /手动清零发送信号 void main()EA = 1; /使能总中断ConfigUART(9600); /设置波特率为9600P1 = 0xff; /按键设置输入状态为1P2 = 0xff; /LED灯全亮 while(1)P1 = 0xfe; /矩阵键盘第一行为低 if(P13 = 0)SBUF = 1;delay(100); /第一列按下else if(P14 = 0) SBUF = 2;delay(100);/第二列按下else if(P15 = 0)SBUF = 3;delay(100);/第三列按下P1 = 0xfd; /矩阵键盘第二行为低if(P13 = 0)SBUF = 4;delay(100); else if(P14 = 0) SBUF = 5;delay(100);else if(P15 = 0) SBUF = 6;delay(100);P1 = 0xfb; /矩阵键盘第三行为低if(P13 = 0) SBUF = 7;delay(100); else if(P14 = 0) SBUF = 8;delay(100);else if(P15 = 0)SBUF = 9;delay(100); 单片机乙源程序#includesbit KEY = P10;unsigned char code dis=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/数字0-9void ConfigUART(unsigned int baud)/设置波特率SCON = 0x50;/模式选择TMOD &= 0x0f;/定时器模式选择TMOD |= 0x20; /定时器模式选择TH1 = 256 - (11059200/12/32)/baud;/定时器设置初值TL1 = TH1;/自动重装载ET1 = 0;/禁止定时器中断ES = 1;/启动串口中断TR1 = 1;/启动定时器void delay(int t) /延时函数int j;for(j = 0;j t; j +);unsigned int a = 0;/按键次数void InterruptUART() interrupt 4 /串口中断函数 if(RI) RI = 0; /手动清零接收标志位P2 = disSBUF; /数码管显示 if(TI) TI = 0; /手动清零发送标志位 void main(void) EA = 1;/总中断 ConfigUART(9600);/波特率9600P2 = 0x00;/数码管显示清零 while(1)KEY = 1; /按键输入状态为1if(KEY = 0) /判断按键按下SBUF = a+; /按键加一次delay(10000); 实验结果电路图图1 单片机之间的通信仿真图题目2:实验源程序#includeunsigned char *SendText;/定义指针变量发送的字符串unsigned char LenText;/发送的字符串长度unsigned char str1 = Name:ZhangDerongn;unsigned char str2 = No:5120141524n;unsigned char str3 = Class:BME1402n;unsigned char str4 = Sex:Fn;unsigned char str5 = Addr:SiChuan SuiNingn;unsigned char str6 = Errorn;void ConfigUART(unsigned int baud) /设置波特率SCON = 0x50;/模式选择TMOD &= 0x0f;/定时器模式选择TMOD |= 0x20; /定时器模式选择TH1 = 256 - (11059200/12/32)/baud;/定时器设置初值TL1 = TH1;/自动重装载ET1 = 0;/禁止定时器中断ES = 1;/启动串口中断TR1 = 1;/启动定时器void InterruptUART() interrupt 4 /串口中断函数 unsigned char cmd; /接收的数据 if(RI) RI=0; /手动清零接收标志位cmd = SBUF; switch(cmd) /判断接的数据 case 1: SendText = str1;LenText = sizeof(str1);TI = 1;break; case 2: SendText = str2;LenText = sizeof(str2);TI = 1;break; case 3: SendText = str3;LenText = sizeof(str3);TI = 1;break; case 4: SendText = str4;LenText = sizeof(str4);TI = 1;break; case 5: SendText = str5;LenText = sizeof(str5);TI = 1;break; default: SendText = str6;LenText = sizeof(str6);TI = 1;break; if(TI) TI = 0; /手动清零发送标志位 if(LenText 0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 发言稿农家乐
- 年会主管发言稿
- 陕西机器学习培训
- 培训管理电子商务
- 二零二五版航空航天设备采购廉洁保障协议
- 2025版儿童房专用刮大白装修工程合同范本
- 二零二五年度智能化建筑劳务分包施工合同
- 二零二五年度抖音短视频整体打包广告创意设计合同
- 二零二五年度农户小额信贷合同范本样本
- 2025版家庭居室装修智能家居系统安全检测与施工合同
- 2025年广东湛江高三一模高考历史模拟试卷试题(含答案详解)
- 2024年中学生法律知识竞赛题库含答案
- 安徽省实景三维中国建设城市三维模型(LOD1.3级)快速构建技术方案(试行)2024
- 《立秋健康养生》课件
- 以工代赈道路建设项目可行性报告
- 机电安装工程施工方案
- 护理管理队伍建设
- 残疾人安全教育
- +高中语文+《逻辑的力量》课件++统编版高中语文选择性必修上册
- 学生用品惠民销售方案
- 2023年施工企业成本会计核算实务范本
评论
0/150
提交评论