led:
给低电平则亮
蜂鸣器
有源,无源~有无振荡器等电路
自激蜂鸣器:只需对驱动输出驱动电平,放大电路驱动电流(直流电压)有源
无源:输出一定频率的脉冲 电流放大 1.5khz~2.5khz
改变声音音色:改变输出波形频率
声音大小:改变占空比(高电平时间比整个周期时间)
ULN2003D放大电流的作用(7个NPN管组成)驱动大电流 直接驱动
vcc~com E~GND
动态数码管
74HC245 三态 高电平 低电平 高阻态 低电平有效
通透~输入与输出电平一致
限流电阻应略小于静态显示电路中的
段选线并联

74HC573
原理:当LE为高电平的时候,为通透即Q0Q7与D0D7数据一致,当LE为低电平的时候,为锁存数据,无论D怎么变化数据不变
中断允许系统:A&H
EX0:外部中断0允许位(置1为允许,以下同理)
ET0:定时/计数器T0中断允许位
EX1:外部中断允许位
ET1:定时/计数器T1中断允许位
ES:串行中断允许位
EA:CPU中断允许(总允许)位
TCOON的中断标志(88H)
IT0:外部中断0触发方式控制位
当IT0=0,为电平触发方式(低电平)
当IT=1时,为边缘触发方式(下降沿有效)
IE0:外部中断0中断请求标志位(请求位1时)
IT1:外部中断1触发方式控制位
IE1:外部中断1中断请求标志位
TF0:定时/计数器T0溢出中断请求标志位
TF1:定时/计数器T1溢出中断请求标志位
同一优先级申请不止一个时,则有中断系统优先权排队问题,由中断系统硬件确定优先级形成,排列如下:
中断源 中断标志 中断服务程序入口 优先级顺序 中断号
外部中断0('INT0) IE0 0003H 最高 0
定时/计数器0(T0) TF0 000BH 次高 1
外部中断1('INT1) IE1 0013H 中 2
定时/计数器1(T1) TF1 001BH 次低 3
串行口 R1或T1 0023H 低 4

中断优先级三原则
1.CPU同时接收到几个中断请求,首先响应优先级最高的中断请求
2.正在进行的中断过程不能被同级或低优先级的中断请求所中断
3.正在进行的低优先级中断服务,能被高优先级中断请求所中断

中断响应条件:
1.中断源有中断请求
2.此中断源的中断允许位为1
3.CPU开中断(即EA=1)

以外部中断为例
EA=1;
EX0=1;
IT0=1;
中断服务函数
void into () interrupt 中断号
{

}

定时器
震荡周期
为单片机提供定时信号的震荡周期(晶振周期)
状态周期
2个震荡周期为1个状态周期,用S表示
机器周期
1个机器周期含6个状态周期,12个震荡周期
指令周期
完成1条指令所占用的全部时间,它以机器周期为单位

TMOD:工作方式寄存器,确定工作方式和功能
TCON:控制寄存器,控制T0,T1,的启动和停止及溢出标志
GATE是门控位,GATE=0时,用于控制定时器是否受外部中断信号影响,当GATE=1时并且使TR0=1/TR1=1,同时外部中断引脚INT0/1位高电平,才能启动定时器或计数器

TMOD
C/T:模式选择为,当为1时计数模式,当为0的时候为定时模式
M1M0:工作方式置位
工作方式:
00 13位定时/计数器
01 16位定时/计数器(通常)
10 8位自动重装定时/计数器(频率串口通信使用)
11 T0分成2个独立的8位定时/计数器,T1此方式停止计数(只适用于定时/计数器T0,TR1=0)

TCON
低4位外部中断,高4位计数/定时器启动中断申请
TF1:T1溢出中断申请标志,当溢出时,TF=1,CPU响应中断后TF1有硬件自动清0,工作时,可随时查询状态
TR1:T1控制位,TR1置1时,T1开始工作,TR1置0时,停止工作,软件可控置
TR0:T0控制位,与TR1类似

计数器初值公式:x=2的(位数)次方-N;

使用定时器:
对TMOD赋值,以确定T0,T1的工作方式
计算初值,并将其写入TH0,TL0或TH1,TL1
中断方式时,则对EA赋值,开放定时器中断
使TR0或TR1置位,启动定时/计数器定时或计数

串口通信
串行通信
单工:数据传输仅能沿一个方向,不能实现反向传输
半双工:数据传输可以沿2个方向,但需要分时进行
全双工:数据可以同时进行双向传输

错误校验:
奇偶校验
代码和校验
循环冗余校验

比特率(波特率):每秒传输二进制代码的位数,单位:(bps)位/秒

传输距离与传输速率的关系:与传输线的电气特性有关,当传输线使用每0.3米,有50pf电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减少,当比特率超过1000bps时,最大传输距离迅速下降

RS-232C标准接口
TXD:发送数据(串行输出)
RXD:接收数据(串行输入)
RTS:请求发送
CTS:允许发送
SGND:信号接地

转换驱动电平
TTL~RS232:MC1488
RS232~TTL:MC1489

RS-232C存在问题
距离短不超15米,速率低
有电平偏移,有压降
抗干扰能力差

RS-422A接口,差分电路,双端平衡驱动器
RS-485接口,全双工,2根传输线

控制寄存器:
SCON(SM0-SM1-SM2-REN-TB8-RB8-TI-RI)
SM0,SM1:工作方式选择位

SM0 SM1 方式 说明 波特率
0 0 0 移位寄存器 fosc/12
0 1 1 10位异步收发器 (8位数据) 可变
1 0 2 11位异步收发器 (9位数据) fosc/64或fosc/32
1 1 3 11位异步收发器(9位数据) 可变

可变~有定时器T1溢出率决定

SM2:多机通信控制位,主要用于方式2,方式3(SM2=1时),在方式0时,SM2必须是0(不使用这功能时也可0)
REN:允许串行接受位,有软件置REN=1,则启动串行口接收数据,若软件REN=0,则禁止接收
TB8:用作数据的奇偶校验位
RB8:作为奇偶校验位或地址帧/数据帧的标志位,若SM2=0,在方式1中为停止位
TI:发送中断标志位
RI:接收中断标志位(在中断服务后,软件置0)

PCON
SMOD:波特率倍增位,当SMOD=1时,波特率提高一倍,复位时,SMOD=0。(方式1,2,3)(0x80)

波特率的计算:
方式2:(2的SMOD/64)fosc
方式1:(2的SMOD/32)
(T1溢出率)
方式3:(2的SMOD/32)*(T1溢出率)

T1溢出率=fosc/{12*[256-(TH1)]}

串口如何使用:
1.确定T1的工作方式(TMOD组成:GATE-C/T’-M1-M0(工作方式)-GATE-C/T’-M1-M0),PCON的倍率
2.计算T1的初值,装载TH1,TL1
3.启动T1(TCON)
4.确定串行控制
5.ES设置,EA设置

RS485通信
抗干扰能力强

EEPROM(iic总线)
当总线空闲时,两线均为高电平,连到总线的任一器件为低电平,使总线信号变低
两线:数据线SCL
时钟线SDA
当传送数据时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平,数据线上的高电平或低电平才允许改变。
先传送最高位(MSB)(每个字节必须是8为长度),被传送后跟随一位应答位(若无应答,从机恢复高电平,主机发出终止信号)
0:发送
1:接收
A:应答
S:开始
P:终止
总线寻址(7,6,5,4,3,2,1):D7~D1从机地址,D0数据传送方向(R/T)
从机地址:可编程和固定,可编程位决定可以有多少个相同的器件接入到总线中

模拟子程序:
开始
void I2cStart(void)
{
SDA=1;
SomeNop();(延时)
SCL=1;
SomeNop();
SDA=0;
SomeNop();
}
终止
void I2cStopt(void)
{
SDA=0;
SomeNop();
SCL=1;
SomeNop();
SDA=1;
SomeNop();
}
移位:
左移时最低补0,最高位移入PSW的CY位
右移时最高位保持原数,最低位移除

0:写入
1:读取

DS18B20温度传感器
高字节的前5位是符号位:如果温度大于0,将所测*0.0625(默认),如果小于0,这5位为1,所测数据反加1在乘以0.0625

ROM指令表
读ROM 33H 读温度传感器ROM的偏码
符合ROM 55H 发出指令后,接着发出64位的ROM编码,访问单总线上与编码相对应的DS1820使之相对应,为下步对DS1820的读写做准备
搜索ROM 0F0H 用于确定挂在同一总线上DS1820的个数和识别64位ROM地址,为操作各器件做准备
跳过ROM 0cch 发温度变换命令
报警搜索命令 0ech 执行后只有温度超过限定值上限或下限的的片子做出反应
温度变换 44h 启动DS1820进行温度装换,12位最长时长750ms(9位为93.75ms),结果存入内部0字节RAM中
读暂存器 4eh 发出内部RAM的3,4字节写上,下限温度数据命令,紧跟发送命令之后,是传送2个字节的数据
复制暂存器 48H 将RAM中第3,4字节
读供电方式0B4H 将DS1820的供电模式,寄生供电时DS1820发送“0”,外接电源供电发送“1”
重调EEPROM 0b8H 将EEPROM中内容恢复到RAM的第3,四节

DS1820初始化
1.数据线拉到底电平0
2.延时480us(时间范围可从480us到960us)
3.数据线拉到高电平1
4.延时等待80us,如果初始化成功则在15到60us时间内产生一个由DS1820所返回的低电平0,根据该状态可以确定他的存在,但应该注意不能无限的进行等待,不然使程序进入死循环,要进行超时判断
5.若CPU读到了数据上的低电平“0”后,还要延时,其延时时间从发出的高电平算起至少480us。

DS1820读时序
1.将数据线拉低为0
2.延时4us
3.将数据线拉高“1”,释放总线准备读数据
4.延时10us
5.读数据线的状态得到1个状态,并进行数据处理
6.延时45us
7.重复1到7步骤,直到读完第一个字节

DS1820写时序
1.数据线先置低电平0
2.延时15us
3.按从低到高位的顺序发送数据(一次只发送一位)
4.延时60us
5.将数据拉到高电平
6.重复1~5步骤,直到发送完整的字节

字节传送:传送最低位与0x01相与,传送高位与0x80相与

DS1302时钟(RST低电平有效:复位,平时高电平)
1.具有实时时钟计算功能,还具有闰年调整能力
2.内部含31个字节RAM,供用户访问
3.简单SPI3线接口(CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲作用下,数据按位传输,高位在前,低位之后,全双工通信,速度比i2c要快)
4.串行数据传送
5.读写传送方式:单字节和多字节
6.采用主电源和备份电源双电源供应
7.可选工业级温度控制范围
8.备份电源

SPI接口:(主从方式)
1、MOSI-主器件数据输出,从器件数据输入
2.MISO-主器件数据输入,从器件数据输出
3.SCLK-时钟信号,有主器件数据产生
4.、/CS-从器件使能信号,有主器件控制

缺点:没有指定的流控制,没有应答机制确认是否接受信号

DS1302控制寄存器:
D7 D6 D5 D4 D3 D2 D1 D0
1 RAM/CK A4 A3 A2 A1 A0 RD/W

D6:1:片内RAM,0:日历,时钟寄存器选择位
D5~D1:地址位,用于选择读取日历,时钟寄存器或片内RAM
D0,读写选择 0:写,1:读

寄存器 地址
秒 1 0 00000 0/1 CH=1计数=0停止D6~D4秒的十位 D3~D0秒的个位
分 1 0 00001 0/1 D6~D4分的十位 D3~D0分的个位
小时 1 0 00010 0/1 D5,D7:A/P,12小时1:表示上午,0表示下午、24小时制
日 1 0 00011 0/1 D6~D4日的十位 D3~D0日的个位
月 1 0 00100 0/1
星期 1 0 00101 0/1
年 1 0 00110 0/1
写保护寄存器的值 WP0000000 0:不保护 地址:1000 1110(最后的0是写入)
注意.数据以BCD形式
wp=1为写保护位,=0时,当对日历,时钟寄存器或片内RAM进行写时WP应清0

BCD码:通过4位2进制来表示1位10进制中的0~9这个数码
二进制转BCD码:4位二进制大于1001时加6
片内RAM:FEH:写操作,FFH:读操作

数据输入输出:在控制命令输入后下一个SCLK时钟的上升沿,数据被写入DS1302,数据输入从低位0开始,在紧跟8位的控制指令字节后的下一个SCLK脉冲下降沿读出DS1302的数据,读出数据时从低位0位到高7位

红外线通信:
位定义:利用脉冲的时间间隔来区分“1”“0”
位0:低电平0.56ms,高电平:0.56ms
位1:低电平0.56ms,高电平:1.69ms
去中间值判断

AD模数转换
分辨率计算:
例子:
一个10v满刻度的12位ADC能分辨输入电压变化最小值10*1/(2的12)=2.4mv

XPT2046
检测电位器模拟信号,控制字节命令寄存器:0X94\0XB4
检测热敏电阻模拟信号,控制字节命令寄存器:0XD4
检测光敏电阻模拟信号,控制字节命令寄存器:0XA4
检测转换AIN3通道模拟信号,控制字节命令寄存器:0XE4

DA数模转换
分辨率:FS满量程输入值,n位二进制数,FS/2n
对于5v的满量程,
例子:
采用8位的DAC时,分辨率为5v/256=1.22mv
位数越高,分辨率越高

绝对精度:指在某刻度范围内,任一数码所对应的模拟量与理论之间的最大误差
建立时间:指输入的数字量发送满刻度变化时,输出模拟信号达到满刻度值±1/2LSB的时间(描述转换速率)

PWM:脉宽调制
利用数字输出对模拟量控制的技术
利用等面积的方法,通过时间长短来表示电压值

占空比:高电平时间/整个周期时间
原理:通过改变占空比,模拟数值

1602LCD
引脚
1 VSS 电源地
2 VDD 电源正极
3 VL 液晶显示偏压信号
4 RS 数据1/命令选择端0
5 R/W 读(高电平)/写(低电平)选择端
6 E 使能信号
7 D0 I/O
8 D1 I/O

1.初始化
2.写命令(RS=L)设置显示坐标
3.写数据RS=H

初始化过程
清屏指令(0x01)
RS R/W DB7~DB0
00 0000 0001

模式设置
00 0000 01 I/D S(0x06光标向右移动,显示屏不移动)
设定每次定入1位数据后光标的移动方向,并且设定每次写入的一个字符是否移动
I/D 0=写入新数据后光标左移动 1=写入新数据后光标右移
S 0=写入新数据后显示屏不动 1=写入新数据后显示屏整体右移1个字符
滚动显示(S=1,I/D=0)

显示开关控制指令(0x38打开显示功能且2行,0x0c打开显示,无光标)
00 0000 1DCB
控制显示开关,光标显示以及光标闪烁
D 0=显示功能关 1=显示功能开
C 0=无光标 1=有光标
B 0=光标闪烁 1=光标闪烁

功能设置指令(例子0X38)
00 001 DL N FX X
功能:设定数据总线位,显示的行数及字型
DL 0=数据总线位4位 1=数据总线位8位(51的)
N 0:显示1行 1:显示2行
F 0=57点阵/每字符(通常) 1=510点阵/每字符

DDRAM(默认显示从第一行开始显示就是0x80)
第一行:00H~27H+80H 16位0FH 其他位可用来保存数据或设置滚动
第二行:40H~67H+80H 16位4FH

LCD1602显示的字符为ASCII码
要显示单个字符时:所要显示的数据加0x30或者’字符’

4位的初始化
1.8位转4位0x32
2.在4位下的初始化0x28,开显示
3.其余与8为相同

写入命令
1.E=0,RS=0,RW=0
2.把命令放入数据口,并且延时
3.E=1(写入时序),延时
4.E=0

基于51单片机的知识相关推荐

  1. 51单片机计算机实物焊接,基于51单片机的最小系统焊接图 浅谈单片机最小系统...

    本文主要是关于51单片机的相关介绍,并对基于51单片机的最小系统焊接进行了详尽的阐述. 单片机最小系统 单片机最小系统主要由电源.复位.振荡电路以及扩展部分等部分组成. 对于一个完整的电子设计来讲,首 ...

  2. 基于51单片机电子时钟

    keil工程与protues仿真电路 1 基于51单片机用LCD1602实现时-分的显示 2. 按键控制时-分的调整 3. 能实现整时报时的功能(蜂鸣器响) 4. 闹钟模式 5.按键切换模式(模式一: ...

  3. 单片机六位抢答器c语言程序,八路电子抢答器(基于51单片机的8路抢答器设计C语言程序)...

    哥,你还有AT89C51单片机8路抢答器的资料吗 哥,你还有AT89C51单片机8路抢答器的资料吗 AT89C51单片机8路抢答器的资料 源程序如下 #include #define uchar un ...

  4. 基于51单片机的4位竞赛抢答器的设计

    设计编号:Q001 资料下载 功能要求: 以单片机为核心,设计一个4位竞赛抢答器:同时供4名选手或4个代表队比赛,分别用4个按钮S0-S4表示. 1.设置一个系统清除和抢答控制开关S,开关由主持人控制 ...

  5. 基于51单片机的万年历(包含闹钟,秒表)实现

    开头唠一唠: 趁着寒假的时间,也趁着课程设计正好是做一个万年历.就打算好好从头到尾来一遍.涨涨知识.首先说的是本人也是小白一颗,大神们能帮忙指正错误的话,不胜感激.写博客只是为了总结经验,要是帮到一部 ...

  6. 基于51单片机的简易电容值测量仪proteus仿真设计

    51单片机简易电感测量仪仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0039 51单片机简 ...

  7. 基于51单片机的指纹解锁自动开门

    基于51单片机的指纹解锁自动开门 目录 基于51单片机的指纹解锁自动开门 一.设计说明 二.总体设计思路 三.系统硬件设计 四.系统软件设计 五. 实物制作与现象 七.体会 一.设计说明 指纹解锁:手 ...

  8. 基于51单片机多功能智能心率检测仪设计(毕设课设)

    这是一款基于51单片机的心率检测仪,可以在LCD1602液晶显示屏上显示你的心率,而且误差非常小,代码结构简单,易于理解,非常适合大众. 而且想做毕业设计的同学,我也附上了我自己写的设计报告,可供大家 ...

  9. 【无标题】基于51单片机和DHT11的温湿度检测系统

    基于51单片机的温湿度检测系统 摘 要:设计一款能够实时检测当前空气温度和湿度的装置.主控芯片采用STC12C5A60S2芯片,温湿度传感器采用DHT11数字温湿度传感器,显示屏幕采用OLED屏幕.整 ...

  10. 基于51单片机的LCD1602显示温湿度

    51单片机基础难点知识理解后,直接通过下面3个小项目可以更好理解51单片机.中断 定时器 串口甚至是基础的IO输入输出都有结合,再加上一些外设模块的学习(如1602显示屏,L298N电机驱动等) 项目 ...

最新文章

  1. iOS下拉tableView实现上面的图片放大效果
  2. uestc 250 数位dp(水)
  3. javamail读取并发送完整的html页面
  4. python综合练习1-- 用户登录
  5. 蝌蚪与青蛙是同一个物种么?
  6. JDK8利用Stream为集合对象分组并编号
  7. pytorch torchvision.transform.Compose
  8. 严肃贴:内幕 手机行业
  9. String类的实现
  10. 本地安装易邮邮箱服务器并用foxmail 连接测试
  11. LaTex制作中文简历模板_PART 1
  12. golang服务器压力测试,压力测试 - Go语言中文网 - Golang中文社区
  13. IT 如何把骨干留住
  14. 自然语言处理基础技术之语义角色标注
  15. P2006 赵神牛的游戏
  16. Sphnix + Markdown 记笔记之一目了然的搭建过程
  17. 模式的模式:从设计模式到元模式
  18. C++添加防火墙例外——检测目标程序不在例外列表时才进行添加,防止重复添加
  19. 武汉科技大学计算机专业强不强,武汉科技大学与湖北大学哪个实力更强?网友:没有可比性...
  20. 正则表达式应用:匹配email地址

热门文章

  1. signature=44e925e612735a871c9c44002806d71b,英文书信格式
  2. ldo和dcdc功耗_LDO和DCDC电源的优缺点以及差别
  3. 3DES实现加密算法
  4. poj 1945 Power Hungry Cows 启发式搜索
  5. 和机器人问问题的软件_如何开发一个特定领域的自动问答机器人(Chat Bot)?
  6. 第三方支付接口对接基本流程
  7. dede后台登陆提示 验证码不正确 解决办法(新版)
  8. Excel指定单元格锁定
  9. 射频电路PCB的设计技巧
  10. jenkins停止僵尸作业Click here to forcibly terminate running steps