单片机与pc机软件开发_第1页
单片机与pc机软件开发_第2页
单片机与pc机软件开发_第3页
单片机与pc机软件开发_第4页
单片机与pc机软件开发_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机与pc机软件开发1.1 设计内容和要求 (1)课程设计内容利用南京伟福公司的LAB8000来开发单片机与PC机串行通讯系统,实现单片机与PC机的通讯。要求实现数据收发功能。具体要求内容如下:通过LAB8000的小键盘选择功能;功能1:接受PC机发送的数据,并将其回发给PC机;功能2:从LAB8000的小键盘输入数据,发送给PC机。 (2)课程设计要求:认真完成课程设计任务;通过老师现场验收;交出完整的课程设计报告。 1.2课程题目分析题目背景:串行口在计算机中有重要的作用,MCS51单片机内部有一个功能强的全双工的异步通信串行口,就是指双机之间的串行接收、发送数据可同时进行。要传送的串行

2、数据在发方是以数据帧形式一帧一帧地发送,通过传输线由收方一帧一帧地接收。本次课设要求完成从PC机发送数据,将其传入单片机,并将其发回给PC机。然后再从LAB8000的小键盘输入数据,将其发送给PC机。 1.3课程设计原理 本次课程设计由于要完成功能的选择,所以要用键盘扫描程序。通过键盘扫描程序来判断按下来的是哪一个按键,实现功能选择。当扫描到用户按LAB8000上面的小键盘1时,实现功能1的选择,这时候从PC机的键盘输入数据,就可以使之发送出去,传送到单片机然后后传回PC机,这里面需要一个SBUF缓冲区来缓冲存储数据,当把数据往单片机里面发送时,数据需要先发送到SBUF缓冲区里面,然后再往单片

3、机里面发送,当单片机往PC机发送数据时,数据也需要先送到SBUF里面,然后在往外发送,当扫描到输入的值是1时,结束功能1,停止发送。当扫描到用户按LAB8000上面的按键2时,通过键盘扫描程序进入功能2,功能二要求从LAb8000小键盘输入数据,然后传给PC机。当扫描到按NEXT键时,停止发送。 要实现单片机与PC机的串行通信,要用到MAX232来实现电平转换。串行通信时选择串行口工作在方式一,定时器工作时选择工作在方式二。经过计算,设置通信时的波特率为4800bits/s,将4800bits/s往回带入公式,计算出误差小于 7% ,所以可以选择这种工作模式。1.4方案设计 设计键盘扫描函数和

4、按键检测函数,通过MCS-51芯片,实现键盘扫描,通过小键盘设置17个键位选择键(4*4+NEXT键),再输入时在数码管上面显示1,进入功能一:接收PC机发送的数据并将其发回给PC机,在输入2时,在数码管上面显示数值2,然后从小键盘输入数据发送给PC机。1.4.1小键盘选择功能小键盘选择功能:首先设置定时器及波特率,然后在设计键盘扫描函数和按键检测函数,使之能实现小键盘的选择功能。输入不同的数实现调用不同的函数,从而实现不同的功能。1.4.2功能1,PC机发送模块功能1:设计PC发送函数,此功能还需要有串行口中断函数。目的是实现单片机可以接收PC机发送的数据,并且将其发送给PC机。设置一个返回

5、键,让按键1实现返回小键盘选择功能,可以重新选择功能1还是功能2。1.4.3功能2,单片机发送模块功能2:设计小键盘发送程序,需要调用键盘扫描函数和按键检测函数,若有键按下,将键值发送到数码管上,并将其转化为ascii码发回PC机。同样设置一个返回键,设置小键盘右下角的“NEXT”时返回小键盘的功能选择,使函数能够循环使用。1.5方案论证从实际应用的角度,可以任意选择事先设计好的3种状态,当选择完一种状态时(除0),它可以无限的按照这种方案循环的运行下去,在此过程中,用户可以选择退出这种工作状态,从而实现对当前进行状态的控制,即可以令程序重新开始。当输入0时,结束。在整个串行口输入过程中可随时

6、做出不同的输入方式,对输入数据的工作状态进行控制。 2 总体设计方案2.1实现方法 开始运行程序时,数码管初始化显示6个数字0,然后选择一种模式(1和2),若输入的数不是“1”或“2”, 只在LED登上显示该数,等待重新输入一个工作状态,此处在扫描键盘并按键检测后需要将扫描到断码发送到登上。 在选择“1”,即要实现功能1,则调用PC机发送函数,用串行口中断函数来保存断点(防止计数器溢出)。使之能实现接收PC机发送的数据后,在将其回发给PC机。设置一全局变量flag,当用户按键1时,flag置1,使之跳出while死循环,从而达到返回小键盘,重新选择功能1跟2。 若选择“2”,即要实现功能2,须

7、调用小键盘扫描函数,将数据显示到数码管上,同时然后将该数据转化成acsii码的形式通过串行口发送到PC机上。当从小键盘按键NEXT时,返回初始状态,可以进行功能1和2的重新选择。2.2 设计思路 本课设主要分3个模块,第一个模块是主程序中的键盘扫描,通过键盘扫描程序来获取从小键盘输入的键值,此次课设里面用到的键盘的按键主要有三个,一个是0,一个是1,另一个是2。当输入0时,结束。当输入的是1时,进入第二个功能模块,由PC机发送数据,将数据发送给单片机,然互在传给PC机。当输入数值2时,进入第二个模块,将数据由单片机小键盘输入,发送给PC机。模块调用图如下页图2.1所示 单片机与PC机通讯系统

8、键盘选择按键模块PC机发送数据模块单片机发送数据模块 图2.1 模块调用2.3 设计环境硬件环境:伟福LAB8000;软件环境:Kei vision3 详细设计3.1 硬件电路设计8051单片机内部的总体电路图如图3.1所示,图3.1 8051单片机电路图3.2 软件设计3.2.1主程序键盘扫描模块该模块的功能是用户从小键盘输入数据,以进行功能选择。将某一键按下,通过扫描键盘,向列扫描码地址(0X8002H)逐列输出低电平,然后从行码地址(0X8001H)读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是哪个键。

9、该模块中键盘扫描的电路图和键盘扫描电路如图3.2和3.3所示图3.2 键盘电路图图3.3 键盘扫描流程图 主函数模块首先设置定时器及波特率的选择,根据标志位k1的值选择是PC模式发送数据还是小键盘模式发送数据,并根据功能选择模块中对各模式的信息的进行相应的初始设置。通过小键盘选择功能控制数据的输出方式,还能接受新的键值来执行相应的功能。读取的键值要先判断是否是无效键,是无效键要执行死循环程序,按下“1”或“2”键才能继续显示。如下页图3.4所示 开始设置定时器工作方式及波特率率 小键盘输入 N 为0? 值是1或者2N 值是否为1 上微机键盘发送数据 Y Y 结束 按小键盘1键 Y用小键盘发送数

10、据按小键盘NEXT键 图3.4主函数模块流程图 3.2.2功能1模块 该模块的功能是通过键盘扫描程序的按键选择选择功能1(串口传输),并且将数字显示到数码管上面。要实现单片机与PC机的串行通信 ,数码管显示电路图如图3.5所示图3.5 数码管显示电路图功能1模块利用单片机的串行口,实现PC机的串行通讯。启动功能1时开启定时器,调用串行中断函数,通过while(!flag)语句实现循环发送的功能,在串行中断子函数中先将PC机中输入的内容发送到单片机上,执行while(!RI) 。在单片机将其内容回发给PC机之前需要进行是否返回小键盘选择功能的判定,通过if(temp=49)flag=1语句,判断

11、是否是数1的ASCII码49,若是则将flag置1,达到跳出该循环的目的。如图3.6所示。 开始 启动定时器,允许串行口中断 上微机输入传输数据 数据由SBUF传入Temp 接收完成? 发送完成?将Temp中的数据传到SBUF RI=0 N TI=0 N 返回断点小键盘输入1?N Y Y图3.6 功能1模块流程图3.2.3功能2模块 本次课设实现单片机与PC机之间的串行通信需要串口通信需要用到MAX232芯片,由于标准的MAX232电平很高,可以达到正负15V,常用的TTL电平最高可以达到5V,所以需要MAX232芯片来进行转换。将 P3.0接RXD引脚,P3.1接TXD引脚MAX232芯片如

12、下图3.7所示,用MAX232接单片机与PC机后的电路图如图3.8所示 图3.7 MAX232芯片 图3.8 MAX232连接后的电路图 功能2模块实现小键盘发送数据的功能,需调用小键盘扫描函数和按键检测函数,将小键盘输入的数据发送到LED灯上。启动功能2时同功能1一样先启动定时器工作,扫描小键盘使之能够在小键盘输入数据,对输入的数据进行判定,若为返回键(NEXT)则跳出该函数重新进行小键盘选择功能,使之能够循环使用;若为基本键,将扫描到的按键的键值通过查表的方式转为ASCII码,好发送回PC机中。如图3.9所示开始启动定时器1工作YNYN调用键盘扫描函数按键为NEXT让第二个数码管显示将键值

13、相对应的ASCII码发送到变量knum中返回断点发送完成TI=0从temp中输出数据图3.9功能2模块流程图 4 调试4.1 调试过程主函数模块中的键盘扫描开始不太会,所以在本次课程设计开始做的时候就参照着实验指导书进行了细致地系统地学习,深刻地了解了其工作原理,以便后来理解代码以及编写代码。功能1即PC机发送数据模块进行编代码时,由于平时学习单片机时用的是汇编语言编程,这次课程设计要求用C语言进行编程,结合着实验箱上的各器件和接线方法进行编程。因为以前实验时候做过串口通信实验,所以对这部分还是挺熟悉的,将以前写的实验原理汇编语言转化为C语言。有时候调试的时候忘记连实验箱的线,急的满头大汗,最

14、后发现真是又高兴又无奈。编写代码过程中还会存在一些小的语法错误,通过keil软件不断进行调试的过程中,根据其给出的错误提示,来进行检查修改。4.2 调试结果 根据此次课程设计题目的要求,在老师和同学的帮助下,经过上述的各种调试过程,实现了课设上面的所有要求,可以在按键1时数码管显示1,进行PC机发送数据,发送给单片机,单片机再将数据发给PC机。按键2时数码管显示2,将小键盘输入的数据发送给PC机。但是由于课设简单,孙老师让增加一个界面,类似于串口大师的,经过一天多的学习,只做完了对话框,没有将之与单片机连接到一起。参考文献1 张毅刚,刘杰 . MCS-51单片机原理及应用M. 哈尔滨:哈尔滨工

15、业大学出版社,20082 张义和 . 例说51单片机:C语言版M. 北京:人民邮电出版社,2010 3 段晨东,爨莹 . 单片机原理及接口技术M. 北京:清华大学出版社,20084 伟福Lab8000系列单片机仿真实验系统 使用说明书M. 南京伟福实业有限公司,20155 高峰 . 单片微型计算机原理与接口技术M. 北京:科学出版社,2007附 录(关键部分程序清单)#include #include #define uchar unsigned char#define uint unsigned intxdata uchar key _at_ 0x8001;/定义键盘行地址xdata uch

16、ar led _at_ 0x8002;/定义键盘列地址并定义段码显示所在列xdata uchar dat _at_ 0x8004;/定义段码输出地址uchar ascii=48,49,50,51,52,53,54,55,56,57,0x41,0x42,0x43,0x44,0x45,0x46;uchar ledmap=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; uint k1; uchar flag; uchar temp; void pcsend(); void keysend

17、(); int i,j,p;unsigned char testkey() /数码管显示函数 led = 0; return (key&0x0f); uint getkey() /键盘扫描函数 uint k; led=0xfb; /扫描左数第四列 switch(key) case 0x0e:k=13; while(testkey();return (k); /下数第一行d case 0x0d:k=12; while(testkey();return (k); /下数第二行c case 0x0b:k=11; while(testkey();return (k); /下数第三行b case 0x0

18、7:k=10; while(testkey(); return (k); /下数第四行a default:break; led=0xf7; /扫描左数第三列 switch(key) case 0x0e:k=14; while(testkey();return (k); case 0x0d:k=3; while(testkey();return (k); case 0x0b:k=6; while(testkey();return (k); case 0x07:k=9; while(testkey();return (k); default:break; led=0xef; /扫描左数第二列 sw

19、itch(key) case 0x0e:k=15; while(testkey();return (k); case 0x0d:k=2; while(testkey();return (k); case 0x0b:k=5; while(testkey();return (k); case 0x07:k=8; while(testkey();return (k); default:break; led=0xdf; /扫描左数第一列 switch(key) case 0x0e:k=0; while(testkey();return (k); case 0x0d:k=1; while(testkey();return (k); case 0x0b:k=4; while(testkey();return (k); case 0x07:k=7; while(testkey();return (k); default:break;

温馨提示

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

评论

0/150

提交评论