找回密码
 立即注册
查看: 111|回复: 16

降龙棍外接数码管记录贴

[复制链接]
  • TA的每日心情
    开心
    17 小时前
  • 签到天数: 40 天

    [LV.5]常住居民I

    38

    主题

    486

    回帖

    618

    积分

    高级会员

    积分
    618
    发表于 2024-5-17 08:06:45 | 显示全部楼层 |阅读模式
    本帖最后由 zhange 于 2024-5-17 17:27 编辑

    1楼展示成果,待编辑  成功了

    主要是焊接没焊接好,焊接还是得练习

    初步已经成功   下一步添加上网络对时。因为这个降龙棍没有3.3v,买的配件没到,这里先用电脑接出来的3.3v  测试吧。。


    微信图片_20240517135534.jpg



    添加上网络授时:已经实现  网络授时

    截图202405171724426810.jpg



    回复 送花

    使用道具 举报

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

    [LV.5]常住居民I

    38

    主题

    486

    回帖

    618

    积分

    高级会员

    积分
    618
     楼主| 发表于 2024-5-17 08:12:23 | 显示全部楼层
    本帖最后由 zhange 于 2024-5-17 08:23 编辑

    第一步:数码管买了好久了,还没搞清楚管脚


    客服给发的测试了一下不对,还得自己测试,已知:这确实是共阳的数码管

    测试步骤:

    1.找到5v或3.3v电源  用杜邦线接出来 正极串上500欧姆电阻

    2.正极接12管脚负极接1管脚以此接2.3.4.5.6.7.8.9.10.11  看看亮不亮  如果亮说明12是位码  亮的哪里就是哪个位的

    3.测试完管脚如图:

    微信图片_20240517081158.jpg

    回复 支持 反对 送花

    使用道具 举报

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

    [LV.5]常住居民I

    38

    主题

    486

    回帖

    618

    积分

    高级会员

    积分
    618
     楼主| 发表于 2024-5-17 08:23:23 | 显示全部楼层
    第二步:焊上接线柱 开搞。。


    微信图片_20240517082307.jpg

    回复 支持 反对 送花

    使用道具 举报

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

    [LV.5]常住居民I

    38

    主题

    486

    回帖

    618

    积分

    高级会员

    积分
    618
     楼主| 发表于 2024-5-17 08:28:24 | 显示全部楼层
    第三步:接线测试焊接成果。。


    我去我焊洛铁都关了,3脚没焊到一块。。。。。。。。

    开开再来。。。。。。。。

    焊完肉眼检查一下吧。。。



    回复 支持 反对 送花

    使用道具 举报

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

    [LV.5]常住居民I

    38

    主题

    486

    回帖

    618

    积分

    高级会员

    积分
    618
     楼主| 发表于 2024-5-17 08:52:59 | 显示全部楼层
    第四步:写程序。。。


    先测试,先不上时间。。

    1. #include "stc32g.h"
    2. #include "intrins.h"
    3. #define  wei1 P34
    4. #define  wei2 P35
    5. #define  wei3 P36
    6. #define  wei4 P37
    7. #define  duan P2
    8. void main()
    9. {
    10.        
    11.           WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    12.     EAXFR = 1; //扩展寄存器(XFR)访问使能
    13.     CKCON = 0; //提高访问XRAM速度
    14.           P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    15.     P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    16.     P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    17.     P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    18.     P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    19.     P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    20.     P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    21.     P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    22.        
    23.         while(1)
    24.         {
    25.                 duan = 0;
    26.         }
    27. }
    复制代码



    测试通过。

    微信图片_20240517085239.jpg

    回复 支持 反对 送花

    使用道具 举报

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

    [LV.5]常住居民I

    38

    主题

    486

    回帖

    618

    积分

    高级会员

    积分
    618
     楼主| 发表于 2024-5-17 09:19:19 | 显示全部楼层
    第五步:写时间


    用定时器0中断产生时间

    1. //#include "shumaguan.h"
    2. #include "stc32g.h"
    3. #include "intrins.h"
    4. #define  wei1 P34
    5. #define  wei2 P35
    6. #define  wei3 P36
    7. #define  wei4 P37
    8. #define  duan P2
    9. unsigned char i,s,f,m,d;
    10. unsigned char duanma[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
    11. void Timer0_Init(void)                //50毫秒@11.0592MHz
    12. {
    13.         AUXR &= 0x7F;                        //定时器时钟12T模式
    14.         TMOD &= 0xF0;                        //设置定时器模式
    15.         TL0 = 0x00;                                //设置定时初始值
    16.         TH0 = 0x4C;                                //设置定时初始值
    17.         TF0 = 0;                                //清除TF0标志
    18.         TR0 = 1;                                //定时器0开始计时
    19.         ET0 = 1;                                //使能定时器0中断
    20. }
    21. void Delay1000ms(void)        //@11.0592MHz
    22. {
    23.         unsigned long edata i;
    24.         _nop_();
    25.         _nop_();
    26.         i = 2764798UL;
    27.         while (i) i--;
    28. }
    29. void main()
    30. {
    31.        
    32.           WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    33.     EAXFR = 1; //扩展寄存器(XFR)访问使能
    34.     CKCON = 0; //提高访问XRAM速度
    35.           P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    36.     P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    37.     P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    38.     P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    39.     P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    40.     P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    41.     P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    42.     P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    43.                 P3M0 = 0xf0; P3M1 = 0x00;   //p34 p35 36 37 设为推完
    44.        
    45.                 EA = 1;                                        //CPU开放中断,打开总中断。
    46.        
    47.         while(1)
    48.         {
    49.                 for(d=0;d<10;d++)
    50.                 {
    51.                        
    52.                         duan = duanma[d];
    53.                         Delay1000ms();
    54.                 }
    55.                
    56.         }
    57. }
    58. void Timer0_Isr(void) interrupt 1
    59. {
    60.         i++;
    61.         if(i==20)
    62.         {
    63.                 m++;
    64.                 i=0;
    65.                 if(m==60)
    66.                 {
    67.                         f++;
    68.                         m=0;
    69.                         if(f==60)
    70.                         {
    71.                                 s++;
    72.                                 f=0;
    73.                                 if(s==24)
    74.                                 {
    75.                                         s=0;
    76.                                 }
    77.                         }
    78.                 }
    79.         }
    80.        
    81. }
    复制代码



    下载测试。出问题,带不动??????????显示的数码管多了  第一位不显示。。。。。。
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.5]常住居民I

    38

    主题

    486

    回帖

    618

    积分

    高级会员

    积分
    618
     楼主| 发表于 2024-5-17 09:38:35 | 显示全部楼层
    不是带不动,是焊接有链接到一块的地方。11脚和12脚连到一块了。。。。。。。。
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.5]常住居民I

    38

    主题

    486

    回帖

    618

    积分

    高级会员

    积分
    618
     楼主| 发表于 2024-5-17 10:19:20 | 显示全部楼层
    本帖最后由 zhange 于 2024-5-17 10:23 编辑

    第六部:扫面显示数码管

    奶奶的  焊接的不行    ,重新焊接个   不接板子了  直接上线?
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.6]常住居民II

    0

    主题

    253

    回帖

    664

    积分

    高级会员

    积分
    664
    发表于 2024-5-17 12:36:25 | 显示全部楼层
    你这焊功还得练啊,这种直插件是很好焊的啊
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.5]常住居民I

    38

    主题

    486

    回帖

    618

    积分

    高级会员

    积分
    618
     楼主| 发表于 2024-5-17 13:56:50 | 显示全部楼层
    第六步:又重新焊接了   成功了


    微信图片_20240517135534.jpg


    1. //#include "shumaguan.h"
    2. #include "stc32g.h"
    3. #include "intrins.h"
    4. #define  wei1 P34
    5. #define  wei2 P35
    6. #define  wei3 P36
    7. #define  wei4 P37
    8. #define  duan P2
    9. int i;
    10. unsigned char s,f,m,d;
    11. unsigned char sg,ss,fg,fs;
    12. unsigned char duanma[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//不带小数点
    13. unsigned char duanma1[10] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,};//带小数点
    14. void Timer0_Init(void)                //1000微秒@11.0592MHz
    15. {
    16.         AUXR |= 0x80;                        //定时器时钟1T模式
    17.         TMOD &= 0xF0;                        //设置定时器模式
    18.         TL0 = 0xCD;                                //设置定时初始值
    19.         TH0 = 0xD4;                                //设置定时初始值
    20.         TF0 = 0;                                //清除TF0标志
    21.         TR0 = 1;                                //定时器0开始计时
    22.         ET0 = 1;                                //使能定时器0中断
    23. }
    24. void Delay1000ms(void)        //@11.0592MHz
    25. {
    26.         unsigned long edata i;
    27.         _nop_();
    28.         _nop_();
    29.         i = 2764798UL;
    30.         while (i) i--;
    31. }
    32. void Delay1ms(void)        //@11.0592MHz
    33. {
    34.         unsigned long edata i;
    35.         _nop_();
    36.         _nop_();
    37.         i = 2763UL;
    38.         while (i) i--;
    39. }
    40. void Delay3ms(void)        //@11.0592MHz
    41. {
    42.         unsigned long edata i;
    43.         _nop_();
    44.         i = 8293UL;
    45.         while (i) i--;
    46. }
    47. void Delay2us(void)        //@11.0592MHz
    48. {
    49.         unsigned long edata i;
    50.         _nop_();
    51.         i = 4UL;
    52.         while (i) i--;
    53. }
    54. // 延时函数
    55. void delay(unsigned char z)
    56. {
    57.     unsigned char x,y;
    58.     for(x=z;x>0;x--)
    59.         for(y=110;y>0;y--);
    60. }
    61. void main()
    62. {
    63.        
    64.          WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    65.    EAXFR = 1; //扩展寄存器(XFR)访问使能
    66.    CKCON = 0; //提高访问XRAM速度
    67.         P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    68.   P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    69.   P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    70.   P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    71.   P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    72.   P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    73.   P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    74.   P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    75.         P3M0 = 0xf0; P3M1 = 0x00;   //p34 p35 36 37 设为推完
    76.         wei1 = 0;
    77.         wei2 = 0;
    78.         wei3 = 0;
    79.         wei4 = 0;
    80.         Timer0_Init();
    81.         EA = 1;                                        //CPU开放中断,打开总中断。
    82.         s = 13;
    83.         f = 51;
    84.         while(1)
    85.         {
    86.                 wei1 = 1;
    87.     P2 = duanma[s/10];  // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
    88.                 Delay3ms();
    89.                 wei1 = 0;
    90.                
    91.                
    92.                 if(i<=500)
    93.                 {
    94.                         wei2 = 1;
    95.                         P2 = duanma[s%10];  // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
    96.                         Delay3ms();
    97.                         wei2 = 0;                               
    98.                 }else if(i>500 &&i<1000)
    99.                 {
    100.                         wei2 = 1;
    101.                         P2 = duanma1[s%10];  // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
    102.                         Delay3ms();
    103.                         wei2 = 0;       
    104.                 }
    105.                
    106.        
    107.                
    108.                 wei3 = 1;
    109.     P2 = duanma[f/10];  // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
    110.                 Delay3ms();
    111.                 wei3 = 0;
    112.                 wei4 = 1;
    113.     P2 = duanma[f%10];  // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
    114.                 Delay3ms();
    115.                 wei4 = 0;               
    116. //                wei1 = 1;
    117. //                wei2 = 0;
    118. //                wei3 = 0;
    119. //                wei4 = 0;
    120. //                P2 = duanma[0];       
    121. //                Delay2us();
    122. //                wei1 = 0;
    123. //                wei2 = 1;
    124. //                wei3 = 0;
    125. //                wei4 = 0;
    126. //                P2 = duanma[1];       
    127. //               
    128. //                Delay2us();
    129. //                wei1 = 0;
    130. //                wei2 = 0;
    131. //                wei3 = 1;
    132. //                wei4 = 0;
    133. //                if(i<=10)
    134. //                {
    135. //                        P2 = duanma[f/10];
    136. //                }else
    137. //                {
    138. //                        P2 = duanma1[f/10];
    139. //                }
    140. //               
    141. //                Delay2us();
    142. //                wei1 = 0;
    143. //                wei2 = 0;
    144. //                wei3 = 0;
    145. //                wei4 = 1;
    146. //                P2 = duanma[f%10];
    147. //                Delay2us();
    148. //               
    149. //                P2 = 0xff;
    150. //                Delay2us();
    151.         }
    152. }
    153. void Timer0_Isr(void) interrupt 1
    154. {
    155.         i++;
    156.         if(i==1000)
    157.         {
    158.                 m++;
    159.                 i=0;
    160.                 if(m==60)
    161.                 {
    162.                         f++;
    163.                         m=0;
    164.                         if(f==60)
    165.                         {
    166.                                 s++;
    167.                                 f=0;
    168.                                 if(s==24)
    169.                                 {
    170.                                         s=0;
    171.                                 }
    172.                         }
    173.                 }
    174.         }
    175.        
    176. }
    复制代码



    代码简单
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-6-14 23:07 , Processed in 0.076098 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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