51单片机

1基础LED

  1. Keil5 C51软件安装正确
  2. 驱动程序COM口
  3. 电路原理图理解
  4. 文件设置.hex

2数码管消隐

  1. 数码管按照电路设计可分为位选和段选。
  2. 段选246译码器,通过左边的P0来控制段选的数字,数码管以a,b,c,d,e,f,g,dp来排列,1表示的是这个LED亮,从右往左读,转换为16进制,即为P0的段选值。、
  3. 位选138译码器,通过P22,P23,P24,3个引脚来控制左边8个LED的位选开关,比如说110(P24,P23,P22)即为Y6引脚为0,对应的LED7会亮起来。
  4. 多个数码管同时显示,利用人眼的错觉,<40ms的延时来循环闪烁从而达到显示的效果。
  5. 消隐,在位选和段选的切换过程中,因为执行语句是依次进行,所以会发生一些不期望的显示,我们需要在位选前关闭段选的赋值,或者在段选前关闭位选的赋值。

3矩阵按键

  1. 利用m+n个L口来控制m*n个按键
  2. 通过LCD液晶显示来输出数字
  3. 尽量按列扫描,防止和蜂鸣器的L口撞上
  4. 当按键按下去的时候相当于一根导线,即两端均为0,即此时扫描出按下的动作,松手时刻再进行赋值

4计时器

  1. 通过液晶屏来显示
  2. 利用计时器功能
  3. 特别注意中断函数

5串口

  1. 串口即不同设备相互通信传输数据的接口。
  2. 需要配置好波特频率,特别注意单片机的自身频率可能不是12MHZ,这样传输的数据会产生较大的误差。

6点阵

  1. 通过P0L口和D口来控制8*8个LED点阵,其中D口是通过3个值来控制数据的写入,控制的是列
  2. SER送入数据,SERCLK数据向下移位,RCLK将数据送出至输出端
  3. P0口控制的行
  4. 利用for循环,每隔一段时间更新点阵图案从而达到动画的效果

7时钟

  1. 时钟显示模块
  2. 按键模块
  3. 边界处理
  4. 设置效果

8蜂鸣器

  1. ULN2003 芯片给1高电阻相当于短路,无法驱动,给0电路导通能驱动。
  2. 无源蜂鸣器不能一直接电源,容易烧坏。
  3. 乐理知识
  4. 利用延时函数制造节拍,利用中断函数生成频率,每5ms停顿一次,从而生成整首歌曲。
  5. 控制蜂鸣器开关形成振荡频率

9I2C

  1. 根据主从线电平高低变化,来编写6个模块Start Stop SendByte RecieveByte SA RA
  2. 利用模块组合写成W和R
  3. 利用数码管,LCD,按键等方式进行数据的写入和读取
    S W(0XA0) RA WordAddress RA Data RA S
    S W(0XA0) RA WordAddress RA S R(0XA0) RA Data SA S

10温度传感器

  1. 温度存储在内置的ROM当中,通过特定的时序读取数据,显示在晶体管上
  2. float格式读取
  3. S ConvertT RecieveByte RecieveByte
  4. 将得到的TML TSL结合起来输出

11LCD1602

  1. 初始化
  2. 内置了很多字符
  3. 利用两个读数据,读指令来进行显示屏的显示
  4. 光标显示在对应的位置,接着进行数据的写入显示
  5. 数据和指令的结合可以做出屏幕上字幕移动的效果

12PWM电机

  1. 通过高低电平的占空比,利用惯性,综合改变电机速率
  2. 利用中断函数,比较一个值,形成高低电平在对应时间段的稳定切换

13AD/DA数模转换

  1. 运放器,反向放大,同向放大,等效电路(将没有驱动能力的电压转换为有驱动能力的电压)
  2. DA(利用一个并联加串联,R,2R的八次电路组合,形成一个具有权重的电流8位,接一个等效)
    通过数字制定对应的电压
  3. AD(逐步逼近,8位输出,通过将VCC等分,利用8位推测电压值,进行逼近检测)
    通过电压输出对应的数据

14红外线

  1. 红外发送波形,1用590ms低电平+1690ms高电平表示,0用590ms低电平+590ms高电平表示
  2. 得到的红外波形与37HZ的频率进行混合,为了防止其他的红外光干扰
  3. 再进行解码,把原来的波形输出,接到单片机的外部中断中,因为信号很快,需要立即响应
  4. 数据由红外遥控编码+反码,命令编码+反码组成,反码是为了验证
  5. 每一个命令编码对应的是一个遥控器键,长按会在一段时间内连续发一个对应的波形
  6. 编码是低位在前,需要反着读

15Error&注意

  1. Keil :error C132: : not in formal parameter list 如果同时调用多个函数C H 文件,当调用某个H 文件,报错非常多。原因:原来是在H文件 函数声明 void init_ADC()时漏了“;”
  2. Keil error C141: syntax error near ‘unsigned’ 在main函数,for、while、if里面也要放第一行,只要是局部变量的定义都要放在所在函数体内的第一行。
  3. code 放在更大的存储空间里面,但是数据无法更改
  4. static 静态变量,可保存上一次运行的值
posted @   Aaryn21  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示