资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
河南理工大学计算机科学与技术学院课程设计报告200 9 200 10 学年第 一 学期课程名称 单片机原理与应用实例仿真 设计题目 评分系统 学生姓名 XXX 学 号 310709010208 专业班级 计算机07-2班 指导教师 XXX 2009 年 12 月 30 日 评分系统一 、设计要求:(1) 题目要求四个评委给出自己的打分,故设计的第一步设计主机信号控制指令,否则任何打分都是无效。(2) 评委们接到打分指令后即可为选手输入分数,先设想用可编程编程并行通信接口89C52与 开关结合实现该步。(3) 接收所有评委的打分到指定缓冲区后,开始对数据进行处理,求出平均分:(4) 将(3)步取出的平均分显示出来。 二 、设计目的:通过课程设计及研究论文,使学生对单片机的应用有更深入的理解,并具有较简单的单片机应用的设计能力。三 、设计方案: 评分系统需使用单片机多机通信系统。一个主机 ,五个从机。主机向从机发送的地址帧和数据帧用相应的标志位加以区分从机。当主机选中与其通信的从机后,只有该从机能够与主机通信,其他从机不能与主机进行数据交换,而只能准备接受主机发来的地址帧。主从通信是通过SCON中的SM2和TB8来实现的,串行口以方式2或3接收时,若SM2为1,则仅当接受到第9位数据RB8为1时,数据才装入SBUF,置位RI,请求CPU对数据进行处理;如果接收到第9位数据RB8为0,则RI不置1,接收到数据丢失;若SM2为0时。则接收到一个数据后,不管第9位数据RB8是0还是1,都将数据装入接收缓冲器SBUF并置位中断标志RI,请求CPU处理。利用这个特点,当主机发送地址帧时使TB8=1,发送数据帧时使TB8=0,TB8是发送的一帧数据实地还是数据。主从式多级通信系统模型如下。 TXD RXD 主机RXD TXD N号从机RXD TXD 2号从机RXD TXD 1号从机 通信过程可以按照以下步骤进行:(1) 所有的从机的SMA置1,以接收地址帧。(2) 主机发地址帧。其中包含8位从机地址,置TB8=1装入第9位,选中所要通信的从机。(3) 所有从机接收到地址帧后,将接收到地址与本机地址比较,相符的从机,使SM2置0(已接受随后的数据帧),不符的从机,保持SM2=1,对主机随后发来的数据帧不予理睬,直至发送新的地址帧。(4) 主机收到被选中的从机回送的地址信号后,对该从机发送控制命令(此时置TB8=0),说明主机要求从机发送还是接收。(5) 从机收到主机控制命令后,向主机发送一个状态信息,表明是否已准备就绪。主机收到从机的状态信息,若从机准备就绪,主机便与从机进行数据传送。 用到六个芯片中主机控制和管理从机通信,四个从机是评委,主要是输入数据。输入顺序由主机控制,待从机得分输入完毕 。主机发送信号启动最后一个从机,最后一从机计算四个评委的得分的平均值不能够显示出来。四 、硬件设计:本设计主要用到以下几个硬件设施:(1)AT89C52: 单片机; (2)LED GREEN;(3)SWITCH: 开关; (4)7SEC COM AN BLUE; (5)共阳一位蓝色数码管; (6)BUTTON: 按键; (7)RES: 电阻; (8)CRYSTAL:晶振; (9)CAP 、CAP ELEC: 电容 、电解电容。设计要求中开始信号有主机单片机上的开关实现。评委可通过很多设备进行数据输入,本设计用逻辑开关实现。输出设备即可用发光二极管也可用LED显示器,但相对于前者,后者对结果的显示一目了然,故本设计设计选择LED显示器作输出设备。本设计的四个评委的输入设备需要四个89C52芯片,还需要四个显示器,电阻及导线若干。本设计的四个输入物理模型如下:XTAL1 P0.0/AD0XTAL2 。RST .。 P0.7/AD7PSEN P2.0/A8ALE 。EA .。 P27/A15P1.0/T2 P1.1/T2EX P3.0/RXD 。 P3.1/TXD 。 。 。 。P1.7 P3.7/RD 显 示 器主机控制模型如下:XTAL1 P0.0/AD0XTAL2 。 。RST P0.7/AD7 P2.0/A8PSEN 。ALE 。EA P2.7/A15P1.0/T2 P3.0/RXD 。 P3.1/TXD 。 。P1.7 P3.7/RD逻辑开关输入设备RESPACKB 物理模型原理图:主 机评委1从机1评委2从机2评委3从机3评委4从机4打分显示器打分显示器打分显示器打分显示器平均分计算控制器平均分显示器逻辑开关设备五 、软件分析(1)从机原理子机开始时P2口为0X00,数码管显示00,当有一次按键按下时,判断按键是否为复位键,如果不是复位键,则查表得出所按按键的键值,将此键值作为个位数显示在数码管上;当第二次按下按键时,判断是否为复位键,若不是,则将P2口的数据左移4位,与新键值相或后显示在数码管上,此时数码管上显示r十位数和个位数,接下来H有按下复位键后,数码管才会清零,可重新输入数字。否则,数码管上数字不再改变,等待与主机进行通信。当主机通过串口发送手机的地址码后,如0x01,子机通过中断串口接收并判断是否为自己的地址码,如果不是,则跳出中断,继续等待。如果是自己的地址码,则通过串口上传自己P2口的数据。如果中断串口接收到的命令是0xff。则进行复位。(2)主机原理当主机按下取值键后,通过串口发送l号子机的地址码,然后处于接受状态,等待l号千机发送数据,接收完毕后,将数据存放在数组中。接着发送2号子机的地址码,以此类推,等所有的子机数据都收集完毕后,算出平均分,然后开始与屏幕机进行并行通信。当主机按下复位键后,主机通过串口发送OxfI,并将手机中的相关数组初始化,等待下一轮评分源程序清单及注释:发送数据文件定义:#ifndef_send_data_h / 防止PMPDataT.h被重复引用#define_send_data_h#include /#include #define uchar unsigned char#define uint unsigned int/* 握手信号宏定义 */#define SUCC 0x2A/ 接收成功#define ERR 0xF0/ 接收错误#define MAXLEN 64 / 缓冲区最大长度uchar buf;uchar addr,get_key,key;#endif主机发送程序:#include send_data.h/* 延时t毫秒*/void delay(uint t)/ 对于11.0592M时钟,约延时1msuint i;while(t-)for (i=0;i125;i+);/*键盘扫描*/uchar keyscan(void)uchar scancode,tmpcode;P1 = 0xf0; / 发全0行扫描码if (P1&0xf0)!=0xf0)/ 若有键按下delay(10);/ 延时去抖动if (P1&0xf0)!=0xf0)/ 延时后再判断一次,去除抖动影响scancode = 0xfe;while(scancode&0x10)!=0)/ 逐行扫描P1 = scancode;/ 输出行扫描码if (P1&0xf0)!=0xf0)/ 本行有键按下tmpcode = (P1&0xf0)|0x0f;return(scancode)+(tmpcode);/ 返回特征字节码,为1的位即对应于行和列else scancode = (scancode1)|0x01;/ 行扫描码左移一位return(0);/ 无键按下,返回值为0/*发送数据函数*/void senddata(uchar buf)TI = 0;TB8 = 0;/ 发送数据帧SBUF =buf;while(!TI);TI = 0;/*串口初始化函数*/void init()TMOD =0x20; / 定时器T1使用工作方式2TH1 = 250;TL1 = 250;TR1 = 1;/ 开始计时PCON = 0x80;/ SMOD = 1SCON = 0xd0;/ 工作方式,9位数据位,波特率9600kbit/s,允许接收Changkey(uchar buf)switch(buf) case 0xc0: return (0); case 0xf9: return (1); case 0xa4: return (2);
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号