123下一页

单片机C语言2

  [复制链接]

工程师

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

[/td]
图2-1 AT89C51和AT89C2051引脚功能图
[/td]
AT89C51
[td=284]
AT89C2051
[/td]
4KB可编程Flash存储器(可擦写1000次)
[td=284]
2KB可编程Flash存储器(可擦写1000次)
[/td]
三级程序存储器保密
[td=284]
两级程序存储器保密
[/td]
静态工作频率:0Hz-24MHz
[td=284]
静态工作频率:0Hz-24MHz
[/td]
128字节内部RAM
[td=284]
128字节内部RAM
[/td]
2个16位定时/计数器
[td=284]
2个16位定时/计数器
[/td]
一个串行通讯口
[td=284]
一个串行通讯口
[/td]
6个中断源
[td=284]
6个中断源
[/td]
32条I/O引线
[td=284]
15条I/O引线
[/td]
片内时种振荡器
[td=284]
1个片内模拟比较器
[/td]
表2-1 AT89C51和AT89C2051主要性能表
[/td]
图2-1中是AT89C51和AT89C2051的引脚功能图。而表2-1中则是它们的主要性能表。以上可以看出它们是大体相同的,由于AT89C2051的IO线很少,导致它无法外加RAM和程序ROM,片内Flash存储器也少,但它的体积比AT89C51小很多,以后大家可根据实际需要来选用。它们各有其特点但其核心是一样的,下面就来看看AT89C51的引脚具体功能。
1.电源引脚
Vcc 40 电源端
GND 20 接地端
*工作电压为5V,另有AT89LV51工作电压则是2.7-6V, 引脚功能一样。
2.外接晶体引脚
[/td]
[/td]
图2-2 外接晶体引脚
[/td]
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有所影响。

[/td]
[/td]
图2-3 常用复位电路
[/td]
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端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。
[/td]
P3引脚
[td=284]
兼用功能
[/td]
P3.0
[td=284]
串行通讯输入(RXD)
[/td]
P3.1
[td=284]
串行通讯输出(TXD)
[/td]
P3.2
[td=284]
外部中断0(INT0)
[/td]
P3.3
[td=284]
外部中断1(INT1)
[/td]
P3.4
[td=284]
定时器0输入(T0)
[/td]
P3.5
[td=284]
定时器1输入(T1)
[/td]
P3.6
[td=284]
外部数据存储器写选通WR
[/td]
P3.7
[td=284]
外部数据存储器写选通RD
[/td]
表2-2 P3端口引脚兼用功能表
[/td]
呼!一口气说了那么多,停一下吧。嗯,什么?什么叫上拉电阻?上拉电阻简单来说就是把电平拉高,通常用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所列。
[/td]
  
[td=2,1,190]
Vpp =12V
[td=2,1,190]
Vpp =5V
[/td]
印刷在芯片面上的型号
[td=95]
AT89C51
xxxx
YYWW
[td=95]
AT89LV51
xxxx
YYWW
[td=95]
AT89C51
xxxx-5
YYWW
[td=95]
AT89LV51
xxxx-5
YYWW
[/td]
片内特征字
[td=95]
030H=1EH
[td=95]
030H=1EH
[td=95]
030H=1EH
[td=95]
030H=1EH
[/td]
031H=51H
[td=95]
031H=61H
[td=95]
031H=51H
[td=95]
031H=61H
[/td]
032H=FFH
[td=95]
032H=FFH
[td=95]
032H=05H
[td=95]
032H=05H
[/td]
表2-3 Vpp与芯片型号和片内特征字的关系
[/td]
看到这您对AT89C51引脚的功能应该有了一定的了解了,引脚在编程和校验时的时序我们在这里就不做详细的探讨,通常情况下我们也没有必要去撑握它,除非你想自己开发编程器。下来的课程我们要开始以一些简单的实例来讲述C程序的语法和编写方法技巧,中间穿插相关的硬件知识如串口,中断的用法等等。

工程师

发表于 2011-3-12 15:22:08    楼主|
{:3_48:}沙发
回复

点赞 举报

工程师

发表于 2011-3-12 15:22:33    楼主|
{:3_62:}板端
回复

点赞 举报

实习生

发表于 2011-3-13 23:53:08  
好东西哦
回复

点赞 举报

工程师

发表于 2011-3-14 20:10:48    楼主|
{:3_48:}
回复

点赞 举报

工程师

发表于 2011-3-19 10:20:29    楼主|
{:3_48:}
回复

点赞 举报

技术员

发表于 2011-12-21 14:49:21   来自手机
不错  真好用
回复

点赞 举报

实习生

发表于 2011-12-23 17:06:21  
顶一个。。。
回复

点赞 举报

实习生

发表于 2011-12-25 16:13:37  
谢谢分享
回复

点赞 举报

技术员

发表于 2011-12-26 22:43:58  
谢谢分享!
回复

点赞 举报

实习生

发表于 2011-12-28 22:11:36  
好好学习

回复

点赞 举报

实习生

发表于 2011-12-29 09:19:09  
谢谢
回复

点赞 举报

技术员

发表于 2012-1-1 19:30:31  
回复

点赞 举报

技术员

发表于 2012-1-4 08:30:53  
谢谢分享
回复

点赞 举报

实习生

发表于 2012-3-12 19:13:28  
不错不错。。。
回复

点赞 举报

发表于 2012-3-15 16:10:37  
回复

点赞 举报

实习生

发表于 2012-3-15 16:22:05  
资料挺好。谢谢分享!
回复

点赞 举报

助理工程师

发表于 2012-3-15 17:37:19  
不错很好的学习资料!顶一下
回复

点赞 举报

实习生

发表于 2012-3-17 10:26:29  
6
652

回复

点赞 举报

实习生

发表于 2012-6-5 08:07:23  
讨厌记这些
回复

点赞 举报

123下一页
高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区