嵌入式 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次
}

 程序流程图

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模拟 控制呼吸灯 数字实现模拟 




桌子,网
路由器要买

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
原创粉丝点击