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

修个设备的电路板,持续更新。

[复制链接]
  • TA的每日心情
    奋斗
    2024-5-24 17:01
  • 签到天数: 103 天

    [LV.6]常住居民II

    13

    主题

    60

    回帖

    382

    积分

    中级会员

    积分
    382
     楼主| 发表于 2023-11-19 11:42:26 | 显示全部楼层
    安装好keil4, 按照视频往keil添加MCU,写个点亮dp的文件。
    这个板子设计得有点奇葩,明明可以用硬件led驱动数码管,但却选择了软驱,可能大神的想法和我们不同吧。

    延时用isp工具算的,一秒闪一次。
    https://www.stcaimcu.com/forum.php?mod=attachment&aid=MjcyODZ8Mzg0NjdkNDB8MTcxODUwMzM5M3wwfA%3D%3D
    https://www.stcaimcu.com/forum.php?mod=attachment&aid=MjcyODd8NmE3M2FhYTV8MTcxODUwMzM5M3wwfA%3D%3D
    1. /*********************************************************/
    2. #define MAIN_Fosc        11059200L        //定义主时钟
    3. #include        "STC8Gxxx.h"
    4. /*************        功能说明        *************
    5. 点灯程序
    6. 板载一个两位8字共阳模块
    7. G1 pin16 p3.5
    8. G2 pin17 p3.6
    9. a pin20 p1.1
    10. b pin3  p1.4
    11. c pin5  p1.6
    12. d pin4  p1.5
    13. e pin1  p1.2
    14. f pin2  p1.3
    15. g pin6  p1.7
    16. dp pin7 p5.4
    17. 这次先点dp
    18. G1 G2 设置为高电平        推挽输出    p3.5 p3.6 p3m1=00000000b      p3m0=01100000b                                                                                                                                                                                                                                                                                                         
    19. dp设置为低电平         开漏输出        p5.4 p5m1=00010000b                 p5m0=00010000b
    20. 按正常来说,应该用p1口做led驱动的com口,用p3口做led驱动的seg口
    21. 以利用单片机里面的led硬件驱动
    22. 这个电路板设计得有点奇葩         
    23. ******************************************/
    24. /*************        本地常量声明        **************/
    25. /*************        本地变量声明        **************/
    26. /*************        本地函数声明        **************/
    27. /****************  外部函数声明和外部变量声明 *****************/
    28. /**********************************************/
    29. void Delay100ms(void)        //@11.0592MHz
    30. {
    31.         unsigned char data i, j, k;
    32.         _nop_();
    33.         _nop_();
    34.         i = 5;
    35.         j = 52;
    36.         k = 195;
    37.         do
    38.         {
    39.                 do
    40.                 {
    41.                         while (--k);
    42.                 } while (--j);
    43.         } while (--i);
    44. }
    45. void main(void)
    46. {
    47.         int time100ms = 0;
    48.         P_SW2 |= 0x80;        //允许访问XSFR(扩展特殊功能寄存器)
    49.         P3M1 = 0x00;
    50.         P3M0 = 0x60;
    51.         P5M1 = 0x10;                 
    52.         P5M0 = 0x10;
    53.         P35 = 1;
    54.         P54 = 0;
    55.        
    56.         while (1)
    57.         {
    58.             for(time100ms = 10; time100ms > 0; time100ms--)
    59.                 {
    60.                      Delay100ms();   
    61.                 }
    62.                 P54 = 1;
    63.                   for(time100ms = 10; time100ms > 0; time100ms--)
    64.                 {
    65.                      Delay100ms();   
    66.                 }
    67.                 P54 = 0;                                  
    68.         }
    69. }
    复制代码
    微信图片_20231119114032.png
    微信图片_20231119114053.jpg
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-24 17:01
  • 签到天数: 103 天

    [LV.6]常住居民II

    13

    主题

    60

    回帖

    382

    积分

    中级会员

    积分
    382
     楼主| 发表于 2023-12-9 16:52:53 | 显示全部楼层
    本帖最后由 hl1200aa 于 2023-12-9 17:25 编辑

    根据电路图分配单片机资源

    P10   传感器输入  输入  高阻
    P11   seg_a  输出  开漏输出
    P12   seg_e  输出  开漏输出   
    P13   seg_f  输出  开漏输出   
    P14   seg_b  输出  开漏输出   
    P15   seg_d  输出  开漏输出   
    P16   seg_c  输出  开漏输出   
    P17   seg_g  输出  开漏输出   

    P0M0 = 11111110B 0xfe
    P0M1 = 11111110B 0xfe

    P30   RX 不分配
    P31   TX 不分配
    P32   NO2输入 弱上拉
    P33   1输出, 推挽输出,缺省高电平。
    P34   2输出, 推挽输出,缺省高电平。
    P35   数码管共阳G1, 推挽输出
    P36   数码管共阳G2, 推挽输出
    P37   红外管输出,推挽输出

    P3M0 = 11111000B 0xf8
    P3M1 = 00000100B 0x04

    P54  seg_dp  输出  开漏输出
    P55   NO1输入 弱上拉  

    P5M0 = 00010000B 0x00
    P5M1 = 00010000B 0x10


    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    21

    主题

    1249

    回帖

    3043

    积分

    论坛元老

    积分
    3043
    发表于 2023-12-9 17:48:12 | 显示全部楼层
    可真行,向人家要固件。。你怎么不发给人家让人家修呢。。
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-24 17:01
  • 签到天数: 103 天

    [LV.6]常住居民II

    13

    主题

    60

    回帖

    382

    积分

    中级会员

    积分
    382
     楼主| 发表于 2023-12-9 19:18:52 | 显示全部楼层
    1. /*********************************************************/
    2. #define MAIN_Fosc        11059200L        //定义主时钟
    3. #include        "STC8Gxxx.h"
    4. /*************        功能说明        *************
    5. 点灯程序
    6. 板载一个两位8字共阳模块
    7. G1 pin16 p3.5
    8. G2 pin17 p3.6
    9. a pin20 p1.1
    10. b pin3  p1.4
    11. c pin5  p1.6
    12. d pin4  p1.5
    13. e pin1  p1.2
    14. f pin2  p1.3
    15. g pin6  p1.7
    16. dp pin7 p5.4
    17. 这次先点 G1和dp
    18. G1 G2 设置为高电平        推挽输出    p3.5 p3.6 p3m1=00000000b      p3m0=01100000b                                                                                                                                                                                                                                                                                                         
    19. dp设置为低电平         开漏输出        p5.4 p5m1=00010000b                 p5m0=00010000b
    20. 按正常来说,应该用p1口做led驱动的com口,用p3口做led驱动的seg口
    21. 以利用单片机里面的led硬件驱动
    22. 这个电路板设计得有点奇葩         
    23. ******************************************/
    24. /*************        本地常量声明        **************/
    25. /*************        本地变量声明        **************/
    26. /*************        本地函数声明        **************/
    27. /****************  外部函数声明和外部变量声明 *****************/
    28. /**********************************************/
    29. /*
    30. void Delay100ms(void)        //@11.0592MHz
    31. {
    32.         unsigned char data i, j, k;
    33.         _nop_();
    34.         _nop_();
    35.         i = 5;
    36.         j = 52;
    37.         k = 195;
    38.         do
    39.         {
    40.                 do
    41.                 {
    42.                         while (--k);
    43.                 } while (--j);
    44.         } while (--i);
    45. }
    46. */
    47. void main(void)
    48. {
    49.         int time100ms = 0;
    50.         P_SW2 |= 0x80;        //允许访问XSFR(扩展特殊功能寄存器)
    51.         P1M1 = 0xff;
    52.         P1M0 = 0xfe;
    53.         P3M1 = 0x80;
    54.         P3M0 = 0xf8;
    55.         P5M1 = 0x10;                 
    56.         P5M0 = 0x10;
    57.         P35 = 1;
    58.         P35 = 0;
    59.         P36 = 1;
    60.         P36 = 0;
    61.         P54 = 1;
    62.         P54 = 0;
    63.     P1 = P1 | 0xfe;
    64.         P1 = P1 & 0x01;       
    65.         P35 = 1;
    66.         P36 = 1;
    67.        
    68.         P35 = 0;
    69.         P36 = 0;
    70.         //P37 = 0;
    71.         //P37 = 1;
    72.         while (1)
    73.         {
    74.         /*
    75.             for(time100ms = 10; time100ms > 0; time100ms--)
    76.                 {
    77.                      Delay100ms();   
    78.                 }
    79.                 P54 = 1;
    80.                 P1 = P1 | 0xfe;
    81.                   for(time100ms = 10; time100ms > 0; time100ms--)
    82.                 {
    83.                      Delay100ms();   
    84.                 }
    85.                 P54 = 0;
    86.                 P1 = P1 & 0x01;
    87.         */
    88.        
    89.             if(P55 == 1)//        NO1 按下按键高电平
    90.             {
    91.                 P35 = 1;//点亮1号数码管
    92.             }
    93.             else
    94.             {
    95.                 P35 = 0;
    96.             }
    97.                 if(P32 == 1)//        NO2 按下按键高电平
    98.             {
    99.                 
    100.                         P37 = 0;//启动红外管
    101.                         if(P10 == 0)//传感器收到红外电平为底,关闭输出
    102.                         {
    103.                              P36 = 0;//   
    104.                         }
    105.                         else//否则点亮2号数码管
    106.                         {
    107.                             P36 = 1;
    108.                         }
    109.             }
    110.             else
    111.             {
    112.                 P37 = 1;//关闭红外管
    113.                         P36 = 0;
    114.             }
    115.                                           
    116.         }
    117. }
    118. /**********************************************/
    复制代码
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    67

    主题

    913

    回帖

    3110

    积分

    论坛元老

    积分
    3110
    发表于 2023-12-9 19:47:21 | 显示全部楼层
    gentleman 发表于 2023-11-15 12:10
    你向厂家要/买几片 写好程序的芯片 不就行了。

    当然,你有能力坚持学下去更好。

    买几片写好程序的芯片?估计价格不便宜吧。
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    67

    主题

    913

    回帖

    3110

    积分

    论坛元老

    积分
    3110
    发表于 2023-12-9 19:48:04 | 显示全部楼层
    估计得自己摸索工作原理,自己编程烧录程序。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-24 17:01
  • 签到天数: 103 天

    [LV.6]常住居民II

    13

    主题

    60

    回帖

    382

    积分

    中级会员

    积分
    382
     楼主| 发表于 2023-12-10 00:47:28 | 显示全部楼层
    1. /*********************************************************/
    2. #define MAIN_Fosc        11059200L        //定义主时钟
    3. #include        "STC8Gxxx.h"
    4. /*************        功能说明        *************
    5. 整体布局
    6. 功能        管脚        用途                 输入输出     类型      PXM1  PXM0
    7. P10         PIN19       传感器输入      输入         高阻           1     0
    8. P11         PIN20       seg_a           输出         开漏输出  1     1
    9. P12         PIN1        seg_e           输出         开漏输出  1     1
    10. P13         PIN2        seg_f           输出         开漏输出  1          1
    11. P14         PIN3        seg_b           输出         开漏输出  1          1
    12. P15         PIN4        seg_d           输出         开漏输出  1          1
    13. P16         PIN5        seg_c           输出         开漏输出  1          1
    14. P17         PIN6        seg_g           输出         开漏输出  1          1
    15. P0M1 = 11111110B 0xff
    16. P0M0 = 11111110B 0xfe
    17. 功能        管脚        用途                 输入输出     类型      PXM1  PXM0
    18. P30         PIN11       RX  不分配                                                           0         0
    19. P31         PIN12       TX  不分配                                                           0         0
    20. P32         PIN13       NO2输入         输入         准双口    0         0    设置为高电平
    21. P33         PIN14       NO1输出         输出         推挽输出  0     1    缺省高电平。
    22. P34         PIN15       NO2输出         输出         推挽输出  0     1    缺省高电平。
    23. P35         PIN16       数码管共阳G1    输出         推挽输出  0     1
    24. P36         PIN17       数码管共阳G2    输出         推挽输出  0     1
    25. P37         PIN18       红外管输出      输出         开漏输出  1         1    0发光,1灭光
    26. P3M1 = 1000 0000B 0x80
    27. P3M0 = 1111 1000B 0xf8
    28. 功能        管脚        用途                 输入输出     类型      PXM1  PXM0
    29. P54         PIN7        seg_dp          输出         开漏输出  1         1
    30. P55         PIN9        NO1输入         输入         准双口    0     0    设置为高电平  
    31. P5M0 = 0001 0000B 0x10
    32. P5M1 = 0001 0000B 0x10
    33.       
    34. ******************************************/
    35. /*************        本地常量声明        **************/
    36. #define NO1_IN_ON (P55 == 1)
    37. #define NO2_IN_ON (P32 == 1)
    38. #define NO1_OPEN   (P33 = 0)
    39. #define NO1_CLOSE   (P33 = 1)
    40. #define NO2_OPEN   (P34 = 0)
    41. #define NO2_CLOSE   (P34 = 1)
    42. #define IR_ON           (P37 = 0)
    43. #define IR_OFF           (P37 = 1)
    44. #define G1_ON    (P35 = 1)
    45. #define G1_OFF    (P35 = 0)
    46. #define G2_ON    (P36 = 1)
    47. #define G2_OFF    (P36 = 0)
    48. #define SENSOR_ON  (P10 == 0)
    49. /*************        本地变量声明        **************/
    50. /*************        本地函数声明        **************/
    51. /****************  外部函数声明和外部变量声明 *****************/
    52. /**********************************************/
    53. void Delay100ms(void)        //@11.0592MHz
    54. {
    55.         unsigned char data i, j, k;
    56.         _nop_();
    57.         _nop_();
    58.         i = 5;
    59.         j = 52;
    60.         k = 195;
    61.         do
    62.         {
    63.                 do
    64.                 {
    65.                         while (--k);
    66.                 } while (--j);
    67.         } while (--i);
    68. }
    69. void main(void)
    70. {
    71.         int time100ms = 0;
    72.                 char statu_g1 = 0;
    73.                 char statu_g2 = 0;
    74.         P_SW2 |= 0x80;        //允许访问XSFR(扩展特殊功能寄存器)
    75.         //设置管脚模式
    76.         P1M1 = 0xff;
    77.         P1M0 = 0xfe;
    78.         P3M1 = 0x80;
    79.         P3M0 = 0xf8;
    80.         P5M1 = 0x10;                 
    81.         P5M0 = 0x10;
    82.         //P32, P55设置上拉电阻
    83.                 P32 = 1;
    84.                 P55 = 1;
    85.                 //关闭开关
    86.                 NO1_CLOSE;
    87.                 NO2_CLOSE;
    88.                 //关闭IR
    89.         IR_OFF;
    90.                 //关闭G1,G2
    91.                 G1_OFF;
    92.                 G2_OFF;
    93.                 //全部打开数码管的seg
    94.                 P1 &= 0x01;
    95.                 P54 = 0;
    96.                 G1_ON;
    97.                 G2_ON;
    98.                 for(time100ms = 10; time100ms > 0; time100ms--)
    99.         {
    100.              Delay100ms();   
    101.         }
    102.                 G1_OFF;
    103.                 G2_OFF;
    104.         while (1)
    105.         {
    106.         /*
    107.             for(time100ms = 10; time100ms > 0; time100ms--)
    108.                 {
    109.                      Delay100ms();   
    110.                 }
    111.                 P54 = 1;
    112.                 P1 = P1 | 0xfe;
    113.                   for(time100ms = 10; time100ms > 0; time100ms--)
    114.                 {
    115.                      Delay100ms();   
    116.                 }
    117.                 P54 = 0;
    118.                 P1 = P1 & 0x01;
    119.         */
    120.         
    121.             if(NO1_IN_ON)//        NO1 按下按键高电平
    122.             {
    123.                 //如果G2处于关闭状态
    124.                                 if (statu_g2 == 0)
    125.                                 {
    126.                                     G1_ON;//点亮1号数码管
    127.                                         statu_g1 = 1; //改g1状态
    128.                                         IR_ON; //打开红外
    129.                                 }
    130.                                
    131.             }
    132.             if(NO2_IN_ON)//        NO2 按下按键高电平
    133.             {
    134.                //如果G1处于关闭状态
    135.                            if (statu_g1 == 0)
    136.                 {
    137.                                     G2_ON;//点亮2号数码管
    138.                                         statu_g2 = 1;
    139.                                         IR_ON; //打开红外
    140.                                 }
    141.             }
    142.                         if(SENSOR_ON)
    143.                         {
    144.                            //关闭红外
    145.                            IR_OFF;
    146.                            //关闭数码管
    147.                            G1_OFF;
    148.                            G2_OFF;
    149.                            //改状态
    150.                            statu_g1 = 0;
    151.                            statu_g2 = 0;
    152.                         }
    153.                                           
    154.         }
    155. }
    156. /**********************************************/
    复制代码
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-24 17:01
  • 签到天数: 103 天

    [LV.6]常住居民II

    13

    主题

    60

    回帖

    382

    积分

    中级会员

    积分
    382
     楼主| 发表于 2023-12-10 00:53:18 来自手机 | 显示全部楼层
    效果
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 17:11
  • 签到天数: 81 天

    [LV.6]常住居民II

    0

    主题

    65

    回帖

    368

    积分

    中级会员

    积分
    368
    发表于 2023-12-10 09:34:27 | 显示全部楼层
    楼主也是个牛人啊
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    半小时前
  • 签到天数: 191 天

    [LV.7]常住居民III

    8

    主题

    93

    回帖

    1216

    积分

    金牌会员

    积分
    1216
    发表于 2023-12-10 11:32:21 | 显示全部楼层
    牛人,修个件,搞成开发了。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-6-16 10:03 , Processed in 0.074445 second(s), 71 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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