初识单片机

文章目录

  • 单片机最小系统:
  • 典型发光管控制电路
  • 认识定时与中断
  • 定时
  • 中断
  • 数码管
  • 串口通信

网易云轻轻松松玩转51单片机
我觉得不错的单片机入门课程,学单片机首先要把基本的概念弄清楚,万事开头难,入了门就轻松多了,加油哈。
这些是我根据这个视频做的一些笔记,因为记笔记可以加深自己的印象,主要是给我自己看的,嘿嘿,当然,如果能够帮到你们那最好了不过了。

单片机是啥?
在一片集成电路上,集成了 微处理器、存储器、io接口电路

单片机控制原理:控制单片机的40个引脚输出的高低电平进行控制
目的:控制内外资源的运行

单片机最小系统:

构成可以工作的单片机最低的配置

  1. 电源
  2. 复位电路:提供复位功能,使单片机在一个确定的状态下开始工作 如:打开电源、按下复位键
  3. 晶振电路:为单片机提供一个时钟脉冲 (单片机是一个复杂的时序逻辑电路,需要在一个标准的时序脉冲下工作)——单片机的心脏
  4. 下载接口:将软件编制的目标程序下载到单片机里的一个连接接口 不同单片机下载接口不太相同
  5. EA接高电平:单片机程序放在单片机内部而不是外部

EA(External Access Enable 外部能够访问):是否允许访问外部(程序)存储器,低电平有效。(低电平允许访问外部程序)

单片机最小系统电路原理图

晶振(石英晶体振荡器):通过一定的外接电路,可以生成频率和峰值稳定的正弦波
单片机在运行的时候,需要一个脉冲信号,作为自己执行指令的触发信号(单片机收到一个脉冲,就执行一次或多次指令。)
晶振给单片机提供工作信号脉冲,这个脉冲就是单片机的工作速度。
单片机内部也有晶振。接外部晶振可以或得更稳定的频率.

晶振的频率越快,单片机的运行速度就越快

11.05926的晶振 应用最为广泛 往往配合2个30p的电容

单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。
时钟周期:是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作

机器周期(CPU周期):单片机访问一次存储器的时间,(这是一个基本操作)用从内存中读取一个指令字(一条指令的机器字)的最短时间来规定,(这也是一个基本操作)这是一个时间基准(被人们确认为是最精确的时间尺度)。
  为了便于管理,常把一条指令的执行过程划分为若干个阶段(如,取指令、存储器读、存储器写等),每一阶段完成一项工作(称为一个基本操作)。完成一个基本操作所需要的时间称为机器周期。
一般情况下,一个机器周期由若干个S周期(状态周期)(12个时钟周期)组成。

指令周期:执行一条指令的时间。(有的指令完成需要一个机器周期,有些需要两个机器周期)

如果一个单片机选择了12兆赫兹晶振,它的时钟周期是1/12us(周期为频率的倒数),则一个机器周期就是1us。而DJNZ指令是双周期指令,所以执行一次要2us。如果该指令需要执行500次,正好1000us,也就是1ms。

典型发光管控制电路

1 输出高电平 相当于输出5V 没有构成电压差 不亮
0 接地 构成电压差 亮

另一种

认识定时与中断

定时

解决方法:定时器

两个16位定时器/计数器(T0和T1)
计数器:每来一个脉冲,计数器加1 范围(0000~FFFF)
输入脉冲通过单片机引脚连接到计数器,实现计数功能
当我们把一个确定的时钟周期的一个脉冲通过单片机引脚连接到计数器,如周期为1微秒的一个标准时钟脉冲,这时计数器变成了一个定时器。计数器每加1,时间过去了1微秒,计数器计数的数值实际上就是一个时间的数值。

原理图:

在单片机所有的标志和控制都是对特定的寄存器的读写来实现的

查询tf的状态来判断定时是否到了,完成后清除tf标志,重新装入初值
TR0=1   开启定时器

中断

上个程序相应时间与查询次数之间存在矛盾,解决:中断

#include <reg51.h>//51单片机头文件sbit POUT=P1^0;void main(void) //主函数名{ TMOD=0x01;//设置工作方式TH0=0xfc;//装初值TL0=0x18; TR0=1;//开定时器0EA=1;//开中断总开关ET0=1; //开定时0中断while(1); }void time0() interrupt 1 //中断服务函数{TH0=0xfc;TL0=0x18;POUT=!POUT;//I/O管脚取反}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
/***********************************************************************程序功能:中断方式,定时器工作于方式1。每隔1秒,发光二极管闪烁1次。**************************************************************************/#include<reg52.h>#define uint unsigned int uint pp;sbit led=P0^0;void main(){TMOD=0x01; //定时模式设置,采用定时器0,工作模式1(M1=0,M0=1)。TH0=0Xff; //定时设置为100微秒。TL0=0Xa4;ET0=1; //开定时器0中断EA=1; //开总中断TR0=1; //打开定时器while(1){if(pp==10000)//时隔1s后,led闪烁。{led=~led;pp=0;}}}void time0() interrupt 1{TH0=0Xff;TL0=0Xa4;pp++;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

数码管

的数码管高电平驱动 电平点 低电平灭
的数码管高电平驱动 电平点 高电平灭


动态数码管


4个数码管的a~h八个端分别连接到一起,统一连接到一个八位的端口——段控端
那个数码管的那个位置亮,需要段控和位控同时配合

位控端——经过三极管放大

串口通信

并行通信:把所有的数据端连到一起,一次处理
速度快,硬件连接复杂


串行通信:将串行口发送和接收端连接到一起
8个数据分时通过同一通道发送过来
速度慢,硬件电路简单


用于串行通信


全双工制式:可同时发送和接受
单片机的串行通信是全双工制式

异步串口通行帧格式


奇偶效验:让数据通信更可靠
波特率:传输数据的速率,亦称比特率。(规定了每格数据有多长)
倒数即为每位数据传输时间。
如波特率为1200bps指每秒钟能传输1200位二进制码。

#include <reg51.h>//51单片机头文件#include <stdio.h>//输入输出函数头文件void main(void) //主函数{ SCON = 0x50; //串口方式1,允许接收 TMOD = 0x20; //定时器1定时方式2 TH1 = 0xF4; //11.0592MHz 2400波特率 TL1 = 0xF4;TI = 1; //串口发送标志 TR1 = 1; //启动定时器while(1) //主循环{printf('Hello world!\r\n');//字符串输出到串口}}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
/********************************************************************************  串口通信试验(发送)                                   *********************************************************************************/#include <REG52.H>#include <stdio.h>unsigned char code  MESSAGE[]= 'My first serial data!\n';unsigned char a;void delay(unsigned int i){unsigned char j;for(i; i > 0; i--)for(j = 200; j > 0; j--) ;}void main (void){   SCON = 0x50;       //REN=1允许串行接受状态,串口工作模式1        TMOD|= 0x20;      //定时器工作方式2   | 或等 不会改变T0的状态                    TH1 = 0xF4;// 波特率2400、数据位8、停止位1。效验位无 (11.0592M)TL1 = 0xF4; TR1  = 1;        //开启定时器1                                                      while(1)    {  a=0;   while(MESSAGE[a] != '\0')      {SBUF = MESSAGE[a];//SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)while(!TI);// 等特数据传送(TI发送中断标志)TI = 0;// 清除数据传送标志a++;// 下一个字符} delay(1000);  }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
/******************************************************************************** 串口通信试验(收发) *********************************************************************************/#include<reg52.h>#define uchar unsigned charuchar a,flag;//设置全局变量void main(){SCON = 0x50; //串口方式1,允许接收TMOD=0x20;//设置定时器1为模式2TH1=0xf4;//装初值设定波特率2400TL1=0xf4;TR1=1;//启动定时器EA=1;//开总中断ES=1;//开串中断while(1){if(flag==1)//如果有数据则进入这个语句{ES=0;//进入发送数据时先关闭串行中断flag=0;SBUF=a;//将数据原样发回while(!TI);//等待数据发完TI=0;ES=1;//退出再开串行中断}}} void serial() interrupt 4//串行中断函数{ a=SBUF;//收取数据flag=1;//标志置位RI=0;}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
(0)

相关推荐

  • 运用NE555实现直流倍压稳压电源

    倍压整流电路一般使用在需要高电压.低电流的场合.倍压整流顾名思义作用就是将电压进行升压操作:一般可以将较低的交流电压,用耐压较高的整流二极管和电容器,整流出一个较高的直流电压. 倍压整流电路一般按照输 ...

  • 初识宜兴紫砂陶优势(桑黎兵、朱霞琴)

    "茗注者,莫妙于砂:壶精者,莫过于阳羡."明代杰出戏曲小说家李渔如是所云.这并非空穴来风. 中国历来就是茶的民族,茶道深入寻常百姓之家随处可见,而宜兴紫砂陶天生特有的"宜 ...

  • 【蒙以养正】初识古人的儿歌-第1集《小儿语》节要

    传统育儿经 1篇原创内容 公众号 初识古人的儿歌-第1集| 開吉法師主講 2019/12/21 视频学习: 课程全文: <小兒語>這部書,我們先來了解一下它的作者.它的作者是呂得勝,呂得勝 ...

  • 单片机的IAP是什么意思

    AP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产 ...

  • 单片机外围模块-USB总线基本概念。

    单片机外围模块-USB总线基本概念。

  • 太极拳五行合一功,让人初识前进、后退、左顾、右盼、中定

    五行合一功,是根据古传<太极拳释名>一文:「前进.后退.左顾.右盼.中定」的论述编创的,乃心性太极拳(心性太极拳功道)--心性太极学之太极功体系中的入门功夫.属太极拳基本功范畴,适合太极拳 ...

  • 队前教育|你好,少先队——初识“六知六会一做”

    队前第一课 少先队"六知六会一做"的知识 六知 1 知道少先队的队名 中国少年先锋队(简称"少先队")是中国少年儿童的群众组织,是少年儿童学习中国特色社会主义和 ...

  • 自学单片机第七十九篇:综合应用制作秒表代码介绍

    上一篇我们做了一个大致的全部的简介,说明了制作的过程和源代码,然后还有仿真用的硬件电路,这篇文章,将会对代码的使用作一个大致的介绍. 首先说一下思路.秒表,就是既可以计时,也可以用作跑表,记录短暂的时 ...

  • 国开电大 单片机技术 形考任务答案

    第一章 微机基础知识第二章 89C51单片机芯片内部结构及原理一.填空题:1. 通常51单片机上电复位时PC=H.SP=H﹑通用寄存器则采用第组,这一组寄存器的地址范围是从H-H.(0000,07,0 ...

  • 初识屏蔽泵(一)

    一.屏蔽泵的工作原理 1.屏蔽泵的工作原理与离心泵相同,由叶轮旋转产生离心力,使叶轮中的液体脱离叶轮,使速度能头变压力能头,起到输送介质的作用.屏蔽泵工作的关键就是利用电机定子与转子间的作用特点,转子 ...