产品选型

慧净51单片机 写给自动化专业同学们的一份信(下)

小编 2025-06-23 产品选型 23 0

写给自动化专业同学们的一份信(下)

大家好,这是我写的信下半部分,主要就是我对还在校园里的同学们的一点建议。

如果大家想走技术这条路线,我指的是单片机这方面(PLC我不擅长就不说了),大一的时候一定要早早的学会C语言,可以自学,不要害怕,以后绝大多数知识都是需要自学的,如果尝试发现有些困难,可以考虑报班学习,切记自学时,千万不要找那种很厚很厚的书比如C Prime Plus,入门时不需要多么精通C语言,以后有精力或者感觉自己C语言水平不够用了去翻看翻看就可以,不然一旦扎进书里,很消耗刚开始的那份冲劲儿,C语言的书网上有很多,或者直接看计算机二级考试那本教材也可以。

C语言基本掌握后,我建议大家还是先学习下51单片机,虽然好多人直接学习STM32,并不是不可以,我只是觉得32单片机已经将寄存器操作封装好了,直接对库进行操作,如果对寄存器操作没有了解,难免有些基础不扎实,到了以后操作其他芯片的寄存器时可能会不容易理解,而且51单片机学习周期较短,能让你对单片机有进一步的理解。51单片机我当时用的慧净的,不是打广告啊,天祥电子的比它贵一些,慧净开发板上的功能挺全的,够用了,淘宝搜下就能找到。

51单片机结束后开始学习STM32,野火的零死角玩转STM32这系列的教程很不错,把新手遇到的问题讲解的很详细,51转到32时,千万记得转换思想,不要想着还是寄存器去操作,很累的,现在除了已经工作多年的工程师,很少有人用寄存器操作32了,放心的用库函数吧,哪天有时间可以翻看下它的寄存器操作,比如GPIO的初始化,看一两个就够了,其他的都是大同小异,STM32学习到零死角玩转STM32中级篇,基本就可以做好多事了,高级篇可以暂时不看,毕竟内容有些多,学了一段时间不用也容易遗忘,当然有精力都学学更好。

接下来就是系统篇,ucosii系统,学习它我推荐任哲的《嵌入式实时操作系统uCOS-II原理及应用》,写的非常好,学习系统时记住,不要去想着理解函数是如何实现的,记住函数的功能和如何应用就可以了,就像32的库函数一样,重点学习它的任务机制,消息机制。项目应用中freertos用的很多,不过两个系统用起来我感觉区别不大,学会一个另一个很容易就掌握了。

在学习过程中一定要把学的知识用起来,多敲代码,做点小设计,不能光理解就觉得可以了,到此为止,下位机基本就没太多问题了,剩下的零零散散和更深入的知识可以去实际项目中学习应用。

接下来可以开始学习GUI,比如emwin,上手也很快,可以自己做点界面,人机交互,进而控制其他外围设备,学习emwin,安富莱的教程很不错,重点学习窗口管理,小工具用到什么学什么。在之后可以学习上位机,我学的是QT,语言用的是C++。同样,学习C++不要看太厚的书,脱节奏,后面有时间深入学习时在钻研。

以上便是软件部分了,硬件主要学习AD软件的使用,可以独立绘画PCB,至于设计原理图,看大家能力,由于我偏软件,硬件部分不能给大家多一点的建议,十分抱歉。还有一点。如果有机会跟老师做项目,一定争取参与进去,实践才是检验水平的时候,项目中也会让你收获颇多。

在学习这些技能的同时,不要丢下大学的课程,学位证还是很重要的,同时好多课程也非常重要,比如,高数(软件中的算法需要用到高数的),模电,数电,电路基础,自动控制原理,DSP等等,大家要对自己的课程的重要性做到心中有数,对了,还有英语,芯片的手册大多数都是英文的,英语还是很重要的。

第一次发文章,表达的有些凌乱,好多地方也没有说到,希望大家认真思考下自己的大学生涯,为自己做一个规划,最后祝福大家有一个美好的大学生活,毕业时签到一份满意的工作。小弟先去吃点食儿。。。下次见。

51单片机超声波模块数码管程序分享

超声波原理简单测距准确,应用广泛下面贴一个自己写的数码管程序,显示部分需要改,写的是我使用的是慧净开发板,共阴数码管。

超声波原理简单测距准确,应用广泛下面贴一个自己写的数码管程序,显示部分需要改,写的是我使用的是慧净开发板,共阴数码管。

//超声波模块程序

//Trig = P2^0

//Echo = P3^2

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f}; //0-9的码表

uinttime = 0;

uintTImeH = 0;

uintTImeL = 0;

uint succeed_flag;

sbit dula=P2^0; //段选信号的锁存器控制

sbit wela=P2^1; //位选信号的锁存器控制

sbit Trig = P2^2;

sbit Echo = P3^2;

//

void delay(uint z)

{

uint x,y;

for(x=z;x》0;x--)

for(y=125;y》0;y--);

}

//

void delay_20us()

{

uchar a ;

for(a=0;a《100;a++);

}

//***************************************************************

//显示数据转换程序

void display(uinttemp)

{

uchar qian,ge,shi,bai;

qian = temp/1000;

bai=temp/100%10;

shi=temp%100/10;

ge=temp%10;

wela=1;

//P0=0xf7;

P0 = 0xfe;

wela=0;

dula=1;

P0=table[qian];

dula=0;

delay(5);

wela=1;

//P0=0xf7;

P0 = 0xfd;

wela=0;

dula=1;

P0=table[bai];

dula=0;

delay(5);

dula=1;

P0=0x00; //关位码

dula=0;

wela=1;

//P0=0xef;

P0 = 0xfb;

wela=0;

dula=1;

P0=table[shi];

dula=0;

delay(5);

dula=1;

P0=0x00; //关位码

dula=0;

dula=1;

P0=table[ge];

dula=0;

wela=1;

//P0=0xdf;

P0 = 0xf7;

wela=0;

delay(5);

dula=1;

P0=0x00; //关位码

dula=0;

}

//***************************************************************

void main()

{

uint distance;

uint test =0;

Trig=0; //首先拉低脉冲输入引脚

EA=1; //打开总中断0

TMOD=0x10; //定时器1,16位工作方式

while(1)

{

EA=0; //关总中断

Trig=1; //超声波输入端

delay_20us(); //延时20us

Trig=0; //产生一个20us的脉冲

while(Echo==0); //等待Echo回波引脚变高电平

succeed_flag=0; //清测量成功标志

EA=1;

EX0=1; //打开外部中断0

TH1=0; //定时器1清零

TL1=0; //定时器1清零

TF1=0; //计数溢出标志

TR1=1; //启动定时器1

delay(20); //等待测量的结果

TR1=0; //关闭定时器1

EX0=0; //关闭外部中断0

if(succeed_flag==1)

{

TIme=TImeH*256+timeL;

distance=time*0.172; //厘米

display(distance);

}

if(succeed_flag==0)

{

distance=0; //没有回波则清零

test = !test; //测试灯变化

}

}

}

//***************************************************************

//外部中断0,用做判断回波电平

void exter() interrupt 0 // 外部中断0是0号

{

timeH =TH1; //取出定时器的值

timeL =TL1; //取出定时器的值

succeed_flag=1;//至成功测量的标志

EX0=0; //关闭外部中断

}

//****************************************************************

//定时器1中断,用做超声波测距计时

void timer1() interrupt 3 //

{

TH1=0;

TL1=0;

}

文章转载自互联网

相关问答

怎么游篡静 单片机 板子给AT89S52芯片烧程序?-ZOL问答

建议你看慧净电子AT89S52专用烧写视频教程,很详细指导你如何做的,在光盘文件夹12里。5条回答:【推荐答案】1、首先要选择配套的下载软件;2、下载软件设置好为...

猜你喜欢