zoukankan      html  css  js  c++  java
  • STC15系列单片机学习之LED点灯

    本系列教程开始学习STC15系列单片机的C语言编程,读者需要有C语言的基础知识。

    一、开发软件准备

    1. 安装编程软件:Keil

    clip_image001

    2. 下载软件STC_Isp

    3. 配置keil下的STC单片机编程环境

     clip_image003

    点击添加信号和头文件到Keil中,为 keil软件添加STC系列单片机器件的支持,以及后面要用到的仿真器。

    二、STC15F2K60S单片机IO分配

    clip_image004

    如上图所示,STC15F2K60S 系列块单排及共有5组管脚:

    管脚组名称

    可用位数

    P0

    8bit (P0.0-P0.7)

    P1

    8bit (P1.0-P1.7)

    P2

    8bit (P2.0-P2.7)

    P3

    8bit (P3.0-P3.7)

    P4

    8bit (P3.0-P3.7)

    P5

    2bit(P5.4-P5.5)

    STC15系列单片机每个管脚都有个IO口模式配置寄存器,可用配置任何一个管脚的输出模式。

     clip_image006

    每位管脚模式有以下四种: (默认为00,即准双向口)

    clip_image008

    三、程序编写

    在了解了以上STC单片机的IO特性后,我们来尝试编写程序,控制开发板上的LED灯闪烁,其所在管脚为P5.5

    clip_image009

    1.Keil 新建项目

    • 先在keil 的 Project 菜单下选择new uVision Project...创建新项目,并命名。

    clip_image011

    • Select a CPU Data Base File 中选择 STC MCU Database,创建STC系列单片机项目

    clip_image012

    • 根据板子类型,为项目选择CPU型号。我这选的是STC15F2K60S2

    clip_image014

    • 添加main.c文件

    clip_image015

    2.编写程序

    程序代码如下:

    //************************************
    //STC_XGboard 51单片机学习板
    //author:Kimiyang
    //OneLEDFlash
    //实现单个LED闪烁
    //20170109
    //************************************
    // NAME Pin
    // LED P55
    #include <STC15F2k60S2.H> //单片机寄存器资源头文件
    #include <intrins.h> //使用_nop_();空操作函数时必须包含此头文件
    #define LED P55 //定义LED管脚号
    void Delay1ms() //@11.0592MHz
    {
    unsigned char i, j;
    _nop_();
    _nop_();
    _nop_();
    i = 11;
    j = 190;
    do
    {
    while (--j);
    } while (--i);
    }
    //************************************
    //*函数名称:delay
    //*函数功能:延时函数
    //*参 数:Dtime:延时时间mS
    //*返 回 值:无
    //************************************
    void delay_nMs(unsigned int Dtime)
    {
    unsigned int i; //255
    for(i=0;i<Dtime;i++) // 10us
    {
    Delay1ms(); //1s
    }
    }
    //************************************
    //*函数名称:main
    //*函数功能:主函数,程序开机运行的第一个函数
    //*参 数:无
    //*返 回 值:无
    //************************************
    int main(void)
    {
    LED = 1; //灯灭
    while(1) //重复执行下面大括号中的4行程序
    {
    LED = 0; //点亮LED
    delay_nMs(500); //延时约为0.5s
    LED = 1; //熄灭LED
    delay_nMs(500);
    }
    }

    3. 程序的编译

    • 设置生成可下载文件-'hex'文件

    clip_image017

    • 使用Keil软件工具条上的Rebuild图标按钮对程序编译

    clip_image018

    • 编译后观察keil软件底下的Build output窗口,了解编译信息错误或警告: 0 Error,0 Warning

    clip_image019

    四、固件下载

    • 编译成功后(0 Error,0 Warning),使用STC_isp软件,通过单片机的串口下载hex程序到单片机内,观察运行现象。

    clip_image021

    • 开发板运行效果

    总结

    clip_image022

    • STC单片机头文件STC15F2K60S.h中对管脚的位定义为 管脚组名+管脚bit号,如P15代表的是P1口的第5位。

    • #define LED P55 使用#define 定义P55名称为 LED,在下面程序中可用LED 代表P55管脚。对程序阅读比较有帮助。

  • 相关阅读:
    利用搜狐查询接口举例说明
    超有用! 地址栏网址静默更新, 进入新网页也可以后退回去,.
    mouseenter 与 mouseover 区别于选择
    使用querySelector添加移除style和class
    网页修改<title ></title >标签内容
    (超实用)前端地址栏保存&获取参数,地址栏传输中文不在乱码
    html页面在苹果手机内,safari浏览器,微信中滑动不流畅问题解决方案
    python归一化方法
    opencv-python之投影
    matplotlib的用法
  • 原文地址:https://www.cnblogs.com/laoxiongzhijia/p/15705760.html
Copyright © 2011-2022 走看看