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

最简陋的8H8K64U学习板!只用5个外围元件!

  [复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:461
  • 最近打卡:2025-05-01 20:05:32

21

主题

168

回帖

1469

积分

金牌会员

积分
1469
发表于 2024-2-27 22:10:52 | 显示全部楼层
芯片焊接牛B
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:297
  • 最近打卡:2025-05-02 00:00:03
已绑定手机

20

主题

329

回帖

1676

积分

金牌会员

积分
1676
发表于 2024-2-27 22:30:02 | 显示全部楼层

用 SKDIP28 封装的省事!或者买转接板。我那是没有条件,才这样焊的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:487
  • 最近打卡:2025-05-01 15:22:54
已绑定手机

27

主题

693

回帖

1950

积分

金牌会员

打工人

积分
1950
发表于 2024-2-28 05:48:28 | 显示全部楼层
简单实用
打工人
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:297
  • 最近打卡:2025-05-02 00:00:03
已绑定手机

20

主题

329

回帖

1676

积分

金牌会员

积分
1676
发表于 2024-2-28 08:08:01 | 显示全部楼层
  1. #include  <STC8H.H>
  2. #include  <intrins.h>
  3. #define   uchar         unsigned char
  4. #define   uint         unsigned int
  5. uchar dis[5]={0,0,':',0,0};
  6. uchar count=0,s=0,m=0,h=0;
  7. void Led_Init()
  8. {
  9.            P2M0 |= 0x7f; P2M1 &= ~0x7f;           //设置P2.0-P2.6为推挽输出       
  10.     P3M0 = (P3M0 & ~0x78) | 0x80; P3M1 &= ~0xf8; //设置P3.3-P3.6为高阻输入;p37为推挽输出
  11.                                      
  12.         P33=1;                                                   //DG1
  13.         P34=1;                                                          //DG2
  14.         P35=1;                                                          //DG3
  15.         P36=1;                                                          //DG4
  16.    
  17.         P37=0;                                                          //Pd
  18.         P20=0;                                                          //段A
  19.         P21=0;                                                          //段B
  20.         P22=0;                                                          //段C
  21.         P23=0;                                                          //段D
  22.         P24=0;                                                          //段E
  23.         P25=0;                                                          //段F
  24.         P26=0;                                                          //段G
  25. }
  26. void Delay1ms(void)        //@24.000MHz
  27. {
  28.         unsigned char data i, j;
  29.         _nop_();
  30.         i = 32;
  31.         j = 40;
  32.         do
  33.         {
  34.                 while (--j);
  35.         } while (--i);
  36. }
  37. void Delay10ms(void)        //@24.000MHz
  38. {
  39.         unsigned char data i, j;
  40.         i = 234;
  41.         j = 115;
  42.         do
  43.         {
  44.                 while (--j);
  45.         } while (--i);
  46. }
  47. void Display(unsigned char val[5])       
  48. {
  49.         unsigned char i=0;
  50.         for(i=0;i<5;i++)
  51.         {
  52.                 switch(val[i])
  53.                 {
  54.                         case 0 :
  55.                                         P20=1;                                                          
  56.                                         P21=1;                                                          
  57.                                         P22=1;                                                         
  58.                                         P23=1;                                                         
  59.                                         P24=1;                                                         
  60.                                         P25=1;                                                         
  61.                         break;
  62.                         case 1 :
  63.                                     P21=1;                                                          
  64.                             P22=1;
  65.                                         break;
  66.                         case 2 :
  67.                                         P20=1;                                                          //段A
  68.                                         P21=1;                                                          //段B
  69.                                         P22=0;                                                          //段C
  70.                                         P23=1;                                                          //段D
  71.                                         P24=1;                                                          //段E
  72.                                         P25=0;                                                          //段F
  73.                                         P26=1;                                                          //段G
  74.                                         break;
  75.                         case 3 :
  76.                                         P20=1;                                                          //段A
  77.                                         P21=1;                                                          //段B
  78.                                         P22=1;                                                          //段C
  79.                                         P23=1;                                                          //段D
  80.                                         P24=0;                                                          //段E
  81.                                         P25=0;                                                          //段F
  82.                                         P26=1;                                                          //段G
  83.                                         break;
  84.                         case  4 :
  85.                                         P20=0;                                                          //段A
  86.                                         P21=1;                                                          //段B
  87.                                         P22=1;                                                          //段C
  88.                                         P23=0;                                                          //段D
  89.                                         P24=0;                                                          //段E
  90.                                         P25=1;                                                          //段F
  91.                                         P26=1;                                                          //段G
  92.                                         break;
  93.                         case  5 :
  94.                                         P20=1;                                                          //段A
  95.                                         P21=0;                                                          //段B
  96.                                         P22=1;                                                          //段C
  97.                                         P23=1;                                                          //段D
  98.                                         P24=0;                                                          //段E
  99.                                         P25=1;                                                          //段F
  100.                                         P26=1;                                                          //段G
  101.                                         break;
  102.                         case  6 :
  103.                                         P20=1;                                                          //段A
  104.                                         P21=0;                                                          //段B
  105.                                         P22=1;                                                          //段C
  106.                                         P23=1;                                                          //段D
  107.                                         P24=1;                                                          //段E
  108.                                         P25=1;                                                          //段F
  109.                                         P26=1;                                                          //段G
  110.                                         break;
  111.                         case  7 :               
  112.                                         P20=1;                                                          //段A
  113.                                         P21=1;                                                          //段B
  114.                                         P22=1;                                                          //段C
  115.                                         P23=0;                                                          //段D
  116.                                         P24=0;                                                          //段E
  117.                                         P25=0;                                                          //段F
  118.                                         P26=0;                                                          //段G
  119.                                         break;
  120.                         case  8 :
  121.                                         P20=1;                                                          //段A
  122.                                         P21=1;                                                          //段B
  123.                                         P22=1;                                                          //段C
  124.                                         P23=1;                                                          //段D
  125.                                         P24=1;                                                          //段E
  126.                                         P25=1;                                                          //段F
  127.                                         P26=1;                                                          //段G
  128.                                         break;
  129.                         case 9 :
  130.                                         P20=1;                                                          //段A
  131.                                         P21=1;                                                          //段B
  132.                                         P22=1;                                                          //段C
  133.                                         P23=1;                                                          //段D
  134.                                         P24=0;                                                          //段E
  135.                                         P25=1;                                                          //段F
  136.                                         P26=1;                                                          //段G
  137.                                         break;
  138.                         case 'a' :
  139.                                         P20=1;                                                          //段A
  140.                                         P21=1;                                                          //段B
  141.                                         P22=1;                                                          //段C
  142.                                         P23=0;                                                          //段D
  143.                                         P24=1;                                                          //段E
  144.                                         P25=1;                                                          //段F
  145.                                         P26=1;                                                          //段G
  146.                                         break;
  147.                         case 'b' :
  148.                                         P20=0;                                                          //段A
  149.                                         P21=0;                                                          //段B
  150.                                         P22=1;                                                          //段C
  151.                                         P23=1;                                                          //段D
  152.                                         P24=1;                                                          //段E
  153.                                         P25=1;                                                          //段F
  154.                                         P26=1;                                                          //段G
  155.                                         break;
  156.                         case 'c' :
  157.                                         P20=1;                                                          //段A
  158.                                         P21=0;                                                          //段B
  159.                                         P22=0;                                                          //段C
  160.                                         P23=1;                                                          //段D
  161.                                         P24=1;                                                          //段E
  162.                                         P25=1;                                                          //段F
  163.                                         P26=0;                                                          //段G               
  164.                                         break;
  165.                         case 'd' :
  166.                                         P20=0;                                                          //段A
  167.                                         P21=1;                                                          //段B
  168.                                         P22=1;                                                          //段C
  169.                                         P23=1;                                                          //段D
  170.                                         P24=1;                                                          //段E
  171.                                         P25=0;                                                          //段F
  172.                                         P26=1;                                                          //段G
  173.                                         break;
  174.                         case 'e' :
  175.                                         P20=1;                                                          //段A
  176.                                         P21=0;                                                          //段B
  177.                                         P22=0;                                                          //段C
  178.                                         P23=1;                                                          //段D
  179.                                         P24=1;                                                          //段E
  180.                                         P25=1;                                                          //段F
  181.                                         P26=1;                                                          //段G
  182.                                         break;
  183.                         case 'f' :
  184.                                         P20=1;                                                          //段A
  185.                                         P21=0;                                                          //段B
  186.                                         P22=0;                                                          //段C
  187.                                         P23=0;                                                          //段D
  188.                                         P24=1;                                                          //段E
  189.                                         P25=1;                                                          //段F
  190.                                         P26=1;                                                          //段G
  191.                                         break;
  192.                        
  193.                     case ':' : P37=1;break;
  194.                         default : P26=1;                                                          //段G
  195.                 }
  196.                 switch(i)
  197.                 {
  198.                     case 0 :     P33=0;break;
  199.                         case 1 :     P34=0;break;
  200.                         case 2 :     P34=0;break;
  201.                         case 3 :     P35=0;break;
  202.                         case 4:                 P36=0;break;
  203.                 }
  204.                  Delay1ms();
  205.                  Led_Init();
  206.         }
  207. }
  208. void Timer1_Init(void)                //1毫秒@24.000MHz
  209. {
  210.         AUXR |= 0x40;                        //定时器时钟1T模式
  211.         TMOD &= 0x0F;                        //设置定时器模式
  212.         TL1 = 0x40;                                //设置定时初始值
  213.         TH1 = 0xA2;                                //设置定时初始值
  214.         TF1 = 0;                                //清除TF1标志
  215.         TR1 = 1;                                //定时器1开始计时
  216.         ET1=1;
  217.         EA=1;
  218. }
  219. void main()
  220. {
  221.         uchar i=0,f=0;
  222.         P3M0 &= ~0x04; P3M1 &= ~0x04;         //设置P32为标准io口
  223.         EX0=0;
  224.         P32=1;
  225.         Timer1_Init();
  226.         while(1)
  227.         {
  228.           if(P32==0)
  229.           {       
  230.                 Delay10ms();
  231.                 if(P32==0)
  232.                 {
  233.                          f++;
  234.                         while(!P32);
  235.                     
  236.                 }
  237.           }
  238.           if(f>=3) f=0;
  239.           if(count>=100)
  240.           {
  241.                   count=0        ;
  242.                 s+=1;
  243.           }
  244.           if(s>=60)
  245.           {
  246.                    s=0;
  247.                 m++;
  248.           }
  249.           if(m>=60)
  250.           {
  251.                 m=0;
  252.                 h++;
  253.           }
  254.           if(h>=24)h=0 ;
  255.           switch(f)
  256.           {
  257.                 case 0 :
  258.                          dis[0]=s/10;
  259.                           dis[1]=s%10;
  260.                           dis[3]=count/10;
  261.                           dis[4]=count%10;
  262.                         break;
  263.                   case 1 :
  264.                          dis[0]=h/10;
  265.                           dis[1]=h%10;
  266.                           dis[3]=m/10;
  267.                           dis[4]=m%10;
  268.                         break;
  269.                 case 2 :
  270.                          dis[0]=m/10;
  271.                           dis[1]=m%10;
  272.                           dis[3]=s/10;
  273.                           dis[4]=s%10;
  274.                         break;
  275.                 default : break;
  276.           }
  277.         }
  278. }
  279. void Timer1_Isr() interrupt 3
  280. {
  281.         Display(dis);
  282.         count++;
  283. }
复制代码


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:297
  • 最近打卡:2025-05-02 00:00:03
已绑定手机

20

主题

329

回帖

1676

积分

金牌会员

积分
1676
发表于 2024-2-28 08:10:46 | 显示全部楼层
以上是完整的代码。但是,一按按键就停止计数了。要去掉第255行的                Delay10ms();   
就运行正常,就是视频的效果。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:297
  • 最近打卡:2025-05-02 00:00:03
已绑定手机

20

主题

329

回帖

1676

积分

金牌会员

积分
1676
发表于 2024-2-28 09:38:53 | 显示全部楼层
目前我自己的解决方法是:
设置一个变量temp,记录两次按键端口检测为低之间的时间,如果大于20ms,就认定不是抖动。经测试,去抖问题解决了。
但是,我的疑问还在,为什么用软件延时,程序就死机呢?还是没搞明白
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:297
  • 最近打卡:2025-05-02 00:00:03
已绑定手机

20

主题

329

回帖

1676

积分

金牌会员

积分
1676
发表于 2024-2-28 09:39:32 | 显示全部楼层
程序修改部分:
  1. void main()
  2. {
  3.         uchar i=0,f=0,temp=0;
  4.         P3M0 &= ~0x04; P3M1 &= ~0x04;         //设置P32为标准io口
  5.         P32=1;
  6.         Timer1_Init();
  7.         while(1)
  8.         {
  9.           if((P32==0)&&(temp==0))                 
  10.                 temp=count;
  11.                   else if((P32==0)&&(count-temp)>20)
  12.                 {
  13.                          f++;
  14.                         while(!P32);
  15.                     
  16.                 }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:297
  • 最近打卡:2025-05-02 00:00:03
已绑定手机

20

主题

329

回帖

1676

积分

金牌会员

积分
1676
发表于 2024-2-28 09:43:31 | 显示全部楼层
本帖最后由 ly1350 于 2024-2-28 09:45 编辑

测试效果:貌似没有问题了。。。
下一步准备完善时间的设置问题。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:297
  • 最近打卡:2025-05-02 00:00:03
已绑定手机

20

主题

329

回帖

1676

积分

金牌会员

积分
1676
发表于 2024-2-28 09:44:08 | 显示全部楼层

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:345
  • 最近打卡:2025-05-01 10:59:26

6

主题

107

回帖

1669

积分

金牌会员

积分
1669
发表于 2024-3-9 07:49:07 | 显示全部楼层
学习中,我们一起加油!
 
经常看看,偶尔玩玩——不过都是简单的,难的我也不会呀
 
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 00:25 , Processed in 0.650380 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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