测控课程设计报告 双机通信.docx
- 文档编号:7692748
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:10
- 大小:75.18KB
测控课程设计报告 双机通信.docx
《测控课程设计报告 双机通信.docx》由会员分享,可在线阅读,更多相关《测控课程设计报告 双机通信.docx(10页珍藏版)》请在冰点文库上搜索。
测控课程设计报告双机通信
单片机课程设计报告书
题目:
双机通信
院系名称
自动化学院
学生姓名
专业名称
测控技术与仪器
班级
测控0801
时间
2011年5月23日至6月3日
双机通信
一、设计目的
利用所学单片机知识解决实际问题。
二、设计要求
1.用两片单片机,实现双机通信;
2.用与A机连接的按键控制与B机连接的LED,每按一次键,LED以1秒的频率闪烁5次;
3.同理,用与B机连接的按键控制与A机连接的LED。
三、设计器材
器件名称
个数
STC8952RC
2
晶振
2
电容(30PF)
6
LED
2
电阻(1K)
4
开关
2
数码管
2
表3-1实验所需器材清单表
四、设计方案及分析(包含设计电路图)
4.1基本功能采集
实现参数,通信,基本显示形式
4.2扩展功能
在实现基本部分基础上,扩展8路开关信号输入和8位开关量输出带指示灯显示,输出量由后端计算机给定。
前端参数采集计算机参数显示为数码管显示。
4.3系统硬件结构图
图4-1硬件原理图
4.4硬件仿真图
图4-2硬件仿真图
4.5系统软件流程图及程序代码
下图为本次实验软件流程图
程序代码如下:
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitled=P1^0;//位定义
sbitkey=P1^1;//位定义
uinta=0,flag1=0,flag2=0,flag3=0;
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极编码
/***********延时函数***************/
/**************有形参,无返回值*****/
voiddelay(intz)//延时约一毫秒
{
uintx,y;
for(x=z;x>0;x--)//循环相减延时
for(y=110;y>0;y--);
}
/*************初始化函时钟数********/
/*********无形参,无返回值*********/
voidInit_time()
{
led=1;//LED灭
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//装初值,20MS中断一次
EA=1;//开总中断
ET0=1;
TR0=1;//中断设置
}
/************初始化串口函数********/
/************无形参,无返回值********/
//说明
/*串口工作在方式1,波特率9600bit/s,允许接收
***定时器T1,工作在方式1******/
voidInitUART(void)
{
led=1;
TMOD=0x20;//方式1定时器1
SCON=0x50;//串口工作方式设置
TH1=0xE6;
TL1=TH1;//装初值
EA=1;//开总中断
ES=1;//串口中断允许
TR1=1;
}
/***************串口中断函数*********
*************无形参,无返回值*********/
voidUARTInterrupt(void)interrupt4
{
if(RI)//判断发送结束标志位是否置位
{
RI=0;//清结束标志
flag3=1;//标志位3置位
}
}
/***********字节发送函数**************
****************有形参,无返回值*******/
voidSendByte(ucharc)//发送一个字节
{
SBUF=c;//将要发送的字节给发送寄存器
while(!
TI);//判断是否发送完毕
TI=0;//发送开始标志清零
}
/**********按键检测函数*************/
/**********无形参,有返回值**********/
ucharkeyscan()//有返回值
{
if(key==0)//判断是否有键按下
{
delay(10);//延时10MS
if(key==0)//是否真正按下
flag2=1;//标志2位置位
}
while(!
key);//按键是否释放
returnflag2;//返回标志位
}
/************定时器中断函数******/
/************无形参,无返回值******/
voidtime()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//装初值
a++;//变量a自增
if(a==20)//定时器是否增加到一秒
{
a=0;//变量清零
flag1=1;//标志位置位
}
}
/**************主函数************/
/***************无形参,无返回值**/
voidmain()
{
inti=0;//定义变量i
InitUART();//初始化串口
while
(1)//主循环
{
if(keyscan())//是否有键按下
{
flag2=0;//标志位2清零
InitUART();//初始化串口
SendByte
(1);//发送字节数
}
if(flag3)//判断串口书否收到数
{
ES=0;//禁止串口中断
flag3=0;//请标志位3
Init_time();//初始化时钟
ES=1;//串口中断置位
}
if(flag1)//定时器是否到一秒
{
flag1=0;//标志位清零
led=~led;//led取反
P0=table[i];//数码管显示当前的计数值
i++;//数值自增
if(i==10)//i值是否为10
{
i=0;//i清零
P0=0XFF;//灭数码管
TR0=0;//禁止定时器中断
InitUART();//初始化串口
}
}
}//主循环结束
}
五、问题分析与解决方法
课程设计初期主要对课程设计要完成的功能,步骤,最终要达到的要求不是十分清晰,经过小组成员的再三讨论及对老师的请教之后逐渐明确了课程设计的详细内容,从而制定了清晰的设计步骤,为最终顺利完成设计,达到验收标准做好了准备。
在实验过程中遇到了以下几个问题:
1.在PROTUSE中仿真没有错误的电路在实际做完之后不工作,再三检查,发现电路中有虚焊现象。
找到原因后及时改正,单片机终于正常工作。
2.在实验的基本要求之外,我们自己加上了数码管显示时间。
开始用共阴极的单段数码管,电路做完后还是不亮。
在查找资料后,以为要加上三极管放大电路,可是加上之后还是不行。
无奈之下,换成了共阳极的数码管结果很快就好了。
六、设计结果
成功完成实验要求,实现了设计要求,并额外发挥,实现了辅助数码管显示功能。
七、设计体会与收获
本次课程设计主要是通过对简单应用系统的设计,来达到充分理解并综合运用所学到的知识的目的。
张献:
本次课程设计中最大的感受就是我不会的太多了,需要学习的知识太多了。
虽然本次课程设计只有两周时间,可在这两周里,我们把上一个学期所学到的知识都实践了一遍,在这一过程中也暴露了很多问题。
我们欠缺解决问题的能力和解决问题的效率,发现了问题往往不会分析问题出现的原因,发现问题是好事,但一定要提高解决问题的效率
付云龙:
在本次课程设计中,我主要负责硬件电路的设计。
通过亲身对硬件电路的设计我了解到在硬件电路的设计需要细心,并且熟悉掌握好模电知识及平时的积累也是十分的重要的。
还有就是焊接电路板的时候要有全局布图的构成和焊接时的布线。
李力力:
本次试验我主要负责软件的编写,虽然软件在流程方面的很简单。
但是要想实际写出来却是费了两天的功夫,在PROTUES上仿真的时候也发现了许多在编写过程中不能找到的问题,几经修改之后终于可以正常工作。
在硬件做好之后又发现有许多关键的定义和硬件电路不相符合又改了几次,老天保佑终于可以完事了。
我觉得写软件不难而真正难的是软件的修改和维护。
软件的编写是一件很享受的过程,尤其是最终完成的一刻确实有一种成就感。
觉得自己真正学到了知识并且学以致用。
附录:
参考书目:
1.《单片机原理及接口技术》,李全利,迟荣强---北京:
高等教育出版社,2004.1
2.《单片机技能与实训》,宋国富---北京:
电子工业出版社,2010.2
3.《新概念51单片机C语言教程—入门、提高、开发、拓展全攻略》,郭天祥
4.《51单片机及其C语言程序开发实例》,戴仙金---北京:
清华大学出版社,2008.2
5.《C程序设计》,谭浩强,第三版---北京:
清华大学出版社,2005.7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测控课程设计报告 双机通信 测控 课程设计 报告 双机 通信