本帖最后由 刘洋讲单片机 于 2017-1-11 14:58 编辑
第01讲.STM8单片机应用.zip
(297.71 KB)
众拳【剑齿虎STM8】开发板学习笔记分享
点击此处查看全部资料
第1讲 单片机应用简介
目 录
1.1概述 3
1.2 单片机能做什么 3
1.3 学习单片机应有的知识储备 5
1.4 如何学习STM8单片机 6
1.5 C语言发展过程 8
1.1概述
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术。把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代由当时的4位、8位单片机,发展到现在的32位、64位单片机。
1.2 单片机能做什么
单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
① 智能仪器
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(电压表、功率计,示波器,各种分析仪)。
② 工业控制
单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单片机可以构成形式多样的控制系统、数据采集系统、通信系统、信号检测系统、无线感知系统、测控系统、机器人等应用控制系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
③ 模块化系统
某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。
④ 汽车电子
单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器、GPS导航系统、abs防抱死系统、制动系统、胎压检测等。
此外,单片机在工商、金融、科研、教育、电力、通信、物流和国防航空航天等领域都有着十分广泛的用途。
1.3 学习单片机应有的知识储备
单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单片机可以构成形式多样的控制系统、数据采集系统、通信系统、信号检测系统、无线感知系统、测控系统、机器人等应用控制系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
1.模拟电路、数字电路基础
理解电流、电压、运放、逻辑、直流稳压电源等。
重点了解电平的特性:
(本课程中)定义单片机为TTL电平:高 +3.3/5V
低 0V
(本课程中)RS232电平:计算机的串口:高 -12V
低 +12V
2.C语言编程
C语言是一门通用计算机编程语言,应用广泛。
基础部分包括: C语言认知、数据类型、运算符/表达式、流程控制/循环、数组、函数;
进阶部分包括: 指针、结构体、联合体、枚举、位运算、预处理、文件操作等的学习。
1.4 如何学习STM8单片机
(1)理论与实践并重---事半功倍
对于单片机初学者而言,最想知道的是如何入门、如何学好单片机?下面我就结合我自己是如何开始学习单片机的与大家分享一下。
首先,单片机属于硬件,要想让单片机按照我们的想法检测或者控制外部设备,就要给单片机赋予一个“思想”,这个“思想”就是我们用C语言编写的完成特定任务的程序。硬件是基础,软件是灵魂。
【关于硬件】:
单片机的工作原理是什么?对初学者来说不必深究,这不是我们学习的方向。考驾*我们只要大概知道汽车是由四个轮子,发动机,制动系统,离合器,方向盘等部分构成就够了,只要学好如何正确驾驶汽车就可以了。至于发动机具体的工作原理不必深究。同理,学单片机只要大概知道单片机内部由运算器、寄存器、GPIO、复位电路、时钟电路等部分组成就够了。我们只关心如何操作单片机及其所涉及的外围功能模块就可以了。
【关于C语言编程】:
关于初学者如何学习C语言?我个人认为,在编程过程中涉及到哪部分就针对性地学哪部分,既省时,又**深刻,没必要专门找本C语言的书系统性的学习。当然,如果你有充足的时间去系统性的学习单片机C语言编程那更好。个人认为,对初学者只要学会下面这些知识应付任何一种单片机软件编程都足够了:
■5条指令语句:
▶ switch语句;
▶ if else语句;
▶ while语句;
▶ for语句;
▶ =赋值语句。
■ 7个运算符:+、-、*、/、|、&、!
■ 4个逻辑关系符:||、&&、!=、==
■ 3个数据类型:unsigned char, unsigned int, unsigned long。
■ 3个进制相互转化:二进制,十六进制,十进制。
■ 1个void函数。
■ 1个一维数组code(或const) unsigned char array[]。
这些知识点,我在后续的视频讲课中也会穿插讲解的。同学们有时间也可以找一些单片机C语言方面的书先了解一下这些知识点。
【关于实践】:
单片机这门课是非常重视动手实践的,大家看完我每堂视频课程后,一定要把例程代码在IAR开发环境中自己敲一遍,然后把编译后的HEX文件下载到“剑齿虎STM8开发板”观察实验结果。多上机、多练习,要是能够举一反三那就更好了。
对一个初学单片机的人来说,如果按教科书式的学法,上来就是一大堆指令、名词,学了半天也搞不清楚这些指令起什么作用,也许用不了几天就会觉得枯燥乏味以致半途而废。所以学习与实践结合是一个好方法,边学习、边演练,循序渐进,这样用不了几次就能将所用到的指令代码理解、吃透、扎根于脑海,甚至“根深蒂固”。也就是说,当你学习完几条指令后(一次数量不求多,只求懂),接下去就该做实验了,通过实验,使你感受到刚才的指令产生的控制效果,眼睛看得见 (灯光)、耳朵听得到(声音),更能深刻理解指令是怎样转化成信号去实现控制的,通过实验看到自己所学的成果不仅有一种成就感也能提升你对单片机的兴趣。说句实在话,单片机与其说是学出来的,还不如说是做实验练出来的,何况做实验本身也是一种学习过程。因此边学边练的学习方法,效果特别好。
(2)合理安排时间持之以恒
学习单片机不能“三天打鱼、两天晒网”,要有持之以恒的毅力与决心。学习完几条指令后,就应及时做实验,融汇贯通,而不要等几天或几个星期之后再做实验,这样效果不好甚至前学后忘。另外要有打“持久战”的心理准备,不要兴趣来时学上几天,无兴趣时凉上几星期。学习单片机很重要的一点就是持之以恒。
1.5 C语言发展过程
C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。 当代最优秀的程序设计语言,早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识。到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。 C语言的特点,C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。 C语言版本 目前最流行的C语言有以下几种: ·Microsoft C 或称 MS C ·Borland Turbo C 或称 Turbo C ·AT&T C 这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。 面向对象的程序设计语言 在C的基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。
C++目前流行的最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2.0。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。但是C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。
|