课程设计报告单片机PC机串行通讯设计_第1页
课程设计报告单片机PC机串行通讯设计_第2页
课程设计报告单片机PC机串行通讯设计_第3页
课程设计报告单片机PC机串行通讯设计_第4页
课程设计报告单片机PC机串行通讯设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-PAGE . z- - - .总结资料*大学课 程 设 计 报 告课程设计名称:单片机系统综合课程设计课程设计题目:单片机与PC机串行通讯设计院系:专 业:班 级:学 号:姓 名:指导教师:完成日期:目 录 TOC o 1-3 h z u HYPERLINK l _Toc330501048第1章 总体设计方案 PAGEREF _Toc330501048 h 1HYPERLINK l _Toc3305010491.1 课程设计的容和要求. PAGEREF _Toc330501049 h 1HYPERLINK l _Toc3305010501.2 课程设计原理. PAGEREF _Toc3305

2、01050 h 1HYPERLINK l _Toc3305010511.3课程设计思路. PAGEREF _Toc330501051 h 2HYPERLINK l _Toc3305010521.4 实验环境. PAGEREF _Toc330501052 h 2HYPERLINK l _Toc330501053第2章 详细设计方案 PAGEREF _Toc330501053 h 3HYPERLINK l _Toc3305010542.1 实现方法. PAGEREF _Toc330501054 h 3HYPERLINK l _Toc3305010552.2模块设计. PAGEREF _Toc330

3、501055 h 3HYPERLINK l _Toc3305010562.2.1主函数流程图. PAGEREF _Toc330501056 h 3HYPERLINK l _Toc3305010572.2.2功能1模块. PAGEREF _Toc330501057 h 4HYPERLINK l _Toc3305010582.3程序连线图. PAGEREF _Toc330501058 h 7HYPERLINK l _Toc330501059第3章 调试及结果分析 PAGEREF _Toc330501059 h 8HYPERLINK l _Toc3305010603.1 调试步骤及方法. PAGER

4、EF _Toc330501060 h 8HYPERLINK l _Toc3305010613.2 实验结果及分析. PAGEREF _Toc330501061 h 8HYPERLINK l _Toc330501062参考文献 PAGEREF _Toc330501062 h 9HYPERLINK l _Toc330501063附 录A源程序 PAGEREF _Toc330501063 h 10HYPERLINK l _Toc330501064附 录B原理图 PAGEREF _Toc330501064 h 13HYPERLINK l _Toc330501065附 录C元器件清单 PAGEREF _

5、Toc330501065 h 14-. z第1章 总体设计方案1.1 课程设计的容和要求1、课程设计容:利用伟福公司的LAB6000通用微控制器仿真实验系统开发单片机与PC机串行通讯系统,实现单片机与PC机的通讯。要现数据收发功能。具要求容如下:.通过LAB6000的小键盘选择功能;.功能1:接收PC机发送的数据,并将其回发给PC机;.功能2:从LAB6000的小键盘输入数据,发送给PC机。2、课程设计要求:.认真完成课程设计任务;.通过教师现场验收;.交出完整的课程设计报告。1.2 课程设计原理根据题目要求,要完成LAB6000的小键盘选择,接收并且回发数据,小键盘可以输入并发送数据等功能,

6、在本次设计中主要使用了MCS-51芯片以及局部连线来完成串行通讯的模拟。采用MCS-51芯片实现不同模式串行通讯,通过延时程序控制串行通讯的频率。将键盘选择功能、PC机发送及接收数据功能、小键盘发送功能等通过不同的子程序实现,然后在程序中调用不同的子程序来实现不同的功能。因为需要实现小键盘输入数据,所以必须实现键盘扫描功能及按键检测功能。按键的扫描方法有扫描法和线反转法,因为小键盘按键不是非常多,所以本设计采用行列扫描法来进展小键盘扫描。课程设计思路1提出方案设计键盘扫描函数函数和按键检测函数,通过MCS-51芯片,实现键盘扫描。通过小键盘设置17个键位选择键,输入“1时在LED灯显示并选择功

7、能1接收和发送PC机发送的数据;输入“2时在LED灯显示并选择功能2从小键盘输入数据并发送给PC机。小键盘选择功能:首先设置定时器及波特率,然后再设计键盘扫描函数和按键检测函数,使之能实现小键盘选择功能。输入不同的数实现调用不同的函数,从而实现不同的功能。功能1:设计PC发送函数,此功能还需要有串行口中断处理函数。目的是实现单片机可以承受PC机发送的数据,并将其回发给PC机。设置一个返回键,如按键“1时返回小键盘选择功能,可以重新选择功能1还是功能2。功能2:设计小键盘发送程序,需调用键盘扫描函数及按键检测函数,假设有键按下,将键值发送到LED灯上,并将其转为ASCII码发送回PC机。同样设置

8、一返回键,如按键“NE*T(右数第一列,下数第一行)时返回小键盘选择功能。使函数能循环使用。2方案论证从实际应用的角度,用户可以任意选择事先设计好的2种状态,中选择完一种状态时,它可以无限的按照这种方案循环的运行下去,在此过程中,用户可以选择退出这种工作状态,从而实现对当前进展状态的控制,即可以令程序重新开场。在整个串行口输入过程中可随时做出不同的输入方式,对输入数据的工作状态进展控制。1.4 实验环境硬件环境:MCS-51实验箱,PC机。软件环境:WAVE2000应用软件-. z第2章 详细设计方案2.1 实现方法开场运行程序时数码管初始化显示6个数字0,然后选择一种模式1和2,假设输入的数

9、不是“1或“2,只在LED灯上显示该数,等待重新输入一工作状态。此处在扫描键盘并按键检测后需将扫描到的段码发送到LED灯上。假设选择“1,即要实现功能1则调用PC机发送函数,用串行口中断函数来保存断点防止计数器溢出。使之能实现接收PC机发送的数据后再将其回发给PC机。设置一全局变量flag,当用户输入一个数例如“1的ASCII码时flag置1使之跳出while语句死循环,从而到达返回小键盘选择功能的目的。假设选择“2,即要实现功能2需调用小键盘扫描函数和按键检测函数,将小键盘输入的数据发送到LED灯上,同时然后将该数据转换成ASCII码的形式通过串行口发送到PC机上。同小键盘选择功能一样该功能

10、也要调用小键盘扫描函数和按键检测函数。由于要实现按键返回的目的,在小键盘扫描函数中设置了“NE*T键变量kk=100时,同样利用了while语句来跳出死循环。模块设计主函数流程图主程序用于控制个功能子程序的调用和相应的芯片及存、存放器、变量的初始化,协调整个程序的运行。由于本课设只用了8031芯片,小键盘和LED灯来显示模拟结果,而且所有的功能都是用软件实现的,所以主程序要能很好的组织程序的运行。主函数模块首先设置定时器及波特率的选择,根据标志位k1的值选择是PC模式发送数据还是小键盘模式发送数据,并根据功能选择模块中对各模式的信息的进展相应的初始设置。通过小键盘选择功能控制数据的输出方式,还

11、能承受新的键值来执行相应的功能。读取的键值要先判断是否是无效键,是无效键要执行死循环程序,按下“1或“2键才能继续显示。如果是停顿键指程序设计功能1中的“1键和功能2中的“NE*T键,应立刻清空数码管的显示存并将其重新初始化。如下页图2. 1所示。开场设置定时器工作方式及波特率大小N输入按键为1或2YN按键为1Y小键盘发送函数PC发送函数返回断点图2.1主函数模块流程图功能1模块功能1模块利用单片机的串行口,实现PC机的串行通讯。启动功能1时开启定时器,调用串行中断函数,通过while(!flag)语句实现循环发送的功能,在串行中断子函数中先将PC机中输入的容发送到单片机上,执行while(!

12、RI)(即RI=1单片机接收完数据跳出该循环) 语句。在单片机将其容回发给PC机之前需要进展是否返回小键盘选择功能的判定,通过if(temp=49)flag=1语句,判断是否是数1的ASCII码49,假设是则将flag置1,到达跳出该循环的目的。如图2.2所示。8031的R*D、T*D接线柱在POD51仿真板上,8086的T*D、R*D在POD8086仿真板上的8031芯片旁边。通讯双方的R*D、T*D信号本应经过电平转换后再行穿插连接,本设计中为减少连线可将电平转换略去,而将双方的R*D、T*D直接穿插连接。开场启动定时器工作并允许串口中断调用串行中断函数是否输入数据01数据输入到变量tem

13、p中N接收完成YRI=0Y返回断点按键1N从temp中输出数据N发送完成YTI=0图2.2功能1模块流程图功能2模块功能2模块实现小键盘发送数据的功能,需调用小键盘扫描函数和按键检测函数,将小键盘输入的数据发送到LED灯上。启动功能2时同功能1一样先启动定时器工作,扫描小键盘使之能够在小键盘输入数据,对输入的数据进展判定,假设为返回键(NE*T)则跳出该函数重新进展小键盘选择功能,使之能够循环使用;假设为根本键,将扫描到的按键的键值通过查表的方式转为ASCII码,好发送回PC机中。如图2.3。开场声明变量kk和knum启动定时器1工作调用键盘扫描函数Y按键为NE*TN返回断点使LEN2灯亮将键

14、值相对应的ASCII码发送到变量knum中从temp中输出数据N发送完成YTI=0图2.3功能2模块流程图程序连线图本设计提供了一个6*4的小键盘,向列扫描地址0*002H逐列输出低电平,然后从行码地址0*001H读回。如果有键按下,则对应行的值应为低电平;如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。地址中的*是由KEY/LED CS决定,做键盘和LED相连时,需将KEY/LED CS接到相应的地址译码上,以便用相应的地址来。例如将KEY/LED CS信号接CS0上,则列扫描地址为08002H,行码地址为08001H。列扫描码还可以分时用作

15、LED的位选通信号。如图2.4所示。图2.4键盘图-. z第3章 调试及结果分析3.1调试步骤及方法编译并连接程序后全速运行,在数码管上显示六个LED灯都初始化为0,然后按下小键盘键中的任意一个键,假设为3F中的任意一键在LED的6个灯都显示该数,此时并没有选择执行功能1和2;假设为1则执行功能1,即可以在PC机上输入数据并且可以回发,此时在右数第2个LED灯上始终显示1;假设为2则执行功能2,即实现小键盘发送数据功能,此时在右数第2个LED灯上始终显示2。3.2实验结果及分析本程序满足课程设计要求,在程序运行时,一共有17个按键,“1和“2键即为功能选择键,又为输入数据键,NE*T为复位键其

16、他键为普通数据键,各个按键均能实现其所拥有的功能,程序能很好的模拟串行发送功能。功能1模式切换时,按下PC机大键盘的“1键后,返回功能选择模块,可以重新选择工作方式;同样功能2模式切换时,按下小键盘的“NE*T键也可以返回功能选择模块,从而实现程序循环使用的功能。-. z- - - .总结资料参考文献1毅刚.杰.MCS-51单片机原理及应用M.:工业大学,20212 王忠民.微型计算机原理 M.:电子科技大学,20033 顶峰.单片微型计算机原理与接口技术 M.:科学,20074 初华.汇编语言、微机原理及接口技术M.:电子工业,20065 瑞和.微型计算机原理与接口技术M.:高等教育,200

17、46 胡汉才.单片机原理及接口技术 M.:清华大学,2007-. z- - - .总结资料附 录A源程序*include *include *define uchar unsigned char*define uint unsigned int*data uchar key _at_ 0*8001;/定义键盘行地址*data uchar led _at_ 0*8002;/定义键盘列地址并定义段码显示所在列*data uchar dat _at_ 0*8004;/定义段码输出地址uchar ascii=48,49,50,51,52,53,54,55,56,57,0*41,0*42,0*43,0*

18、44,0*45,0*46;uchar ledmap=0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f,0*77,0*7c,0*39,0*5e,0*79,0*71; uint k1; uchar flag; uchar temp; void pcsend(); void keysend(); int i,j,p;void delay() for(i=0;i100;i+) for(j=0;j100;j+) for(p=0;p100;p+) ;unsigned char testkey() /数码管显示函数 led = 0; return (key&

19、0*0f); uint getkey() /键盘扫描函数 uint k; led=0*fb; /扫描左数第四列 switch(key) case 0*0e:k=13; while(testkey();return (k); /下数第一行d case 0*0d:k=12; while(testkey();return (k); /下数第二行c case 0*0b:k=11; while(testkey();return (k); /下数第三行b case 0*07:k=10; while(testkey(); return (k); /下数第四行a default:break; led=0*f7

20、; /扫描左数第三列 switch(key) case 0*0e:k=14; while(testkey();return (k); case 0*0d:k=3; while(testkey();return (k); case 0*0b:k=6; while(testkey();return (k); case 0*07:k=9; while(testkey();return (k); default:break; led=0*ef; /扫描左数第二列 switch(key) case 0*0e:k=15; while(testkey();return (k); case 0*0d:k=2;

21、 while(testkey();return (k); case 0*0b:k=5; while(testkey();return (k); case 0*07:k=8; while(testkey();return (k); default:break; led=0*df; /扫描左数第一列 switch(key) case 0*0e:k=0; while(testkey();return (k); case 0*0d:k=1; while(testkey();return (k); case 0*0b:k=4; while(testkey();return (k); case 0*07:

22、k=7; while(testkey();return (k); default:break; led=0*fe; switch(key)case 0*0e: k=100; while(testkey();return(k); default: return(-1); break; void main()/主函数 TMOD=0*20; TH1=0*F3; TL1=0*F3; SCON=0*50; PCON=0*80; while(1) k1=getkey(); /k1=1; led=2; flag=0; dat=ledmapk1; if(k1=1|k1=2) switch(k1) case 1

23、: pcsend();IE=0*00;k1=0; break; case 2: keysend();k1=0; break; void pcsend()/PC发送函数 TR1=1; IE=0*90; while(!flag); void keysend()/小键盘发送函数 uint kk=0; uchar knum; TR1=1; kk=getkey(); while(kk!=100) kk=getkey(); if(kk=-1) continue; led=2; knum=asciikk; SBUF=knum; while(!TI); TI=0; void Int1() interrupt 4/串行口中断函数 while(!RI); temp=SBUF; R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论