为什么自己设计不出来单片机程序?该怎么做?

涣量iMyy2912


学习单片机编程,需要有基础,需要有方法。

一,写不出单片机程序的原因有哪些?

C语言掌握不够,常用的语法不理解.

单片机知识点没有掌握。

单片机编程没有入门。

第一,要一定C语言基础,单片机C语言和普通C语言语法差异

1.调用的头文件不一样。

2.编译器的不同会造成单片机C程序编写过程中细节的差异,比如unsigned int类型,在某些编 译器当中是与unsigend char一样的位宽。


第二,要有一定的硬件知识。理解普通的三极管,高低电平,电压电流等基本概念。这个能看得懂原理图,从事单片机开发,会需要调试程序,需要通过一定的工具,万用表,示波器来分析自己的软件是否正常。

第三。必须要有一块合适的开发板。资料和教程要齐全,没有开发板,就没有练习和实操的机会和平台,更谈不上进步。

单片机分为很多种,8位单片机,16位单片机,32位单片机,从未接触过单片机开发的初学者,在选择开发板时,建议用从8位单片机如AT89S51作为单片机入门芯片。

对于基础知识较薄弱的同学,不建议一开始就学习stm32,因stm32学习难度会大很多,知识点也更多,学不好会打击积极性。

二,能熟练编写单片机程序,有什么方法?

首先,单片机的入门级别的知识点:

1,开发环境的搭建和使用,下载程序的操作。这一块非常重要,这个学不会,后面的单片机编程无从谈起。

2,端口IO输出,实操LED灯的亮灭,流水灯实验。

3,端口IO输入,实操按键的输入高低电平变化,操作LED的亮灭。

4,串口的输入输出,掌握ASCII码的字符与0-255数字的对应关系,并学会利用串口进行调试信息打印,掌握利用串口调试代码的方法。(这种调试方法很重要,很多单片机不能在线仿真,只能用串口调试)

5,掌握定时器功能。掌握普通定时器中断函数的写法和用法,如果对应的单片机包含PWM设置,也必须掌握PWM的配置和使用。

6,掌握IIC时序操作,很多常用芯片都用IIC通信,比如EEPORM存储芯片,掌握后读写相关参数.存储的数据断电不丢失。

7,一般开发板都会有实时时钟芯片如DS1302,掌握其用法,可以在综合练习中用到。

一定要熟练掌握以上知识点,初学者心中要形成自己单片机开发的知识树。


接下来说下

第一,多学习和多看教学资料和视频,目前51级别的开发板非常多,价格实惠,而且有很多优质的教学视频。可以作为入门教程。

第二,推荐郭天祥的入门书籍《手把手教你学单片机C语言》,以及他的教学视频《十天学会单片机编程》,我就是看了这本书和视频,然后不断练习,才踏入单片机编程领域的。

第二,多练习,想需要单片机,看得懂不一定写得出来,一定要跟着视频书籍和老师的要求,自己一点点的编写出来,并每个知识点做好记录。并思考总结,消耗吸收变成自己的知识。

综合实验

根据自己所学习的知识点,完成一个带定时闹钟功能的实时时钟,

1 通过按键设置闹钟,需要将闹钟时间存储在EEPORM中。

2,通过按键修改时间,对ds1302的操作,时间计数的累加,

3,通过切换闹钟-时间显示模式,比如长按,短按键的搭配等

4,数码管在不同的模式下分别显示时间和闹钟。

按照我文中的要求来进行操作和学习,最后完成实时时钟的这个实验,那么您的单片机编程能力一定得到很大提升!


科技电小二


设计单片机程序并不难,可以从简单的开始

设计单片机程序其实并不难,可以先从基础开始,然后慢慢深入就可以了。当然了,你需要有一定的电子基础知识,也要有一定的C语言基础(汇编语言现在用得比较少了)。

单片机其实就是一个“微型”电脑,它集成CPU、RAM、ROM、I/O,还集成PWM、AD、定时器、中断、UART、SPI等等的各种外设。

如果你有一定的电子基础知识和C语言基础,只要花上一两个月的时间,绝对可以自己设计出单片机程序来。

选择合适的单片机入门很重要

  • 首先需要跨出第一步,摸到门路,实现从“0”到“1”的转变;如果找不到门,怎么努务,怎么花时间都是没用的。最好有同事、朋友指导一下,这样就更容易入门了,可以少走很多弯路。摸清门路后,再努力一两个月,基本上就可以单独编写简单的程序了。
  • 单片机的品牌很多的,不同的品牌都会有一些差异,如果在公司上班,最好选择公司常用的单片机品牌进行入门学习,这样可以得到同事、还有代理商和原厂FAE的帮助。Demo Kit,开发环境都很容易搞定。如果没有同事、朋友帮助,需要全靠自学的话,可以选择51单片机,网上资料很多,学起来也容易。

如果数字电路、摸拟电路和编程基础都较好,可以直接从32位单片机起步,STM32就是很好的入门平台,资源很多,也相当火爆。

持之以恒,绝不能三天打渔两天晒网

如果下定决心学习单片机,最好制定好学习计划并严格执行。这个就像学英语一样,也是要靠坚持的。下面是本人建议的一个计划:

  • 选择好适合单片机入门平台,选择合适的开发板,搭建开发环境,实现单片机最小系统运行。
  • 学会单片机时钟系统的配置,学会上电复位配置和初始化。
  • 学会GPIO的输入、输出配置,点亮LED,读取按键输入。
  • 学会按键控制LED点亮的和熄灭,实现LED跑马灯功能。
  • 学会定时器的使用,使用定时器计时,实现LED跑马灯。
  • 学会数码管驱动显示
  • 完成自己的第一个作品:电子钟。
  • 学习用ADC通过NTC测量温度。
  • 学习外部中断,通过外部中断实时响应按键输入。
  • 学习PWM,通过PWM控制LED的亮度和驱动蜂鸣器发声
  • 完成自己的第二个作品:带温度显示的小闹钟。
  • 学习IIC,进行EEPROM读写操作。
  • 学习UART,与电脑通过串口进行通讯。

如果这些都学好了,基本上可以自己设计单片机程序了。开发一般的电子产品已经不成问题。基础打好了,后面可以继续深入的学习,进一步提升自己。

欢迎关注@电子产品设计方案,一起享受分享与学习的乐趣!关注我,成为朋友,一起交流一起学习

  • 记得点赞和评论哦!非常感谢!

电子产品设计方案


跳出教材的误导,直接写程序!

第一个程序,端口线拉高,点亮Led。

案例学习法,照视频材料,下载样例程序。

试图修改参数或增删语句,看看效果。

单片机教材的学习顺序坑死人不偿命。

运行一两个程序后,再补什么端口和外围电路。

逐渐了解单片机资源。

初学者,不必知道指令系统,存储结构,接口电路等等。

案例学习法,在样例基础上增删,看得见摸得着,事半功倍。

比如时钟中断,不学中断系统不学定时寄存器也行,把样例程序的定时设置看成子函数调用就好了。

多把心思放在程序结构,计算模型,控制流程,子程序扩展,资源利用。。。

不用把语法和技巧放在心上!!!

传统单片机教材害死人,学一学期不知单片机程序为何物。买个单片机板子,带样例程序的,第一天不出半小时,自学就能编第一个简单程序。

不要以为我自己是这么过来的才鄙视大学单片机教学。。。😄,我就是大学老师!按传统教材学的,又教学生。。。后来发现没必要那样漫长的学习过程。倒过来学,先下载程序运行,后讲什么是程序,再讲软硬件是怎么工作的。

初学者,不知道指令系统又何妨?你又不用汇编写程序。不知道中断系统又何妨?我知道怎么处理外部事件就行了。不知道通信口又何妨?我调用子函数就好了。不熟悉语法又何妨?编译一下就知道哪里错了。

再重复一遍,案例学习法,抛弃传统教材。


散居猎人


设计编写单片机程序是一个渐进的过程不可一蹴而就,毕竟单片机程序是与硬件有密切关系的,我们一般称为单片机程序叫底层硬件驱动程序。编写程序不但要对软件要熟悉而且对硬件也要熟悉才行,所以对于我们从事单片机技术的人员来说能够编写出没有“bug”的优秀程序需要具有“软硬兼施”的本领,否则编写的程序就会出现问题。下面根据我学习单片机来谈谈我对这个问题的体会。

设计不出来单片机程序的原因

我认为初学者感觉设计不出真正的单片机程序是一个普遍的问题。我先说说刚学单片机的朋友为什么设计不出单片机程序,首先是对软件知识和硬件知识有“短板”。因为程序的设计少不了使用程序语言,现在比较流行的单片机编程语言是C语言,如果在编程语言方面有欠缺的话编程会受到影响这是其一,其二是硬件方面,我们要知道单片机的外设硬件方面的一些工作原理,比如按键、显示器件、各种驱动芯片等,这些都与数字电路和模拟电路知识有关,如果这方面有欠缺应及时加强。

其次是对单片机程序与硬件的内在联系不清楚。我们编写的程序是与单片机外设的硬件紧密相联系的,如果不知道用编程语言的哪种处理方法或技巧去控制硬件工作,那么就无法编写出控制程序。比如编写一个测温度的程序,如何能采集到温度、如何编写把温度数据转换成数码管或者液晶能够显示的程序并分理处小数点等等都有一定的处理方法和技巧。

再次是缺乏设计编写程序的经验。有句话叫“万事开头难”,我们在做许多事情时刚开始都会感觉到无所适从,我认为这是很正常的现象,我建议刚开始学习时我建议从最简单的开始,比如从控制LED小灯开始再到各种花样的“跑马灯”小程序、模拟交通灯程序、具有数码管倒计时的模拟交通灯程序等,通过这样的循序渐进,由简入难地训练经过一段时间就会见到成效;最后一点我认为是缺乏整体布局的能力。因为一个完整的程序除了需要主程序外,还要有许多子程序。要完成整个控制流程就要对各个程序之间的不断调用来实现,这就要在程序的编排上要考虑周全。所以设计编写也就是对整个控制流程有整体的把控才行。

如何能编写出合格的单片机程序

其实设计单片机并不是很难能,那么如何才能设计编写出合格的单片机程序呢?我认为要从以下几个方面。一方面除了把我们自己感觉有“短板”的地方补齐外,另一方面我感觉还要做到以下几点:


第一点就是在设计程序时先要对控制的对象做全面的分析,也就是要把解决的问题的条件、初始化的数据、输入与输出的信息以及要达到的控制目的都要知道,虽然达不到“庖丁解牛”的那种娴熟的程度,最起码要做到心中有数。

第二点是在设计程序时要确定程序的“算法”,这个词听起来有点高大上,其实我们在设计程序时要知道根据控制的要求和我们所有的条件来确定我们所用的计算方法。我在学C语言时经常听老师说:算法是程序的灵魂这一句话,当时刚接触对这句话并不理解,现在回头看来这句话是很有道理的。这就像我们炒菜一样,如果我们能按菜谱去做就非常好吃,若是随心所欲去做菜那肯定难以下咽,我认为在这方面两者有“异工同曲”之处。

第三点是要善于绘制流程图,这一点在我们刚学习设计程序时我感觉很有必要。绘制流程图可以直观地体现我们编写程序的思路,它也是我们设计程序时的依据。从一定程度上说能绘制完一个控制流程图也就离设计出程序不远了。

第四点就是要抱着“他山之石,可以攻玉”的心态去多看别人的程序,学习别人的设计编写程序的技巧。我们知道C语言的可移植性很好,看到有非常好的子程序只要略微修改一下就可以为我所用,这样有时会节省很多时间。

我认为只要通过以上几点坚持下去,我们编写出没有“bug”的合格程序应该是水到渠成的事情了!

以上就是我对这个问题的回答,欢迎朋友们参与讨论。敬请关注电子及工控技术,欢迎大家转载、点赞!


电子及工控技术


你好 ,我来回答一下。

熟悉单片机的原理、结构;学好数电、模电,为设计电路打好基础;熟练使用C语言,多学习他人的程序;对操作系统原理有一定的了解,Protel有一定的基础;培养实际动手调试电路的能力。一般可以通过专业的书籍和课程进行持之以恒的学习,注意理论与实践并重,遇到问题耐心检查并适当投资购买实验器材。

自己买一套实验51单片机。多练习一下。

希望对你有帮助!



自动化电控戴哥


找一种单片机,看他的数据手册。它能做哪些功能都有例子!需要不同功能,用不同的单片机。C语言这种藏着掩着的高级语言其实不太好理解单片机的工作情况,还不如用汇编指令来写,一步一步都知道在干什么。功能变复杂以后,才需要高级语言来整理,复用。[害羞]


下次再说吧1236


单片机学习不单单是编写程序,往往需要搭建实物平台作为练习,我们上学时都是51的开发板,都需要专用下载线,现在有arduino uno开发板搭建简单程序易学一根usb线就能往单片机下载程序,扩展也很简单都是模块话的焊上排针用杜邦线都可以连接起来




农夫差点甜


如果不是电子专业学生,建议买本《单片机原理与实战》学习一下,然后在某宝上买块stm32单片机学习板跟着练习。一般情况下,应该在上个月内可以掌握基本的单片机软件开发。

花点钱找个培训机构学习一下也可以,主要是可以和大家相互讨论和学习。



方觉闲


从理论过渡到实际,向来是比较复杂的。自己设计程序,首先要对自己的设计目的有清晰的认识,对过程中涉及的软件及硬件都有一定程度的了解。其次要多看一些成品程序,争取能够深度理解,熟练掌握。

要充分了解硬件的规格与使用说明,在与软件配合时不容易出错。

在程序设计过程中,清晰梳理程序中的逻辑关系,用适当的语句完成想达到的功能,符合所用语言的规定。做到条理清晰,逻辑通达。


星痕闪烁


不知道你硬件水平怎么样,学单片机要有点硬件基础,要不然不知道怎么控制,有些功能没有硬件看不到现象,就不容易理解。

买一个单片机开发板也可以,先改程序,换io控制,改参数,多改,熟能生巧。

以后自己在慢慢写,有些问题暂时不理解,以后慢慢就理解了。


分享到:


相關文章: