Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: xxxxxx

邴星雪个人贴

[复制链接]

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
发表于 2022-11-17 10:53:49 | 显示全部楼层
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
发表于 2022-11-17 10:54:59 | 显示全部楼层
3dmax
回复

使用道具 举报

2

主题

27

帖子

149

积分

注册会员

Rank: 2

积分
149
 楼主| 发表于 2023-1-14 16:45:24 | 显示全部楼层
  1. #include <STC15F2K60S2.H>

  2. void delay(unsigned int t)
  3. {
  4.         while(t--);
  5.         while(t--);
  6. }

  7. void initP2(unsigned char n)
  8. {
  9.         switch(n)
  10.         {
  11.                 case 4:
  12.                         P2=(P2&0x1f)|0x80;
  13.                 break;
  14.                 case 5:
  15.                         P2=(P2&0x1f)|0xa0;
  16.                 break;
  17.         }
  18. }

  19. void initsystem()
  20. {
  21.         initP2(4);
  22.         P0=0xff;
  23.         initP2(5);
  24.         P0=0x00;
  25. }

  26. void LED()
  27. {
  28.         initP2(4);
  29.         P0=0x7f;
  30. }

  31. void main()
  32. {
  33.         initsystem();
  34.         while(1)
  35.         {
  36.                 LED();
  37.         }
  38. }
复制代码
回复

使用道具 举报

2

主题

27

帖子

149

积分

注册会员

Rank: 2

积分
149
 楼主| 发表于 2023-1-14 16:48:51 | 显示全部楼层
视频发不上去
回复

使用道具 举报

2

主题

27

帖子

149

积分

注册会员

Rank: 2

积分
149
 楼主| 发表于 2023-1-14 16:53:52 | 显示全部楼层
  1. #include <STC15F2K60S2.H>

  2. void delay(unsigned int t)
  3. {
  4.         while(t--);
  5.         while(t--);
  6. }

  7. void initP2(unsigned char n)
  8. {
  9.         switch(n)
  10.         {
  11.                 case 4:
  12.                         P2=(P2&0x1f)|0x80;
  13.                 break;
  14.                 case 5:
  15.                         P2=(P2&0x1f)|0xa0;
  16.                 break;
  17.         }
  18. }

  19. void initsystem()
  20. {
  21.         initP2(4);
  22.         P0=0xff;
  23.         initP2(5);
  24.         P0=0x00;
  25. }

  26. void LED()
  27. {
  28.         int i;
  29.         initP2(4);
  30.         for(i=0;i<8;i++)
  31.         {
  32.                 P0=~(0x01<<i);
  33.                 delay(60000);
  34.         }
  35. }

  36. void main()
  37. {
  38.         initsystem();
  39.         while(1)
  40.         {
  41.                 LED();
  42.         }
  43. }
  44.         
复制代码
回复

使用道具 举报

2

主题

27

帖子

149

积分

注册会员

Rank: 2

积分
149
 楼主| 发表于 2023-1-14 16:58:41 | 显示全部楼层
电子钟
  1. #include <STC15F2K60S2.H>

  2. sbit S4=P3^3;
  3. sbit S5=P3^2;

  4. unsigned char t_m=0;
  5. unsigned char t_s=0;
  6. unsigned char t_005s=0;

  7. unsigned char code SMG_duanma[18]=
  8.       {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
  9.              0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
  10.                          0xbf,0x7f};

  11. void selectHC573(unsigned char channel)
  12. {
  13.         switch(channel)
  14.         {
  15.                 case 4:
  16.                         P2=(P2&0x1f)|0x80;
  17.                 break;
  18.                 case 5:
  19.                         P2=(P2&0x1f)|0xa0;
  20.                 break;
  21.                 case 6:
  22.                         P2=(P2&0x1f)|0xc0;
  23.                 break;
  24.                 case 7:
  25.                         P2=(P2&0x1f)|0xe0;
  26.                 break;
  27.         }
  28. }

  29. void delaySMG(unsigned char t)
  30. {
  31.         while(t--);
  32. }

  33. void displaySMG_Bit(unsigned char value,unsigned char pos)
  34. {
  35.         selectHC573(6);
  36.         P0=0x01<<pos;
  37.         selectHC573(7);
  38.         P0=value;
  39. }       

  40. void displayTime()
  41. {
  42.         displaySMG_Bit(SMG_duanma[t_005s%10],7);
  43.         delaySMG(500);
  44.         displaySMG_Bit(SMG_duanma[t_005s/10],6);
  45.         delaySMG(500);
  46.         displaySMG_Bit(SMG_duanma[16],5);
  47.         delaySMG(500);
  48.        
  49.         displaySMG_Bit(SMG_duanma[t_s%10],4);
  50.         delaySMG(500);
  51.         displaySMG_Bit(SMG_duanma[t_s/10],3);
  52.         delaySMG(500);
  53.         displaySMG_Bit(SMG_duanma[16],2);
  54.         delaySMG(500);
  55.        
  56.         displaySMG_Bit(SMG_duanma[t_m%10],1);
  57.         delaySMG(500);
  58.         displaySMG_Bit(SMG_duanma[t_m/10],0);
  59.         delaySMG(500);
  60. }

  61. void initTimer0()
  62. {
  63.         TMOD=0x01;
  64.         TH0=(65535-50000)/256;
  65.         TL0=(65535-50000)%256;
  66.        
  67.         ET0=1;
  68.         EA=1;
  69.         TR0=1;
  70. }

  71. void serviceTimer0() interrupt 1
  72. {
  73.         TH0=(65535-50000)/256;
  74.         TL0=(65535-50000)%256;
  75.        
  76.         t_005s++;
  77.         if(t_005s==20)
  78.         {
  79.                 t_s++;
  80.                 t_005s=0;
  81.                 if(t_s==60)
  82.                 {
  83.                         t_m++;
  84.                         t_s=0;
  85.                 }
  86.                 if(t_m==99)
  87.                 {
  88.                         t_m=0;
  89.                 }
  90.         }
  91. }

  92. void delayK(unsigned char t)
  93. {
  94.         while(t--);
  95. }

  96. void scanKeys()
  97. {
  98.         if(S4==0)//miaobiaoqidongyuzanting
  99.         {
  100.                 delayK(100);
  101.                 if(S4==0)
  102.                 {
  103.                         TR0=~TR0;
  104.                         while(S4==0)
  105.                         {
  106.                                 displayTime();
  107.                         }
  108.                 }
  109.         }
  110.         if(S5==0)//qingling
  111.         {
  112.                 delayK(100);
  113.                 if(S5==0)
  114.                 {
  115.                         t_m=0;
  116.                         t_s=0;
  117.                         t_005s=0;
  118.                         while(S5==0)
  119.                         {
  120.                                 displayTime();
  121.                         }
  122.                 }
  123.         }
  124. }

  125. void main()
  126. {
  127.         initTimer0();
  128.         while(1)
  129.         {
  130.                 displayTime();
  131.                 scanKeys();
  132.         }
  133. }
复制代码
回复

使用道具 举报

2

主题

27

帖子

149

积分

注册会员

Rank: 2

积分
149
 楼主| 发表于 2023-1-14 17:02:07 | 显示全部楼层
定时亮灯
  1. #include <STC15F2K60S2.H>

  2. sbit L1=P0^0;
  3. sbit L8=P0^7;

  4. void selectHC573()
  5. {
  6.         P2=(P2&0x1f)|0x80;
  7. }

  8. void initTimer0()
  9. {
  10.         TMOD=0x01;
  11.         TH0=(65535-50000)/256;//50ms
  12.         TL0=(65535-50000)%256;
  13.        
  14.         ET0=1;
  15.         EA=1;
  16.         TR0=1;
  17. }

  18. unsigned char count=0;
  19. void serviceTimer0() interrupt 1
  20. {
  21.         TH0=(65535-50000)/256;
  22.         TL0=(65535-50000)%256;
  23.        
  24.         count++;
  25.         if(count%10==0)//500ms
  26.         {
  27.                 L1=~L1;
  28.         }
  29.         if(count==100)
  30.         {
  31.                 L8=~L8;
  32.                 count=0;
  33.         }
  34. }

  35. void main()
  36. {
  37.         selectHC573();
  38.         initTimer0();
  39.         while(1)
  40.         {
  41.         }
  42. }
复制代码
回复

使用道具 举报

2

主题

27

帖子

149

积分

注册会员

Rank: 2

积分
149
 楼主| 发表于 2023-1-14 17:20:58 | 显示全部楼层
按键计数器出现问题
  1. #include <STC15F2K60S2.H>

  2. sbit S7=P3^0;
  3. sbit S6=P3^1;

  4. unsigned int n;

  5. unsigned char code SMG_duanma[18]=
  6.       {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
  7.              0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
  8.                                 0xbf,0x7f};

  9. void selectHC573(unsigned char channel)
  10. {
  11.         switch(channel)
  12.         {
  13.                 case 4:
  14.                    P2=(P2&0x1f)|0x80;
  15.                 break;
  16.                 case 5:
  17.                    P2=(P2&0x1f)|0xa0;
  18.                 break;
  19.                 case 6:
  20.                    P2=(P2&0x1f)|0xc0;
  21.                 break;
  22.                 case 7:
  23.                    P2=(P2&0x1f)|0xe0;//?
  24.                 break;
  25.         }
  26. }       

  27. void initsystem()
  28. {
  29.         selectHC573(4);
  30.         P0=0xff;
  31.         selectHC573(5);
  32.         P0=0x00;
  33. }

  34. void delaySMG(unsigned char t)
  35. {
  36.         while(t--);
  37. }

  38. void delayK(unsigned char t)
  39. {
  40.         while(t--);
  41. }

  42. void displaySMG_Bit(unsigned char value,unsigned char pos)
  43. {
  44.         selectHC573(6);
  45.         P0=0x01<<pos;
  46.         selectHC573(7);
  47.         P0=value;
  48. }       

  49. void display_JSQ()
  50. {
  51.         displaySMG_Bit(SMG_duanma[n/1000],4);
  52.         delaySMG(500);
  53.         displaySMG_Bit(SMG_duanma[n/100%10],5);
  54.         delaySMG(500);
  55.         displaySMG_Bit(SMG_duanma[n/10%10],6);
  56.         delaySMG(500);
  57.         displaySMG_Bit(SMG_duanma[n%10],7);
  58.         delaySMG(500);
  59. }

  60. void key()
  61. {
  62.         if(S7==0)
  63.         {
  64.                 delayK(100);
  65.                 if(S7==0)
  66.                 {
  67.                         n++;
  68.                         while(S7==0)
  69.                         {
  70.                                 display_JSQ();
  71.                         }
  72.                 }
  73.         }
  74.         if(S6==0)
  75.         {
  76.                 delayK(100);
  77.                 if(S6==0)
  78.                 {
  79.                         n--;
  80.                         while(S6==0)
  81.                         {
  82.                                 display_JSQ();
  83.                         }
  84.                 }
  85.         }
  86. }

  87. void main()
  88. {
  89.         initsystem();
  90.         while(1)
  91.         {
  92.                 key();
  93.         }
  94. }
复制代码
回复

使用道具 举报

374

主题

1167

帖子

3683

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3683
发表于 2023-1-14 17:45:58 | 显示全部楼层
代码写的很漂亮
回复

使用道具 举报

2

主题

27

帖子

149

积分

注册会员

Rank: 2

积分
149
 楼主| 发表于 2023-5-19 23:08:56 | 显示全部楼层
已完成,因本周认知实习,未拿实验器材,未验证准确性。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2024-11-23 23:26 , Processed in 0.056886 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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