找回密码
 注册
关于网站域名变更的通知

51单片机要点

2024-11-19 09:11| 查看: 115| 评论: 0

摘要: 单片机内部资源 STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断 Flash(硬盘)——程序存储空间 —— 擦写10万次,断电数据不丢 ...
N- K! c2 d, j+ |8 q. @$ S
单片机内部资源
STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源
  |8 i* F% a& y0 g) L6 t& c

  • Flash(硬盘)——程序存储空间 —— 擦写10万次,断电数据不丢失,读写速度慢
  • RAM(内存)——数据存储空间 —— 断电数据丢失,读写速度快,无限次使用
  • SFR —— 特殊功能寄存器
* ^( H0 m3 O# t
6 j) k4 @0 K* N2 k8 ~$ G
单片机最小系统
最小系统:最少组件组成单片机可以工作的系统。
2 i3 y- e4 Z' [" D" X, ?
0 b5 [/ |! u( U& g' U; B: f/ e) Y! u
a88b8f38a1dee5fa5aba3706e261ccdb.jpg

三要素
  • 电源电路:5V
  • 晶振电路:11.0592MHZ、两个30PF
  • 复位电路:如上图中所示
  3 o) H9 M0 ]: M8 ~4 c
  • P0:开漏输出,必须加上拉电阻
  • 强推挽输出:电流驱动能力强
  • 上下拉电阻:上拉电路就是将不确定的信号通过一个电阻拉到高电平,同时限流作用,下拉电阻就是下拉到低电平。
  • 上下拉电阻选取:从降低功耗方面考虑应该足够大,因为电阻越大,电流越小,驱动能力来看,小电阻
( H1 G2 ~5 H# a* z8 g2 A5 X" g: m

硬件基础知识0 ]* i+ T1 r2 z- L1 e0 x1 Z
  • 电磁干扰(EMI)——静电放电(ESD)、快速瞬间脉冲群(EFT)、浪涌(Surge)
  • 去耦电容的使用:低频滤波电容,平常应用最多的事钽电容,电解电容,陶瓷电容,起到去除电源低频纹波,稳定电源的作用;高频滤波电容,电容附近,通常用104电容来进行去除高频干扰
  • 三极管(PNP,NPN) b,c,e:电压驱动、控制应、驱动应用
5 k4 F! Y( ~: J0 Y
( S4 \/ j1 _# {7 Z* m1 o
LED发光二极管 —— 电流驱动
通常红色贴片LED, 靠电流驱动,电压1.8V~2.2V,电流1~20mA,在1~5mA亮度有所变化,5mA以上亮度基本不变。9 K( X  t) Q) e1 ]  d


VCC 电压是 5V,发光二极管自身压降大概是 2V,那么在右边 R34 这个电阻上承受的电压就是 3V。# T8 s: M0 Q0 M4 o; l
( T; t6 Z; p  u
R = U/I —— 1~20mA —— R:150~3K

C语言基础/ s$ s7 P  d7 D7 r& r
基本运算符+ - * / % ++ -- = == != += -= 《《 》》 && “| ! & | ~ ^7 _& @6 I3 p4 o3 M7 S; g


循环(c语言以表示一条语句)
for/while/do.。.while0 n! b" P$ Z/ P& T
8 w3 _" ]3 N+ i; [
for(表达式1;表达式2;表达式3){语句;//可以为空}while(表达式)//表达式为真,执行语句{语句;//可以为空}do{语句;//可以为空}while(表达式);  
函数 (模块化的思想)
类型 函数名(参数类型 参数){函数体;}& q# N: B8 T* v6 j9 }
' A8 B3 q3 f6 S. f  ~
数组( d0 B- A& J) [* `: G% E
具有相同数据类型  d! J% v# [1 C7 D
具有相同的类型在存储器中连续存储
) f, {0 Y3 ^* F1 @3 L  m9 [
51单片机常用延时办法
循环、定时器: y& n- B% ?) W8 e% V' w  C0 p

(P0 = ~(1 《《 i++);)1 v5 h% C, f0 |% f9 q  b

流水灯给IO口一个低电平即可点亮LED灯。(注:单片机对外设的操作其实就是对IO口电平的控制); X6 ^4 l# [7 Q5 U& b/ F' {


#include//包含特殊功能寄存器定义的头文件typedefunsignedintuint;typedefunsignedcharuchar;intmain(void)
{uinti=0;//定义循环变量i,用于软件延时
ucharj=0;//定义计数变量j,用于移位控制
while(1)//主循环,程序无限循环执行该循环体语句
{P0=~(1《for(i=0;i《20000;++i);//软件延时
if(j》=8)//移位计数超过7后,再重新从0开始
{j=0;}}return0;}

本站资讯文章系编辑转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。
本站拥有对此声明的最终解释权。
收藏 邀请
关闭

推荐内容上一条 /1 下一条

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-12 01:17 , Processed in 0.140625 second(s), 28 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

返回顶部