单片机C语言教程(二)

发布者:yuehui最新更新时间:2015-12-23 来源: eefocus关键字:单片机  C语言教程  51芯片 手机看文章 扫描二维码
随时随地手机看文章

上一课我们的第一个项目完成了,可能有懂C语言的朋友会说,"这和PC机上的C语言没有多大的区别呀"。

的确没有太大的区别,C语言只是一种程序语言的统称,针对不同的处理器相关的C语言都会有一些细节的

改变。

编写PC机的C程序时,如要对硬件编程你就必须对硬件要有一定的认识,51单片机编程就更是如此,因它

的开发应用是不可与硬件脱节的,所以我们先要来初步认识一下51苾片的结构和引脚功能。MSC51架构的芯片

种类很多,具体特点和功能不尽相同(在以后编写的附录中会加入常用的一些51芯片的资料列表),在此后

的教程中就以Atmel公司的AT89C51和AT89C2051为中心对象来进行学习,两者是AT89系列的典型代表,

在爱好者中使用相当的多,应用资料很多,价格便宜,是初学51的首选芯片。嘿嘿,口水多多有点卖广告之嫌

了。:P

单片机C语言教程(二)(转载) 
图2-1 AT89C51和AT89C2051引脚功能图

AT89C51

AT89C2051

4KB可编程Flash存储器(可擦写1000次)

2KB可编程Flash存储器(可擦写1000次)

三级程序存储器保密

两级程序存储器保密

静态工作频率:0Hz-24MHz

静态工作频率:0Hz-24MHz

128字节内部RAM

128字节内部RAM

2个16位定时/计数器

2个16位定时/计数器

一个串行通讯口

一个串行通讯口

6个中断源

6个中断源

32条I/O引线

15条I/O引线

片内时钟振荡器

1个片内模拟比较器

表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.外接晶体引脚

单片机C语言教程(二)(转载)
图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有所影响。

单片机C语言教程(二)(转载)
 
图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时,内部上拉电阻将端口拉到高电平,作输入用。
   对内部Flash程序存储器编程时,接收高8位地址和控制信息。
   在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数

据存储器时其引脚上的内容在此期间不会改变。
    (4) P3端口[P3.0-P3.7] P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。

端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
   对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体

请看表2-2.。
      *P1-3端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。

P3引脚

兼用功能

P3.0

串行通讯输入(RXD)

P3.1

串行通讯输出(TXD)

P3.2

外部中断0( INT0)

P3.3

外部中断1(INT1)

P3.4

定时器0输入(T0)

P3.5

定时器1输入(T1)

P3.6

外部数据存储器写选通WR

P3.7

外部数据存储器写选通RD

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

  呼!一口气说了那么多,停一下吧。嗯,什么?什么叫上拉电阻?上拉电阻简单来说就是把电平拉高,

通常用4.7-10K的电阻接到Vcc电源,下拉电阻则是把电平拉低,电阻接到GND地线上。具体说明也不是这

里要讨论的,接下来还是接着看其它的引脚功能吧。
  5.其它的控制或复用引脚
    (1) ALE/PROG 30 访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即

使不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6)。在访问外部数据存

储器时,出现一个ALE脉冲。对Flash存储器编程时,这个引脚用于输入编程脉冲PROG
    (2) PSEN 29 该引脚是外部程序存储器的选通信号输出端。当AT89C51由外部程序存储器取指令或

常数时,每个机器周期输出2个脉冲即两次有效。但访问外部数据存储器时,将不会有脉冲输出。
    (3) EA/Vpp 31 外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使AT89C51

只访问外部程序存储器(地址为0000H-FFFFH),这时该引脚必须保持低电平。对Flash存储器编程时,用于

施加Vpp编程电压。Vpp电压有两种,类似芯片最大频率值要根据附加的编号或芯片内的特征字决定。具体

如表2-3所列。

 

Vpp = 12V

Vpp = 5V

 

印刷在芯片面上的型号

AT89C51

xxxx

YYWW

AT89LV51

xxxx

YYWW

AT89C51

xxxx-5

YYWW

AT89LV51

xxxx-5

YYWW

 

片内特征字

030H=1EH

030H=1EH

030H=1EH

030H=1EH

031H=51H

031H=61H

031H=51H

031H=61H

032H=FFH

032H=FFH

032H=05H

032H=05H

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

  看到这您对AT89C51引脚的功能应该有了一定的了解了,引脚在编程和校验时的时序我们在这里就不做

详细的探讨,通常情况下我们也没有必要去撑握它,除非你想自己开发编程器。下来的课程我们要开始以

一些简单的实例来讲述C程序的语法和编写方法技巧,中间穿插相关的硬件知识如串口,中断的用法等等。

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

上一篇:单片机C语言教程(四)
下一篇:单片机C语言教程(三)

推荐阅读最新更新时间:2024-03-16 14:41

基于AVR单片机的实验加载闭环控制系统
分离式液压千斤顶在生产建设、科学实验等各类工程结构加载工作中具有广泛的用途。 该设备一般由电动高压油泵+压(拉)千斤顶组成,本文论及的加载系统规格如表1所示。 油泵电机直接带动泵轴旋转,柱塞作往复运动,进油阀/排油阀工作,液压油通过高压油管进入千斤顶。用户可通过泵站上的手柄,人工转动泵内卸荷阀处于不同位置,实现系统的加载/卸载、推力/拉力及加载速率和稳压作业。 在对力和位移数值或稳压时间等精度要求较高的科研实验加载场合,显然这种仅靠手工操作的方式难以胜任。给该设备增设电脑测控系统就成为一项与时俱进的技术革新,也是提高此类设备性价比的最佳方案。 1 下位机 由ATmega128构成下位机控制核心(见图1),其
[单片机]
基于AVR<font color='red'>单片机</font>的实验加载闭环控制系统
51单片机独立按键和矩阵按键实现
独立按键实验 按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开。我们开发板上使用的按键及内部简易图如下图所示 管脚与管脚之间(注意是距离)距离长的是导通状态,短的是接通状态。 通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号 如下图所示: 如图所示,按键闭合式不会立刻稳定的接通,断开时也不会一下子断开,会伴随一些抖动。抖动的时间长短有按键特性决定,一般为5Ms到10ms.按键抖动会引起按键被误读多次。为了确保 CPU 对按键的一次闭合仅作一次处理,必须进行消抖。 消抖 消抖可分为硬件消抖和软件消抖。为了使电路更加简单,通常采用软件消抖。 一般来说一个简单的按键消抖就是
[单片机]
msp430单片机GPIO基础理解
单片机的端口可以通过方向寄存器PxDIR来设置输出(1)还是输入(0) 可以通过输入寄存器PxIN来查看输入端口引脚的电平,尝用来判断按键是否按下。 也可通过PxIE,PxIES,PxIFG实现按键中断,按下某键后执行一段中断程序。 可通过输出寄存器PxOUT来写入输出,常用来控制数码管显示和指示灯等输出设备显示。 PxOUT |= BIT0;//不影响x端口其他引脚而设置x.0引脚输出1 PxOUT &= ~BIT0;//不影响x端口其他引脚而设置x.0引脚输出0 BIT0等价于0x01 0000 0001 BIT7等价于1000 0000 if(!(PxIN & BIT0))判断x.0引脚是否按下 定时器要设置时钟源,捕获/比
[单片机]
单片机键盘C程序
void int1proc() interrupt IE1_VECTOR using 1 { unsigned char i, key; code unsigned char PS2TAB = {//20键PS2小键盘键码表 0x70,//0 0x69,//1 0x72,//2 0x7a,//3 0x6b,//4 0x73,//5 0x74,//6 0x6c,//7 0x75,//8 0x7d,//9 0x05,//F1 0x06,//F2 0x04,//F3 0x0c,//F4 0x03,//F5 0x0b,//F6 0x5a,//Enter 0x76,//Esc 0x66,//Bksp
[单片机]
单片机IO口工作方式详细分析
单片机I/O口工作方式基本有以下几类: 1.准双向IO口配置(弱上拉) 小结: 灌电流能力强,拉电流能力弱 读外部状态前要先锁存“1”(断开下拉晶体管) 读IO口状态的原则是非高即低,只能准确识别外部的低电平信号,无法区分悬空和真正的高电平 作为输入时,输入阻抗不为高阻,可能出现将外部低电平误读为高电平的情况(例上拉电阻10K,外部电阻100K,IO=5*100/110=4.54V) 其应用方式参考: 准双向口用作输入时,可对地接按键,如图1,当然也可以去掉R1直接接按键,当按键闭合时,端口被拉至低电平,当按键松开时,端口被内部“极弱上拉”晶体管拉至高电平。 当端口作为输出时,不
[单片机]
<font color='red'>单片机</font>IO口工作方式详细分析
单片机在家电控制系统中的应用
1 系统构成和核心接口电路的工作原理 设计家电控制器的核心是成本、功耗的控制。现在市场上的同类产品中需要的硬件资源比较多,包括国个MCU和个三-八译码器,其中三-八译码器用于扩展I/O端口。实际上,在国般MCU的I/O端口足够的情况下,可以充发利用MCU,采用软件编码模块完全代替三-八译码器,从而降低成本和功耗。 1.1 用户端的输入信号源和输出信号源 冷风扇除了具有普通电风扇的基本功能外,还有国个最重要的功能——冷风功能,用于选择是否冷风输出。控制功能需要两个水位信号源——缺水(L)、水满(H),输出信号国个。 从用户使用方面来讲,有下列输入源和输出源。 输入源: ·6个键盘:关机、开机/风速、风类、导风、定时和冷风; ·6个
[单片机]
争霸32位MCU市场,巨头上演巅峰对决
  就在一些市场调研机构纷纷传来8位MCU市场增长放缓消息的同时,32位MCU却丝毫没有受到任何影响,依然保持着强劲的增长势头。WSTS的统计数据显示,2007年32位MCU市场较2006年增长了13.6%,市场份额达31.9亿美元,与过去五年相比,市场增幅超过一倍,2007年出货量更是占到了全球MCU市场的30.8%。与此同时,受应用需求推动,市场对能实现系统整体低功耗化的产品需求日益加强。提供灵活、高成本效益以及低功耗的解决方案日渐成为一种趋势,而Microchip携其基于MIPS32内核的产品进军32位MCU领域,无疑又引发了一场MCU内核的争夺战,新一轮的酣战正在上演。   在32位MCU内核市场,ARM仍然一枝独秀。
[单片机]
ESP8266与单片机之间通过SPI进行双向数据传输的一种方案
背景: 在我的毕业设计中需要单片机将采集到的数据上传到服务器,同时需要接收来自服务器的一些天气信息,我的单片机的型号是 Stm32F407; ESP8266 刷入了 micropython 的固件,使用python进行开发; 协议是 SPI协议 ESP8266 主机 Stm32F4作为 从机 单片机侧使用的是 Stm32F407 的硬件 SPI + DMA 接收发送。 ESP8266 侧使用的也是硬件SPI1 ; 通讯速度应该可以跑满 单片机这一侧的极限速度(42MHz),但是我在测试时候发现数据在40M 就很不稳定了(逻辑分析仪测试,可能是导线有点长) 最终就选择了4MHz.。 整体的这个实现的机制就是在单片机里面设
[单片机]
ESP8266与<font color='red'>单片机</font>之间通过SPI进行双向数据传输的一种方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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