您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制51系列单片机(C语言)入门方法 正文
51系列单片机(C语言)入门方法

51系列单片机(C语言)入门方法

点击数:7828 次   录入时间:03-04 12:03:42   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机,简称单片微型计算机或单片机(Single ChipComputer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。
  
  下面将介绍51系列单片机(C语言)的入门方法。
  
  一、学习单片机必须的思想及物质准备  
  
  首先,对于初学单片机的人来说,必须有学习单片机的热情,不是说今天去图书馆看了一下午关于单片机的书,明天玩上半天,后天就不知道那本书在讲什么东西了。笔者刚开始接触单片机时,正如前面所说的,仅知道有一种芯片叫单片机,但是具体长成什么样子,却一点也不知道!但一直坚持看单片机的书,虽然有很多不懂,还是坚持了下来。
  
  当明白了单片机是这么一回事的时候,问题出来了:要选择哪种语言为单片机编写程序呢?为这个问题,困扰了好久。具体选择C51还是A51呢?汇编在以前没有学过,虽然看着人家的讲解,很容易明白单片机每一时刻具体工作情况,但是一台上书或者资料,却什么也不知道了,更不用说自己写程序了。最终,还是决定学C51。毕竟C51和课上所学的C语言有些类似,编程的思想是相通的。而且C51还有更大的优点,就是编写大程序时的优越性。当然,那时并没有想那么深远,C51的特点,还是在后来的实践过程中,渐渐体会到的。如果你选择了C51,或即将选择学习C51,本文将引你逐渐入门。
  
  第二、既然想学好单片机,必须得舍得花钱。如果不买些芯片回来自己动手焊焊拆拆的(在后期,会介绍给大家一个很好用的硬件仿真软件,并不需要用实验板和仿真器了,直接在你的PC上完成。但是,软件毕竟是软件,从某个特定的意义上来说,并不能代替硬件),即使每天捧着书本,把那本书翻烂,也永远学不会单片机。刚接触单片机的朋友,看了资料,一定会对以下几个词见得比较多,但是具体概念还是比较模糊,现作如下说明:
  
  (1)编程器
  
  编程器是用来烧单片机芯片的,是把HEX或者BIN文件烧到单片机ROM里的,供单片机运行的。
  
  (2)实验板
  
  实验板是专为初学者根据某些要求而特制的板子,一般上面均有一个单片机最小系统,是使用者只需写好程序,烧好芯片,放到上面加以验证的一个工具。有了实验板,对‘于初学者来说,省去了焊接最小系统的麻烦。但是它对于电子开发人员来说,作用并不是很大。
  
  (3)仿真器
  
  仿真器是直接把HEX或者BIN文件暂时放在一个芯片里,再通过这个芯片的引脚连接到实验板或者系统上工作。这样一来,可以省去来回插拔芯片带来的麻烦。

  第三、想学单片机的必需品-PC。因为写程序、编译或者是仿真.都是通过PC完成的。如果没有PC,什么也做不了。有了PC,最好还要可以上网,因为如果没有可以和你交流单片机的人,遇到自己解决不了的问题,一直都想不通,估计你学习单片机的热情就会随着时间的推移而慢慢耗尽。要是能上网,通过论坛或者QQ群,问题就可以很快得到解决,学习效率一定很高。真正的高手是从论坛中泡出来的!
  
  有了上述3个条件后,就可以开始学单片机了。但是,真的做起来,还会遇到很多很多的问题。比如,为了让单片机实现某个功能,可能不知道怎么去写某个程序。或是看懂了资料上某个相似的程序,自己却写不出来。遇到类似的情况,记住千万不要急躁!



www.55dianzi.com

  二、一个简单的C程序实例
  
  前面讲述了一些基础入门经历,如果准备认真学习单片机,相信也看了很多资料,手头应该也有必备的工具了吧!这时有可能新闻题又出来了,究竟那个单片机有什么功能和作用呢?接下来首先点亮一个LED。
  
  在单片机最小系统上接个LED.看能否点亮它。对了,前面也有好几次提到过单片机最小系统了,所谓单片机最小系统,就是在单片机上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可。一般情况下,AT89C51(31)脚须接高电平。
  
  以下再来了解一些C语言程序的编程基础。以点亮一只LED为例,电路见右图。
  
  #include<reg51.h>    //头文件定义。或用#include<at89x51.h>,其具体区别在于:后者定义了更多的地址空间。
  
  //在Keil安装文件夹中,找到相应的文件,比较一下便知。
  
  sbit Pl_0= P1“0;,/定义管脚void main (void)while(l)Pl_0= 0;//低电平有效,如果把LED反过来接,就是高电平有效就那么简单,就把接在单片机Pl_0上的LED点亮了。当然,LED是低电平才能点亮。因为是把LED的正端通过电阻接至V。的。
  
  PLo=0;类似于C语言中的赋值语句,即把0赋给单片机的Pl_0口,让它输出相应的电平。这样,就能达到预先的要求了。
  
  while(l)语句只是让单片机工作在死循环状态,即一直输出低电平。如果要试着点亮其他LED,也类似上述语句。
  
  点亮了几只LED后,是不是也可以让几只LED依次按顺序亮呢?答案是肯定的!其实,显示的原理很简单,就是让一只LED灭后,另一只立即亮,依次轮流下去。假设有8只LED分别接在Pl口的8个引脚上。硬件连接,在Pl_1~P1_7上再接7个LED即可,电路见左图。程序如下:



www.55dianzi.com

 上期讲述了如何使LED产生流动的实例,但是,不知是否发现该程序写得太冗长了。能不能再简单点呢?可以!可以使用C51的内部函数INTRINS.H实现。函数unsignedchar_crol_(unsignedchara,unsignedcharn)可以使变量a循环左移n位,如果先给Pl口赋值00000001,则当n为1时,便会产生和上述程序~样的效果。

    INTRINS.H函数中.unsignedchar_cror_(unsignedchara,un-signedcharn)右移也可以实现同样的效果。
  
  流水灯的花样很多,我们还可以尝试一下写拉幕式的流动LED灯等,其程序也很简单,有兴趣的朋友,可以自己试着写。
  
  通过上面的讲解,大家对程序有了一定的了解,接下来看看编译软件是怎么用的。这里给大家介绍几个常用的编译软件吧,如WAVE(伟福),还有KEIL2.下面讲讲如何使用KEIL2这个编译软件。
  
  1.首先在网站上寻找到免费版本或中文版,下载后直接安装软件。
  
  2.安装完成后,启动KEII,软件,左击Project→NewProject→输入文件名→选择所使用的芯片(这里一般用到的是Atmel的AT89C51或AT89C2051,点击确定)。
  
  3.点File→New→输入编写的程序,保存为.C文件(一般情况下,保存的文件名和前面的工程名一样)。
  
  4.展开Target1→右击SourceGroup1→AddFilestoGroup'SourceGroupl'一选择刚才保存的.C文件,点击ADD后,关闭对话框。这样.C文件就被加到了SourceGroup1下了。
  
  5.右击Targetl→Optionsfor,Target1→Target中填写晶体的大小,Output中,在CreateHEXFiles前打钩,点确定。
  
  6.点Project—Rebuild AllTraget Files,若提示creating hexfile from“xxx”…“xxx”-0 Error (s),0War-ing(s).则表示编译和生成HEX文件成功。接下来的就是把HEX文件烧写到单片机中,或者在仿真器上,看其是否达到预先的目的!
  
  如果上述步骤完成,再在实验板上将程序运行成功,现在是否自己好有成就感了呢?如果让你去做个流水彩灯,开发一个简单的产品,只要加上驱动电路,就可以做出漂亮的流动彩灯了。
  
  到现在为止,大家应该知道单片机的功能有多强大了吧。如果单纯地用数字电路或模拟电路的知识去设计一个流动彩灯,可能要花点工夫和时间才行。有了单片机,就不…样了,你只要写程序控制它就行。有人说过这样一句话,不无道理.学单片机,程序思想很重要。  
  
  学过数字电路的朋友,一定动手做过8路或者6路抢答器。用纯粹的数字电路知识来做,自己设计电路,感到比较困难。抢答器用的显示器多为7段数码管(见下图),这里来讲讲如何用单片机让数码管显示0-9。抢答器的实现,放到后面再来探讨,因为抢答器还涉及到键盘的内容。七段数码管分为共阴和共阳两种。七段数码管是由8只LED组成(包括一个小数点)。若为共阳,则8只LED的阳极是连接在一起的,同理,若为共阴,则阴极连接在一起。8只LED显示0~9的对应段码如下:  ((Ox3f.Ox06,Ox5 b,Ox4f,Ox66,Ox6d,Ox7d,Ox07.Ox7f,Ox6f];∥O~9数字)

[1] [2] [3]  下一页


本文关键字:单片机  C语言  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制