电科生产实习实验报告易海博Word格式.docx
《电科生产实习实验报告易海博Word格式.docx》由会员分享,可在线阅读,更多相关《电科生产实习实验报告易海博Word格式.docx(12页珍藏版)》请在冰点文库上搜索。
2013年5月27日—2013年6月7日
成绩鉴定
学习内容(20分)
与教学任务计划结合程度(10分)
与专业培养结合程度(6分)
其它(4分)
学习态度评价
(20分)
实践能力(10分)
学习态度(6分)
学习纪律(4分)
报告鉴定
(60分)
报告内容与实践过程紧密结合(15分)
报告内容与教学计划内容紧密结合(15分)
报告质量(主题、结构、观点、逻辑、资料、字数30分)
评阅教师姓名
庞胜利
职称
成绩
评语
评阅教师签字
年月日
生产实习报告
——IO控制系统开发
1、实验目的
利用单片机通过串口远程控制继电器,实现电脑对发光二极管的控制。
2、实验要求
基本功能:
1采用单片机,提供串口实现通信;
2然后通过qt软件,用户可以通过发指令来控制继电器,让具体的按钮控件实现功能;
3点open发光二极管极管亮,点close发光二极管灭。
3、系统设计
单片机最小系统,继电器,三极管,二极管,发光二极管,电阻,杜邦线若干
4、硬件模块
5、软件模块
单片机程序:
#include<
reg51.h>
sbitjdq1=P0^0;
sbitjdq2=P0^1;
unsignedcharcodetable1[]="
open"
;
unsignedcharcodetable2[]="
close"
unsignedcharflag,a,i;
voidinit();
voidinit()
{
TMOD=0x20;
//设置定时器1为工作方式2
TH1=0xF3;
TL1=0xF3;
//波特率设置为2400
TR1=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
REN=1;
}
voidmain()
init();
while
(1)
{
if(flag==1)
{
jdq1=0;
ES=0;
for(i=0;
i<
6;
i++)
{
SBUF=table1[i];
while(!
TI);
TI=0;
}
flag=0;
}
if(flag==2)
jdq1=1;
7;
SBUF=table2[i];
if(flag==3)
jdq2=0;
if(flag==4)
jdq2=1;
//关闭台灯
}
voidrs232()interrupt4
RI=0;
a=SBUF;
if(a=='
a'
)
flag=1;
b'
flag=2;
c'
flag=3;
d'
flag=4;
qt程序:
主函数:
#include<
QtGui/QApplication>
#include"
widget.h"
intmain(intargc,char*argv[])
QApplicationa(argc,argv);
Widgetw;
w.show();
returna.exec();
工程文件:
QT+=coregui
TARGET=myCom
TEMPLATE=app
SOURCES+=main.cpp\
widget.cpp\
win_qextserialport.cpp\
qextserialbase.cpp
HEADERS+=widget.h\
win_qextserialport.h\
qextserialbase.h
FORMS+=widget.ui
Cpp文件:
ui_widget.h"
string.h>
Widget:
:
Widget(QWidget*parent):
QWidget(parent),
ui(newUi:
Widget)
ui->
setupUi(this);
myCom=newWin_QextSerialPort("
COM3"
QextSerialBase:
EventDriven);
//定义串口对象,指定串口名和查询模式,这里使用事件驱动EventDriven
myCom->
open(QIODevice:
ReadWrite);
//以读写方式打开串口
setBaudRate(BAUD2400);
//波特率设置,我们设置为2400
setDataBits(DATA_8);
//数据位设置,我们设置为8位数据位
setParity(PAR_NONE);
//奇偶校验设置,我们设置为无校验
setStopBits(STOP_1);
//停止位设置,我们设置为1位停止位
setFlowControl(FLOW_OFF);
//数据流控制设置,我们设置为无数据流控制
setTimeout(500);
//延时设置,我们设置为延时500ms,这个在Windows下好像不起作用
connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));
//信号和槽函数关联,当串口缓冲区有数据时,进行读串口操作
voidWidget:
readMyCom()//读取串口数据并显示出来
QByteArraytemp=myCom->
readAll();
//读取串口缓冲区的所有数据给临时变量temp
//ui->
textBrowser->
insertPlainText(temp);
on_pushButton_clicked()//发送数据打开风扇
write("
a"
);
//以ASCII码形式将数据写入串口
radioButton->
setChecked(true);
setText("
open"
on_pushButton_2_clicked()//发送数据
b"
setChecked(false);
close"
on_pushButton_3_clicked()//发送数据台灯
c"
radioButton_2->
on_pushButton_4_clicked()//发送数据
d"
~Widget()
deleteui;
六、心得体会
1.万事开头难,要勇敢的迈出第一步。
开始时候是有点难度,但不要为自己找借口,要勇敢的迈出第一步,以后的路就会慢慢地顺起来了。
2.知识点用到才学,不用的暂时放在一边。
这个世界,如果每样东西都学,自己就会太累,但这并不是说有些东西可以不学,像在哪里都可以用到的时序图等就要好好的研究一下了。
3.程序不要光看别人的而不写,一定要自己看了别人怎么写后自己再写一遍,最好这时什么都不要参考,凭自己的印象去写,遇到错误时再好好看下,可以收到事半功倍效果。
4.必须学会掌握调试程序的方法,自己的程序遇到错误时一定要自己慢慢的把它调出来,有些人写好程序后发现问题,就到q群里或论坛上发表帖子,等着别人来回答,这对自己是没有好处的。
5.找到解决问题的思路比找到代码更重要,世界上的事情千变万化,就像不可能找到两片相同的叶子一样,世界上也找不到使用同一个代码的项目,所以要学会自己分析问题,找出解决问题的方案。
6.开动脑筋,运用多种方法,不断优化自己的程序,这是锻炼你写程序能力的一个很好的方法,这对于提高元器件执行的效率也是很重要的。
7.看别人的代码,学习别人的思路。
这是一种很有用的方法,可以把别人的思路与自己的相比较,发现自己的优缺点。
8.着重培养自己解决问题的能力,而不是看自己写过多少代码或者做过什么,这个最好的方法就是做一些具体的项目,从中培养自己解决问题的能力。
9.尝试写一下综合应用的程序,这个是很重要的,因为独立可以的综合在一起后并不一定可以正常工作。
10.如果有可能,多学习一下计算机专业的课程,例如数据结构,毕竟单片机与程序的设计也是不能分开的,这是一个综合的科目。
11.面对一个新的项目,要先自己想下怎么做,而不是单单地找别人的代码,这是很重要的,因为只有这样做,自己才能独立去思考一个新的东西,也更有可能创造出一个更好的程序。