肖飒枫叶吧 关注:1贴子:76
  • 4回复贴,共1

《转》大学留级生说说电子信息工程专业,找工作也很Easy

只看楼主收藏回复

大学没有好好学习,每天DotA。-。-到了大三由于欠学分过多编级(即留级)了,然后开始发奋学习。其中艰辛不多说,在大四那一年编回原级顺利毕业,也拿到了学位。在大三下半学期时我认真的考虑了以后的路,决定认真学一学单片机。现在找到了一份还算可以的工作,勉强算是产片开发。想和大家说说我对电子信息工程专业的就业的一些看法,吧中高手如云,也希望各位给我一些指导。
个人认为电子信息工程的两大方向:信号与电子。信号处理方向我不敢多言,妄谈下电子方向,电子方向的基础是摸电。
想要找工作(只是指简单的与单片机相关的工作)模电要懂一些,至少要懂的三极管的工作原理,放大器和比较器,基本的电路分析,这些都是很实用的知识。
数电方面,基本的概念要理解(电平,逻辑),一些很实用的电路应该了解(555)。
数电是模电的进阶,模电是基础,而关于高频我不敢多言。
微机原理是数电的升华,也是转向单片机的重要基础,应当了解其中的基本概念(例如二进制的意义,寄存器,程序指针、堆栈。哈佛结构等等)而汇编语言的部分了解最基本的指令就好
接下来是我认为找工作最重要的技能——单片机,并不是前几项不重要,而是单片机的工作实在是太好找,而单片机又实在是很简单。学习单片机原理要知道例如单片机的分类(数据长度分为 8位——51 PIC AVR ,16位--凌阳16位,飞思卡尔MC9S12X,32位——arm架构)。
大家都是从51 学起,不过其实八位机都是差不多的,比较重要的几项是:
1、显示器的驱动
LED、数码管、点阵、LCD1602 的驱动,单片机是用来为人工作的,这几项都是单片机与人交流的器件,想要找工作,这些都应当是信手拈来的,好在网上都有例程大家学起来难度不大。LCD12864 TFT彩屏这种比较复杂,学有余力的同学们可以试试。
2、输入设备
键盘扫描应当会网上有例程,应当研究下。
3、中断
中断的意义是它的触发条件来自硬件,因此它可以做到与程序“并行”(单片机的程序是以自上而下扫描的顺序运行,每条指令都是一步接一步的运行,而中断却做到了与程序同时运行直至进入中断处理程序)灵活运用中断非常重要
4、PWM
PWM也很重要,51的话基本上是模拟PWM而PIC有CCP(捕捉、比较、PWM)模块可以对其占空比直接设置。PWM的重要性在于通过调节电平时间赋予了数字信号对“大小”的控制力。PWM调光、调速都应当多加练习
5、A/D
51没有A/D转换的I.O口
要不还是拿PIC或者AVR练吧=。=
A/D也是相当重要的
不过现在有些晚了,明天继续说。有机会的话吧这几项细细的讲一下。
希望大家指正
感谢大家


1楼2012-11-10 14:10回复
    继续说A/D转换。A/D转换是数字量与模拟量之间的转换,单片机的信号只有高低,没有比例关系,而模拟信号存在大小比例关系,A/D转换的关键是精度。有机会详细说~。~
    今晚先说模电吧,模电最重要的也是工作中常用到的(最常用到的)大概有一下几部分
    1.二极管——稳压,整流,发光,光敏等等
    稳压二极管,顾名思义用以稳压,反相接入电路,电压过高则击穿二极管,用以保护电路
    整流二极管,整流桥
    6整流二极管,用于整流桥,与稳压管不同,稳压管的工作原理是击穿而整流管相反。整流桥要知道原理要会画,多少了解下三相整流更好。
    发光二极管,发光二极管与其他的二极管不同,它存在1V甚至更高的电压降,不同的颜色电压降不同,应当了解,并且会算限流电阻
    其他的就没什么了=。=
    2 三极管
    三极管要知道的最重要的是各种状态,要知道三极管用于单片机的电路中,一般是作为开关使用。作为外部接口的信号放大,比如单片机的5V电平被放大成12V(12V广泛用于汽车电子中)甚至更高,如何放大,顺便联系下上拉电阻。
    不同的三级管作为开关有几个必要知道的参数,工作电压/电流、开关频率等等
    三极管其实也没啥东西,注意啊,三极管是流控元件,即判断三级管导通是看电流=。=
    3 比较器、放大器
    这些东西对与单片机来说用处不是很大,尤其如果用PIC单片机的话,比较器也被集成进单片机了,为了避免贻笑大方,我还是不说了


    2楼2012-11-10 14:11
    回复
      谢谢大家对我的支持,我诚惶诚恐。我是08年上大学,今年毕业,但是工作的比较早,在去年十月份就开始工作了,到现在也算是工作一年了。我的工作经验很有限,专业技能也不是很优秀,来这里只是谈谈我实际遭遇,希望对大家有帮助。对于大家的问题,我知道的一定尽力帮助。有些问题例如高频电子线路的问题,我实在是帮不了大家。
      大家学的是同一个专业,我可能比大家早上几年学。学无先后,达者为先,我能帮助大家的,我一定尽力帮助,我有错误的地方,也希望大家能够指导。
      大家的问题,有些我不懂得我也不敢乱说,以免误导了大家。
      单片机是一种实践性很强的技术,可能学校中同学们学到的理论有时过于抽象,可能讲了一个学期大家对单片机的认识还不如做几次实验来的深入。
      学习单片机,实验是很重要的。一方面加深对单片机的认识,但最重要的方面是培养单片机的兴趣。
      单片机的实验我做过一些。我一直在想为大家推荐一些有意思的,硬件电路又不是太复杂的实验。本着这个原则,我向大家推荐这样几个实验
      1、跑马灯
      跑马灯实验是大家接触的第一个实验,虽然它很简单,但是我认为是个经典实验。
      首先, 它的硬件电路简单,八个LED等就好。
      其次, 训练了 延时函数,参数,C语言结构语句(如果你看郭天祥的话)等等的编程
      当时我看郭天祥视频时印象最深的一个实验就是LED演示二进制加法,我认为这是个很有意思的实验,也是我到现在对郭天祥影响最深的一个实验,当时的我作为一个初学者真的是为了这个下了一段功夫。大家也可以试试,郭天祥的LED实验题目我在这一节结束后会给大家贴出来。
      到了我工作后,逐渐变成了一个单片机爱好者,这时的我发现 跑马灯 还有更多的玩法。
      例如
      调光灯:通过按键,改变灯的亮度。
      呼吸灯:灯光的亮度逐渐增加,然后又逐渐减小,好像灯光在呼吸。看上去很美,其实很简单(我为大家提供下想法,而编程的原理大家自己考虑下)。与调光灯不同的是,呼吸灯做成一串8位。以第一个灯缓慢变亮,亮到一定程度第二个也由暗变亮,然后下一个继续,直到最后一个亮了之后再慢慢向回熄灭。
      万彩灯:找红黄蓝三色彩灯,三色灯以不同比例闪烁,用纸蒙住灯光,在纸面上呈现出各种颜色。这个在我实际做的时候效果还不是非常好,但也相当震撼。
      这些关于LED的实验程序都不是很复杂,又可以提高大家对于 延时,定时中断,程序结构体等等的理解 。我个人认为也都很有意思,可惜我的当时编的程序现在也都丢了,不能给大家例程,大家如果感兴趣的话我回头再找找。今天先说这些,再次谢谢大家


      3楼2012-11-10 14:12
      回复
        led6=0; //将单片机P1.5口清零
        while(1); //程序停止在这里,在后面会讲到为什么这样写。
        }
        8 // 用总线操作点亮2,4,5,6发光管.
        // 适用 TX-1C单片机实验板
        // 晶振为11.0592M
        /*********************************************************/
        #include<reg52.h> //52单片机头文件
        void main() //主函数
        {
        P1=0xc5; //将单片机P1口的8个口由高到低分别赋值为11000101
        while(1); //程序停止在这里,在后面会讲到为什么这样写。
        }
        9 // 尝试让第一个发光管闪烁.(程序看不懂没关系,后面章节会有详细讲解)
        // 适用 TX-1C单片机实验板
        // 晶振为11.0592M
        /*********************************************************/
        #include<reg52.h> //52单片机头文件
        sbit led1=P1^0; //单片机管脚位声明
        void main() //主函数
        {
        unsigned int i; //定义一个int型变量
        while(1)
        {
        i=50000; //变量赋初值为50000
        led1=0; //点亮灯
        while(i--); //延时
        i=50000;
        led1=1; //熄灭灯
        while(i--);
        }
        }
        9 // 尝试写出流水灯程序(程序看不懂没关系,后面章节会有详细讲解)
        // 适用 TX-1C单片机实验板
        // 晶振为11.0592M
        /*********************************************************/
        #include<reg52.h> //52单片机头文件
        void main() //主函数
        {
        unsigned int i; //定义一个int型变量
        while(1)
        {
        i=50000; //变量赋初值为50000
        P1=0xfe; //点亮第一个灯
        while(i--); //延时
        i=50000; //变量赋初值为50000
        P1=0xfd; //点亮第二个灯
        while(i--); //延时
        i=50000; //变量赋初值为50000
        P1=0xfb; //点亮第三个灯
        while(i--); //延时
        i=50000; //变量赋初值为50000
        P1=0xf7; //点亮第四个灯
        while(i--); //延时
        i=50000; //变量赋初值为50000
        P1=0xef; //点亮第五个灯
        while(i--); //延时
        i=50000; //变量赋初值为50000
        P1=0xdf; //点亮第六个灯
        while(i--); //延时
        i=50000; //变量赋初值为50000
        P1=0xbf; //点亮第七个灯
        while(i--); //延时
        i=50000; //变量赋初值为50000
        P1=0x7f; //点亮第八个灯
        while(i--); //延时
        }
        }
        Lesson 2
        1 // 第一个发光管以间隔200ms闪烁
        // 适用 TX-1C单片机实验板
        // 晶振为11.0592M
        /*********************************************************/
        #include<reg52.h> //52单片机头文件
        #define uint unsigned int //宏定义
        #define uchar unsigned char //宏定义
        sbit led1=P1^0; //单片机管脚位声明
        void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
        { //delay(500);大约延时500ms.
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
        }
        void main() //主函数
        {
        while(1) //大循环
        {
        led1=0; //点亮小灯
        delay(200); //延时200毫秒
        led1=1; //熄灭小灯
        delay(200); //延时200毫秒
        }
        }
        2 // 8个发光管由上至下间隔1s流动
        //,其中每个管亮500ms,灭500ms,亮时蜂鸣器响
        //,灭时关闭蜂鸣器,一直重复下去。
        // 适用 TX-1C单片机实验板
        // 晶振为11.0592M
        /*********************************************************/
        #include<reg52.h> //52单片机头文件
        #include <intrins.h> //包含有左右循环移位子函数的库
        #define uint unsigned int //宏定义
        #define uchar unsigned char //宏定义
        sbit beep=P2^3;
        void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
        { //delay(500);大约延时500ms.
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
        }
        void main() //主函数
        {
        uchar a;
        a=0xfe;
        while(1) //大循环
        {
        P1=a; //点亮小灯
        beep=0; //开启蜂鸣器
        delay(500); //延时500毫秒
        P1=0xff; //熄灭小灯
        beep=1; //关闭蜂鸣器
        delay(500); //延时500毫秒
        a=_crol_(a,1); //将a变量循环左移一位
        }
        }
        3 /*
        8个发光管来回流动,
        每个管亮100ms,流动时让蜂鸣器发出"滴滴"声。
        */
        /*********************************************************/
        #include<reg52.h> //52单片机头文件
        #include <intrins.h> //包含有左右循环移位子函数的库
        #define uint unsigned int //宏定义
        #define uchar unsigned char //宏定义
        sbit beep=P2^3;
        void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
        { //delay(500);大约延时500ms.
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
        }
        void main() //主函数
        {
        uchar a,i;
        while(1) //大循环
        {
        a=0xfe; //赋初值
        for(i=0;i<8;i++) //左移
        {
        P1=a; //点亮小灯
        beep=0; //开启蜂鸣器
        delay(50); //延时50毫秒
        beep=1; //关闭蜂鸣器
        delay(50); //再延时50毫秒
        a=_crol_(a,1); //将a变量循环左移一位
        }
        a=0x7f;
        for(i=0;i<8;i++) //右移
        {
        P1=a; //点亮小灯
        beep=0; //开启蜂鸣器
        delay(50); //延时50毫秒
        beep=1; //关闭蜂鸣器
        delay(50); //再延时50毫秒
        a=_cror_(a,1); //将a变量循环右移一位
        }
        }
        } }


        5楼2012-11-10 14:14
        回复


          8楼2012-11-11 19:35
          回复