嵌入式 51学习
来源:互联网 发布:2016高校网络舆情事件 编辑:程序博客网 时间:2024/06/06 07:26
led发光二极管
电流驱动,1-5mA变化明显,最大20mA,电压为1.8-2.2V
计算限流电阻阻值大小?
其中电阻
建立工程
1.选择89c52单片机型号,生成启动代码
2.新建文件,保存文件led.c
3.add to group
//sfr p0 =0x80
//sbit LED=P0^0
#include<reg52.h>
sbit LED=P0^0;
sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ADDR3=P1^3;
sbit ENLED=P1^4;
void main()
{
while(1)
{
LED=0;
}
}
1.点击编译,产生hex文件(output设置)
程序大小是code信息中的大小,不是hex大小
2.下载软件选择stc8952rc,打开程序文件,com(可能需要usb转串口驱动更新下载)
3.download下载,开关
硬件基础
电磁干扰(EMI)
1.静电放电(ESD)
2.EFT
3.SURGE
电容
低频滤波电路
1.缓冲保护
2.后极电流变化稳压
耐压值:电压系统的1.5到2倍
容值:抵抗变化是否能让后极正常工作
材质:铝电解电容,成本低1毛,性能差,体积大
陶瓷,坦电容1块
高频滤波电容
0.1uf (104)解决EMI高频
三极管
箭头pnp,电压导通顺箭头过,朝里电压导通0.7v,电流控制
截止状态
饱和状态
放大状态
若b=100 r最大143k
应用
1.控制应用,三极管实现电压转换
2.驱动应用,io小于1mA不能驱动小灯,三极管驱动小灯
74HC245电流缓冲器
74HC138跳线帽38译码器
单片机延时常用方法
1.非精确延时,设置target晶振为使用单片机的11.0592,lias设置优化等级,设置debug选中 set sumulater
debug下设置两个断点-》重新编译-》reset-》run-》到断点1-》run-》断点2 看sys下sec数值看运行时间(有些语句不能设置断点和优化等级有关,最低为0),时间和设置的晶振、优化等级有关 时间大于20ms可以感觉到闪烁
通过watch可以查看变量值
2.精确延时
做流水灯控制P0=~(0x01<<cnt)
<<是按位左移的意思, 比如00000110<<2, 就是将01000110左移两位,移位以后变成00011000.左移操作的规则: 舍去高位, 低位补0. 对应的右移操作为 >>, 它的规则是舍去低位,高位补0
时钟周期:时钟源分之一
机器周期:单片机完成一个操作的最短时间
开发板的12个时钟周期,有的板子更快
定时器:定时器的存储寄存器过1个机器周期加1
1.定时器存储器th0,th1
2.定时器控制寄存器:TCON
7-0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TF0:溢出标记 TR0:启动标记
3.定时器模式寄存器TMOD
7-0 GATE1 C/T M1 M0 GATE C/T M1 M0
常用:M1 M0 : 01定时器16 ,10 8位定时器,THn重装到TLn 看示意图
TMOD =0x01
(x*12/11059200)=0.02s
x=18432 47104=b800)
TH0=0XB8
TL0=0X00
TR0=1
IF(TF0==1)
{
TF0=0
TH0=0XB8
TL0=0X00
50次
}
机器周期:单片机完成一个操作的最短时间
开发板的12个时钟周期,有的板子更快
定时器:定时器的存储寄存器过1个机器周期加1
1.定时器存储器th0,th1
2.定时器控制寄存器:TCON
7-0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TF0:溢出标记 TR0:启动标记
3.定时器模式寄存器TMOD
7-0 GATE1 C/T M1 M0 GATE C/T M1 M0
常用:M1 M0 : 01定时器16 ,10 8位定时器,THn重装到TLn 看示意图
TMOD =0x01
(x*12/11059200)=0.02s
x=18432 47104=b800)
TH0=0XB8
TL0=0X00
TR0=1
IF(TF0==1)
{
TF0=0
TH0=0XB8
TL0=0X00
50次
}
程序流程图
IE中断使能寄存器 可位寻址
7-0 EA - ET2 ES ET1 EX1 ET0 EX0
void InterruputTime0() interruput 1
{
}
要使用中断
1.打开总中断
2.打开t0中断
3.中断入口1
中断优先级
1.固有优先级,相互不打断,同时选高的
2.配置了中断优先级,抢占式
IP 7-0 - - PT2 PS PT1 PX1 PT0 PX0
用静态局部变量替代全局变量
点阵led
无源晶振,有源晶振
复位电路,按键电容充电,有电流,产生电压,,电流越来越小
复位时间 1.2RC 1.2*4700*0.0000001=564us
准双向io口结构图,内部需要输出高电平
按键消抖,硬件消抖
IE中断使能寄存器 可位寻址
7-0 EA - ET2 ES ET1 EX1 ET0 EX0
void InterruputTime0() interruput 1
{
}
要使用中断
1.打开总中断
2.打开t0中断
3.中断入口1
中断优先级
1.固有优先级,相互不打断,同时选高的
2.配置了中断优先级,抢占式
IP 7-0 - - PT2 PS PT1 PX1 PT0 PX0
用静态局部变量替代全局变量
点阵led
无源晶振,有源晶振
复位电路,按键电容充电,有电流,产生电压,,电流越来越小
复位时间 1.2RC 1.2*4700*0.0000001=564us
准双向io口结构图,内部需要输出高电平
按键消抖,硬件消抖
单片机io口状态
1.双向io口
2.开漏
3.强推挽
4.高阻态
上拉电阻:让不确定信号定性,增大输出能力,限流,抗电磁干扰
电阻选取;电阻大降低功耗,小的可以增加使引角驱动能力
控制电机
蜂鸣器
有源蜂鸣器(内部有振荡电路),无源蜂鸣器(可以有音阶)
脉冲是高低电平
sbit BUZZ = P1^6
void OpenBuzz(uns
类型强制转换
对位的操作 与0的0 或1的1
pwm用io模拟 控制呼吸灯 数字实现模拟
1.双向io口
2.开漏
3.强推挽
4.高阻态
上拉电阻:让不确定信号定性,增大输出能力,限流,抗电磁干扰
电阻选取;电阻大降低功耗,小的可以增加使引角驱动能力
控制电机
蜂鸣器
有源蜂鸣器(内部有振荡电路),无源蜂鸣器(可以有音阶)
脉冲是高低电平
sbit BUZZ = P1^6
void OpenBuzz(uns
类型强制转换
对位的操作 与0的0 或1的1
pwm用io模拟 控制呼吸灯 数字实现模拟
桌子,网
路由器要买
adc的位数
基准源 vcc不太准随负载变化 tl431输出2.5v,大于2.5v认为是2.5v
分辨率 5.1v/ 8位
inl 刻度与实际值的误差
dnl相邻两个刻度的误差
转换速率sps:
pcf8591 地址 1001000r/w
控制字
unsigned char getadcvalue
{
i2cstart()
}
a/d差分信号
ain0-
ain1-
ain0-ain1输出差分信号
d/a输出
简易 信号发生器 发送一定频率正旋波,锯齿波等
0 0
- 嵌入式 51学习
- 嵌入式学习
- 嵌入式学习
- 嵌入式 学习
- 嵌入式学习
- 嵌入式学习
- 学习嵌入式
- 学习嵌入式
- 学习嵌入式
- 学习嵌入式
- 学习嵌入式~
- 嵌入式学习
- 学习嵌入式
- 嵌入式学习
- 嵌入式学习
- 嵌入式学习
- 嵌入式学习
- 学习嵌入式
- QWebView::setHtml
- String与byte[]互转
- Product of Array Except Self
- VR开发入门:3D图像的处理过程
- HDU1702 acm 数据结构 ACboy needs your help again!
- 嵌入式 51学习
- java.util.concurrent - Java并发工具包
- EL表达式总结
- HashMap解决hash冲突的方法
- 如何修改6620/6626/6628的FM RSSI门限
- Gson解析或者转换对象成json字符串时,String为NULL转空字符串处理方案
- Struts2学习笔记
- 将二进制文件加入VC资源后释放执行
- 爬虫/脚本/Python语言- 脚本