请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
查看: 464|回复: 37

STC8H8K64U开天斧开发板学习笔记

[复制链接]
  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    23

    主题

    83

    回帖

    261

    积分

    中级会员

    积分
    261
    发表于 2024-5-22 19:25:45 | 显示全部楼层 |阅读模式
    本帖最后由 未元星系 于 2024-5-23 23:23 编辑

    之前自学过STC89C52,没有留下任何记录,代码都删完了。

    这次创个帖子记录下自己学习STC8H8K64U的过程,本人会把每次的收获分享到这里,欢迎同道中人交流借鉴,欢迎大佬指点。
    以下是我目前计划学习单片机的途径:
    1.STC8H8K64U 官方芯片手册
    2.STC官方论坛
    3.郭天祥相关课程
    4.b站搜索教程
    5.单片机交流学习群

    学习重点:
    1.单片机寄存器的使用
    2.库函数的使用

    使用硬件:
    1.开天斧三.2
    2.后期可能会使用Link 1d下载器


    开天斧

    开天斧
    回复 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    23

    主题

    83

    回帖

    261

    积分

    中级会员

    积分
    261
     楼主| 发表于 2024-5-23 21:24:25 | 显示全部楼层
    本帖最后由 未元星系 于 2024-5-24 12:18 编辑

    自学开天斧第①课:
    学习内容:1、IO口点灯;2、IO口模式;
    学习简介:点亮LED一般是学习一款单片机的第一课,不过8h单片机与stc89c52略有不同,它的每个引脚都有四种模式可供我们选择:准双向口、高阻输入、推挽输出、开漏输出。在未定义引脚情况下,8H单片机引脚默认为高阻输入模式,此时电流既不流入也不流出,故点灯前需要配置IO口模式。
    配置IO口方法:芯片手册有关于选择IO口模式的表格,我们也可以从STC-ISP的I/O口配置工具进行配置,这样方便很多。开天斧板载LED是都是共阳极,所以上电后IO口为低电平时LED点亮,我们可以把IO口配置成准双向口模式。
    代码下载方式:USB下载:按住P3.2按键再按电源按键,STC-ISP识别到串口即可下载。
    程序代码:
    #include <STC8H.H>

    void main()
    {
            
            P2M0 = 0x00; P2M1 = 0x00; //将P2口全配置为准双向口模式
            
            while(1) //死循环
            {
                    P2 = 0x00; //P2口全部输出低电平,即“00000000”,点亮板载共阳极LED
            }
            
    }

    开发板现象:P2口8个LED灯同时点亮

    IO口模式.png
    STC-ISP配置IO口模式.png
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    23

    主题

    83

    回帖

    261

    积分

    中级会员

    积分
    261
     楼主| 发表于 2024-5-24 22:44:58 | 显示全部楼层
    本帖最后由 未元星系 于 2024-5-25 14:21 编辑

    自学开天斧第②课:
    学习内容:1、Delay 延时函数
    学习简介:点亮LED后需要观察更多信号,我们可以利用延时函数让LED亮一段时间再灭一段时间,如此循环,就能看到闪烁的LED,也能够根据自己的需要配置过更多花样的闪烁。Delay延时函数原理上是就是占用单片机运行程序的时间,实际上这会降低单片机运行效率,后期学到定时器时会有效率更高的延时代码。
    Delay 延时函数配置方法(两种选一即可):
    1.STC-ISP 软件延时计算器(本人有改动:unsigned char 换成了unsigned int / 加了do while()循环和形参,方便灵活设置具体延时时长):

    void Delay_ms(unsigned int ms)        //@24.000MHz
    {
            
            do{
                            unsigned char data i, j;

                            i = 29;
                            j = 183;
                            do
                            {
                                    while (--j);
                            } while (--i);
                                    
            }while(--ms);
            
    }

    //      自己配置需要的频率

    2.STC8H8K64U开天斧库函数(本人有改动:unsigned char 换成了unsigned int):

    #define MAIN_Fosc                24000000L     //定义单片机主频24MHZ,这里可根据需要修改
    void Delay_ms(unsigned int ms)
    {
            unsigned int i;
            do{
                    i = MAIN_Fosc / 8920;  //理论1.000ms,  debug实测约1.00022291s (这里库函数原本除的是10000,
                                                      //但我这里延时略慢于设定时间,自行调整了参数,大家根据自己实际情况选择是否直接用库函数的参数即可)
                    while(--i);
            }while(--ms);
    }

    主函数:

    void main()
    {
            
            P2M0 = 0x00; P2M1 = 0x00; //将P2口全配置为准双向口模式
            
            while(1) //死循环
            {
                    P2 = 0x00;           //点亮8颗LED
                    Delay_ms(500);   //延时500毫秒
                    P2 = 0xff;           //熄灭8颗LED
                    Delay_ms(500);   //延时500毫秒
            }
            
    }


    程序现象:LED以1000毫秒为频率闪烁

    STC-ISP软件延时定时器.png
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    13 小时前
  • 签到天数: 112 天

    [LV.6]常住居民II

    14

    主题

    1179

    回帖

    2253

    积分

    金牌会员

    积分
    2253
    发表于 2024-5-25 11:27:36 来自手机 | 显示全部楼层
    8920怎么来的,官方给的是10000
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    23

    主题

    83

    回帖

    261

    积分

    中级会员

    积分
    261
     楼主| 发表于 2024-5-25 14:10:43 | 显示全部楼层
    本帖最后由 未元星系 于 2024-5-25 14:16 编辑
    soma 发表于 2024-5-25 11:27
    8920怎么来的,官方给的是10000

    自己debug测的,但我这边用官方的10000和Debug的都不太准,官方的10000我实际延时时间略慢了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    23

    主题

    83

    回帖

    261

    积分

    中级会员

    积分
    261
     楼主| 发表于 2024-5-25 23:54:35 | 显示全部楼层
    本帖最后由 未元星系 于 2024-5-25 23:56 编辑

    自学开天斧第③课:
    学习内容:1、独立按键
    学习简介:
    开天斧板载四个用户自定义独立按键,一头分别接P3.5、P3.4、P3.3、P3.2,另一头接地,所以当按键引脚输出高电平时,按键按下,引脚接地,释放电流,IO口检测为低电平。
    本次学习内容为用四个按键控制LED灯以四种方式亮灭。
    所用延时函数:

    void Delay_ms(unsigned int ms)        //@24.000MHz
    {
            
            do{
                            unsigned char data i, j;
                            i = 29;
                            j = 183;
                            do
                            {
                                    while (--j);
                            } while (--i);
                                    
            }while(--ms);
            
    }

    按键函数:

    unsigned char key(void)
    {
            unsigned char KeyNumber=0;
            
            if(P35==0){Delay_ms(10);while(P35==0);Delay_ms(10);KeyNumber=1;}    //Delay_ms(10) 是因为按下按键时会产生抖动,在抖动期间引脚会在高低电平间来回跳跃,
            if(P34==0){Delay_ms(10);while(P34==0);Delay_ms(10);KeyNumber=2;}    //需要延时一段时间去除干扰
            if(P33==0){Delay_ms(10);while(P33==0);Delay_ms(10);KeyNumber=3;}
            if(P32==0){Delay_ms(10);while(P32==0);Delay_ms(10);KeyNumber=4;}
            
            return KeyNumber;
    }

    主函数:

    void main()
    {
            int i;
            unsigned char num = 0x01;
            
            P2M0 = 0x00; P2M1 = 0x00; //将P2口全配置为准双向口模式
            P3M0 = 0x00; P3M1 = 0x00; //将P3口全配置为准双向口模式
            P3 |= 0x3C;                         //初始化需要的P3,将P3.5、P3.4、P3.3、P3.2置1
            
            while(1) //死循环
            {
                    char keynumber = key();
                    if(keynumber == 1)                  //P3.5按键按下松开,LED一边流水灯
                    {
                       for(i = 0;i <= 8;i++)
                       {
                           P2 = ~(num << i);
                                       Delay_ms(100);
                             }
                    }
                    if(keynumber == 2)                 //P3.4按键按下松开,LED长亮400ms后熄灭
                    {
                             P2 = 0x00;Delay_ms(400);
                             P2 = 0xff;
                    }
                    if(keynumber == 3)                //P3.3按键按下松开,LED亮灭亮灭,每100ms切换
                    {
                             P2 = 0x00;Delay_ms(100);
                             P2 = 0xff;Delay_ms(100);
                             P2 = 0x00;Delay_ms(100);
                             P2 = 0xff;Delay_ms(100);
                    }
                    if(keynumber == 4)               //P3.2按键按下松开,8个LED每4位交替闪烁2个循环
                    {
                             P2 = 0x55;Delay_ms(150);
                             P2 = 0xAA;Delay_ms(150);
                             P2 = 0x55;Delay_ms(150);
                             P2 = 0xAA;Delay_ms(150);
                             P2 = 0xff;
                    }
            }
    }


    代码现象:P3.5按键按下松开,LED一边流水灯;P3.4按键按下松开,LED长亮400ms后熄灭;P3.3按键按下松开,LED亮灭亮灭,每100ms切换;P3.2按键按下松开,8个LED每4位交替闪烁2个循环


    开天斧学习-独立按键.mp4

    4.98 MB, 下载次数: 22

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    15 小时前
  • 签到天数: 34 天

    [LV.5]常住居民I

    2

    主题

    52

    回帖

    248

    积分

    中级会员

    积分
    248
    发表于 2024-5-26 05:31:01 | 显示全部楼层
      跟着论坛学就可以了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    23

    主题

    83

    回帖

    261

    积分

    中级会员

    积分
    261
     楼主| 发表于 2024-5-26 12:33:02 | 显示全部楼层
    qike009 发表于 2024-5-26 05:31
    跟着论坛学就可以了

    现在这个时代学技术的方式很多,只要真正想学或多或少都会有收获
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 75 天

    [LV.6]常住居民II

    6

    主题

    285

    回帖

    551

    积分

    高级会员

    积分
    551
    发表于 2024-5-26 13:59:18 | 显示全部楼层
    加油!
    回复 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    23

    主题

    83

    回帖

    261

    积分

    中级会员

    积分
    261
     楼主| 发表于 2024-5-26 17:38:00 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-6-25 20:41 , Processed in 0.081865 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表