这应该算是我的第一次写博客,想了很久也不知道写什么,就连标题也想了好久。算了,那就给自己一个总结吧。我目前也是大二刚结束,可能这段时间也处于迷茫期吧。在思考人生的同时不妨对自己先做一个总结,这样有利于更清楚的认识自己。
首先我对电脑编程也是比较感兴趣的,但至于为什么我的大学专业却选择了一个电气工程及其自动化专业,这中间的曲折还有很多,我就不一一说了,但还好的一点是我对自己现在的专业也是比较喜欢的,所以我把电脑编程当作的一种爱好而不是职业。
记得第一次进入大学时充满了期待,因为从小就听大人们说只要你进入了大学你就解放了。高中老师也说过只要你上了大学想怎么玩就怎么玩。直到现在我才明白那些话还真是骗小孩子的,无知的我竟然也信了那些鬼话。
其实大学社团确实是一个可以真正锻炼自己的地方,我大学就加了一个社团,那就是我们电信学院的科学与技术学会,简称科协。也就是在这个地方,我了解到了一个叫51单片机的东西,也从此走上可技术开发之路。
首先想学51,除了硬件电路的基础外还必须掌握的就是软件编程,还记得那个Hellow Word!吗?相信每个学过C语言的人都会记得,这是人生写得第一条代码。在大一快结束时,我就买的一本谭浩强的C语言程序设计基础第5版,这本书确实不错,我就利用大一寒假期间自学了C语言,到了大一第二学期,有了C语言的基础,然后我就开始尝试练习开发51,这里的开发专指软件编程,至于硬件设计也没有系统的学习,不过男生嘛对于那些简单的电路设计也不会太差。
自己做的第一个51作品就是4x4x4光立方,这个完全是练手,电路图什么的都有,程序也是现成的。只需焊接好硬件电路就可以。然后就是学校的循迹车比赛,在参考源程序后,我自己总结修改出了一套循迹车程序,可遗憾的的是车的硬件电路出了问题,导致最后与比赛无缘。
就此51的开发就先告一段落,大一也快结束了,而我也花了很多功夫在课外的知识上,导致挂了一科,但我相信我做的是对的,大一暑假期间我就开始学习开发网站,在阿里云上买了一个学生轻应用云服务器用来为自己的开发做基础,接下来就是买域名备案等等,将近整了一个月才将所有的搞到手,然后就开始网站的开发练习,最初我的网站设计主要是放一些我的简历以及我的一些51作品及教程。后来由于才大一啥都没有,简历也写不出啥,所以网页的基础框架是做出来了但内容确是空的,也是等了好长一段时间不知道该在自己网站上放点什么,就这样一直挂着,服务器每个月也得缴费的,虽然只有9.8元也不贵(这是阿里云专为学生出的优惠)但是每个月也是白白的开着,而且对与网络版权的那方面法律也是不太懂生怕一不小心触犯法律,因为看到过有一个大学生也是开了一个网站,放了一些小说上去给读者下载,却被出版社起诉索赔300多万,想想就可怕,法律意识淡薄还是不触碰的好。再说自己现在也基本学会了基本的简单网页开发,可以制作个人简历等。所以网站运行了将近一年后成功倒闭,为什么说是倒闭,因为我实在不想续费服务器了,然后就…对吧。
从大二开始我就凭借着自己的51基础疯狂的参加各种比赛无论是学校的还是校外的,当然还是取得一些小成绩,比如学校的电子制作大赛,在大一时没获奖,在大二获得了校级一等奖。参赛作品:手机红外控制灯树循迹车大赛,大一没获奖,大二也同样获得了校级一等奖。
那就给出我自编的一般常规驱动代码吧!
至于高级代码,这属于机密。。。代码适用范围要根据你的硬件设计来定
/**********************循迹**************************/
#include <reg52.H>
sbit pwm=P2^0; // 舵机pwm控制
sbit IN1=P3^2; // 电机使能控制端
sbit ENA=P3^3; //
sbit IN2=P3^4; //
sbit Ghg=P2^4; // 干簧管
unsigned int GH,GL,DH,DL,zgg,zgd,zdg,zdd,a,b,c=1310,d; //实际测试参数2700
unsigned char R,L; //GH:高电平的高四位
/*****************延时函数 1ms******************/
void delay(unsigned int ms)
{
while(ms--);
}
/********************舵机函数********************/
void timer1() interrupt 1 using 0 //中断1 T0溢出中断
{
pwm=!pwm;
if(pwm==0)
{
pwm=0;
TH0=DH;
TL0=DL;
}
else
{
pwm=1;
TH0=GH;
TL0=GL;
}
}
/*********中断程序2****用于控制电机转速*********/
void timer2() interrupt 3 using 3 //中断3 T1溢出中断,使用工作组3
{
IN1=!IN1; // 输出取反
if(IN1==0) //
{
IN1=0;
TH1=zdg;
TL1=zdd;
}
else
{
IN1=1;
TH1=zgg;
TL1=zgd;
}
}
/*****左转45度***********高低电位占空比为0.92:19.08ms**********/
void Left45(void)
{
L=1;
R=1;
c=920;
d=20000-c;
GH=(65535-c)/256;
GL=(65535-c)%256;
DH=(65535-d)/256;
DL=(65535-d)%256;
TR0=1;
}
/****左转25度****高低电位占空比为1.21:18.89ms*********/
void Left25(void)
{
L=1;
R=1;
c=1210;
d=20000-c;
GH=(65535-c)/256;
GL=(65535-c)%256;
DH=(65535-d)/256;
DL=(65535-d)%256;
TR0=1;
}
/******左转15度****高低电位占空比为1.31:18.69ms*********/
void Left15(void)
{
L=2;
R=2;
c=1310;
d=20000-c;
GH=(65535-c)/256;
GL=(65535-c)%256;
DH=(65535-d)/256;
DL=(65535-d)%256;
TR0=1;
}
/*********复位*****高低电位占空比为1.44ms:18.56ms************/
void Reset(void)
{
L=2;
R=2;
c=1440;
d=20000-c;
GH=(65535-c)/256;
GL=(65535-c)%256;
DH=(65535-d)/256;
DL=(65535-d)%256;
TR0=1;
}
/********右转15度***********高低电位占空比为1.58:18.42ms***********/
void Right15(void)
{
L=2;
R=2;
c=1580;
d=20000-c;
GH=(65535-c)/256;
GL=(65535-c)%256;
DH=(65535-d)/256;
DL=(65535-d)%256;
TR0=1;
}
/********右转25度************高低电位占空比为1.68:18.32ms***********/
void Right25(void)
{
L=1;
R=1;
c=1680;
d=20000-c;
GH=(65535-c)/256;
GL=(65535-c)%256;
DH=(65535-d)/256;
DL=(65535-d)%256;
TR0=1;
}
/********右转45度*****高低电位占空比为1.80:18.20ms*************/
void Right45(void)
{
L=1;
R=1;
c=1880;
d=20000-c;
GH=(65535-c)/256;
GL=(65535-c)%256;
DH=(65535-d)/256;
DL=(65535-d)%256;
TR0=1;
}
/***************加速,减速***************/
void runtest(void) //前进 高低电位占空比为a:b
{
a=3600;
b=10000-a;
zgg=(65535-a)/256;
zgd=(65535-a)%256;
zdg=(65535-b)/256;
zdd=(65535-b)%256;
}
/***************停车**************/
void stop(void) //停车
{
ENA=1;
IN1=0;
IN2=0;
}
void car_init()
{
TMOD=0x11; //计时器工作模式 T1,T2都可以配置
ET0=1; //允许打开T0
ET1=1; //不允许打开T1
EA=1; //打开允许总开关
TR0=0; //关闭T0计时器
P0=0Xff; //1111 1111
delay(300);
Reset(); //车头复位
IN2=0;
TR1=1;
Ghg=1;
// delay(50000);
// delay(50000);
}
void main(void)
{
car_init();
while(1)
{
if(Ghg == 0)
{
Reset();
while(1)
{stop();}
}
runtest();
switch(P0)
{
// 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
case 0xfe: // 0 1 1 1 1 1 1 1
Right45();
break;
case 0xfd: // 1 0 1 1 1 1 1 1
Right25();
break;
case 0xfb: // 1 1 0 1 1 1 1 1
Right15();
break;
case 0xf7: // 1 1 1 0 1 1 1 1
Reset();
break;
case 0xef: // 1 1 1 1 0 1 1 1
Left15();
break;
case 0xdf: // 1 1 1 1 1 0 1 1
Left25();
break;
case 0xbf: // 1 1 1 1 1 1 0 1
Left45();
break;
}
}
}
以上数据可根据实际情况进行修改调试
经验是一次一次积累出来的。这是我目前为止的参赛经历
随着比赛的含金量逐渐提高51已经远远满足不了我的开发需求,所以我又开始学习了STM32,怎么说呢32 的功能更强大,而且也比51听起来高了一个档次,我用32 做的第一个作品是车间粉尘防爆系统,这个项目是我和2个大三的学长做的,100%原创,我主要负责的是环境数据参数的采集,硬件也是采用模块化,所以硬件也没什么难度,主要是下位机的编程,另外两个大三的一个负责上位机的开发,另一个负责通信联调。就这样我们拿到项目后就利用大二的寒假在家自学,通过一个寒假我们成功的完成了我们各自负责的那部分。
一个车间粉尘防爆系统在我们三人的努力下由构思变为现实,但这个系统还是处于孵化阶段,需要优化的太多,需要质检的也有太多,所以直到现在我还是在优化该作品,减少代码的出错率以及新功能的加入和BUG的修改,还好总是有点收获的,就我们这初级作品已获得了博创杯省级一等奖,互联网+大赛校级银奖成绩还算是满意。说到这我不仿讲一下我从这几次比赛中学到的知识,对于比赛,你难免会遇到答辩,那你知道如何答辩才能博人眼球吗?首先第一个我要讲的是 “真诚”知而讲,不知而微笑,所有评委都不是傻子,什么话是真话什么是假话他们一听便知。千万不要自以为是把别人当作傻子。第二声音一定要大,特别是男生 ,底气足,是自信的表现,自信不能自满更不能自大。第三也是最重要的,7-38-55定律:人们对一个人的印象,只有7%是来自于你说的内容,有38%来自于你说话的语调,55%来自外型与肢体语言。答辩的目的就是你是否能给评委留下一个好的印象,肢体语言是非常重要的,你不能像一个木头人一样杵在那巴拉巴拉一直讲PPT,这是每个评委最反感的,你要学会肢体语言,这样才会做到绘声绘色,从而拿到高分。
一个项目你做的再好,但你讲不出来或者讲不好这才是最可惜的。团队也固然重要,一个一流团队做二流项目可以成功,但三流团队做一流项目就未必了。
插入了点题外话,大二第二学期参加了大创和电赛,电赛先不说,这次的大创参赛题目是指导老师直接给的,难度对本科生来说也是比较大的,我的项目算是实验室里比较简单的项目:《基于活体检测的PCA多特征人脸识别门禁考勤管理系统》是不是名字听起来就很那个啥,但实质难点在于算法,而且该项目下位机是用树莓派开发,上位机用Python,这就意味着我要在这个暑假里学会Python算法。这也是我现在主要干的事,现在我的Python基础已经差不多学完,但实战还是太少,所以看时间允许下在开始大创前先用Python写一个爬虫练练手,也进一步加深Python的学习,但是还是很迷,现在还不知道从何下手。这次的大创我主要负责上位机,所以很迷,到现在还不知道如何用Python开发上位机,之前的上位机用的是VS开发现在突然转为python就不知从何下手,也没个案例参考。如果有会的人还请评论留言我该从何处下手去开发上位机,目前Python我只学了一个基础,算是小白一枚,最多只会写一个信息管理系统,而且只能在IDE里运行的那种,在代码框里输出显示。如果有大佬能给个学习建议的话,小白我万分感谢。
所以这就是我大学前两年的成果,一天忙忙碌碌的,可惜的一点也是让我最丢人的一点就是我挂科了,因为一天总学课外的,然后该学的却挂了。大一挂了一门,大二又挂了一门,这个就让我很头疼,也感觉到很没面子。但确实挂的这门我是实在无能为力,平时学的不扎实,而且复习只留了一天时间,不挂我挂谁?算了,暑假好好补补,学习是公平的,人家学的时候你在玩,那人家玩的时候你就得学习。这些东西躲你是躲不掉的。那你只能坦然接受,承认自己的愚昧,然后努力用功。
总结完后,下来就是方向了,现在大致方向已经定了,考研就是接下来一年半该干的事,目标学校还每选好,但专业方向已经定了。当所有事情都具备时,那么剩下的就只有你的努力了。
第一次写博客,感觉写着写着就写成了日记,希望这篇文章能对刚进入大学的学生一点方向,不要荒废大学的美好时光,干好自己手底下的每一件事情,时常总结自己,这是准大三学长给你们的建议。也是给我自己的一个忠告。
爱总结的人永远不会太差,一个总将考研挂在嘴边的人,他未必能考中,但他清楚此时自己该干什么。