经过前面2章的学习,大家对单片机程序设计语言-C语言以及电子电路知识有一定了解了,本章开始单片机的程序设计课程。单片机程序设计课程主要分为2个步骤,首先进行理论课程也就是硬件的工作原理(进行单片机的程序设计必须知道单片机硬件的工作原理,才能设计出相应的硬件驱动程序)以及实践编程的学习。
此处都是以实际开发板为目标进行的学习,当没有相应的硬件电路,可以参考Proteus电路仿真及应用(51单片机系列)使用Proteus进行电路仿真,这样既可以学习硬件电路,又可以看到程序下载到相应电路的表现。关于所需的软件安装请参考51单片机入门教程之必备软件安装。
文章目录
清翔提供了整个开发板的硬件原理图,下图是一个缩略图,可能不是很清晰。
通过硬件原理图可以知道硬件与主控芯片之间是如何进行连接的,编写程序的时候就知道如何控制IO口来驱动硬件。
初次接触原理图可能会觉得比较复杂,但实际没有我们想象的那么复杂,后面会循序渐进的介绍各个原理图中器件的工作原理、元器件的选型和为什么要进行这样的连接,后期就可以自己设计开发板。
关于硬件通常会有两种图纸,一种是PCB图纸,一种就是原理图。PCB图纸是没有提供的,一般也是公司的保密文件。
1. 什么是LED
LED全称为半导体发光二极管,采用半导体材料制成的,以直接将电能转化为光能,电号转换成光信号的发光器件;其特点是功耗低、高亮度、色彩艳丽、抗振动、寿命长(正常发光8-10万小时)、冷光源等优点,是真正的“绿色照明”以LED为光源的灯饰产品在21世纪的将来,必然取代白织灯,成为人类照明的又一次革命。
下图是LED的实物图
第一张图片中是直插式的LED灯,需要穿过PCB板焊接起来,该灯为绿色LED灯,点亮后发出绿色光源,其有正负极,对于有正负极直插式器件
基本都遵循长正短负
第二张图也是直插式,插上后发出不同颜色的光
第三张是贴片式的LED灯,也是常用0603最小尺寸的封装,也是分正负极,有小绿点的对应负极
2. LED工作参数
LED(发光二极管)在电路图中的符号为:
它具有二极管的基本特性正向导通,反向截止。要想点亮LED那么需要从正向流过工作电流
- 普通发光二极管工作压降为:1.6v~2.1v。(不同的发光二极管压降会存在差异; 普通二极管的压降为0.7v)
- 工作电流为:1~20mA。
下图中LED的通过电流我们可以根据欧姆定律I(电流)=U(电压)/R(电阻)
LED灯本身压降2v,作用在电阻上的电压为3v,(5-2)/1000可以算出为3mA。下图中电阻的作用是用于限流,防止烧毁LED灯;可以通过减小电阻来增大电流使得LED灯变亮
3. 本节相关原理图分析
下面分析LED等的原理图,这是从整体原理图中截取的
VCC采用5v电源,J9在电路中表示一个跳线(跳线接上的时候脚1和脚2是接通的,5v电源接通),下图是一个可以插拔的跳线帽,因为LED灯是接到主控芯片的P1口上的,在做别的实验的时候可能还会用到P1口,此时不想让LED灯发光,可以将跳线帽取掉。
上原理图中可以看到总共有8个LED灯,画是错开排列的,否则就会重叠;RL6和RL7是排阻,用于相邻区域具有相同电阻的时候使用排阻,标注为1k表示排阻里均为1k的电阻;LED灯的负极接到了单片机的P1口;
那么在编程的时候如何将LED灯点亮呢?:那就要给负极输出0v,也就是给对应的口输出为一个0(单片机默认输出为5v)
通过电路原理图可以得出:要点亮开发板上LED灯只需要控制P1口输出低电平即可(编程时给P1口赋值“0”)
4. 本节相关C语言知识
关键字:sbit
功能:位定义
一般格式:sbit 标识符 = 地址值;
例如:sbit LED1 = P1^0
注意:地址值中P1的“P” 必须为大写的P
5. 实践编程
以下进入实践编程环节,怎么通过程序设计来控制单片机去点亮开发板上的LED灯,需要用到编译软件,直接写的C代码,单片机是不认识的,需要通过编译软件进行编写转换为单片机能够认识的语言。
5.1 keil uVision4安装
使用keil uVision4
关于该软件的下载安装等,请参考:手把手教你安装并激活Keil uvision4 for C51,附下载地址,实际按照上面教程显示注册码到2020已经过期,后期使用【配音+字幕】手把手教你三分钟完成Keil uVision4 C51安装、破解(内附Keil 4安装包链接)注册码生成软件生成的注册码可以到2032年,也就是安装使用的是第一个教程的按照文件,使用的第二教程的注册机。
5.2 实践步骤
5.2.1 第一步:建立工程文件
Project–>New uVision Project–>选择工程保存的路径–>命名“led”–>保存
弹出选择CPU型号–>OK
此处需要注意因为STC是国内的厂家,在该CPU配置中没有,可以选择Atmel家的AT89C52,这两个都是一样的