历史上的今天

今天是:2024年10月29日(星期二)

正在发生

2019年10月29日 | 51单片机入门基础教程

发布者:古古斋 来源: 51hei关键字:51单片机  基础教程  基础知识 手机看文章 扫描二维码
随时随地手机看文章

第一节、基础知识

一、单片机概念


1、单片机:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(single chip Microcomputer)也叫微控制器(MCU)。

CPU( Central Processing Unit ):由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器

RAM( Random-Access Memory ):用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;

ROM (Read-Only Memory):用以存放程序、一些原始数据和表格;

I/O(input/output)口:四个8位并行I/O口,既可用作输入,也可用作输出;

T/C (timer/counter):两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;


Intel公司1980年推出了MCS-51系列单片机:集成 8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。

              80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。


主要的80C51单片机

Intel:80C31、80C51、80C32、80C52、87C52

ATMEL:AT89C51、AT89C52、AT89C2051等;

STC:89C51、89C52、90C51、STC15w

Philips:P80C54、P80C58、P87C54

华邦:W78C54、W78C58、W78E54

Siemens:C501-1R、C513A-H

等公司的许多产品 。


芯片封装简介

单片机用途

凡是与控制或简单计算有关的电子设备都可以用单片机来实现,再根据具体实际情况选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等


工业自动化:数据采集、测控技术。

智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等。

消费类电子产品:洗衣机、电冰箱、空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。

通讯方面:调制解调器、程控交换技术、手机、小灵通等。

武器装备:飞机、军舰、坦克、导弹、航天飞机、鱼雷制导、智能武器等。


  • 学习51单片机C语言编程基本知识

电平特性

数字电路中只有两种电平:高和低

单片机为TTL电平: 高 +5V      低 0V

RS232电平:计算机的串口   高 -12V     低+12V

所以计算机与单片机之间通讯时需要加电平转换芯片max232等其他芯片

二进制

数字电路中的两种电平特性决定了它使用二进制运算

十进制

十六进制

二进制

十进制

十六进制

二进制

0

0x0

0000

1

0x1

0001

2

0x2

0010

3

0x3

0011

4

0x4

0100

5

0x5

0101

6

0x6

0110

7

0x7

0111

8

0x8

1000

9

0x9

1001

10

0xA

1010

11

0xB

1011

12

0xC

1100

13

0xD

1101

14

0xE

1110

15

0xF

1111

二进制逻辑运算

逻辑变量 :    只有两个:“0”(假)和“1”(真)。

逻辑“与”(逻辑乘)运算L=A·B      或者    L=A∧B

“与”的运算法则为:

0·0=0  ,       0·1=0  ,

1·0=0  ,       1·1=1

A·0=0,A·1=A,A·A=A

逻辑“或”(逻辑加)运算L=A+B    或者   L=A∨B

“或”的运算法则为:  

0+0=0  ,       0+1=1

1+0=1  ,       1+1=1

A+0=A ,A+1=1  ,A+A=A

逻辑“非”(逻辑取反)运算L=  A

“非”的运算法则为:

0 = 1  ,1 = 0

A + A = 1 ,

A·A = 0  ,A = A

“异或”

其运算规则是:

C语言基本数据类型

基本语法

变量定义

数据类型   变量名

int  num1;

double num2 = 2;

unsigned short num3;

if()语句

if(条件){分支}

if(条件){分支1}else{分支2}

if(x>=0)

{

      y=y/2;

}

else

{

      y=y*x;

}

while()语句

while(条件){循环体}

while(i<10)

{

      s+=k;
}

for()语句

for(表达式1;条件2;表达式3){循环体}

for(i=0;x!=y;j++)

{

       z/=3;

}

函数定义

数据类型   函数名(形参列表){函数体}

int   add(int num1,int num2)

{

              return num1+num2;

}

三、80C51引脚简介

1.  电源引脚:Vcc (40脚):电源端,接+5V电源。

Vss(Gnd) (20脚):接地端,接+5V电源地端

2. 外接晶体引脚:XTAL1和XTAL2

89C51内部有一个振荡器和时钟产生电路。

XTAL1(19脚):   片内振荡电路反相放大器输入

XTAL2(18脚):片内振荡电路反相放大器输出 当采用内部时钟时,片外连接石 英晶体和微调电容,产生原始 的振荡脉冲信号。

采用外部时钟时, XTAL1输入 外部时钟脉冲信号, XTAL2悬空.

3. 控制信号引脚:RST、ALE、PSEN、EA

RST (9脚) : 复位信号输入端,高电平有效。

          保持两个机器周期高电平时,完成复位操作。

ALE/PROG (30脚) :

地址锁存允许输出端/编程脉冲输入端

正常时,连续输出振荡器频率的1/6正脉冲信号。

访问片外存储器时:

作为锁存P0口低8位地址的控制信号。

对8751片内 ROM编程写入时:作为编程脉冲输入端。

PSEN (29脚): 外部程序存储器读选通输出信号

    访问片外ROM时,输出负脉冲作为读ROM选通.

常连接到片外ROM芯片的输出允许端(OE)作外部ROM的读选通信号。

EA/Vpp (31脚):

外部程序存储器地址使能输入/编程电压输入端.   平常,接“1”时,CPU访问片内4KB的ROM,当地址超4KB时,自动转向片外ROM中的程序。当接“0”时,CPU只访问片外ROM。 第2功能Vpp              对8051编程时,编程电压输入端。

4. 输入/输出端口引脚 P0、P1、P2、P3

4个8位的并行输入/输出端口,共32个引脚。作为通用输入/输出端口

  • 通用输入/输出端口

     准双向口:  作输入时要先对锁存器写“1”。默认启动初始化为高电平

P0端口(P0.0—P0.7,第39—32脚):

      漏极开路的准双向口, 内部没有上拉电阻,为搞阻状态,不能正常输出高低电平,做I/O时需要接上拉电阻(10K)

P1端口(P1.0—P1.7,第1—8脚):

      内部带上拉电阻的准双向口,在做输入时要先1

P2端口(P2.0—P2.7,第21—28脚):

      内部带上拉电阻的准双向口,与P1相似

P3端口(P3.0—P3.7,第10—17脚):

      内部带上拉电阻的准双向口,做I/O时与P1相似,另外有第二功能

P3口的第二功能

  • 仿真软件Proteus

Proteus 软件是由英国 Labcenter Electronics 公司开发的EDA(Electronic Design Automation)工具软件,已有近20年的历史,在全球得到了广泛应用。Proteus 软件的功能强大,它集电路设计、制版及仿真等多种功能于一身,不仅能够对电工、电子技术学科涉及的电路进行设计与分析,还能够对微处理器进行设计和仿真,并且功能齐全,界面多彩,是近年来备受电子设计爱好者青睐的一款新型电子线路设计与仿真软件。

              在Proteus中,从原理图设计、单片机编程、系统仿真到PCB设计一气呵成,真正实现了从概念到产品的完整设计。

主要功能

ISIS——智能原理图输入系统,系统设计与仿真的基本平台。

ARES ——高级PCB( Printed Circuit Board)布线编辑软件

VSM(虚拟仿真模式)

交互式仿真—— 实时直观地反映电路设计的仿真结果;

基于图表的仿真(ASF)—— 用来精确分析电路的各种性能,如频率特性、噪声特性等。

工具箱中各图标按钮对应的操作如下

库元件的分类

1. 大类(Category)

在左侧的“Category”中,共列出了以下几个大类

要从库中拾取一个元件时,首先要清楚它的分类是位于哪一类,然后在打开的元件拾取对话框中,选中“Category”中相应的大类

2子类(Sub-category)

选取元件所在的大类(Category)后,再选子类(Sub-category),也可以直接选生产厂家(Manufacturer),这样会在元件拾取对话框中间部分的查找结果(Results)中显示符合条件的元件列表。从中找到所需的元件,双击该元件名称,元件即被拾取到对象选择器中去了。如果要继续拾取其他元件,最好使用双击元件名称的办法,对话框不会关闭。如果只选取一个元件,可以单击元件名称后单击“OK”按钮,关闭对话框。如果选取大类后,没有选取子类或生产厂家,则在元件拾取对话框中的查询结果中,会把此大类下的所有元件按元件名称首字母的升序排列出来

各子类介绍

1. Analog ICs

              模拟集成器件共有8个子类


2.Capacitors

              电容共有23个分类

3. CMOS 4000 series

              CMOS 4000系列数字电路共有16个分类

4. Connectors

              接头共有8个分类

5. Data Converters

数据转换器共有4个分类

6. Debugging Tools

              调试工具数据共有3个分类

7. Diodes

              二极管共有8个分类

8. Inductors

              电感共有3个分类

9. Laplace Primitives

              拉普拉斯模型共有7个分类

10. Memory ICs

              存储器芯片共有7个分类

11. Microprocessor ICs

              微处理器芯片共有13个分类

12. Modelling Primitives

              建模源共有9个分类

13. Operational Amplifiers

                            运算放大器共有7个分类

14.Optoelectronics

                            光电器件共有11个分类

15.Resistors

                            电阻共有11个分类

16.Simulator Primitives

              仿真源共有3个分类

17.Switches and Relays

              开关和继电器共有4个分类

18. Switching Devices

              开关器件共有4个分类

19.Thermionic Valves

              热离子真空管共有4个分类

20.Transducers

              传感器共有2个分类

21.Transistors

              晶体管共有8个分类


五.编译软件Keil

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要Windows操作系统。使用C语言编程,那么Keil几乎就是不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

              Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

C51 有以下扩展关键字(共21个):

_at_               alien               bdata               bit               code               compact               data               far idata               interrupt               large               pdata               _priority_               reentrant  sbit               sfr               sfr16               small               _task_               using               xdata

常用关键字说明

sfr:sfr用来定义特殊功能寄存器

sfr16:定义一个16位的特殊功能寄存器

sbit:定义一个特殊功能寄存器的某一位

bit:定义位变量

code: 指定存储位置位于程序存储器

interrupt:声明中断服务程序

using:指定的寄存器组

扩展函数

需要包含intrins.h头文件

常用函数

_irol_、_iror_ 对unsigned int数循环左移、右移

_lrol_、_lror_ 对unsigned long数循环左移、右移

_crol_、_cror_对unsigned char数循环左移、右移

六、点亮第一个LED灯

LED发光二极管一般压降为1.7 V  电流3mA即可点亮,因此串联1K电阻限流限压,长脚的为正极。

D1点亮 p1.0设置为低电平,有电流流过,二极管发光

D2不亮 p1.1默认为高电平,没有点亮流过,二极管不会发光

仿真时  红色代表高电平,蓝色代表低电平,灰色代表高阻态

  • 流水灯的实现

一、80c51的最小应用系统

电源+5v 3V接C6 (104 为10 *104 0.1uF)和C5(10uF)提高抗干扰性

复位电路外部RST引脚复位就是从外部向RST引脚施加一定宽度的复位脉冲,从而实现单片机的复位。将RST复位管脚拉高并维持至少24个时钟加10us后,单片机会进入复位状态,将RST复位管脚拉回低电平后,单片机结束复位状态并从用户程序区的0000H处开始正常工作。

当系统上电时,电容充电会给rst引脚高电平,等电容稳定后将没有电流流过.

振荡电路  振荡频率越高表示单片机运行速度越快,但同时对存储器的速度和印刷电路板的要求也就越高。如同木桶原理。同时单片机性能的好坏,不仅与CPU运算速度有关,而且与存储器的速度、外设速度等都有很大关系。因此一般选用6~12MHZ。并联谐振电路对电容的值没有严格要求,但会影响振荡器的稳定、振荡器频率高低、起振快速性等。一般根据手册说明选定.

二、下载程序到stc90c51单片机

三、单片机工作的基本时序

(1) 振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期,常用12MHZ,11.0592MHZ。 

(2) 状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。

(3) 机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。 

(4) 指令周期: 它是指CPU完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。

四、简单的软件延时

使用keil查看程序执行时间

延时100ms函数

延时1s闪烁

流水灯设计

从上到下每隔500ms依次点亮

P0口上拉电阻

P0口是开路漏极只能输出低电平,不能正常输出高电平。所以做I/O时需要加上拉电阻

每隔500ms依次点亮其中一个

来回依次循环点亮一个led

加减速流水灯

花样流水灯

利用_crol_、_cror_实现流水灯

多I/O口的流水灯

第三节、数码管和定时器

显示器及其接口

单片机系统中常用的显示器有:

发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。

LED数码显示方式及电路

使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。

[1] [2] [3]
关键字:51单片机  基础教程  基础知识 引用地址:51单片机入门基础教程

上一篇:PC机通过RS232控制单片机
下一篇:51单片机精确控制步进电机(有TB6600驱动)

推荐阅读

1、业界|人形机器人:索菲亚会见阿塞拜疆总统伊利哈姆阿利耶夫人工智能机器人'索菲亚'近日进行了全球巡回演出,本周意外地停留在高加索地区。机器人在高加索停留意味着被授予了世界上第一个机器人的签证,由于采用了一些智能技术,该过程仅用了两分钟。ASAN(阿塞拜疆服务和评估网络)该组织是阿塞拜疆的政府机构; 通过建立向公众提供服务的一站式中心,...
Load/Store内存访问指令 — LDR 字数据加载指令 — LDRB 字节数据加载指令 — LDRH 半字数据加载指令 — STR 字数据存储指令 — STRB 字节数据存储指令 — STRH 半字数据存储指令数据处理指令MOV 数据传送指令,有效数字不能超过2位16进制(8位二进制),MOV r2,#0xf800合法,MOV r2,0x1510错误...
3DS 退场,传统掌机时代也结束了。前几天看到任天堂 3DS 停产的消息,我的第一反应是‘原来才停产啊’。其实去年 Switch Lite 发布和《宝可梦剑盾》登录 Switch 平台之后,基本上就宣告 3DS 的死亡了。日本任天堂官网显示3DS 全系列‘生产终了’因为喜欢玩《宝可梦》,任天堂的每代掌机我都买了。3DS 系列是我买过最多的任天堂掌机,前后加起...
贸泽电子推出新一期EIT节目探讨射频和无线应用2021年10月29日 – 贸泽电子 (Mouser Electronics) 今天发布了 Empowering Innovation Together™ (共求创新)计划2021年系列的第六期节目。本期通过博客和信息图等引人入胜的内容,探讨了使用射频 (RF) 和无线技术的新兴趋势和应用,另外还推出了由贸泽技术内容总监Raymond Yin主持的新一期《科...

史海拾趣

问答坊 | AI 解惑

DSP复位电路问题

DSP复位电路问题 在手动复位电路中加入两个7414施密特触发器 防止外部干扰 但是好像不能使用 TI 的SN7414这个芯片 存在电平转换问题 是不是电平转换反而会变麻烦了? 如果不使用这种芯片 有那种7414可用? 可以不接7414吗? 另外看门狗复位 ...…

查看全部问答∨

学习verilog中的一写不解之处?

本人学习verilog的时间不是很久,但是有一个体会,HDL十分的枯燥,也十分的茫然,语法就是那么一点,没有c语言好用。但是有时候想用verilog打到c的效果真的不知从何下手,而且代码很容易一写就几百行。写着写着,自己都看晕了。比如说想写一个1602 ...…

查看全部问答∨

做个5V电压基准

用TL431做个5V电压基准,用我的数字表量,显示4.99V.是我的表精度低吗?用下面b图,R1=1.6K  R2=R3=20K …

查看全部问答∨

谁能教教我怎么在iar 或者mdk上建立44b0的工程

我原来用ads 想换到iar 或mdk 里面的设置怎么搞 调试时jllink …

查看全部问答∨

WINCE6.0下BSP移植问题

有人做过WINCE6.0下BSP的移植吗?我是个学生,毕设做的是把一个WINCE420版本的BSP移植到WINCE600下,之前没有过移植的经验,想请教有过这方面经验的高手指点。…

查看全部问答∨

meplab v7.1怎样生成hex文件

meplab v7.1怎样生成hex文件…

查看全部问答∨

如何使用ADC0808对音频进行采样的呢?

我最近在做毕业设计,想搞一个方波随输入进行一个动态的变化,有点想千千静听一样 …

查看全部问答∨

.Net Micro Framework 嵌入式开发

微软的 .Net Micro Framework 支持arm7和arm9,我想知道能不能用传统的arm开发板来开发 .Net Micro Framework 嵌入式应用…

查看全部问答∨

NOKIA日本研发中心招聘

诺基亚日本研发中心属于Multimedia Business Unit,是全球8 个研发中心之一。另外7个研发中心分布于芬兰、英国、德国、加拿大和印度。 Multimedia Business Unit在诺基亚高新技术领域领先于其它BU,与中国的MPBU不同,专门研发高端产品。 ...…

查看全部问答∨

【开源活动建议帖】新年新气象论坛能不能搞一个运动控制卡的DIY活动

RT 最近对运动控制很感兴趣!~不知坛子里有没有愿意一起做的!~…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved