电子技术部第三次培训
电子技术部第三次培训,主要为大家介绍了单片机。为大家讲解了51单片机的资源,以及教大家如何搭建开发环境并手把手的带大家分析和书写了几个简单的程序。下面是对于培训内容的详细介绍:
文章目录
一、单片机
1、单片机的介绍
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。
2、单片机的应用
1.1、工业自动化:数据采集、测控技术。
1.2、智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等。
1.3、消费类电子产品:洗衣机、电冰箱、空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。
1.4、通讯方面:调制解调器、程控交换技术、手机、小灵通等。
1.5、武器装备:飞机、军舰、坦克、导弹、航天飞机、鱼雷制导、智能武器等。
等等
凡是与控制或简单计算有关的电子设备都可以用单片机来实现,根据具体实际情况还可以选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等
3、51单片机
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flashrom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
我们讲解的51单片机主要是通过STC89C51来讲解的。通过这个单片机开发板来让大家了解和使用单片机。初步入门单片机。
二、资源简介
1、原理图
2、IO口
单片机io口是用来定义相应I/O口位的输入输出状态和方式。包括3个基本项:数据向量Data、属性向量Attribution和方向控制向量Direction。端口内每个对应的位组合在一起,形成一个控制字,用来定义相应I/O口位的输入输出状态和方式。
3、片内外设
单片机内部的外设一般包括:串口控制模块,SPI模块,I2C模块,A/D模块,PWM模块,CAN模块,EEPROM,比较器模块,等等,它们都集成在单片机内部,有相对应的内部控制寄存器,可通过单片机指令直接控制。
51单片机片内外设主要包括:串口通信;外部中断;定时计算器中断。
4、CPU ROM RAM
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:随机存储器,用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:只读存储器,用以存放程序、一些原始数据和表格
三、开发环境的搭建
1、KEIL4的安装
2、新建工程
新建工程----选择工程类别----添加C文档----保存工程。
四、简单程序
1、了解数据类型
常用数据类型
2、周期
详解4种周期:振荡周期,状态周期,机器周期,指令周期
振荡周期(时钟周期):单片机提供时钟脉冲信号,次单片机为12MHz;
状态周期:两倍振荡周期;
机器周期:12个振荡周期,在一个机器周期内,CPU可以完成一个独立的操作。
指令周期:CPU完成一条操作所需要的全部时间,其中可能包含几个机器周期(PS:这里的指令指的是汇编语言指令,不是C语言指令)
3、进制转换
二进制和十六进制的转换
4、点亮你的第一盏LED
LED灯的工作原理:有适当大小的电流正向流通也即是有正方向的电压差之后LED灯能够发光。LED灯的实质也就是二极管。
以贴片LED为例:
红色的压降为1.82-1.88V,电流5-8mA
绿色的压降为1.75-1.82V,电流3-5mA
橙色的压降为1.7-1.8V,电流3-5mA
兰色的压降为3.1-3.3V,电流8-10mA
白色的压降为3-3.2V,电流10-15mA
共阴接法
共阳接法
程序
//点亮第一盏LED灯;
#include <reg51.h>
sbit LED1=P1^0;
void main()
{
LED1=1; //共阳接法为LED=0
}
烧入程序(注意此处需要提前在keil4中设置OUTPUT为create hex file)
打开文件----找到HEX文件----选择打开----程序下载。
5、闪烁的LED
讲解了最基础的LED灯点亮,接下来讲如何实现灯的频闪效果。日常生活中LED的频闪使用范围广,用于舞台效果,预警隔离等等。
如何实现LED的频闪效果?
不外乎是亮一段时间,灭一段时间,这个延迟时间将会涉及到单片机的工作频率问题。
程序
//实现一盏LED灯的频闪效果;
#include <reg51.h>
sbit LED1=P1^0;
void delay(int i)
{
while(i--);
}
void main()
{
LED1=1;
delay(50000);
LED1=0;
delay(50000);
}
6、呼吸灯
了解了LED灯的频闪问题后,我们经常看到手机黑屏收到消息时,会有一盏小灯若影若现,在电子工程中它的学名是呼吸灯,那我们如何做到这样的效果呢?
我们都知道,人眼所能识别的速度是有限的,25帧的速率才能在人眼中形成完整的动画,若LED灯亮的时间很短,那么在人眼的瞬态感应中就会是很暗。根据这个原理我们就可以做出一个呼吸灯了。
PWM:
占空比:高电平在一个周期内所占据的时间。
程序:
//呼吸灯
#include<reg51.h>
sbit LED1=P0^1;
void delay(int t)
{
while(t--);
}
int main(void)
{
int c=400;//定义周期
int h,l;//定义高电平低电平highlow
while(1)
{
for(h=1;h<=c;h++)
{
LED1=0x01;
delay(h);
LED1=0x00;
l=c-h;
delay(l);
}//高电平逐渐增加
for(l=1;l<=c;l++)
{
LED1=0x00;
delay(l);
LED1=0x01;
h=c-l;
delay(h);
}//低电平逐渐增加
}
}
7、流水灯
流水灯:跑马灯,若干个灯泡依次点亮达到流动效果。
通过MCU实现对LED的时序控制即可达到绚丽的光影效果。即可完成心形流水灯,光立方等等的实物制作。接下来实现一个流水灯的程序。
crol_函数:
作用:左向循环;
参量一:被循环的数;
参量二:每次循环移动的位数;
//实现8盏LED灯的流水灯效果;
#include "reg51.h"
#include "intrins.h"
#define LED P0
void delay(int i)
{
while(i--);
}
void main()
{
LED=0xfe;
while(1)
{
LED=_crol_(LED,1);
delay(10000);
}
}
8、代码的规范
对于一个好的工程师来说,程序的除了有准确性的要求之外,还要有很高的可移植性和观赏性。
何谓观赏性,在之后的代码有上千行后,自己都找不到自己的函数在哪里,格式乱七八糟的没有排版,如果这个时候你还在和别人合作写一段程序,这样没人会愿意去读你的程序;
何谓可移植性,在与人合作完成代码的时候,两人单独的模块都已完成,但两人所用的变量五花八门,到了要拼接程序的时候,就开始出现各种各样的BUG。
对比一下下面的这两个程序代码你就会有感而发了。
五、总结
本次培训的单片机知识都是最基础也是最根本的知识,希望大家可以完全掌握,这样就可以在后续的学习比较轻松自如。