1、课程设计任务书 课程设计题目 单片机双机通信系统 学院 自动化 专业 自动化 年级、班 设计要求:1基本要求:设计两个单片机最小系统,能实现有线通信,一方为发射,另一方为 接收。 2提高要求:两个单片机最小系统能相互通信,并能实现校验。 学生应完成的工作:设计基本方案,完成软件设计,设计电路图,线路板布线,电路焊接, 软件仿真,硬件调试,得到最后成果. 参考资料: 课程设计工作计划:第一周,接受设计任务书,设计基本方案,完成电路图;第二周,完成电 路板布线以及焊接,同时编写软件程序;第三周,烧录程序,硬件调试,得到最后成果. 任务下达日期 2011 年 2 月 21 日 完成日期 2011 年
2、 3 月 11 日 说明:说明:1、学院、专业、年级均填全称。 2、本表除签名外均可采用计算机打印。本表不够,可另附页,但应在页脚添加页码。 电子综合实习报告书 -单片机双机通信系统的设计 一、引言 由于 MCS51 系列单片机具有性能稳定、工作可靠、价格低廉等特点,因此其应用相 当广泛。一个 MCS51 系列的单片机(如 Atmel89c51)内部包含有 RAM、FLASH ROM、两 个或者三个 16 位的定时器/计数器、 一个通用异步串行通信控制器 (UART) 等多种资源。 但即便如此,在一些相对复杂的单片机应用系统中,仅仅一个单片机资源还是不够的, 因此而常常需要扩充 I/O 接口、
3、定时器/计数器、串行通信接口、RAM、ROM 等。采用通 用的标准器件进行扩充是通常的做法,但将单片机本身作为一个通用的扩充器件来使用, 也不失为一个好的方法。 在这种情况下, 一个系统中就使用了两个或两个以上的单片机, 而单片机之间就要通过互连来进行数据通信。MCS51 系列的单片机(以下简称单片机) 都带有串口,利用串口进行互连通信极为方便,其各种连接方式在许多书籍和资料上都 有介绍,在此不再重述。但如果系统要求扩充的资源是对外连接的串口,或对相互之间 的数据传送有一定的速度要求,则单片机的串口就不能用作系统内两单片机的通信接口 了。所幸的是,单片机的并行端口也能相互连接来进行数据通信。根
4、据单片机端口内部 结构的特点,这些端口的端口线可以直接相连,从而使两单片机之间并行通信接口的实 现不用另外的硬件电路设备。 此次设计就是针对上述情况展开的。 系统结构框图如图 (1) 所示。 二、键盘设计 1、硬件接线部分 考虑到此次设计要求用到的按键数比较多(09,AF 共 16 个按键) ,为了节 约 I/O 资源,采用行列式键盘,如图(2)所示 图(2) 按键编排如图(3)所示 图(3) 2、44 矩阵键盘识别处理 按键设置在行列式交点上,行列线分别连接到按键开关的两端。当行线通过上拉 电阻接+5 伏时,被钳位在高电平状态 ,事先认为设定好行线和列线的序号。此处设行 号为 i,从上到下编
5、为 0-3 对应于 p1.0-p1.3 口,列线设为 j,从左到右编为 0-3 对应于 p1.4-p1.7 口。 每个按键有它的行值和列值 , 行值和列值的组合就是识别这个按键的 编码。事先有数组存放好对应键值的段选码。矩阵的行线和列线分别通过两并行接口和 CPU 通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过 电阻接 VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有 无键按下, 判断哪一个键按下, 键的功能是什么; 还要消除按键在闭合或断开时的抖动。 两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态, 由行扫描值
6、和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 3、键盘识别处理程序 键盘识别程序如下: void scanf(void) /*键盘扫描子程序*/ uchar i,j,k=0; /*i 为行号,j 为列号*/ unsigned char num44=0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x84; /*采用共阳极输出*/ while(1) for(k=0;k15 表示无键按下 /否则,商表示按键编号,余数表示状态 /0 表示检测到按下,等待去抖动 /1 表示已经响应过事件,等待弹起 /2 表示已经弹起,等待再次去抖动 /3 未定义 char num8; char code numcode16 = 0xf3, 0x42, 0xe9, 0x6b, 0x5a, 0x3b, 0xbb, 0x62, 0xfb, 0x7b, 0xfa, 0x