经验之谈:如何学好单片机

发布者:huanli最新更新时间:2008-12-10 来源: 幸叶电子(苏州)有限公司关键字:单片机  教学  经验 手机看文章 扫描二维码
随时随地手机看文章

      摘要:单片机越来越多的受到电子产品研发人员和我国高等技术类学校的应用与重视。本文在多年实际经验的基础上,从单片机结构、逻辑思维、和微观理念方面着手,详细介绍了如何学好单片机这门应用技术的几点经验之谈。

      引言

      单片机诞生于20世纪70年代。所谓单片机是利用大规模集成电路技术把中央处理单元(Center Processing Unit,也即常称的CPU)和数据存储器(RAM)、程序存储器(ROM)及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统,再加上了中断单元,定时单元及A/D转换等更复杂、更完善的电路,使得单片机的功能越来越强大,应用更广泛[1]。现在更多单片机的发展已经进入了嵌入式系统时代, 由于制造工艺的进步,有如 VHDL、RTOS、CPLD、FPGA、DSP、ARM等这一系列可编程器件的体积越来越小、成本越来越低,而功能是越来越能满足人们的需要。自上世纪80年代以来,单片机技术在我国各个控制领域得到了广泛应用,各个世界半导体公司都非常看好中国这个庞大的市场而纷纷到中国来投资建厂,如在苏州就有日本的瑞萨、松下、美国的快捷等半导体公司在中的生产厂地。同时面对这一技术的不断发展,我国大部分高校都已经把单片机方面的课程作为学生的必修课,这为我国近些年来的科技、工业控制等方面的发展培养了大量人才,而且社会对此方面的人才需求还在不断的增加。面对如此情况,作为在校学生,又该从何学起?如何学好这门课程呢?又怎样才能不让自己学了等于没学呢?本文在多年实践的基础上,介绍自已的一些感受和经验。

      1理解单片机的结构

      对于一个初学者,最迷糊的就是对单片机芯片里面的结构的理解,小小的一个芯片为何能完成如此神奇的功能。

      第一次从事电子方面的工作,也总对那黑黑的芯片里面感到不可思意的神奇。直到有一天,在检修一台日本二手电子市场里买来的程控交换机时,发现里面有一块黑东西上的黑胶已经裂开,把它撬开一看,里面就是一块电路板,上面焊满了密密麻麻的电子零件。终于有点明白,原来芯片也可以这样做成。当然当时所见的那块电路板是不能被称之为芯片的,那只是日本的电子制造公司为了防止别人抄袭而把整个电路板密封起来或其它原因,只引出几个的引脚与其它电路连接。不过它可以让人联想到芯片的基本结构与此相类似,如果把那些内眼看得见的电子零件再缩小一千倍或更小以至于能把所有电子零件做在一个硅片上,那也就成了名副其实的芯片了。我们不防以图1所示的电路及电路板来做一个生动形象的介绍。该图是一个直流马达可以正反两个方向转动的电路,做成电路板并焊好电子元件后,经测试没有问题就可以用黑胶(通常采用酚醛树脂等材料)把所有电子元件封起来,只留六个引脚来与外部电路连接,这样看起来就好像是一个芯片。

      知道了一般芯片的原理,同样可以更进一步想象单片机为什么会执行逻辑运算等功能,这就牵涉到数字电路和模拟电路的知识。其实不管一个单片机的功能是如何的强大,其只不过是把许多以微米,甚至是纳米为单位级的数字的和模拟电子器件组成。为了形象的来说明单片机内部的结构原理,这里不访举如图2所示的跑马灯电路来阐述。图中电路表明的最终目的是让LED依次轮流被点亮。首先是通过计数器对输入脉冲计数,从0到15共16个脉冲为一个轮回,也即计数器的输出依次为二进制的0000B到1111B,再由四-十六译码器把计数器的结果解码输出,即依次置Y0到Y15由高电平变为高电平。当某一输出为高电平时,经过反向器后,与此线路相连接的LED的阴极被拉为低电平从而点亮该发光二极管。这样一来,计数器和译码器就相当于单片机里的处理器与PC地址寄存器了,与译码器输出脚相连的线就相当于地址线,与LED负极相连的输出线就相当于数据线,每一条“地址线”都与8根“数据线”有一个交叉,每一个交叉就相当于存储单元的每一个位。在这些交叉处是否要连通就相当于把程式烧录到存储器(ROM)里。最后总体来看就相当于一个只有16个地址的8位单片机。如果把LED换成图中数码管,改变图中的二极管连接,在“单片机”通电和输入时钟脉冲后,就可以不停的来显示数字了。

      另外,要做到对单片机内部结果真正的了解,还必须得先要有很扎实的电路基础、模拟电路、数字电路等方面的知识,否则可能就是空中楼阁。

      2理清逻辑思维

      学习单片机是最重要的一点就是不能糊涂,不能把逻辑关系搞得乱七八糟。对于初学单片机时,要学会把一个程式的逻辑性关系用流程图的形式清楚的表示出来。至于用来编写程式的单片机的语言是很简单的,不要把它想象得很神秘,不管是汇编语言、C语言、还是更高级的VC++和图示化语言(如LABVIEW),都只不过是把我们清楚的逻辑思维告诉单片机处理器,并指令它将要被如何进行逻辑操作。把单片机的指令看得很重要应该是我们大家在学习单片机时的一个最大的误区,老是担心指令记不住、不会用,这也是学习单片机还没入门、上路的主要表现。其实这样有什么担心的呢,记不住就不要强求好了,把指令放在旁边,当把逻辑关系清理好之后,再来对着指令表确定哪个逻辑关系由哪些指令来完成,当一条指令运用得几次后,根本就用不着担心不知道指令不会用了。退一步讲,即使真的记不得指令,参照书本的指令用法也完全可行,现在的知识量是海量,全把所学的知识死记在脑子里肯定会把脑袋涨破。在写程序时,只要程序的逻辑关系调理清楚了,写起来就好比做简单的翻译工作,把逻辑关系翻译成计算机语言来表示。如下图3和图4是一个简单的键扫描电路和程式流程图,我们根据这个流程图就很快能用目前非常普遍的C51汇编语言来写出这个程序。

KEY_SCAN:

PUSH A ;保存寄存器A

INC R1 ;

AND R1,00000011B

MOV R2,3

MOVC DPHL,TABLE ;取表首址

MOVC A,@DPHL+R1 ;读取表中数据

AND A,00001111B ;保留低4位

MOV P1,A ;按所取表中数据由P1低4位输出

CALL DELAY_TIME ;延时

MOV A,P1 ;读取P1端口

AND A,11100000B ;保留P14、P16、P17

LOOP:

RLC A ;左移A一位到位寄存器“C”

JC R1,LOOP1 ;判断位寄存器“C”是否为“0”

CALL KEY_CAL ;调用键码计算子程序

LOOP1:

DJNE R2,LOOP ;判断是否已移3位

POP A ;恢复寄存器A

RTI ;本次扫描结束


KEY_CAL: ;键码计算子程序

… … …

RTS


DELAY_TIME: ;延时子程序

… … …

RTS


TABLE: ;键扫描输出表

DB 11111110B

DB 11111101B

DB 11111011B

DB 11110111B

      3对微观世界的想象

      曾经在设计电路板时,为了让线路中的电流能流畅的通过线路,为了所设计的电路板能满足各种测试条件下的安全标准,如UL标准要求最长的电源地线不能过0.02欧姆(其测试条件是在20A的电流情况下测量它的功率P=I2R)。如果假如是0.02欧姆,通以20A的电流,那这条线路的发热功率将会是8W。把电流看作是我们宏观世界里的水,线路就好比一条水沟。要让水在水沟里怎么流,这理所当然是很容易控制的了。如水在急转弯的地方会起漩涡,会对急转达弯的沟的对面产生冲击。同样在电路板上的线路如果存在急转弯的情况,电流也会引起涡流,也会对线路的拐点处有一个冲击作用而产生辐射。这样一来,在理解了这一原理之后,每一次电路板的设计完成之后,所有的测试都能一次通过。可见把微观世界想象成宏观世界相类似的事物或过程是非常有帮助的。现代电子世界,特别是微电子,要想看清他的真面目,只有在高清昕度的显微镜下才能看到他的外形,可是即使了解了它的外形,也只不过是知其然而不知其所以然,它的工作过程根本无法看得到。


      现在单片机结构越来越复杂,集成度越来越高,存储量越来越大,将来还可能采用分子级电子晶体管呢。它的运行速度也是如此的越来越快,现在已经是采用纳秒级来定义它的运行时间了,最长的运行一条指令的时间最多不过一两个微秒,简直就是比一闪而过还要少好多好多。既然我们可以在空间上利用放大镜把外形放大后来了解,那么同样可以在时间上把时间拉长来解。不访把一微秒当作时一分钟或一小时来理解,这样我们就不难理解CPU就如人一样在处理某一条指令。比如指令“MOV A,01H”就是CPU把数据01H送到A累加器,在这个运送的过程就如人搬运东西的过程,这个过程的处理时间就是CPU处理一个指令的时间,通常称之为指令周期。有些时候单片机会出现对某个操作处理的时间不够,如进行数据采集时,被采集的信号相对于单片机处理时间比较快就会出现数据遗失的情况,这就要求单片机的运行速度更快。如果没有这处微观时间的概念,就很难理解怎么会出现这种情况。


      4结束语

      单片机变化发展迅速,但万变不离其宗,只要清楚了它们的基本原理和构造思想,不管它怎么变,都能做到知其然知其所以然。

参考文献:

1、匡忠辉 单片机原理及应用[M] 北京:机械工业出版社 2007年1月

关键字:单片机  教学  经验 引用地址:经验之谈:如何学好单片机

上一篇:普通MCU与DSP的区别
下一篇:设计技术问答:单片机可视化编程攻略

推荐阅读最新更新时间:2024-03-16 12:24

基于单片机的遥控探照灯系统实现
在舞台上,有时为了营造某种特殊效果,需要关闭除探照灯以外的所有现场灯。探照灯必须照在演员身上。由于探照灯高高悬挂在天花板上,当演员移动时,依靠人工来完成探照灯方向调节非常不方便,而通过遥控调节则很方便,有时演员的位置又是固定的,这可能需要多台探照灯透视照射一个固定位置(例如舞台的中央)。如果探照灯能够将这些位置以及灯的亮度预存到某个频道,需要时再直接调则会方便很多。 针对此应用,本文设计了一种支持频道存储的遥控探照灯系统来实现上述功能。该系统还可应用在监狱、各种高空作业和旷野、海面等工作场所,对远距离巡查、追踪、搜索、拯救和作业施工进行全方位、多角度照明。 因为照射点的位置不定,要求探照灯可以上下左右360度
[单片机]
基于<font color='red'>单片机</font>的遥控探照灯系统实现
51单片机C语言编程中对单片机绝对地址访问的两种方法
在进行8051单片机应用系统程序设计时,编程都往往少不了要直接操作系统的各个存储器地址空间。C51程序经过编译之后产生的目标代码具有浮动地址,其绝对地址必须经过BL51连接定位后才能确定。为了能够在C51程序中直接对任意指定的存储器地址进行操作,可以采用扩展关键字 at 、指针、预定义以及连接定位控制命令。 在这些方法中,本人认为最简单而有效的方法是用 _at_ 关键字来对指定变量存储器空间绝对地址来指定。一般格式如下: 数据类型 标识符 _at_ 地址常数 其中:
[单片机]
P87LPC767单片机及其在微功耗智能定位器中的应用
1 P87LPC767的引脚排列及主要特性 P87LPC767是PHILIPS半导体公司推出的OTP系列单片机,它采用20脚封装,可提供高速和低速的晶振和RC振荡方式,也可以通过软件编程选择时钟。该单片机具有较宽的操作电压范围,可通过控制寄存器编程来选择I/O口的输出模式,内含数字看门狗电路和I2C总线,其内部的二个模拟比较器可组成8位A/D及D/A转换器,同时具有上电复位检测和欠压复位检测功能,其I/O口的驱动电流可达到20mA。P87LPC767采用80C51加速处理结构指令执行速度是标准80C51MCU的两倍,温度范围为-40~+85℃,该单片机本身的电磁兼容性极好,并继承了PHILIPS半导体的低功耗特性以及不可破译
[单片机]
基于AT89C51单片机的点滴检测系统设计
一.系统概述 系统使用的模块有AT89C51单片机+8位共阳极数码管+74HC245驱动器+按键+小灯报警 系统使用AT89C51单片机作为主控,通过数码管显示计时时间,通过按键可以对计时时间进行设置,使用按键来模拟点滴的变化,按下按键则代表点滴停止工作。整体的工作模式是:在挂点滴前设置好点滴时间,开始挂点滴并按下开始计时按键,此时在计时过程中如果点滴停止则系统就会报警。 二.仿真概述 1.8位共阳极数码管显示计时时间。 2.按键设置计时时间。 3.按键来模拟点滴的停止。 4.计时过程中点滴停止则小灯报警。 三.程序设计 使用 Keil 51进行程序设计,打开 Proteus 时程序是默认烧录的
[单片机]
基于AT89C51<font color='red'>单片机</font>的点滴检测系统设计
51单片机汇编——延时和点灯
前言 这篇文章主要是看视频学习51汇编,但是我的环境总是配置不好,出现了这个问题(keil2+vdmagdi.exe+Proteus),有懂的小伙伴可以帮助一下我 ^.^ 一、延时程序 1.1 延时程序的简介和分类 在单片机的控制应用中,常有延时的需要,CPU 过一段时间再去做某件事,称之为延迟。延时有两种方法,即软件延时和硬件延时 硬件延时是通过定时/计数器(中断程序)来实现的,这种方法不占用 CPU 的工作时间 软件延时一般采用循环程序,通过 CPU 执行一个具有固定延迟时间的循环体来实现的 1.2 软件延时 1、机器周期数 延时程序的延时时间主要与两个因素有关,一是所用晶振,二是延时程序中的循环次数,一旦晶振确定之后
[单片机]
基于单片机和CAN控制器的嵌入式系统设计
1. 引言 单片机作为嵌入式设备的心脏,在从消费电子到工业应用等广泛的领域中得到应用。从单片机的历史来看,随着嵌入式设备对单片机功能和性能的要求提高,其经历了从4位机到8位机的发展过程。目前嵌入式产品的不断发展,8bit单片机的处理能力面对越来越多的挑战。而32bit单片机在嵌入式领域得到越来越多的应用。根据市场的发展,EPSON 公司专为高级数据处理的便携式设备推出了32位MCU(Microcontroller Unit )S1C33 系列,下面简单介绍一下EPSON 32 位单片机的特点: A. 强大的CPU内核:S1C33采用RISC(精简指令集)结构,三级流水线,105条16位长指令,其大多数指令在一个时钟周期内执行,大大
[单片机]
基于<font color='red'>单片机</font>和CAN控制器的嵌入式系统设计
Small RTOS51实现基于单片机的温控器设计
目前,8位单片机在测控领域和智能化电子产品应用中仍占有重要地位.而应用嵌入式实时操作系统(ERTOS)会对8位单片机的软件开发带来极大方便。在此简要介绍嵌入式实时操作系统及其在程序设计中的优越性,重点介绍了适合于小RAM单片机的嵌入式实时操作系统Small RTOS51,以及基于8位单片机的硬件和软件的设计方法和过程。 1 嵌入式实时操作系统Small RTOS51简介 嵌入式系统已成为当今的热门话题之一,从消费类电子产品到各种工业设备,嵌入式系统已渗透到日常生活的各个角落。对于嵌人式系统,一个重要的特征是实时性,即在确定的时间内完成规定的功能,并能对外部异步事件做出正确响应。确保系统的实时性,需要软硬件配合来完成,首先
[单片机]
Small RTOS51实现基于<font color='red'>单片机</font>的温控器设计
单片机定时器初始化不能用负号"-(1000/256)"写法
用负号的写法是错误的。定时时间并不是从-A到0。 TMOD=0x01; TH0=-(50000/256); TL0=-(50000%256); 下面这样写才是对的:有的书上用的负号写法。误导我了!! 负号是错误的,并不相当于65536-A; TH0=(65536-50000)/256; TL0=(65536-50000)%256; 用负号出错: TH0=-(1000/256); TL0=-(1000%256); th0=TH0; //这里的结果是:253 tl0=TL0; //这里的结果是:24 sum=TH0*25
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved