单片机的介绍和流水灯的实现

举报
御麟 发表于 2023/04/25 22:40:43 2023/04/25
【摘要】 ​​单片机及开发板的介绍1.单片机,英文Micro Controller Unit,简称MCU2.内部集成了CPU,RAM,ROM,定时器,中断系统,通讯接口等一系列电脑的常用硬件功能3.单片机任务是信息采集,处理和硬件设备的控制4.单片机跟计算机相比,是一个袖珍的计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但是单片机成本低,体积小,结构简单,在生活和工业控制领域...

单片机及开发板的介绍

1.单片机,英文Micro Controller Unit,简称MCU

2.内部集成了CPU,RAM,ROM,定时器,中断系统,通讯接口等一系列电脑的常用硬件功能

3.单片机任务是信息采集,处理和硬件设备的控制

4.单片机跟计算机相比,是一个袖珍的计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但是单片机成本低,体积小,结构简单,在生活和工业控制领域大有作用

5.单片机的应用领域十分广泛,智能仪表,实时控制,通讯设备,导航系统,家用电器

6.STC89C52单片机

51单片机

STC公司

位数:8位

RAM(相当于电脑的内存条):512字节

ROM(只读处理器):8k(相当于硬盘)(Flash)

工作频率:12MHz(本开发板使用)

51单片机是80年代Intel开发的8051单片机内核的统称,是所有兼容Intel 8031指令系统的统称。该系列单片机的始祖是Intel 8004单片机

命名规则(STC89C52 35I-DIP40):STC是公司,89是系列(STC 12T/6T,8051),C是工作电压(5.5~3.8),52是程序空间及RAM空间大小

35是频率,I是工业级(-40~85摄氏度),C是商业级(0~70摄氏度)DIP-4040,有40个管脚数,封装类型

7.单片机拆解

管脚口需要记

8.单片机最小系统

有电源vcc代表正极,地线表示负极Gmd

9.晶振,晶振会驱动单片机

晶振电路由晶振元件和两个起振电容组成

10.复位电路,想让程序复位

复位电路可以不接

11.开发板

VCC,GND不能接反,负责损坏单片机,缺口代表方向

15.D1,D8是LED

16.橘灯按键,独立按键

17.IR1是红外接收头,AT下载

18.无线模块实现一个单片机到另一个单片机的操作

19.USB自动下载

20.DS1302时钟芯片

21.复位按键

22.AD/DA模数转换器

23.步进电机可以精确的控制角度

24.超声波是接口,蜂鸣器是输出的

25.138译码器是用来驱动数码管的

26.24C02

27.温度传感器可以制作测温度的系统

28.排座用来插液晶屏

29.减震屏由单片机驱动

LED介绍

1.发光二极管,Lighting Emitting Diode

2.照明,广告灯,指引灯,屏幕

3.直插LED,小块是正极,大块是负极

4.开发板原理图

5.电阻读法

102=1k

10+两个0,前两个是有效数字,后面是倍率

1001前三位是有效数字

6.LED串联电阻来限流

7.MCU有CPU和寄存器,每个寄存器连接一根线,连接驱动器连在端口上,驱动器是为了增大驱动能力

8.CPU通过配置寄存器

9.进制的转化,十六进制和二进制可以用表转换

10.单片机型号选择STC89C52

#include    <REGX52.H>
​
void main()
​
{
​
•   P2=0x55;    //10101010
​
•   while(1)
​
•   {
​
•       
​
•   }
​
}

LED闪烁

#include <REGX52.H>
#include <INTRINS.H>
void main()
{
    while()
    {
        P2=0xFE;
        Delay500ms();
        P2=0xFF;
        Delay500ms();
    }
}

在STC-ISP中选择软件延时计算器

选择定时长度为500毫秒

系统频率为12.000MHz

点击复制代码,在main函数上面插入

添加头文件#include <INTRINS.H>

LED流水灯

 #include <REGX52.H>
 
void Delay500ms()       //@12.000MHz
{
        unsigned char i,j,k;
    
         
        i=4;
        j=205;
        k=187;
        do
        {
            do
            {
                while(--k);
            }while(--j);
        }while(--i);
}
​
void main()
{
        while(1)
        {
            P2=0xFE;
            Delay500ms();
            P2=0xFD;
            Delay500ms();
            P2=0xFB;
            Delay500ms();
            P2=0xF7;
            Delay500ms();
            P2=0xEF;
            Delay500ms();
            P2=0xDF;
            Delay500ms();
            P2=0xBF;
            Delay500ms();
            P2=0x7F;
            Delay500ms();
        }
}


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。