1基础LED
- Keil5 C51软件安装正确
- 驱动程序COM口
- 电路原理图理解
- 文件设置.hex
2数码管消隐
- 数码管按照电路设计可分为位选和段选。
- 段选246译码器,通过左边的P0来控制段选的数字,数码管以a,b,c,d,e,f,g,dp来排列,1表示的是这个LED亮,从右往左读,转换为16进制,即为P0的段选值。、
- 位选138译码器,通过P22,P23,P24,3个引脚来控制左边8个LED的位选开关,比如说110(P24,P23,P22)即为Y6引脚为0,对应的LED7会亮起来。
- 多个数码管同时显示,利用人眼的错觉,<40ms的延时来循环闪烁从而达到显示的效果。
- 消隐,在位选和段选的切换过程中,因为执行语句是依次进行,所以会发生一些不期望的显示,我们需要在位选前关闭段选的赋值,或者在段选前关闭位选的赋值。
3矩阵按键
- 利用m+n个L口来控制m*n个按键
- 通过LCD液晶显示来输出数字
- 尽量按列扫描,防止和蜂鸣器的L口撞上
- 当按键按下去的时候相当于一根导线,即两端均为0,即此时扫描出按下的动作,松手时刻再进行赋值
4计时器
- 通过液晶屏来显示
- 利用计时器功能
- 特别注意中断函数
5串口
- 串口即不同设备相互通信传输数据的接口。
- 需要配置好波特频率,特别注意单片机的自身频率可能不是12MHZ,这样传输的数据会产生较大的误差。
6点阵
- 通过P0L口和D口来控制8*8个LED点阵,其中D口是通过3个值来控制数据的写入,控制的是列
- SER送入数据,SERCLK数据向下移位,RCLK将数据送出至输出端
- P0口控制的行
- 利用for循环,每隔一段时间更新点阵图案从而达到动画的效果
7时钟
- 时钟显示模块
- 按键模块
- 边界处理
- 设置效果
8蜂鸣器
- ULN2003 芯片给1高电阻相当于短路,无法驱动,给0电路导通能驱动。
- 无源蜂鸣器不能一直接电源,容易烧坏。
- 乐理知识
- 利用延时函数制造节拍,利用中断函数生成频率,每5ms停顿一次,从而生成整首歌曲。
- 控制蜂鸣器开关形成振荡频率
9I2C
- 根据主从线电平高低变化,来编写6个模块Start Stop SendByte RecieveByte SA RA
- 利用模块组合写成W和R
- 利用数码管,LCD,按键等方式进行数据的写入和读取
S W(0XA0) RA WordAddress RA Data RA S
S W(0XA0) RA WordAddress RA S R(0XA0) RA Data SA S
10温度传感器
- 温度存储在内置的ROM当中,通过特定的时序读取数据,显示在晶体管上
- float格式读取
- S ConvertT RecieveByte RecieveByte
- 将得到的TML TSL结合起来输出
11LCD1602
- 初始化
- 内置了很多字符
- 利用两个读数据,读指令来进行显示屏的显示
- 光标显示在对应的位置,接着进行数据的写入显示
- 数据和指令的结合可以做出屏幕上字幕移动的效果
12PWM电机
- 通过高低电平的占空比,利用惯性,综合改变电机速率
- 利用中断函数,比较一个值,形成高低电平在对应时间段的稳定切换
13AD/DA数模转换
- 运放器,反向放大,同向放大,等效电路(将没有驱动能力的电压转换为有驱动能力的电压)
- DA(利用一个并联加串联,R,2R的八次电路组合,形成一个具有权重的电流8位,接一个等效)
通过数字制定对应的电压 - AD(逐步逼近,8位输出,通过将VCC等分,利用8位推测电压值,进行逼近检测)
通过电压输出对应的数据
14红外线
- 红外发送波形,1用590ms低电平+1690ms高电平表示,0用590ms低电平+590ms高电平表示
- 得到的红外波形与37HZ的频率进行混合,为了防止其他的红外光干扰
- 再进行解码,把原来的波形输出,接到单片机的外部中断中,因为信号很快,需要立即响应
- 数据由红外遥控编码+反码,命令编码+反码组成,反码是为了验证
- 每一个命令编码对应的是一个遥控器键,长按会在一段时间内连续发一个对应的波形
- 编码是低位在前,需要反着读
15Error&注意
- Keil :error C132: : not in formal parameter list 如果同时调用多个函数C H 文件,当调用某个H 文件,报错非常多。原因:原来是在H文件 函数声明 void init_ADC()时漏了“;”
- Keil error C141: syntax error near ‘unsigned’ 在main函数,for、while、if里面也要放第一行,只要是局部变量的定义都要放在所在函数体内的第一行。
- code 放在更大的存储空间里面,但是数据无法更改
- static 静态变量,可保存上一次运行的值