硬件开发(2)—单片机(2)

1.GPIO

GPIO:Genral Purpose Input/Output,GPIO是51单片机和外界交互最基本的方式

输出模式:单片机给定引脚一个电平(高电平(5V) 低电平(0V)),控制引脚实现高低电平

输入模式:检测引脚电平变化

2.按键

1.按键K1,两个引脚被接到GND和P1_4引脚,当K1按键被按下时,P1_4引脚会和GND短路到一起,P1_4引脚会呈现低电平

2.判断按键是否被按下:只需要检测对应的引脚是否为低电平

e.g.P1 4 引脚是否为低电平:
P1 &  0001 0000 == 0 

3.中断

1. 中断概念:CPU在执行一个任务时,被外界更为紧急的事件打断,转而去执行更为紧急的任务,执行完后再回到刚才的地方继续向下执行,这一过程叫做中断

2. 中断源:打断CPU执行当前任务的事件/源头叫做中断源(51单片机中5个中断源)

3. 中断源分类:外部中断0、外部中断1、定时器0、定时器1、串口

4. 外部中断:单片机上的引脚电平变化所引发的中断(INT0(P3-2)、INT1(P3-3))

5. 中断优先级:CPU再去处理中断任务时候,会去比较多个中断的优先级,优先去处理优先级高的中断

6. 中断嵌套:处理一个中断时,再嵌套另外的中断;51单片机只允许嵌套2层

7. 中断处理流程:

(1)中断源发出中断请求

(2)检查CPU是否响应中断及该中断源是否被屏蔽

(3)比较中断优先级

(4)保护现场

(5)执行中断服务函数(回调函数)

(6)恢复现场

4.中断相关寄存器

1. IE寄存器(中断允许寄存器)

(1)将IE寄存器中的bit7,EA置1,代表CPU能够响应所有中断

(2)将IE寄存器中的bit0,EX0置1,代表允许外部中断0产生中断

2.TCON寄存器(定时器寄存器)

(1)将TCON寄存器的bit1,IE0置1,代表向CPU发起中断请求,CPU响应完中断请求后,硬件清“0”

(2)将TCON寄存器的bit0,IT0置1,代表外部中断0下降沿触发中断

5.定时器

定时器:能够产生一个精准的定时,不同外设对时序的要求高(高电平和低电平时间是精准的)

51单片机内部有两个定时器,分别为timer0、timer1,所使用自增型定时器(计数器 16位)

Clock,时钟,CPU运行节拍,频率(Intel  2.1GHZ)

频率单位:HZ

时间单位:s

频率和时间关系:1/2.1GHZ s

51单片机:

晶振,晶体振荡器(12MHZ / 11.0592MHZ)

51单片机达不到12MHZ,将12MHZ进行12分频,12MHZ/12 = 1MHZ

                         51单片机完成一条指令运算:1/1MHZ = 1us


通过定时器0实现1ms定时:

1ms = 1000us

定时器初值:64535

6.定时器相关寄存器配置

8位自动重装载定时器:分为TL0和TH0两部分,1byte,实际参与计数的只有TL0,当TL0中的值加到255溢出后,再将TH0中的值重新装入到TL0中

1.TCON寄存器:

bit4置1,TMOD寄存器中的Gate位清0, 代表允许定时器开始计数

2.TMOD寄存器:

(1)定时器0->低四位清0

(2)将TMOD寄存器中的M0,bit0置1,代表定时器0工作在16位定时器/计数器模式

3.IE寄存器:

(1)将IE寄存器中的bit7置1,代表CPU能够响应所有中断

(2)将IE寄存器中的bit1置1,代表允许定时器0产生中断

4.流程

1. 先配置TMOD模式选择寄存器,将低四位清0,再将bit0置1代表工作在16位定时器

2. 向TH0和TL0中装入定时器的初值(1ms -> 64535)

3.  将TCON寄存器中的bit6置1,代表允许定时器开始计数

4.  将IE寄存器中的bit7和bit1置1,开启中断总开关和定时器0的子开关

5. 编写定时器0的中断服务函数

7.PWM、蜂鸣器

1.脉冲宽度调制,能够让引脚产生一个方波,周期性的让引脚的电平发生翻转

PWM周期:一个方波所经历的周期(从上升沿到上升沿所经历的时间/从下降沿到下降沿所经历的时间)

PWM占空比:在一个周期内高电平所占的比例

2.蜂鸣器

震荡源  -> 声音(波)-> 音调不同 -> 波的频率发生变化 -> 高音 高频  低音 低频   音量不同 -> 波的振幅 -> 能量

有源蜂鸣器:存在震荡源,通电后蜂鸣器会发出持续频率的声音

无源蜂鸣器:不存在震荡源,通电后蜂鸣器不会发出声音,需要给蜂鸣器一个震荡

3.思路:利用定时器来实现电压的反转倒置来实现方波的完成,使得蜂鸣器发声


 


 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值