找回密码
 立即注册
楼主: hl1200aa

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

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-04-14 10:08:33

14

主题

61

回帖

481

积分

中级会员

积分
481
发表于 2023-12-10 14:25:10 | 显示全部楼层
本帖最后由 hl1200aa 于 2023-12-10 14:28 编辑

再刷了一下陈老师的定时器和中断,把5秒超时关闭加了上去,基本完成了。

  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 timeout_ms 5000
  37. #define NO1_IN_ON (P55 == 1)
  38. #define NO2_IN_ON (P32 == 1)
  39. #define NO1_OPEN   (P33 = 0)
  40. #define NO1_CLOSE   (P33 = 1)
  41. #define NO2_OPEN   (P34 = 0)
  42. #define NO2_CLOSE   (P34 = 1)
  43. #define IR_ON           (P37 = 0)
  44. #define IR_OFF           (P37 = 1)
  45. #define G1_ON    (P35 = 1)
  46. #define G1_OFF    (P35 = 0)
  47. #define G2_ON    (P36 = 1)
  48. #define G2_OFF    (P36 = 0)
  49. #define SENSOR_ON  (P10 == 0)
  50. /*************        本地变量声明        **************/
  51. //用一个变量记录时间
  52. unsigned int time_count_ms = 0;
  53. /*************        本地函数声明        **************/
  54. /****************  外部函数声明和外部变量声明 *****************/
  55. /**********************************************/
  56. void Delay100ms(void)        //@11.0592MHz
  57. {
  58.         unsigned char data i, j, k;
  59.         _nop_();
  60.         _nop_();
  61.         i = 5;
  62.         j = 52;
  63.         k = 195;
  64.         do
  65.         {
  66.                 do
  67.                 {
  68.                         while (--k);
  69.                 } while (--j);
  70.         } while (--i);
  71. }
  72. //初始化T0
  73. void time_init_T0(void)
  74. {
  75.     AUXR &= 0x7f;  //定时器时钟12T模式
  76.         TMOD &= 0xf0;  //设置定时器模式
  77.        
  78. }
  79. //开启T0 50ms计时,并且开启中断
  80. void time_start_T0(void)
  81. {
  82.     TL0  =  0x00;  //设置定时器初始值
  83.         TH0  =  0x4c;  //设置定时器初始值
  84.         TF0  =  0;     //清除TF位
  85.         ET0  =  1;     //允许T0中断
  86.         time_count_ms = 0;
  87.         TR0  =  1;     //定时器0开始计数   
  88. }
  89. //关闭T0 50ms计时,并且开启中断
  90. void time_stop_T0(void)
  91. {
  92.     ET0  =  1;     //禁止T0中断
  93.         TF0  =  0;     //清除TF位
  94.         TR0  =  0;     //禁止器0开始计数
  95.         TL0  =  0x00;  //设置定时器初始值
  96.         TH0  =  0x4c;  //设置定时器初始值
  97.         time_count_ms = 0;            
  98. }
  99. //定时器0中断函数
  100. void T0_ISR(void) interrupt 1
  101. {
  102.     TF0  =  0;     //清除TF位
  103.         time_count_ms += 50;
  104. }
  105. void main(void)
  106. {
  107.         int time100ms = 0;
  108.                 char statu_g1 = 0;
  109.                 char statu_g2 = 0;
  110.         P_SW2 |= 0x80;        //允许访问XSFR(扩展特殊功能寄存器)
  111.         //设置管脚模式
  112.         P1M1 = 0xff;
  113.         P1M0 = 0xfe;
  114.         P3M1 = 0x80;
  115.         P3M0 = 0xf8;
  116.         P5M1 = 0x10;                 
  117.         P5M0 = 0x10;
  118.         //P32, P55设置上拉电阻
  119.                 P32 = 1;
  120.                 P55 = 1;
  121.                 //关闭开关
  122.                 NO1_CLOSE;
  123.                 NO2_CLOSE;
  124.                 //关闭IR
  125.         IR_OFF;
  126.                 //关闭G1,G2
  127.                 G1_OFF;
  128.                 G2_OFF;
  129.                 //全部打开数码管的seg
  130.                 P1 &= 0x01;
  131.                 P54 = 0;
  132.                 G1_ON;
  133.                 G2_ON;
  134.                 for(time100ms = 10; time100ms > 0; time100ms--)
  135.         {
  136.              Delay100ms();   
  137.         }
  138.                 G1_OFF;
  139.                 G2_OFF;
  140.                 //初始化计数器
  141.                 time_init_T0();
  142.                 //打开全局中断
  143.                 EA = 1;
  144.         while (1)
  145.         {
  146.         /*
  147.             for(time100ms = 10; time100ms > 0; time100ms--)
  148.                 {
  149.                      Delay100ms();   
  150.                 }
  151.                 P54 = 1;
  152.                 P1 = P1 | 0xfe;
  153.                   for(time100ms = 10; time100ms > 0; time100ms--)
  154.                 {
  155.                      Delay100ms();   
  156.                 }
  157.                 P54 = 0;
  158.                 P1 = P1 & 0x01;
  159.         */
  160.         
  161.             if(NO1_IN_ON)//        NO1 按下按键高电平
  162.             {
  163.                 //如果G1, G2处于关闭状态
  164.                                 if (statu_g2 == 0)
  165.                                 {
  166.                                     G1_ON;//点亮1号数码管
  167.                                         statu_g1 = 1; //改g1状态
  168.                                         IR_ON; //打开红外
  169.                                         //启动定时器
  170.                                         time_stop_T0();
  171.                                         time_start_T0();
  172.                                 }
  173.                                
  174.             }
  175.             if(NO2_IN_ON)//        NO2 按下按键高电平
  176.             {
  177.                //如果G1处于关闭状态
  178.                            if (statu_g1 == 0)
  179.                 {
  180.                                     G2_ON;//点亮2号数码管
  181.                                         statu_g2 = 1;
  182.                                         IR_ON; //打开红外
  183.                                         //启动定时器
  184.                                         time_stop_T0();
  185.                                         time_start_T0();
  186.                                 }
  187.             }
  188.                         if(SENSOR_ON || (time_count_ms > timeout_ms))
  189.                         {
  190.                            //关闭计数器
  191.                            time_stop_T0();
  192.                            //关闭红外
  193.                            IR_OFF;
  194.                            //关闭数码管
  195.                            G1_OFF;
  196.                            G2_OFF;
  197.                            //改状态
  198.                            statu_g1 = 0;
  199.                            statu_g2 = 0;
  200.                         }
  201.                                           
  202.         }
  203. }
  204. /**********************************************/
复制代码


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-04-14 10:08:33

14

主题

61

回帖

481

积分

中级会员

积分
481
发表于 2023-12-10 14:45:39 | 显示全部楼层
其实搞这个原意并非和供应商夺食,只是这两年经历太多昨晚还推杯换盏,规划宏图,一觉醒来就科目三的事情,老板的消息比较灵通,他叫不要麻烦供应商实情可能是不久的将来麻烦不到供应商,只能凭自己的能力维护设备了,经历过的都懂。
在这个市场风雨飘摇的时局中,写一下与诸位共勉。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:389
  • 最近打卡:2025-05-07 07:28:54

1

主题

38

回帖

1496

积分

金牌会员

积分
1496
发表于 2023-12-10 16:09:14 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-04-30 07:50:52

2

主题

31

回帖

1351

积分

金牌会员

积分
1351
发表于 2023-12-13 08:17:23 | 显示全部楼层
楼主厉害了!修个设备马上就能开发了!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:386
  • 最近打卡:2025-05-07 08:17:55

10

主题

214

回帖

1535

积分

金牌会员

积分
1535
发表于 2023-12-13 09:11:04 | 显示全部楼层
买个芯片?不用写程序的吗
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:511
  • 最近打卡:2025-05-07 08:24:54

15

主题

154

回帖

428

积分

中级会员

积分
428
发表于 2023-12-13 10:52:16 | 显示全部楼层
有钱赚,有兴趣,就有动力,加油楼主。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:269
  • 最近打卡:2025-03-06 08:32:57

19

主题

59

回帖

796

积分

高级会员

积分
796
发表于 2023-12-13 11:03:57 | 显示全部楼层
加油,我们也是。以前设备上的驱动板也是买的,后来我们要更改一些功能,厂家这个不能改那个不能改,还涨价。后来干脆自已搞一个,经过差不多3个月的学习(听陈老师的课,边学边弄边测试,不懂的就在论坛内问问),竞然被我搞成了。自已都不相信自已能够搞成功
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-04-14 10:08:33

14

主题

61

回帖

481

积分

中级会员

积分
481
发表于 2023-12-17 20:48:17 来自手机 | 显示全部楼层
掌握核心技术就是爽,星期四客户有个机器坏了,供应商说零件下周三才能到,客户则要星期一修好,最后修修改改这个板,通宵肝出来去打样,再修改一下代码,今天星期日打样到了,零件也到了,焊起来刷好hex一切正常,晚上给客户装起来ok了。

装前留念
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:169
  • 最近打卡:2025-02-19 20:55:54

0

主题

72

回帖

299

积分

中级会员

积分
299
发表于 2023-12-18 07:56:00 | 显示全部楼层
hl12*** 发表于 2023-12-17 20:48
掌握核心技术就是爽,星期四客户有个机器坏了,供应商说零件下周三才能到,客户则要星期一修好,最后修修改 ...

成就感爆棚
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:386
  • 最近打卡:2025-05-07 07:56:45

5

主题

32

回帖

1269

积分

金牌会员

积分
1269
发表于 2023-12-18 09:42:25 | 显示全部楼层
hl12*** 发表于 2023-11-12 21:37
看视频和站内的资料,整个流程应该是
1. keil写代码,编译出hex文件。
2. 用stc-isp通过TTL线连接STC8G1K08 ...

这个过分的要求,你都能说出口
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-7 14:28 , Processed in 0.155461 second(s), 124 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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