找回密码
 立即注册
楼主: Al***

#打卡学习贴 记录32g12k的学习研究过程

[复制链接]
  • TA的每日心情
    难过
    2024-4-19 13:20
  • 签到天数: 2 天

    [LV.1]初来乍到

    2

    主题

    15

    回帖

    80

    积分

    注册会员

    积分
    80
     楼主| 发表于 2023-7-1 15:24:14 | 显示全部楼层

    2023年7月1日 15:24:27

    第12期主要讲了共阴极共阳极数码管的驱动方式,其中提到了段码数组,这个数组可以保存下来留作复用
    一位数码管有8个主要引脚用于驱动其完成主要功能,二位,四位或更多位数的数码管的引脚也是可以复用的,通过导通不同的共阴极或共阳极来达成点亮指定位置数码管的效果
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-19 13:20
  • 签到天数: 2 天

    [LV.1]初来乍到

    2

    主题

    15

    回帖

    80

    积分

    注册会员

    积分
    80
     楼主| 发表于 2023-7-1 21:28:12 | 显示全部楼层
    第13期主要讲了数码管的动态与静态显示,由于还没学习到定时器,一些功能无法更精简地实现。
    本人的开发板上使用的是74138译码器和两组四码共阴数码管,所以代码部分稍显复杂
    #include <STC89C5xRC.H>
    #include <intrins.h>

    unsigned char code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管段码
    unsigned char code ls138[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};        //74138真值表

    void Delay1ms();
    void main(){
            unsigned char seg7 = 0;
            unsigned char ls38 = 0;
            unsigned char l;
            while(1){
                   
                    for(seg7=0;seg7<10;seg7++){
                            for(l=0;l<50;l++){
                                    for(ls38=0;ls38<8;ls38++){
                                            P2=ls138[ls38];
                                            P0=smg[seg7];
                                            Delay1ms();
                                            P0=0xff;
                                    }
                            }
                    }
            }
    }
    void Delay1ms()                //@11.0592MHz
    {
            unsigned char data i, j;

            _nop_();
            i = 2;
            j = 199;
            do
            {
                    while (--j);
            } while (--i);
    }


    实现了一个从0到9的循环显示,知识点和教程视频相差不大
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-19 13:20
  • 签到天数: 2 天

    [LV.1]初来乍到

    2

    主题

    15

    回帖

    80

    积分

    注册会员

    积分
    80
     楼主| 发表于 2023-7-1 23:37:25 | 显示全部楼层
    2023年7月1日 23:36:22

    14期教程讲解的是上一集的应用,没太大差别。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-19 13:20
  • 签到天数: 2 天

    [LV.1]初来乍到

    2

    主题

    15

    回帖

    80

    积分

    注册会员

    积分
    80
     楼主| 发表于 2023-7-2 00:36:03 | 显示全部楼层
    第15期主要讲了74hc595的使用。595属于移位寄存器,通过串行输入数据,锁存给高电平使输入数据从输出引脚输出。与38译码器不同的是,38译码器使用并行输入,并每次只从一个引脚输出高电平,而595可以使用串行输入信息,并可同时输出八位甚至通过级联达成更多引脚高电平同时输出,这免除了一部分不必要的刷新,降低程序的时间复杂度。
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    9

    主题

    843

    回帖

    3319

    积分

    论坛元老

    积分
    3319
    发表于 2023-7-2 15:35:08 | 显示全部楼层
    5.生成hex文件,修改hex文件格式为386,此处是否因为cpu是32位,由于简中区的优秀索引机制我并没找到关于此问题的答案,铺天盖地都是【天晓得keil为什么不规整一下】最终在ARM社区找到了一个没有回答的提问给了我一点小启发,他提到“ As hex-386 is for 32-bit addressing and Hex-80 is 16 bit” 或许是此处设置为386的原因。希望有老ass帮忙答疑解惑。



    Keil C251集成开发环境
    设置编译环境
    设置项目1:选择Target页,将CPU Mode项设为Source(251 native)。

    设置项目2:选择Target页,将Memory Model项设为XSmall:near vars,far const,ptr-4,。

    设置项目3:选择Target页,当程序大小不超过64K字节时,将Code Rom Size项设为Large:variables in XDATA;当程序大小超过64K字节时,将Code Rom Size项设为Huge:64K functions,16M progr,此时需要保证单个函数及单个文件的代码大小必须在 64K字节以内,并且单个表格的数据量也必须在64K字节以内,同时还需要设置External Memory。

    设置项目4:选择Output页,若程序空间超过64K字节,则HEX format项必须设为HEX-386,只有当程序空间不超过64K字节时,此项才可设为HEX-80。

    设置项目5:编译时创建hex文件。勾选“Create HEX File”选项。

    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-19 13:20
  • 签到天数: 2 天

    [LV.1]初来乍到

    2

    主题

    15

    回帖

    80

    积分

    注册会员

    积分
    80
     楼主| 发表于 2023-7-2 15:57:48 | 显示全部楼层
    angmall 发表于 2023-7-2 15:35
    5.生成hex文件,修改hex文件格式为386,此处是否因为cpu是32位,由于简中区的优秀索引机制我并没找到关于此 ...

    感谢答疑,也就是说hex386和80的选择与项目3设置的程序空间大小有关,但并不是完全关联,这个只与实际应用时的程序文件大小有关
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    9

    主题

    843

    回帖

    3319

    积分

    论坛元老

    积分
    3319
    发表于 2023-7-2 16:09:17 | 显示全部楼层
    Albsm 发表于 2023-7-2 15:57
    感谢答疑,也就是说hex386和80的选择与项目3设置的程序空间大小有关,但并不是完全关联,这个只与实际应 ...

    就是说你的应用程序超过64k就要像这样子做。


    STC32G12K128系列超64K程序演示
    https://www.stcaimcu.com/forum.p ... 8&highlight=64K
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-13 09:01 , Processed in 0.061519 second(s), 51 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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