51单片机C语言教程(二) 认识51单片机

发布者:Jinyu521最新更新时间:2017-12-25 来源: eefocus关键字:51单片机  C语言 手机看文章 扫描二维码
随时随地手机看文章

上一课我们的第一个项目完成了,可能有懂C语言的朋友会说,"这和PC机上的C语言没有多大的区别呀"。的确没有太大的区别,C语言只是一种程序语言的统称,针对不同的处理器相关的C语言都会有一些细节的改变。编写PC机的C程序时,如要对硬件编程你就必须对硬件要有一定的认识,51单片机编程就更是如此,因它的开发应用是不可与硬件脱节的,所以我们先要来初步认识一下51苾片的结构和引脚功能。MSC51架构的芯片种类很多,具体特点和功能不尽相同(在以后编写的附录中会加入常用的一些51芯片的资料列表),在此后的教程中就以Atmel公司的AT89C51和AT89C2051为中心对象来进行学习,两者是AT89系列的典型代表,在爱好者中使用相当的多,应用资料很多,价格便宜,是初学51的首选芯片。嘿嘿,口水多多有点卖广告之嫌了。
第二课
图2-1 AT89C51和AT89C2051引脚功能图
 

表2-1 AT89C51和AT89C2051主要性能表
图2-1中是AT89C51和AT89C2051的引脚功能图。而表2-1中则是它们的主要性能表。以上可以看出它们是大体相同的,由于AT89C2051的IO线很少,导致它无法外加RAM和程序ROM,片内Flash存储器也少,但它的体积比AT89C51小很多,以后大家可根据实际需要来选用。它们各有其特点但其核心是一样的,下面就来看看AT89C51的引脚具体功能。
1.电源引脚
    VCC 40 电源端
    GND 20 接地端

*工作电压为5V,另有AT89LV51工作电压则是2.7-6V, 引脚功能一样。

2.外接晶体引脚
第二课
      图2-2 外接晶体引脚
XTAL1 19
XTAL2 18
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。
*型号同样为AT89C51的芯片,在其后面还有频率编号,有12,16,20,24MHz可选。大家在购买和选用时要注意了。如AT89C51 24PC就是最高振荡频率为24MHz,40P6封装的普通商用芯片。   

3.复位 RST 9


在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。常用的复位电路如图2-3所示。
*复位操作不会对内部RAM有所影响。
第二课
图2-3 常用复位电路
4.输入输出引脚
(1) P0端口[P0.0-P0.7] P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。
对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。
在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。
(2) P1端口[P1.0-P1.7] P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收低8位地址信息。
(3) P2端口[P2.0-P2.7] P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
(4) P3端口[P3.0-P3.7] P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体请看 表2-2.。
*P1-3端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流
 


表2-2 P3端口引脚兼用功能表


呼!一口气说了那么多,停一下吧。嗯,什么?什么叫上拉电阻?上拉电阻简单来说就是把电平拉高,通常用4.7-10K的电阻接到Vcc电源,下拉电阻则是把电平拉低,电阻接到GND地线上。具体说明也不是这里要讨论的,接下来还是接着看其它的引脚功能吧。

5.其它的控制或复用引脚


(1) ALE/PROG 30 访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6)。在访问外部数据存储器时,出现一个ALE脉冲。对Flash存储器编程时,这(2) PSEN 29 该引是外部程序存储器的选通信号输出端。当AT89C51由外部程序存储器取指令或常数时,每个机器周期输出2个脉冲即两次有效。但访问外部数据存储器时,将不会有脉冲输出。
(3) EA/Vpp 31 外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使AT89C51只访问外部程序存储器(地址为0000H-FFFFH),这时该引脚必须保持低电平,而要使用片内的程序存储器时该引脚必须保持高电平。对Flash存储器编程时,该引脚用于施加Vpp编程电压。Vpp电压有两种,类似芯片最大频率值要根据附加的编号或芯片内的特征字决定。具体如表2-3所列。

1

表2-3 Vpp与芯片型号和片内特征字的关系


看到这您对AT89C51引脚的功能应该有了一定的了解了,引脚在编程和校验时的时序我们在这里就不做详细的探讨,通常情况下我们也没有必要去撑握它,除非你想自己开发编程器。下来的课程我们要开始以一些简单的实例来讲述C程序的语法和编写方法技巧,中间穿插相关的硬件知识如串口,中断的用法等等。


关键字:51单片机  C语言 引用地址:51单片机C语言教程(二) 认识51单片机

上一篇:51单片机C语言教程(三) 生成HEX文件和最小化系统
下一篇:51单片机C语言教程(一) 建立第一个工程

推荐阅读最新更新时间:2024-03-16 15:50

51单片机实现串口通信
#include void ckInt()//串口初始化 { TMOD=0x20;//定时计数器1,方式2 TH1=0xF3; //计算出来的初值 TL1=0xF3; //计算出来的初值 PCON=0X80;//波特率加倍 TR1=1;//启动定时计数器1 SCON=0x50;//串口工作方式1 ES=1;//打开串口中断 EA=1;//打开总中断 } void main()//主函数 { ckInt();//调用函数 while(1); } void ckzd()interrupt 4//中断函数,串口中断编号4 { unsigned int DATA; DATA=SBUF;//发送数据 RI=0;//
[单片机]
51单片机超声波测距C程序
超声波检测原理 超声波测距的程序流程图 程序如下: //超声波模块程序 //超声波模块程序 //Trig = P2^0 //Echo = P3^2 #include reg52.h #define uchar unsigned char #define uint unsigned int // void delay(uint z) { uint x,y; for(x=z;x 0;x--) for(y=110;y 0;y--); } // void delay_20us() { uchar a ; for(a=0;a 100;a++); } //
[单片机]
基于51单片机的汽车防碰撞系统的设计
  1.引言   随着汽车技术的不断进步,尤其是自动驾驶技术的发展,越来越多的距离检测设备将会不断面世。目前,运用于汽车测距主要有以下四种方式:毫米波雷达测距方式;摄像系统测距方式;激光测距方式;超声波测距方式。毫米波雷达存在电磁波相互干扰问题,摄像系统则造价高昂,均难以在汽车上普及。激光测距具有测量时间短、量程大、精度高等优点,适应汽车从低速前进到高速前进的测距需求,避免汽车高速行驶时因测距速度慢造成的测距失准现象。超声波测距原理简单,制作方便,成本比较低,但其只适用于较短距离低速测距,故将其应用于汽车倒车时测距。本文提出的将激光测距和超声波测距相结合的安全报警系统,旨在帮助驾驶员在汽车多种行驶状况、多方位探知并显示车辆与周围
[单片机]
基于<font color='red'>51单片机</font>的汽车防碰撞系统的设计
51单片机开发万年历系统实现(闹钟,秒表功能)
首先说一下我用到的东西,硬件方面(电路都是自己拿万能板焊的):一片51单片机,一块12864液晶,一片ds1302时钟芯片,四个按键。还有些电容、电阻、晶振什么的,下面讲到的时候再说吧。主要的就这么多吧。再简单说一下按键的功能吧,假设按键分别是k1,k2,k3,k4。首先lcd主界面是显示的当前的日期时间和四路闹钟的时间。附图。k1,k2,k3,k4最开始被按下时分别对应的功能是k1:进入时间设定模式;k2:进入日期设定模式;k3:进入闹钟设定模式;k4:进入秒表计数模式。进入不同的模式后,四个按键有都有了新的功能,首先k4一直是退出,就是退出到最开始的选四种模式。k1,k2,k3对于日期和时间设定模式是一样的功能k1:数值加1,
[单片机]
<font color='red'>51单片机</font>开发万年历系统实现(闹钟,秒表功能)
如何实现C8051单片机的精确延时
在C里写的代码: delay=0x64; while(--delay); 编译出来的汇编源代码是这样的: ;SOURCELINE#62 00107F64MOVR7,#064H;2B,2CLK 0012?C0006: ;SOURCELINE#63 0012DFFEDJNZR7,?C0006;2B,2/3CLK 如果我们采用24MHZ的晶振,每个时钟周期是41.6ns那么上面的延时语句的延时精度可以是41.6×8/3=111ns,已经足够精确了。 如果我们要产生xns的延时,只要代入计算公式:(x-83.2)/27.7得到delay的初始值就可以了!!
[单片机]
51单片机------数码管【有74HC753】
一 实验目的: 实验3:使用PO和P2端口实现数码管从0-7的显示效果: (1) 掌握C语言编程单片机控制程序的方法。 (2) 掌握使用Keil4软件编写、编译、调试程序的方法。 (3) 掌握使用Proteus软件绘制电路原理图、硬件仿真和程序调试。 (4) 理解和掌握共阴极数码管的显示原理和编码(记忆)。 (5) 熟悉使用51单片机P0(开漏)和P1(推挽)端口实现对外部用电器和电路的控制。 二、实验硬件和软件: 计算机1台、并安装Proteus8.6软件和Keil4软件。 三、试验任务: 使用Proteus排线连接的方式,在单片机I/O口(P2和P0)上外接上拉电阻和数码管,最终实现数码管从0-7显示效果,为最终的实训
[单片机]
<font color='red'>51单片机</font>------数码管【有74HC753】
基于51单片机的2.0-R61503B 8bits TFT彩屏刷屏触摸驱动程序
单片机源程序如下: #include reg52.h #include gui.h #include touch.h void main() { uchar rst = 0; //--多出来两个值使用来在内存上面跟别的变量分隔的--// uchar xValue = {0, 0, 0, 0, 0, 0}, yValue = {0, 0, 0, 0, 0, 0}; long x, y; TFT_Init(); rst = 1; while(1) { if(rst == 1) { TFT_Cl
[单片机]
基于<font color='red'>51单片机</font>的2.0-R61503B 8bits TFT彩屏刷屏触摸驱动程序
TI 54xxDSP与51单片机的接口技术
摘要:TI的54xxDSP是一种定点DSP系列芯片,产生应用于各种信号处理系统,特别是语音信号处理系统。在这些系统中,通常由两部分组成。一部分为DSP子系统,这是整个系统的核心,主要完成采样、数字信号处理以及输出等功能;另一部分为单片机子系统,进行交互界面的控制,如键盘和显示。两个子系统不是各自孤立的,需要进行必要的数据交换。本文主要讨论DSP和51单片机之间通过HPI接口进行连接的设计方法,给出硬件连接以及软件编程方法。 关键词:DSP HPI 单片机 TMS320C54xx是TI公司针对音频信号处理领域推出的一种定点DSP系列芯片,已经在很多语音信号处理系统中得到了广泛的应用。在这些系统中,通常包含DSP和单片机两个子系
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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