单片机——硬件基础知识

2019-04-15 18:13发布

单片机——硬件基础知识
宗旨:技术的学习是有限的,分享的精神是无限的。

1、单片机内部资源 STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源 (1)Flash(硬盘)——程序存储空间 —— 擦写10万次,断电数据不丢失,读写速度慢 (2)RAM(内存)——数据存储空间 —— 断电数据丢失,读写速度快,无限次使用 (3)SFR  —— 特殊功能寄存器   2、单片机最小系统
最小系统:最少组件组成单片机可以工作的系统。 三要素: (1)、 电源电路:5V (2)、 晶振电路:11.0592MHZ、两个30PF (3)、 复位电路: P0:开漏输出,必须加上拉电阻 准双向口: 强推挽输出:电流驱动能力强 高阻态 上下拉电阻:上拉电路就是将不确定的信号通过一个电阻拉到高电平,同时限流作用。下拉电阻就是下拉到低电平。 上下拉电阻选取:从降低功耗方面考虑应该足够大,因为电阻越大,电流越小;驱动能力来看,小电阻   3、硬件基础知识 (1)、电磁干扰(EMI)——静电放电(ESD)、快速瞬间脉冲群(EFT)、浪涌(Surge) (2)、去耦电容的使用 低频滤波电容,平常应用最多的事钽电容,电解电容,陶瓷电容,起到去除电源低频纹波,稳定电源的作用。 高频滤波电容,电容附近,通常用104电容来进行去除高频干扰。 (3)、三极管(PNP,NPN) b,c,e  --- 电压驱动     控制应用     驱动应用   4LED发光二极管 ——电流驱动
通常红 {MOD}贴片LED, 靠电流驱动,电压1.8V~2.2V,电流1~20mA,在1~5mA亮度有所变化,5mA以上亮度基本不变。   VCC 电压是 5V,发光二极管自
身压降大概是 2V,那么在右边 R34 这个电阻上承受的电压就是 3V。 R = U/I  —— 1~20mA —— R:150~3K   5C语言基础 (1)、基本运算符 +  -   *   /   %   ++   --    =  ==   !=   +=   -=   <<   >>  &&   ||   !   &   |   ~   ^ (2)、循环(C语言以;表示一条语句) for/while/do...while for(表达式1;表达式2;表达式3) {        语句;//可以为空 } while(表达式)//表达式为真,执行语句 {         语句;//可以为空 } do {         语句;//可以为空 }while(表达式); (3)、函数 (模块化的思想) 类型  函数名(参数类型 参数) {     函数体; } (4)、数组       <1>、具有相同数据类型       <2>、具有相同的类型       <3>、在存储器中连续存储 (5)、51单片机常用延时办法——循环、定时器 (P0 = ~(1 << i++);)   5、流水灯 给IO口一个低电平即可点亮LED灯。 注:单片机对外设的操作其实就是对IO口电平的控制。 [cpp] view plain copy  print?
  1. #include    //包含特殊功能寄存器定义的头文件  
  2.   
  3. typedef unsigned int  uint;  
  4. typedef unsigned char uchar;  
  5.   
  6. int  main(void)  
  7. {  
  8.   uint i = 0; // 定义循环变量i,用于软件延时  
  9.   uchar j = 0; // 定义计数变量j,用于移位控制  
  10.   
  11.   while(1)  // 主循环,程序无限循环执行该循环体语句  
  12.   {  
  13.     P0 = ~(1 << j++); // P0等于1左移j位,控制8个LED  
  14.   
  15.     for(i = 0; i < 20000; ++i);  //软件延时  
  16.   
  17.     if(j >= 8)   //移位计数超过7后,再重新从0开始  
  18.     {  
  19.       j = 0;  
  20.     }  
  21.   }  
  22.   
  23.   return 0;  
  24. }