51单片机在我的了解上来说,便是遵从51指令集作业的芯片。他就像一台超微型的电脑,晒干有内存、硬盘、CPU等根本装备。
而他所谓的CPU运用的便是51指令集,他的硬盘便是内置的Flash,他的内存也是内置的RAM和扩展RAM。不过这些根本装备是小了一点罢了。
在网上,咱们常看到一些介绍什么AT89C51或AT89C52等51的单片机的典范,关于一些初学者来说或许就会以为只需AT89C51或AT89C52才是51单片机,当你给他个STC89S52他都不敢用,以为或许不对(我刚开端学的时分就碰到这种状况,)。其实不是这样的,只需芯片内部运用的是51指令集,那么它就能够以为是51单片机,就能够用51单片机的开发办法进行开发代码。他们之间的差异便是开发芯片的厂商不同,CPU支撑频率不同,Flash巨细、RAM巨细、串口接口、中止数量、烧写程序的接口等等略微有些不同罢了。这么看吧,就算同一个类型的51单片机,比方 STC89C51和STC89S52的根本差异便是Flash巨细,89C51的Flash巨细是4kB,而89S52是8kB,而STC12C5A08S2和STC89S52的差异:他们的Flash巨细都是8KB,但12C5A08S2有两个串口处理,而89S52只需一个串口处理,12C5A08S2有1kB的扩展RAM,而89S52却没有,只需128个子节的RAM,而这128个字节的RAM12C5A08S2也有,但定时器中止12C5A08S2只需2个,而89S52却有3个。他们之间的差异便是如此,AT的和STC的也便是相似的不同罢了,AT的是运用SPI接口烧写程序,而STC的是用串口接口烧写程序,其他的大致就参阅芯片的PDF文件,晒干有各种类型的各种参数阐明,依据你的需求选购不同的芯片类型,就像选电脑相同,依据装备单挑选你合适的单片机。当然,功用越强,价格也就越贵,就比方CC2430,他是带无线串口接口的一块51单片机,但价格就不是和一般51单片机一个层次的东西了。当然在51单片机以外,还有许多其他规范的单片机,比方AT的AVR单片机,类型有AT Mega 16、Mega 32等等等等,有16位的,还有32位的(咱们的51一般是8 位的)。还有DSP、ARM等等等等。他们都有自己的指令集,自己的规范,当然,速度和各方面的参数都有着许多不同的当地,每一块的水都很深。就比方说ARM,现在许多的掌上电脑、MP4、MP5、手机都是用它弄的,ARM9还能够直接上操作体系。至于这一块,归于嵌入式开发了,我也就不多说了,仍是说回51单片机。
在51单片机开发上,要涉及到程序的开发。简略的了解便是你写一个程序来操控单片机的管脚供电出去或是不供电出去,或是读取某个管脚是否有电或没电的工作,这些管脚咱们管他叫I/O口(即:输入/输出口),依据不同的运用规划出不同的外围电路就能够操控或并重外围的许多东西了(当然也能够进行通讯)。假如与PC通讯,还可将并重到的信息反馈给PC或依照PC发过来的信息碑文指定的使命。
下面咱们来看一下怎么开端51单片机的程序开发:
一般的单片机程序开发办法有两种:1、运用汇编言语进行开发 2、运用C言语进行开发
自己对汇编不熟,也就不多说了,说说C言语吧。先去下载个 Keil 8 回来,装置到你的电脑。这便是一个51单片机程序开发工具。
然后发动 Keil,注册完成后,开端写第一个项目
先在“工程”菜单挑选“新建工程”,这时会弹出一个窗口,让你挑选你的工程保存的方位
然后你能够依照你的需求界说你要保存的工程称号,然后点击保存,跟着会提示你挑选单片机的类型
咱们挑选Atmel 的89C52就能够了,然后体系还会提示你,挑选否就能够了。新建完工程后如下图:
这时咱们能够看到工程中什么文件都没有,那么下一步便是增加根本的文件了,咱们点击“文件”菜单的“新建”项
然后再点击“保存”保存新建的文件为你的主程序
我这儿保存的是Main.C,但这时在左面的工程文件树中仍是找不到Main.c这个文件的,所以有必要将这个文件刺进工程树中。
双击 “Source Group 1”的目录图标,会弹出刺进文件的窗口,然后挑选你的文件,点击”Add”按钮
这时你能够看到下面的工程树中现已增加了你的文件,由于能够接连增加文件,所以有必要窜逃封闭该窗口,咱们点击“Close”按钮
这时咱们看到工程中现已有方才新建的 Main.c 文件了,然后咱们略微设置一下环境,不然编译不出方针文件。
咱们对着“Target 1”点击鼠标右键,挑选第一项“Options for Target Target 1”
然后回弹出设置窗口
咱们将挑选卡选到“输出”
咱们把“创立 HEX 文件”选项挑选起来
然后点击确认按钮,回到了主界面,这样咱们的前期过程就作完了
现在咱们开端说说程序部分,在下位机的开发傍边,咱们运用的是C言语(不是C++,没有类的概念),咱们可用的资源也很少,除了根本的C言语查办以外,还能够运用的东西并不多,悉数可用的东西全在Keil装置目录的 /C51/INC 里。
我这晒干多了一个 STC12C5A60S2.H 文件,这时STC官网上供给的管脚和寄存器地址界说文件,一般咱们只需要引证 REG52.H 就能够了。在C言语开发中,用 #Include 便是引证这些头文件,第一步,咱们先引证MCU管脚界说文件REG52.H,然后再写上根本的程序进口函数Main,由于单片机只跑这么一个程序,所以主程序中不能让他碑文完,有必要进入死循环,不然,假如碑文完了程序他就不会再作业了。
好了这样就完成了一个根本的单片机程序。可是怎么操控单片机的IO口呢?咱们先来看一下芯片阐明里的管脚界说图:
这是STC DIP40 封装的管脚界说图,咱们能够看到一些比较古怪的阐明,什么P0.0-P0.7呀、P1.0-P1.7呀的,这些便是IO端口
一般有4组IO口,P0、P1、P2、P3口,每组IO口有8个管脚,别离代表8个二进制位,而每组IO口除了作根本的输入输出外都有或许有他特别的用法,这就依据不同类型的单片机而定了。就比方STC的这款单片机,P0口除了能够做根本的输入输出,还能够做A/D转换用,所以他的P0口后边还标有 AD0-AD7 的字样,但这些是后边的运用了,咱们先谈谈怎么操控或读取这些IO口。
在单片机种,这些IO口的管脚都是由厂家指定的体系功用寄存器操控的,只需知道地址,读取到指定寄存器地址的值就能够得到相对的IO口状况,同理,设置相应的寄存器值,也会改动IO口的状况。由于咱们是用C言语,没必要直接用地址,咱们能够将如0x80 这种地址以便利伤心的变量来一共,所以,咱们看一下 REG52.H 就会发现
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
P0口的地址是 0x80 这个方位,P1口的地址是0x90。咱们只需要在程序里用P0 = 255,或 P0=0 就能够改动 P0 口的8个管脚的状况是有电或是没电出去。
可是,假如想独自操控一个针脚的状况怎么做呢?有些朋友或许会想到用二进制位运算就能够了,比方非呀、与亚、或呀、异或呀什么的。
对,这是个办法,但不是很灵敏,在这儿,还能够进行寻址界说管脚。比方咱们只想操控 P0.5 口的状况,那么用二进制核算的办法就有点麻烦了,咱们能够这样做
sbitLED1= P0^5; //在这儿 ^ 并不是异或运算符,仅仅特定的寻址符号
这时,程序里假如这样操作
LED1 = 1;
那么P0.5口将处于供电出去的状况
当然,这样操作将会获得P0.5口的当时状况
bit LEDState;
LEDState = LED1;