第一讲:预备知识及点亮一个发光二极管(郭天祥)

目录

说明:此文章仅是我学习过程中的一些记录,如有侵权,请联系我删除,文章中难免有遗漏错误之处,欢迎指出。

一、什么是单片机

◆单板机              ​

◆单片机

二、预备知识

1.电平特性

2.二进制与十六进制

三、80C51系列介绍

四、C51知识

1.数据类型

2.数据类型扩充定义

3.C-51包含的头文件

4.运算符

五、学习单片机主要掌握什么

1.最小系统能够运行起来的必要条件:(硬件)

2.程序:

六、KEIL的使用

1.创建一个new project(一个新工程),注意先新建一个文件夹来保存这个project;

2.选择芯片,本次用到的是STC89C52RC,以自己所用芯片为准;

3.新建一个new file,命名的后缀加上.c,并保存到工程文件夹下(.asm是汇编)

4.右击source Group 1,将.c文件add到其中;

5.开始编写;

6.选择Options for Target的Output,勾选创建hex文件;

7.点击编译,Rebulid

七、STC-ISP

八、点亮一个发光二极管


一、什么是单片机

◆单板机

CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配在一块印刷电路板上,再配上监控程序(固化在ROM中),就构成了一台单板微型计算机(简称单板机)。

                           

                                                                    单板机

单片机

在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机Intel公司推出了MCS-51系列单片机:集成 8CPU4K字节ROM128字节RAM48位并口、1个全双工串行口、216位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。

二、预备知识

1.电平特性

在数字电路中,只有两种电平:高电平低电平,这里的高和低是人为规定的,并不是高电平的电平大小就一定高过低电平,或者是高和低总是固定为哪些数值。


(本课程中)定义单片机为TTL电平:

                高 +5V      低 0V

这也是大多数单片机的电平,当然也有的高电平是3.3V。


RS232电平:计算机的串口

                高 -12V     低 +12V


可以看到计算机与单片机的电平定义不同,因此在二者通讯时,如果不加以转换,则会出现差错,所以在这个电路板中,加入了电平转换芯片max232

即如果单片机传输一个高电平数据+5V,它作为max232芯片的输入,输出为-12V,再通过串口传输到计算机。

+5V        ->        max232        ->        -12V

2.二进制与十六进制

基本的数电、计算机知识,这里就不多赘述了。

二进制有0,1两位,用B表示二进制,如0001B代表十进制的1;

十六进制有0~9,A,B,C,D,E,F十六位,是二进制的简短表示形式,用H表示十六进制,如2CH表示十进制的44。

三、80C51系列介绍

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

Intel的:80C3180C5187C5180C3280C5287C52等;

  ATMEL的:89C5189C5289C2051等;

Philips、华邦、Dallas STC、Siemens(Infineon)等公司的许多产品 。

四、C51知识

C-51是一种针对8051的C语言,说到底还是C语言,只要掌握好C语言的知识就可以灵活应用了。

相比汇编语言,用C语言来编程用很多好处,例如不要求了解单片机的指令系统等一些很底层的知识,以及C语言本身的一些优点,如可移植性等。

1.数据类型

一般情况下用得最多的是int型和char型。

(signed)int:2个字节(16位),范围是-32768~32767;

char:1个字节(8位),范围是-128~127。

2.数据类型扩充定义

sfr:特殊功能寄存器声明

sfr16:sfr的16位数据表明

上面两个一般不会用到,经常见于头文件中,已经不需要用户手动去配置了。

sbit:特殊功能位声明(常用)

bit:位变量声明

3.C-51包含的头文件

通常有:reg51.h reg52.h math.h   ctype.h   stdio.h  stdlib.h  absacc.h

常用有:reg51.h reg52.h math.h

4.运算符

与C语言基本相同

C语言很少用到,但在单片机中常用到的运算符:

<<(位左移)        >>(位右移)        :移动后,空出的一位补零

&(按位与)          |(按位或)

^(按位异或)       ~(按位取反)

五、学习单片机主要掌握什么

1.最小系统能够运行起来的必要条件:(硬件)

a.电源        b.晶振        c.复位电路        

2.程序:

a.对单片机任意IO口的操作,如输出高低电平,读取输入;

b.定时器:重点掌握最常用的方式2

c.中断:外部中断、定时器中断、串口中断

d.串口通信:单片机之间、单片机与计算机间

六、KEIL的使用

1.创建一个new project(一个新工程),注意先新建一个文件夹来保存这个project;

2.选择芯片,本次用到的是STC89C52RC,以自己所用芯片为准;

注意:如果此时弹出这个对话框,选择是即可 

3.新建一个new file命名的后缀加上.c并保存到工程文件夹下(.asm是汇编)

4.右击source Group 1,将.c文件add到其中;

5.开始编写;

6.选择Options for TargetOutput,勾选创建hex文件

 

7.点击编译,Rebulid

七、STC-ISP

创建出hex文件后,需要将它烧写到单片机中。 

这里先对hex文件进行说明,hex文件十六进制文件,单片机可以识别其中的内容并执行,而bin文件是二进制文件,keil软件只能产生十六进制的hex文件,而有的软件两种都能产生,产生哪一种对于单片机来说都是一样的。

因为用到的是STC系列的单片机,所以烧写时使用的是STC-ISP软件,这个软件可以在STC官网下载到。

这里要注意的是,单片机下载程序使用的是冷启动,即单片机上电后会检测是否有下载数据通过串口发送过来,如果有则下载,没有就不会下载了,如果想重新下载就要重新给单片机上电。

所以应该先点击STC-ISP软件的下载功能,软件就会通过串口一直发送下载指令,然后再给单片机上电,单片机上电后通过串口接收数据,从而下载程序。

八、点亮一个发光二极管

发光二极管属于电流点亮,即当其中流过电流时,二极管点亮。

常见的发光二极管

工作电流范围是:3~10mA

开启电压(压降):红色在1.6~1.8V之间,绿色的约为2V。(来自模拟电子技术基础(第五版))

每款LED的压降不同,可以参见产品说明。

下面以2V为例来说明:

在单片机中VCC5V,而地是0V,因为LED的压降是2V,所以电阻上的电压应为3V,根据LED的工作电流为3mA,所以电阻的阻值R = 3V➗3mA = 1kΩ,所以选择电阻的电压值为1k欧姆,当然,在本次实验中,并不用考虑这个问题,因为电路板上已经设计好了。

所以我们应该考虑的是,单片机输出什么时,LED才会亮。

电路原理图如上,其中P2是排阻,也就是一连串的电阻,而VCC是5V的电源,所以当Q0为0V(即接地)时,D1能亮,从这里出发,再观察74HC573是什么。

可以很轻易的在网上搜到74HC573的芯片资料,基本是英文文档,这里我们只需简单的看这个图

这是芯片的引脚图

这是真值表

即当是低电平,并且LE是高电平,D是低电平,对应的Q是低电平。

观察电路原理图我们看到连接着地,所以已经默认为低电平了。而其他的,连接着单片机,所以我们观察单片机的电路原理图如下。

 可以看到,与DB1相连的是P10,而LE相连的DIOLA在单片机的P26上,对于这个型号的单片机来说,默认情况下,上电后IO口引脚均为高电平,其他寄存器引脚则是低电平,所以我们可以不用设置LE,最终,只需要对P10口设置为输出低电平,即可通过74HC573使Q0口也为低电平,从而点亮第一个发光二极管D1。

代码如下:

①位操作法:这里只需对单片机P1中的第0位进行操作即可

#include <reg52.h>
sbit D1 = P1^0;/*定义单片机的P10口为D1,之后操作D1时即可操作P10口*/

void main()
{
    D1 = 0;
}

②总线操作法:直接对P1口进行赋值

#include <reg52.h>

void main()
{
    P1 = 0xfe;
}

 因为0xfe是二进制11111110的十六进制表示,即P1的其他7个口仍均输出高电平,只有P10口输出低电平,Q0输出低电平,最终D1亮。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值