历史上的今天
返回首页

历史上的今天

今天是:2025年12月14日(星期日)

2022年12月14日 | 单片机C语言学习架构

2022-12-14 来源:zhihu

很多想学单片机的人问我的第一句话就是怎样才能学好单片机?对于这个问题我今天就我自己是如何开始学单片机,如何开始上手,如何开始熟练这个过程给大家讲讲。


步骤

1.找本书大概了解一下单片机结构,大概了解就行。不用都看懂,又不让你出书的。(三天)

2.找学习板练习编写程序,学单片机就是练编程序,遇到不会的再问人或查书。 (二十天)

3.自己网上找些小电路类的资料练习设计外围电路。焊好后自己调试,熟悉过程。 (十天)

4.自己完全设计具有个人风格的电路、产品,你已经是高手了。

单片机的学习实践

单片机提高重在实践,想要学好单片机,软件编程必不可少。但是熟悉硬件对于学好单片机的也是非常重要的。如何学习好硬件,动手实践是必不可少的。我们可以通过自己动手做一个自己的电子制作,通过完成它,以提高我的对一些芯片的了解和熟练运用它。这样我们就可以多一些了解芯片的结构。我相信,你完成了一个属于自己的电子制作,你的单片机水平就会有一个质的提高。


第一步:数字I/O的使用

使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。


第二步:定时器的使用

学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实 现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数 字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。


第三步:中断

单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。

中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。

以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。


第四步:与PC机进行RS232通信

单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。

USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊!


第五步:学会A/D转换

MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。使用A/D转换功能的简单的例子是设计一个电压表。


第六步:学会PCI、I2C接口和液晶显示器接口

这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。


第七步:学会比较、捕捉、PWM功能

这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。


第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计。

学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。

到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了!!


推荐阅读

史海拾趣

福声科技(FUET)公司的发展小趣事

福声科技(FUET)的初创可以追溯到几年前,当时电子产业正蓬勃发展,对高质量电声元器件的需求日益增长。公司创始人凭借在电声领域的深厚积累,决定成立一家专注于电声产品研发、生产和销售的企业。初期,福声科技聚焦于贴片式无源蜂鸣器、高分贝报警器等产品,凭借其高性价比和稳定的性能,迅速在家电、移动通讯设备等领域获得市场认可,为公司的后续发展奠定了坚实基础。

AZM [Arizona Microtek, Inc]公司的发展小趣事

随着电子行业的快速发展,AZM公司意识到只有不断创新才能在激烈的市场竞争中立于不败之地。因此,公司加大了对研发的投入,积极引进高端人才,建立了完善的研发体系。通过持续的技术创新,AZM公司成功推出了一系列具有领先水平的微电子产品,不仅提升了公司的市场竞争力,也为整个电子行业的发展做出了贡献。

常州能动(ENDRIVE)公司的发展小趣事

随着产品的不断成熟,常州能动开始积极拓展市场。公司参加各类电子展会,与国际知名企业建立合作关系,不断提升品牌影响力。同时,公司还加大了对市场营销的投入,通过广告、公关等手段提升品牌知名度。这些努力使得常州能动逐渐在电子行业中崭露头角,成为了一家备受瞩目的企业。

Anaren公司的发展小趣事

随着环保意识的日益增强,常州能动积极响应国家政策,加大环保投入。公司引进了先进的环保设备和技术,对生产过程中的废弃物进行无害化处理。同时,公司还注重节能减排和资源循环利用,推动公司向绿色、低碳、可持续发展的方向迈进。这些努力不仅提升了公司的社会形象,也为公司的长远发展打下了坚实基础。

南京中科微公司的发展小趣事

CSM凭借其卓越的技术实力和产品性能,逐渐在市场上获得了广泛认可。公司先后荣获了多项荣誉和奖项,如2021“物联之星”年度评选之“星锐奖”等。这些荣誉不仅是对CSM技术实力和市场地位的肯定,也是对公司未来发展的鞭策和激励。

以上五个故事分别从CSM的创立背景、技术突破、合作模式、重大项目承担和市场认可等方面展现了公司在电子行业中的发展历程和成就。希望这些故事能够为您了解CSM提供有益的参考。

BSI公司的发展小趣事

在全球化的背景下,电子行业的国际合作日益加强。BSI作为国际标准化组织的重要成员,积极推动了电子行业的国际合作和交流。通过组织国际会议、研讨会等活动,BSI为各国政府、行业协会和企业提供了一个交流和合作的平台。这些活动不仅促进了电子行业的国际合作和交流,还推动了电子行业的全球化发展。

虽然以上并非具体的发展故事,但通过这些描述,可以看出BSI在电子行业发展中扮演了重要角色,通过标准制定、产品测试与认证、推动绿色发展、支持技术创新以及促进国际合作等方式,为电子行业的健康发展做出了积极贡献。如需更多关于BSI公司具体发展故事的信息,建议查阅公司官方发布的资料或相关新闻报道。

问答坊 | AI 解惑

MCS-51单片机定点运算子程序库(一)

MCS-51单片机定点运算子程序库(一) 定点运算子程序库文件名为DQ51.ASM,为便于使用,先将有关约定说明如下:1.多字节定点操作数:用[R0]或[R1]来表示存放在由R0或R1指示的连续单元中的数据。地址小的单元存放数据的高字节。例如:[R0]=123456H ...…

查看全部问答>

nkstub.lib unexpected

请教各位大侠: 小弟今天在编译WinCE 6.0 BSP的时候,卡在Oal下面就是过不去, 错误信息如下: BUILD: [01:0000002951:ERRORE] C:\\WINCE600\\PLATFORM\\mini2440\\Src\\Oal\\OalExe\\sources(15) :  U1033: syntax error : \'$(_COMM ...…

查看全部问答>

有没有那位整过自绘CheckBox?帮忙看个问题

我准备重载CButton类,实现自绘CheckBox,就是用两幅图片代替系统的方框,现在发现一个问题,就是当点击CheckBox然后放开鼠标后,还是会出现系统方框,经过跟踪发现处理BM_SETSTATE的时候画的,有没有人碰到类似问题,有没有啥好点的解决方法? 在WinXP下 ...…

查看全部问答>

补偿算法

/*直线接直线*/ #include <stdio.h> #include <math.h> main() { float r,x0,y0,x1,y1,x2,y2,xl1,yl1,xl2,yl2,xs1,ys1,xs2,ys2,xs3,ys3; int sng; char g1[3];/*字符数组存储半径补偿命令*/ printf(\"input r:\"); scanf ...…

查看全部问答>

有没有人不加OS,成功驱动wifi芯片88w8686

有没有人不加OS,成功驱动wifi芯片88w8686的    比如说用stm32等处理器…

查看全部问答>

f2812工程文件学习

f2812   库函数pwm1.init在那个文件里 ,在工程里面找不到。仿真时却能进入汇编程序,不知道为什么? 先谢谢了…

查看全部问答>

DCDC的环路单位增益带宽为何是开关频率的几分之一? 不能是几倍吗?

DCDC的环路单位增益带宽为何是开关频率的几分之一? 为什么不能是几倍呢?这样不就更快了吗? 请高手解惑…

查看全部问答>

【我的电子技术入门之路】

【我的电子技术入门之路】----我的电子技术入门之路      最早接触与电子相关的东西,还是在本科大一下学期,那时候我们学院实验室开始招纳新生,我兴致勃勃去报名,被老师考了几个问题,侥幸过关,便进去了实验室。最开始学习 ...…

查看全部问答>

I2C配置没有ACK [

我用FPGA通过I2C配置ADV7181B,但是ADV7181B没有ACK,他的供电和复位都是正常的,请问有啥可能的原因导致的吗? 如何确实是不是烧了? 我之前是有ACK的。。…

查看全部问答>

请问研发培训生主要职务是什么

准备参加工作,在网上看到一家合资企业,招聘研发培训生和硬件研发工程师。请知道的前辈劳烦帮解释一下两者的区别。…

查看全部问答>