记录一下自己学单片机的过程
大家好我是小菜鸡
这个作者很懒,什么都没留下…
展开
-
14.串口通信
一、计算机串行通信基础计算机通信是将计算机技术和通信技术的相结合,完成计算 机与外部设备或计算机与计算机之间的信息交换。分为两大类:并行通信与串行通信。并行通信通常是将数据字节的各位用多条数据线同时进行传送 。并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信的特点:传输线少,长距离传送时成本低, 且可以利用电话网等现成的设备,...原创 2022-02-27 16:41:01 · 2242 阅读 · 0 评论 -
13.定时器/计数器
一、CPU 时序的有关知识(外接晶振为 12MHz )①振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡 周期)。振荡周期=1/12us。②状态周期:2 个振荡周期为 1 个状态周期,用 S 表示。振荡周期又称 S 周期或时钟周期。状态周期=1/6us。③机器周期:1 个机器周期含 6 个状态周期,12 个振荡周期。机器周期=1us。④指令周期:完成 1 条指令所占用的全部时间,它以机器周期为单位。 指令周期=1...原创 2022-02-26 19:43:48 · 1997 阅读 · 0 评论 -
12.中断+外部中断
对于单片机来讲,中断是指 CPU 在处理某一事件 A 时,发生了另一事件 B, 请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应), 转去处理事件 B(中断服务);待CPU将事件B处理完毕后,再回到原来事件 A 被中断的地方继续处理事件 A(中断返回),这一过程称为中断。引起 CPU 中断的根源称为中断源。中断源向 CPU 提出中断请求,CPU 暂时中断原来的事务 A,转去处理事件 B,对事件 B 处理完毕后,再回到原来被中断的地方(即断点),称...原创 2022-02-24 22:41:24 · 3732 阅读 · 0 评论 -
11.直流电机
一、直流电机介绍直流电机没有正负之分,在两端加上直流电就能工作。需要知道直流电机的额定电压和额定功率,不能使之长时间超负荷运作。在交换接线后,可以形成正反转。开发板配置的直流电机为 5V 直流电机,其主要参数如下:轴长:8mm轴径:2mm电压:1-6v参考电流:0.35-0.4A3v 转速:...原创 2022-01-17 20:47:01 · 9350 阅读 · 0 评论 -
10.LED8x8点阵
要实现行列不同位置亮灯,需要使用动态显示的方法,也要结合扫描的方法。在第一行亮灯一段时间以后灭掉,点亮第二行一段时间以后灭掉,点亮第三行一段时间以后灭掉,如此点亮,直到八行全部点亮一次。在第一行点亮到最后一行灭掉的总时间不能超过人肉眼可识别的时间,即 24 毫秒。在每一行点亮的时候,给列一个新的数据,此时对应列而在该行上要点亮的灯的数据。这样就想数码管的动态显示一样,只不过数码管的 LED 灯是段值。这里使用 LED 点阵显示数字,也是多个 LED 同时点亮。已知点阵的列由P...原创 2022-01-16 23:03:05 · 3721 阅读 · 1 评论 -
9.学习74HC595以及8x8点阵流水灯
OE非:输出使能,本实验接地使用。记得接地!单片机手动接地!J24模块!RCLK:储存寄存器时钟输入SRCLR非:复位,本单片机默认接VCC,不用管。SRCLK:移位寄存器时钟输入SER:串行输入QA-QH:8位并行输出QH非:串行输出 本实验595的工作:SRCLK每接到一个上升沿,就把SER的值储存起来;当存够8位后,给RCLK一个上升沿,储存起来的数就被放到QA-QH,第一个存进来的数放到QH(高位的数放高位)。(自己的理解,不知对错)列由P0控...原创 2021-11-08 22:35:16 · 2484 阅读 · 0 评论 -
8.矩阵按键
使用行列扫描法判断是否有按键按下以及哪个按键按下。 假设m行n列有一个按键S按下。 先让高4位为0,低4位为1,即P1=0000 1111。那么由于S的按下,按键两端的导线接通,低4位必有一个端口检测到低电平。芯片便可以判断出第n列有一个按键按下。 然后令高4位为1,低4位为0,即P1=1111 0000。那么由于S的按下,按键两端的导线接通,高4位必有一个端口检测到低电平。芯片便可以判断出第m行有一个按键按下。...原创 2021-11-08 21:46:38 · 524 阅读 · 1 评论 -
7.独立按键
按下K1,P31接地,变成低电平。利用51芯片检测,如果发现接口为低电平,那么就是按下了。 判断按键的重点在于消抖。#include"reg52.h" //用来演示typedef unsigned int u16;void delay(u16 s);void keyboard(void);sbit led=P2^0;sbit k1=P3^1;void main(){ led=1; //先令led...原创 2021-11-08 21:30:19 · 142 阅读 · 0 评论 -
6.动态数码管
在上一篇静态的基础上,让片选信号有变化,即可实现动态显示。 当片选选到第一个数码管时,P0口输出0的段选,让其显示0;然后片选选到第二个数码管,P0口输出1的段选,让其显示1;其他的同理。显示是瞬间的,当第一个亮一下,瞬间停止输电,让第二个亮,其他也一样。我们之所以看到全部数码管都在亮,是因为前一个还没熄灭,后一个就亮了,这让我们大脑和眼睛识别不出来,就认为是一直亮。#include"reg52.h"sbit LSA=P2^2;sbit LS...原创 2021-11-08 20:46:41 · 319 阅读 · 0 评论 -
5.静态数码管
单片机上只有动态数码管,选中其中一个让其静态显示。74HC245在这个板子上只用作驱动作用。P0口输出段选,选中数码管的其中某些段,让它显示相应的数字或字母。74HC138用作片选。P2的3个端口输入,高电平有效,C为高位,例如:令CBA=111,则Y7非输出低电平,Y7非对应LED8,就是左往右第一个。选中它,再让P0口输出段选数据,就可以让它显示相应的字符。 #include"reg52.h"sbit LSA=P2^2;sbit ...原创 2021-11-08 20:40:15 · 504 阅读 · 0 评论 -
4.蜂鸣器(空)
还没学会,学会再写。原创 2021-11-08 20:27:46 · 85 阅读 · 0 评论 -
3.LED流水
P2=1111 1110表示第一个(最低位)LED亮要实现流水灯效果,只需要把0的位置移动即可。这里我用到循环左移_crol_()和循环右移_cror_()俩函数,定义在intrins.h头文件里面。#include"reg52.h"#include<intrins.h>typedef unsigned int u16;void delay(u16 i);void main(){ int a; P2=0xfe; delay(10...原创 2021-11-08 20:26:01 · 79 阅读 · 0 评论 -
2.LED闪烁
在LED点亮的基础上,添加一个延时时间,然后熄灭,再添加一个延时时间,再来点亮,一直循环即可。#include"reg52.h"typedef unsigned int u16;sbit led0=P2^0;//把P2口的第0位定义为(命名为)led0sbit led1=P2^1;sbit led2=P2^2;sbit led3=P2^3;sbit led4=P2^4;sbit led5=P2^5;sbit led6=P2^6;sbit led7=P2^7;void dela原创 2021-11-07 12:17:51 · 478 阅读 · 0 评论 -
1.点亮led
LED电路图如下当P2的引脚输出低电平时LED就可以点亮了,所以代码如下:#include"reg52.h"sbit led0=P2^0;//把P2口的第0位定义为(命名为)led0sbit led1=P2^1;sbit led2=P2^2;sbit led3=P2^3;sbit led4=P2^4;sbit led5=P2^5;sbit led6=P2^6;sbit led7=P2^7;void main(){ while(1) { led0=0; //把灯.原创 2021-11-07 09:54:37 · 525 阅读 · 0 评论