51单片机芯片选择指南

51单片机芯片选择指南
51单片机芯片选择指南

51单片机芯片选择指南

结合实验需要和学生的熟悉程度,选择芯片以51单片机为主。

从直流闭环的角度,需要选择测量转速的功能,测量转速一般采用模拟式的测速电机,或者数字式的光电编码器,从这个角度需要51单片机具备A/D转换和定时器/计数器功能,其中第二个功能一般的51单片机都具备。

从直流控制的角度来看,对外输出采用PWM控制,目前驱动电路已经完善,需要具备PWM发生功能,这个PWM可以利用51单片机的软件资源进行设计,也可以利用单片机自带的PWM功能实现,最好选择自带PWM输出的单片机。

综合以上要求,选择了STC12C5A16AD单片机

STC12C5A16AD单片机是中国宏晶公司生产的增强型51系列的单片机。宏晶科技是新一代增强型8051单片机标准的制定者和领导厂商,在高品质的基础上,提供低廉的价格的单片机,并致力于提供满足中国市场需求的世界级高性能单片机技术,在业内处于领先地位。宏晶增强型51单片机采用单时钟/机器周期指令,运算速度大大高出了传统51单片机。

1 STC12C5A16AD单片机

1.1 STC12C5A16AD单片机主要有以下性能:

※增强型8051内核,1个时钟/机器周期,指令代码完全兼容传统8051,但速度比普通8051快8~12倍

※宽工作电压:5.5~3.3V

※低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)

※工作频率范围:0~35MHz,相当于普通8051:0~420MHz

※时钟:外部晶体或内部RC振荡电器可选,在ISP下载编程用户程序时设定

※用户应用程序空间:8K/16K/20K32K/40K/48K/52K/60K/62K字节……

※片上集成1280字节数据存储器

※通用I/O口(36/40/44个),

※ISP/IAP,在系统可编程/在应用可编程,无需专用编程器/仿真器,可通过串口直接下载用户程序,数秒即可完成一片

※芯片内EEPROM功能,擦写次数10万次以上

※看门狗

※内部集成MAX810专用复位电路(外部晶体12M 以下时,复位脚可直接1K 电阻到地)

※外部掉电检测电路:在P4.6口有一个低压门槛比较器,5V 单片机为1.32V,误差在+/-5%

※PWM(2路)/PCA ,可当2路D/A 使用,也可用来再实现2个定时器或2个外部中断(支持上升沿/下降沿中断)

※4个16位定时器,两个与传统8051兼容的定时器,有独立波特率发生器做串行通信的波特率发生器,2路PCA 可再实现2个定时器

※可编程时钟输出功能,T0在P3.4/ T0输出时钟,T1在P3.5/ T1输出时钟 ※A/D 转换,8位精度ADC ,共8路,速度可达25万次每秒 ※通用全双工异步串行口(UART ),兼容传统8051的串口 ※工作温度范围:-40~+85℃(工业级),0~75℃(商业级) ※封装:PDIP-40,LQFP-44,LQFP-48

图2-1 STC12C5A16AD 单片机管脚分布图

SS/CCP0/ADC4/P1.4 Gnd

XTAL1 XTAL2 VCC P2.0/A8 P2.7/A15

P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6

P0.7/AD7

EX_LVD/P4.6/RST2 ALE/P4.5 NA/P4.4 P2.6/A14 P2.1/A9 ADC1/P1.1 ECI/ADC2/P1.2 CCP0/ADC3/P1.3 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7

P4.7/RST RxD/P3.0 TxD/P3.1 INT0/P3.2 INT1/P3.3

CLKOUT0/T0/P3.4 RD/P3.7 CLKOUT1/T1/P3.5

WR/P3.6 CLKOUT2/ADC0/P1.0

1.2 STC12C5A16AD单片机管脚分配及I/O口配置:

本设计采用40脚PDIP窄体封装类型。其管脚图如图2-1所示。

STC12C5A16AD系列单片机其所有I/O口均可由软件配置成4种工作类型之一,如下表所示。4种类型分别为:准双向口(标准8051输出模式)、推挽输出、仅为输入(高阻)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC12C5A16AD系列单片机上电复位后为准双向口(传统8051的I/O)模式,2V以上时为高电平,0.8V以下时为低电平。

I/O工作类型设定

表2-1 P3口设定 P3M1[7:0] P3M0[7:0] I/O口模式

0 0 准双向口(传统8051 I/O口模式),

灌电流可达20mA,拉电流为230uA ,

由于制造误差,实际为250uA~150uA

0 1 推挽输出(强上拉输出,可达20mA,要加限流电阻)

1 0 仅为输入(高阻)

1 1 开漏(Open Drain),内部上拉电阻断开,要外加

表2-2 P2口设定 P2M1[7:0] P2M0[7:0] I/O口模式

0 0 准双向口(传统8051 I/O口模式),

灌电流可达20mA,拉电流为230uA,

由于制造误差,实际为250uA~150uA

0 1 推挽输出(强上拉输出,可达20mA,要加限流电阻)

1 0 仅为输入(高阻)

1 1 开漏(Open Drain),内部上拉电阻断开,要外加

表2-3 P1口设定 P1M1[7:0] P1M0[7:0] I/O口模式

0 0 准双向口(传统8051 I/O口模式),

灌电流可达20mA,拉电流为230 uA,由于制造误差,

实际为250uA~150uA

0 1 推挽输出(强上拉输出,可达20mA,要加限流电阻)

1 0 仅为输入(高阻),如果该I/O口需作为A/D使用,

可选侧模式

1 1 开漏(Open Drain),如果该I/O口需作为A/D使用,

可选侧模式

表2-4 P0口设定 P2M1[7:0] P2M0[7:0] I/O口模式

0 0 准双向口(传统8051 I/O口模式),

灌电流可达20mA,拉电流为230uA,

由于制造误差,实际为250uA~150uA

0 1 推挽输出(强上拉输出,可达20mA,要加限流电阻)

1 0 仅为输入(高阻)

1 1 开漏(Open Drain),内部上拉电阻断开,要外加

举例:

MOV P1M1, #10100000B

MOV P1M0, #11000000B

P1.7为开漏,P1.6为强推挽输出,P1.5为高阻抗输入;

P1.4/P1.3/P1.2/P1.1/P1.0为弱上拉。

注意:

虽然每个I/O口在弱上拉时都能承受20mA的灌电流(还是要加限流电阻,如1K,560Ω等),在强推挽输出时都能输出20mA的拉电流(也要加限流电阻),但整个芯片的工作电流推荐不要超过55mA。即从MCU--Vcc流入的电流不要超过55mA,从MCU--Gnd流出的电流不要超过55mA,整体流入/流出电流不能超过55mA。

1.3 STC12C5A16AD单片机I/O口各种不同的工作模式结果框图:

1、准双向口输出配置

准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。这是因为当口线输出为1时驱动能力很弱,允许外部装置将其拉低。当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流。准双向口有3个上拉晶体管适应不同的需要。

在3个上拉晶体管中,有1个上拉晶体管为“弱上拉”,当口线寄存器为1且引脚本身也为1时打开。此上拉提供基本驱动电流使准双向口输出为1。如果一个引脚输出为1而由外部装置下拉到低时,弱上拉关闭而“极弱上拉维持开状态,为了把这个引脚拉为低,外部装置必须有足够的灌电流能力使引脚上的电压降到门槛电压以下。

第2个上拉晶体管,称为“极弱上拉”,当口线锁存为1时打开。当引脚悬空时,这个极弱的上拉源产生很弱的上拉电流将引脚上拉为高电平。

第3个上拉晶体管称为“弱上拉”。当口线锁存器由0变为1时,这个上拉用来加快准双向口由逻辑0到逻辑1转换。当发生这种情况时,强上拉打开大约2个时钟以使引脚能够迅速地上拉到高电平。

准双向口输出如图2-2所示。

图2-2准双向口输出图

准双向口带有一个施密特触发输入以及一个干扰抑制电路。

准双向口读外部状态前,要先锁存为‘1’才能读到外部正确的状态。

2、推挽输出配置

推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的强上拉。推挽模式一般用于需要更大驱动电流的情况。

推挽引脚配置如图2-3所示。

图2-3 推挽输出图

3、仅为输入(高阻)配置

输入口配置如图2-4所示。

图2-4 高阻配置图

输入口带有一个施密特触发输入以及一个干扰抑制电路。

4、开漏输出配置

图2-5 开漏输出电路图

当口线锁存器为0时,开漏输出关闭所有上拉晶体管。当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到VDD。这种方式的下拉与准双向口相同。输出口线配置如图2-5所示。

开漏端口带有一个施密特触发输入以及一个干扰抑制电路。

关于I/O口的注意事项:有些I/O口由低变高读外部状态时读不对,实际并没有损坏,需要软件处理。原因是1T的8051单片机的速度太快了,软件执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,就可能读不对。正确的方法是在软件设置由低变高后加1到2个空操作指令延时,再读即可。

2 STC12C5A16AD单片机的A/D转换

2.1 STC12C5A16AD单片机A/D功能寄存器介绍

STC12C5A16AD系列单片机自带A/D,A/D转换口在P1口(P1.7-P1.0),有8路8位高速A/D转换器,速度可达到300KHz。8路电压输入型A/D,可作温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的口可继续作为I/O口使用。

需作为A/D使用的口需先将P1ASF特殊功能寄存器中的相应工作寄存器位设置为“1”,将相应的口设置为模拟功能,复位值P1ASF=0x00。

表2-5 STC12C5201AD系列单片机P1口模拟功能寄存器(只写,读无效)Mnemonic Add 7 6 5 4 3 2 1 0

P1ASF 9Dh P17ASF P16ASF P15ASF P14ASF P13ASF P12ASF P11ASF P10ASF 表2-6 当P1口中的相应为做为A/D使用时,要将P1ASF中的相应位置1.

P1ASF[7:0] P1.X的功能 其中P1ASF寄存器地址为9DH(不能寻址)

P1ASF.0=1 P1.0口作为模拟功能A/D使用

P1ASF.1=1 P1.1口作为模拟功能A/D使用

P1ASF.2=1 P1.2口作为模拟功能A/D使用或P1.2作为比较器时,在Power_Down模式

下低功耗

P1ASF.3=1 P1.3口作为模拟功能A/D使用

P1ASF.4=1 P1.4口作为模拟功能A/D使用

P1ASF.5=1 P1.5口作为模拟功能A/D使用

P1ASF.6=1 P1.6口作为模拟功能A/D使用

P1ASF.7=1 P1.7口作为模拟功能A/D使用

表2-7为各个与A/D有关的特殊功能寄存器,功能介绍如下:

1).如果要允许A/D中断则需要将相应的控制位置1:

将EADC置1,允许ADC中断,这是ADC中断的控制位。

将EA置1,打开单片机总中断控制位,此位不打开,也无法产生ADC中断。

A/D中断服务程序中要用软件清A/D中断请求标志位ADC_FALG(也A/D

转换结束标志位)。

2).ADC_POWER:ADC电源控制位。

0:关闭ADC电源;1:打开ADC电源。初次打开内部A/D转换模拟电源,需适当延时,等内部电源稳定后,再启动A/D转换。建议启动A/D转换后,在A/D转换结束之前,不要改变任何I/O口的状态,有利于高精度的A/D转换。

3).ADC_RES特殊功能寄存器:A/D转换结果特殊功能寄存器

4).ADC_START:模数转换器(ADC)转换启动控制位,设置为“1”时,开始转换,转换结束后为0。

5).ADC_FLAG:模数转换器转换结束标志位,当A/D转换完成后,

ADC_FLAG=1,要由软件清0。

表2-7 与A/D有关的特殊功能寄存器表

Mnemonic Add 7 6 5 4 3 2 1 0

P1ASF 9Dh P17ASF P16ASF P15ASF P14ASF P13ASF P12ASF P11ASF P10ASF

ADC_CONT

R BCh ADC_

POWER

SPEED1 SPEED0ADC_

FLAG

ADC_

START

CHS2 CHS1 CHS0

ADC_RES BDh

IE A8h EA EADC

IP B8h PADC

2.2 STC12C5A16AD单片机A/D功能寄存器ADC_CONTR

ADC_CONTR的最后3位控制A/D通道的选取。表2-6为通道选取寄存器的设置方式。

表2-8 通道选择寄存器

CHS2 CHS1 CHS0 模拟输入通道选择

0 0 0 选择P1.0作为A/D通道

0 0 1 选择P1.1作为A/D通道

0 1 0 选择P1.2作为A/D通道

0 1 1 选择P1.3作为A/D通道

1 0 0 选择P1.4作为A/D通道

1 0 1 选择P1.5作为A/D通道

1 1 0 选择P1.6作为A/D通道

1 1 1 选择P1.7作为A/D通道

SPEED1,SPEED0:模数转换器转换速度控制位

表2-9 模数转换速度控制位

SPEED1 SPEED0 A/D转换所需时间

1 1 70个时钟周期转换一次

1 0 140个时钟周期转换一次

0 1 280个时钟周期转换一次

0 0 420个时钟周期转换一次

表2-10 A/D转换结果寄存器

ADC_RES 0000,0000 模拟/数字转换结果计算公式如下:结果ADC_RES[7:0]=256 *Vin/Vcc

Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。

表2-11 A/D中断优先级控制寄存器

IPH B7h PADCH

STC12C5A16AD系列单片机的A/D转换模块使用的是外部晶体时钟或内部R/C振荡器所产生的系统时钟,不使用时钟分频寄存器CLK_DIV对系统时钟分频后所产生的供给CPU工作所使用的时钟。

好处:

这样可以让ADC用较高的频率工作,提高A/D的转换速度

这样可以让CPU用较低的频率工作,降低系统的功耗

程序中需要注意的事项:

由于是2套时钟,所以,设置ADC_CONTR控制寄存器后,要加4个空操作延时才能读到正确的ADC_CONTR寄存器的值,原因是设置ADC_CONTR控

制寄存器的语句执行后,要经过4个CPU时钟周期的延时,其值才能保证设置进ADC_CONTR控制寄存器。

3 STC12C5A16AD单片机最小应用系统的构建

STC12C5A16AD单片机系统具备ISP功能,可以方便的实现程序的下载,宏晶的51单片机均采用串口进行ISP下载,但要求下载时单片机必须进入冷启动状态,最小应用系统可参考下图

51单片机新手入门实例详解

51单片机新手入门实例详解 1.硬件和软件准备 ●实验系统:EL89C单片机学习开发系统一套 ●电脑:具有标准串口的台式机或笔记本电脑,如果没有串口也可购 买一条USB转串口线代替 ●工具软件:Keil uVision2(用于编写和编译源程序、仿真调试); 光盘上非安装烧写软件,路径 \单片机EL89C\EL89C光盘\STC52单片机下载程序\stc-isp-v4.79-not-setup\STC_ISP_V483.exe (EL89C的编程控制烧写软件) 2.源程序编写和编译 EL89C的8个发光二极管负极通过限流电阻接入单片机的P1.0~P1.7端口,下面的范例程序可以使这8个发光二极管轮流点亮,形成流水灯效果。 我们使用的开发工具是Keil C51,是目前世界上最优秀、最强大的51单片机应用平台之一,它集编辑、编译、仿真调试于一体,支持汇编、C语言以及混合编程。同时具备功能强大的软件仿真和硬件仿真功能。 下面以一个简单的流水灯程序为例子来介绍Keil C51的使用方法: 2.1首先在硬盘上建立一个文件夹,命名为ledtest(当然可以是其他名字), 为方便程序的编写和调试,我们将调试过程中产生的文件都将放在这个目录中。 2.2启动Keil软件,点击菜单project,选择new project,然后选择你要保 存的路径,输入工程文件的名字,我们现在保存到刚才建立的ledtest目录中,工程文件命名为ledtest,然后点击保存。 2.3这时会弹出下面的对话框Select Device for Target,要求你为刚才的项 目选择一个CPU。我们选择Atmel的AT89C52,如图所示,选择AT89C52之后,右边一栏是对这个单片机的基本的说明,然后点击确定。

(完整word版)at89c51单片机中文资料

AT89C51的概况 1 AT89C51应用 单片机广泛应用于商业:诸如调制解调器,电动机控制系统,空调控制系统,汽车发动机和其他一些领域。这些单片机的高速处理速度和增强型外围设备集合使得它们适合于这种高速事件应用场合。然而,这些关键应用领域也要求这些单片机高度可靠。健壮的测试环境和用于验证这些无论在元部件层次还是系统级别的单片机的合适的工具环境保证了高可靠性和低市场风险。Intel 平台工程部门开发了一种面向对象的用于验证它的AT89C51 汽车单片机多线性测试环境。这种环境的目标不仅是为AT89C51 汽车单片机提供一种健壮测试环境,而且开发一种能够容易扩展并重复用来验证其他几种将来的单片机。开发的这种环境连接了AT89C51。本文讨论了这种测试环境的设计和原理,它的和各种硬件、软件环境部件的交互性,以及如何使用AT89C51。 1.1 介绍 8 位AT89C51 CHMOS 工艺单片机被设计用于处理高速计算和快速输入/输出。MCS51 单片机典型的应用是高速事件控制系统。商业应用包括调制解调器,电动机控制系统,打印机,影印机,空调控制系统,磁盘驱动器和医疗设备。汽车工业把MCS51 单片机用于发动机控制系统,悬挂系统和反锁制动系统。AT89C51 尤其很好适用于得益于它的处理速度和增强型片上外围功能集,诸如:汽车动力控制,车辆动态悬挂,反锁制动和稳定性控制应用。由于这些决定性应用,市场需要一种可靠的具有低干扰潜伏响应的费用-效能控制器,服务大量时间和事件驱动的在实时应用需要的集成外围的能力,具有在单一程序包中高出平均处理功率的中央处理器。拥有操作不可预测的设备的经济和法律风险是很高的。一旦进入市场,尤其任务决定性应用诸如自动驾驶仪或反锁制动系统,错误将是财力上所禁止的。重新设计的费用可以高达500K 美元,如果产品族享有同样内核或外围设计缺陷的话,费用会更高。另外,部件的替代品领域是极其昂贵的,因为设备要用来把模块典型地焊接成一个总体的价值比各个部件高几倍。为了缓和这些问题,在最坏的环境和电压条件下对这些单片机进行无论在部件级别还是系统级别上的综合测试是必需的。Intel Chandler 平台工程组提供了各种单片机和处理器的系统验证。这种系统的验证处理可以被分解为三个主要部分。系统的类型和应用需求决定了能够在设备上执行的测试类型。 1.2 AT89C51提供以下标准功能:

51单片机C语言编程基础与实例

基础知识:51单片机编程基础 单片机的外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1. 四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一个串行通信接口;(SCON,SBUF) 4. 一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。 C语言编程基础: 1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚) 代码

单片机C语言编程实例

单片机C语言编程实例 前言 INTEL公司的MCS-51单片机是目前在我国应用得最广泛的单片机之一.随着 单片机应用技术的不断发展,许多公司纷纷以51单片机为内核,开发出与其兼容的 多种芯片,从而扩充和扩展了其品种和应用领域。 C语言已成为当前举世公认的高效简洁而又贴近硬件的编程语言之—。将C语言向单片机上的移植,始于20世纪80年代的中后期。经过十几年的努力,C语言终于成为专业化单片机上的实用高级语言。用C语言编写的8051单片机的软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完善的系统。因此,不管是对于新进入这一领域的开发者来说,还是对于有多年单片机开发经验的人来说,学习单片机的C语言编程技术都是十分必要的。. C语言是具有结构化.模块化编译的通用计算机语言,是国际上应用最广.最多的计算语言之一。C51是在通用C语言的基础上开发出的专门用于51系列单片机编程的C语言.与汇编语言相比,C51在功能上.结构上以及可读性.可移植性.可维护性等方面都有非常明显的优势。目前 最先进、功能最强大、国内用户最多的C51编译器是Keil Soft ware公司推出的KeilC51。第 一章单片机C语言入门 1.1建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码, 这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软 件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑, 编译,仿真等于一体,同时还支持PLM、汇编和C语言的程序设计,它的界面 和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真 方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周 立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个

51单片机实例(含详细代码说明)

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理:

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248=498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时, 延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管 的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平, 即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0 端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 5.程序框图 如图4.1.2所示

c51单片机实例下载大全

单片机资料教程下载,省去找资料的麻烦,只供学习参考用,下载24内删掉,祝大家学习进步 单片机点阵学习资料 https://www.360docs.net/doc/ed13736236.html,/thread-1703-1-1.html 手把手教你学单片机--教程视频 https://www.360docs.net/doc/ed13736236.html,/thread-1688-1-1.html 力天把手教你学单片机视频教程 https://www.360docs.net/doc/ed13736236.html,/thread-1689-1-1.html 谱中单片机开发板例程 https://www.360docs.net/doc/ed13736236.html,/thread-1683-1-2.html 初学单片机的30,硬件简单对初学者有帮助 https://www.360docs.net/doc/ed13736236.html,/thread-1962-1-1.html 用单片机制作的MP3 https://www.360docs.net/doc/ed13736236.html,/thread-1701-1-2.html 51单片机应用开发大全所含100个范例代码及电路图 https://www.360docs.net/doc/ed13736236.html,/thread-1820-1-1.html 【含28个单片机实例流程图】 https://www.360docs.net/doc/ed13736236.html,/thread-1959-1-2.html 谱中单片机程序烧录工具STC https://www.360docs.net/doc/ed13736236.html,/thread-1682-1-2.html 《单片机技术》32讲

https://www.360docs.net/doc/ed13736236.html,/thread-1693-1-1.html 51单片机c语言100例教程 https://www.360docs.net/doc/ed13736236.html,/thread-1700-1-1.html 单片机超级精华包 https://www.360docs.net/doc/ed13736236.html,/thread-1687-1-1.html 新手学的多功能电子钟 https://www.360docs.net/doc/ed13736236.html,/thread-1679-1-1.html 十天学会单片机和c语言视频教程 https://www.360docs.net/doc/ed13736236.html,/thread-1692-1-1.html C语言函数库速查手册 https://www.360docs.net/doc/ed13736236.html,/thread-1696-1-1.html 历史上最全的KEIL中文学习资料 https://www.360docs.net/doc/ed13736236.html,/thread-1729-1-2.html 单片机c语言程序设计实训100例--基于AVR+PROTUES https://www.360docs.net/doc/ed13736236.html,/thread-1695-1-2.html (有电路图和程序) https://www.360docs.net/doc/ed13736236.html,/thread-1965-1-1.html 关于单片机抗干扰的资料 https://www.360docs.net/doc/ed13736236.html,/thread-1961-1-1.html 单片机矩阵扫描键盘程序 https://www.360docs.net/doc/ed13736236.html,/thread-1723-1-1.html 共享通过串口在线调试51单片机的专业版培训资料

(完整版)51单片机汇编指令(全)

指令中常用符号说明 Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7) Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1) Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址 #data表示8位常数(立即数) #data16表示16位常数 Add16表示16位地址 Addr11表示11位地址 Rel8位代符号的地址偏移量 Bit表示位地址 @间接寻址寄存器或基址寄存器的前缀 ( )表示括号中单元的内容 (( ))表示间接寻址的内容 指令系统 数据传送指令(8个助记符) 助记符中英文注释 MOV Move 移动 MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A MOV A , Direct;(direct)→A,直接地址的内容送A MOV A ,@ Ri;(Ri)→A,RI间址的内容送A MOV A , #data;data→A,立即数送A MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn MOV Rn , #data;data→Rn,立即数送Rn MOV direct , A;A→(direct),累加器A中的内容送直接地址中 MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址 MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址 MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址 MOV direct , #data;8位立即数送到直接地址中 MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中 MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中 MOV @Ri , #data; data→@Ri ,8位立即数送到间址中 MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令) (MOV类指令共16条)

51单片机50个实例代码

51单片机50个例程代码程序里有中断,串口等驱动,直接复制即可使用1-IO输出-点亮1个LED灯方法1 /*----------------------------------------------- 名称:IO口高低电平控制 论坛:https://www.360docs.net/doc/ed13736236.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 sbit LED=P1^0;// 用sbit 关键字定义LED到P1.0端口, //LED是自己任意定义且容易记忆的符号 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用bit位对单个端口赋值 LED=1; //将P1.0口赋值1,对外输出高电平 LED=0; //将P1.0口赋值0,对外输出低电平 while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } } 2-IO输出-点亮1个LED灯方法2 /*-----------------------------------------------

名称:IO口高低电平控制 论坛:https://www.360docs.net/doc/ed13736236.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用1个字节对单个端口赋值 P1 = 0xFF; //P1口全部为高电平,对应的LED灯全灭掉, //ff换算成二进制是1111 1111 P1 = 0xfe; //P1口的最低位点亮,可以更改数值是其他的灯点亮 //0xfe是16进制,0x开头表示16进制数, //fe换算成二进制是1111 1110 while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } } 3-IO输出-点亮多个LED灯方法1 /*----------------------------------------------- 名称:IO口高低电平控制 论坛:https://www.360docs.net/doc/ed13736236.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的多个LED灯

51单片机C语言入门实例2

13.动态数码显示技术 1.实验任务 如图4.13.1所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“HELLO”字样。 2.电路原理图 图4.13.1 3.系统板上硬件连线 (1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7用8芯排线连接到“动态数码显示”区域中的a-h端口上;

(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“动态数码显示”区域中的S1-S8端口上; (3.把“单片机系统”区域中的P1.7端口用导线连接到“独立式键盘”区域中的SP1端口上; 4.程序设计内容 (1.动态扫描方法 动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。 (2.在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。 (3.对于显示的字形码数据我们采用查表方法来完成。 5.程序框图 图4.13.2

6.汇编源程序 ORG 00H START: JB P1.7,DIR1 MOV DPTR,#TABLE1 SJMP DIR DIR1: MOV DPTR,#TABLE2 DIR: MOV R0,#00H MOV R1,#01H NEXT: MOV A,R0 MOVC A,@A+DPTR MOV P0,A MOV A,R1 MOV P2,A LCALL DAY INC R0 RL A MOV R1,A CJNE R1,#0DFH,NEXT SJMP START DAY: MOV R6,#4 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET TABLE1: DB 06H,5BH,4FH,66H,6DH TABLE2: DB 78H,79H,38H,38H,3FH END 7. C语言源程序 #include unsigned char code table1[]={0x06,0x5b,0x4f,0x66,0x6d}; unsigned char code table2[]={0x78,0x79,0x38,0x38,0x3f}; unsigned char i; unsigned char a,b; unsigned char temp; void main(void) { while(1) { temp=0xfe; for(i=0;i<5;i++) { if(P1_7==1)

51单片机原理及应用pdf51单片机的入门及简单应用

51单片机原理及应用pdf51单片机的入门及简单应用摘要在中国,高校的单片机课程大多数都是51,而51经过这么多年的发展,也增长了许多的系列,功能上有许多改进,也扩展出不少分支。芯片的控制在单片机应用中重要性不言而喻,51单片机的入门首先学会DS18B20芯片的控制与使用。 关键词51单片机;入门;应用 TP3A1673-9671-(xx)041-0013-01 51单片机已经有30多年的历史了,在中国,高校的单片机课程大多数都是51,而51经过这么多年的发展,也增长了许多的系列,功能上有了许多改进,也扩展出了不少分支。而国内书店的单片机专架上,也大多数都是51系列。可以预见,51单片机在市场上只会越来越多,功能只会越来越丰富,在可以预见的数十年内是不可能会消失的。 1功能特性概述 AT89S51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定

时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内 振荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 251单片机结构原理 引脚功能说明 1)V:电源电压●GND:地。 2)P0口:P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路, 对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访 问期间激活内部上拉电阻。在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 3)P1口:Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“l”,

51单片机C语言学习知识编程基础学习知识及其实例

基础知识:51单片机编程基础 第一节:单数码管按键显示 第二节:双数码管可调秒表 第三节:十字路口交通灯 第四节:数码管驱动 第五节:键盘驱动 第六节:低频频率计 第七节:电子表 第八节:串行口应用 基础知识:51单片机编程基础 单片机的外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1. 四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一个串行通信接口;(SCON,SBUF) 4. 一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。 C语言编程基础: 1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高 四位。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;}

(完整版)51单片机实现双机通信(自己整理的)

左边1号机,右边2号机,,功能实现 1号机程序 #include #define uint unsigned int #define uchar unsigned char sbit p10=P1^0; uchar a,b,kk; //uchar code d_c[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void delay_ms(uchar y) { uchar i; while(y--) for(i=0;i<120;i++) ; } void put(uchar x) //发送函数 { SBUF=x; //SBUF:串行口数据缓冲器 while(TI==0); //等待发送结束 TI=0; } void main() { uchar j; SCON=0x40; //串行口工作方式1,8位通用异步发送器

TMOD=0x20; //定时器1工作方式2 PCON=0x00; //波特率不倍增 TH1=0xf4; TL1=0xf4; //波特率2400 TR1=1; //定时器1开始计时 P2=0xc0; while(1) { if(p10==0&&j==0) { delay_ms(15); while(p10==0); kk=1; P2=0xf9; j=1; } if(p10==0&&j==1) { delay_ms(15); while(p10==0); kk=2; P2=0xa4; j=2; } if(p10==0&&j==2) { delay_ms(15); while(p10==0); kk=3; P2=0xb0; j=0; } if(kk==1) put('A'); if(kk==2) put('B'); if(kk==3) put('C'); delay_ms(10); } }

《STC15单片机实战指南》的前言

曾几何时,残弈悟恩也怀揣梦想,踏进大学校园,本以为会在相对开放的大学校园里有所作为,而现实的骨感,让我开始漫无目的,找不到方向。一次沉重的打击加一个偶然的机会,结识了单片机,也就是从那刻开始,便与单片机结下了深交。胜似转角遇到爱,从此便放不下、离不开,通宵达旦,废寝忘食… 如今,残弈悟恩不再如那般年轻,然而回想起与单片机牵手的那些年,心头依然会浮起满满的幸福。有人说,梦想,就是一种让你感到坚持就是幸福的东西。从与单片机的相识到相知再到相伴,残弈悟恩是幸福的,此刻,残弈悟恩想把这幸福传递给每位读者,并且感谢读者们选择了单片机,或许若干年之后,读者们也会和残弈悟恩一样,回想起那些坚持与相伴,便会幸福,也会感激曾今奋斗的自己。 单片机这门技术,比起当今流行的ARM、DSP、FPGA显得有些“逊色”,甚至随着物联网的发展,特别是智能硬件的普及,单片机已经被集成到了某些蓝牙芯片内部,但其应用的广泛性并不亚于这三门技术的总和。读者不要相信学单片机没技术含量这样的大“实话”,不要铭记单片机已过时的这种“正确”说法,也不要迟疑学完单片机对以后找工作有无帮助,更不要只是把单片机和金钱画等号。读者要坚信,有些设计,值得用一生去追求。 时至今日,书已成型。几个月的写作时间,不仅是一段时间、一段经历,更是一次突破。数个月的写作包含了太多的辛酸和喜悦,成长和感悟。辛酸的是有时一连几周不休息,有时晚上2、3点,写着、写着就会爬在电脑上睡着,更有甚着会焚膏继晷、通宵达旦;喜悦的是能得到亲人、朋友、网友们的支持和对本书的关注,书虽未出,但电子版已得到好多专业人士和网友的肯定;成长的是做事要逼自己一把,但合理的时间规划必须的有,否则真心很累;感悟的是工作很重要,但身体更重要。因为身体是“1”,其它的房子、车子、票子、地位、名誉都是“0”,只有“1”在时,后面的“0”才有意义,“1”不在时,再多的“0”还是“0”。像残弈悟恩这样熬夜,对身体的摧残是不可逆的,借此机会,向读者们说声:奋斗的同时,别忘了锻炼身体。 关于书名 《与STC15单片机牵手的那些年(高手进阶之路——C语言版)》,牵手——更能表达残弈悟恩对单片机的狂热;那些年——残弈悟恩自陷入单片机这块泥潭,就未曾自拔;每个人,刚开始学习单片机,都是菜鸟,所以,本书刚开始尽量力求通俗易懂,让读者尽快入门;高手的磨练,不是一日之计,单片机的学习更没有捷径可走,需要读者多花时间和精力,力求掌握本书的所有例程,并能自行编写、调试,为制作四轴飞机夯实基础。 关于目的 编写这本书的目的是让对单片机既有兴趣,又能坚持“玩”下去,同时希望读者能够把它当做是一个友好、易于使用、便于自学、乐于帮助的助手。为了达到这个目标,本书采用了以下策略: ?尽量使用通俗、易懂的语言。有时也会特意用一些口语化的语言来阐述一个问题, 而不是死磕概念,这样做更能与读者产生共鸣。 ?若只用语言、文字难以阐述的概念,多会采用图表的形式来澄清。图表可以刺激人 的潜意识,崔西曰:潜意识是显意识力量的3万倍以上。 ?采用化整为零的方法,将枯燥、无味的知识分解成小部分,一点一滴的向读者馈赠。 ?对于难理解、难记忆的知识点,多会采用举例的方式,这样读者会好理解、易记忆。 关于内容 入门篇包括第1~2章。第1章主要介绍了单片机的概念及其应用,随后分享了一

51单片机C语言编程基础及实例

衿莆蚈蝿膈莆莈薂膄 基础知识:51单片机编程基础 第一节:单数码管按键显示 第二节:双数码管可调秒表XZylm。 第三节:十字路口交通灯 第四节:数码管驱动 第五节:键盘驱动ogyRz。 第六节:低频频率计 第七节:电子表 第八节:串行口应用ry9kW。 基础知识:51单片机编程基础 单片机得外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)与地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要接晶体至X1(PIN18)与X0(PIN19);(频率为主频得12倍) 6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中得程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就就是编程控制以下I/O部件,完成指定任务) 1. 四个8位通用I/O端口,对应引脚P0、P1、P2与P3; 2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一个串行通信接口;(SCON,SBUF) 4. 一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52、h给出了SFR特殊功能寄存器所有端口得定义。C语言编程基础:

1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位得字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为x = x | 0x0f; 5.TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD得低四位赋值0x5,而不改变TMOD得高四 位。tQCvI。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后得分号表示空循环体,也就就是{;} 在某引脚输出方波编程方法:(比如P3、1引脚) 代码

51单片机入门实例

13.动态数码显示技术 14 4× 4 矩阵式键盘识别技术 15.定时计数器T0 作定时应用技术(一) 13.动态数码显示技术 1.实验任务 如图4.13.1 所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7 接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“HELLO”字样。 2.电路原理图

图4.13.1 3.系统板上硬件连线 (1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7 用8 芯排线连接到“动态数码显示”区域中的a-h 端口上; (2.把“单片机系统”区域中的P2.0/A8-P2.7/A15 用8 芯排线连接到“动态数码显示”区域中的S1-S8端口上; (3.把“单片机系统”区域中的P1.7 端口用导线连接到“独立式键盘”区域中的SP1端口上; 4.程序设计内容 (1.动态扫描方法

动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。 (2.在进行数码显示的时候,要对显示单元开辟8 个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。 (3.对于显示的字形码数据我们采用查表方法来完成。 5.程序框图 图4.13.2 6.汇编源程序 ORG 00H START: JB P1.7,DIR1 MOV DPTR,#TABLE1 SJMP DIR DIR1: MOV DPTR,#TABLE2 DIR: MOV R0,#00H MOV R1,#01H NEXT: MOV A,R0 MOVC A,@A+DPTR

STC_89C51单片机学习手册

S7通讯的编程步骤-----自由口通讯 S7-200 通讯的编程步骤---自由口通讯
S7-200 自由口通讯是基于 RS485 通讯基础的半双工通讯, 因此, 发送和接收指令不能同时执行。 自由口通讯使用 SMB30(口 0)和 SMB130(口 1)来定义通讯口 的工作模式。SMB30/SMB130 各位的定义如下:
图 1:通讯口工作模式寄存器
使用自有口通讯,SM30.0 和 SM30.1(SM130.0 和 SM130.1=0) 必须分别为 1 和 0。 发送指令(XMT) 一、 发送指令(XMT) 使用 XMT 发送指令可以把存于缓冲区中的数据, 一次发送一个或
1

多个字节的数据,最多为 255 个。发送完最后一个字符后还可以连接 到一个发送完中断(端口 0 为 9,端口 1 位 26,见下表) 。
图 2:中断事件表
2

发送缓冲区的格式如下表所示:
图 3:发送缓冲区的格式 说明: T+0:发送信息的字节个数需要提前定义。 T+1~T+255:要发送的数据字节
和 XMT 有关的寄存器:SMB4 的 SM4.5 和 SM4.6。SM4.5=1 时,口 0 发送完毕;SM4.6=1 时,口 1 发送完毕。 由以上可以看出,有两种方法可以检测端口 0 或 1 的数据发送 状态:一种是利用中断,一种是利用寄存器 SMB4 的第 5 位(口 0) 和第 6 位(口 1) 。 接收指令(RCV) 二、 接收指令(RCV) 使用接收指令(RCV)可以从端口 0 或 1 接收一个或多个字节的 数据(最多 255 个) ,并存于数据缓冲区。接收完最后一个字节后可 以连接到一个接收完中断(口 0 是 23,口 1 是 24,见图 2 所示) 。 接收缓冲区的格式如下表所示:
3

51单片机实例(含详细代码说明)

1 ?实验任务 如图4.1.1所示:在端口上接一个发光二极管L1,使L1在不停地一亮一灭, 亮一灭的时间间隔为秒。 2. 电路原理图 图 4.1.1 3. 系统板上硬件连线把“单片机系统”区域中的端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上 4. 程序设计内容 (1).延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为秒,相对于微秒来说,相差太大,所以我们在执行 某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢下面具体介绍其原理: 1 ?闪烁灯 13 FO OJADQ FO 1 /AD] FO.2/AD2 FCi 3j*AOTi PO 4/AE>4 FtJ.6fAO& i^U.7/AD7 五尿5¥尸二 7/Jk 1 J5 尸N G/-A 1 ■* J - i/JL U P2 /IfA 1 J RZ W 1 1 g 3劇in P3 L/A91 F3 G/AH F-Ji CJ/I2CD I rTZK G pj 3/1H T1 P^JS/T 1 £/暫冠 理 监 居 . ■ V 11111111 PPP沪厂JLH甘 r3Hb

如图4.1.1所示的石英晶体为12MHz因此,1个机器周期为1微秒机器周期微秒 = ___________ ___________ MOV R6,#20 2 个2 L ______ D1: MOVR7,#248 2 个2 2+ 2X 248= 498 20X =— DJNZ R7,$ 2 个2X 248 (498 DJNZ R6,D1 2 个2X 20= 40 10002 因此,上面的延时程序时间为。 由以上可知,当R6= 10、R7= 248时,延时5ms R6= 20、R7= 248时, 延时10ms,以此为基本的计时单位。如本实验要求秒=200ms 10m X R5 =200ms贝U R5= 20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET

51单片机教程详细解析(经典收藏)

51单片机教程配套学习板 HJ-1G 助学小店https://www.360docs.net/doc/ed13736236.html,/自学单片机课程第1页共61页 baidu

原作:平凡的单片机 (感谢原作者的无私共享精神) 慧净网上收集的资料,全部免费共享,没有版权 可以用于配套学习的单片机学习板HJ-3G 单片机教程第一课:单片机概述 1、何谓单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM (程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。 天!PC中的CPU一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚

强弱,打个比方,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。既然如此,单片机的功能肯定不强,干吗要学它呢?话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用PIII?应用的关键是看是否够用,是否有很好的性能价格比。所以8051出来十多年,依然没有被淘汰,还在不断的发展中。 2、MCS51单片机和8051、8031、89C51等的关系我们平常老是讲8051,又有什么8031,现在又有89C51,它们之间究竟是什么关系?MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL 公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL 公司开发生产的。以后我们将用89C51来完成一系列的实验。 单片机教程第二课:单片机的内部、外部结构(一) 一、单片机的外部结构 拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就看一下如何给它连线。1、电源:这当然是必不可少的了。单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。2、振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按图1接上即可。3、复位引脚:按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。4、EA引脚:EA引脚接到正电源端。至此,一个单片机就接好,通上电,单片机就开始工作了。 我们的第一个任务是要用单片机点亮一只发光二极管LED,显然,这个LED必须要和单片机的某个引脚相连,否则单片机就没法控制它了,那么和哪个引脚相连呢?单片机上除了刚才用掉的5个引脚,还有35个,我们将这个LED和1脚相连。(见图1,其中R1是限流电阻) 按照这个图的接法,当1脚是高电平时,LED不亮,只有1脚是低电平时,LED才发亮。因此要1脚我们要能够控制,也就是说,我们要能够让1引脚按要求变为高或低电平。即然我们要控制1脚,就得给它起个名字,总不能就叫它一脚吧?叫它什么名字呢?设计51芯片的INTEL公司已经起好了,就叫它P1.0,这是规定,不可以由我们来更改。

相关文档
最新文档