找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2152|回复: 8
打印 上一主题 下一主题
收起左侧

求解单片机程序每一部分的讲解注释

[复制链接]
跳转到指定楼层
#
ID:745076 发表于 2020-12-26 15:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
200黑币
  1. #include "STC15F2K.h"
  2. #include "intrins.h"
  3. #include <math.h>

  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. sfr ADC_LOW2    =   0xBE;           //ADC低2位结果

  7. #define ADC_POWER   0x80            //ADC电源控制位
  8. #define ADC_FLAG    0x10            //ADC完成标志
  9. #define ADC_START   0x08            //ADC起始控制位
  10. #define ADC_SPEEDLL 0x00            //540个时钟
  11. #define ADC_SPEEDL  0x20            //360个时钟
  12. #define ADC_SPEEDH  0x40            //180个时钟
  13. #define ADC_SPEEDHH 0x60            //90个时钟

  14. sbit S1=P3^3;
  15. sbit S2=P3^4;
  16. sbit S3=P3^5;
  17. sbit S4=P3^6;
  18. sbit S5=P3^7;
  19. sbit S6=P1^2;
  20. sbit S7=P1^3;
  21. sbit S8=P1^4;
  22. sbit S9=P1^5;
  23. sbit S10=P1^6;
  24. sbit S11=P1^7;
  25. sbit S12=P5^4;

  26. sbit bell=P3^0;

  27. sbit set=P1^0;
  28. sbit jia=P1^1;

  29. uchar dat1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0X80,0X90,0xff,0xc6};
  30. uchar dat2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0X00,0X10,0xff};//有小数点

  31. uchar dat3[9]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};//
  32. uchar dat4[9]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};//
  33. uchar t_led0[8]={0};   
  34. uchar t_led1[8]={0};
  35. uchar table[4]={1,2,3,4};
  36. uchar xg=0;
  37. char t=0;
  38. int t1;
  39. char ps=0;
  40. char flag=1;
  41. int sudu1=0,sudu2=0;

  42. unsigned int temp[2];
  43. int ld;
  44. extern void init_ds1302_io();
  45. extern void init_ds1302();
  46. extern void read_time();
  47. extern void write_time();
  48. extern void read_nao();

  49. extern uchar miao;
  50. extern uchar fen;
  51. extern uchar shi;

  52. extern uchar nfen;
  53. extern uchar nshi;

  54. void Delayms(uint t)
  55. {
  56.          uchar i;
  57.         while(t--)
  58.            for(i=0;i<100;i++);
  59. }

  60. void display()
  61. {
  62.         S12=0;S1=1;
  63.         P2=dat1[table[0]];
  64.         Delayms(2);        

  65.         S1=0;S2=1;
  66.         if(flag==0)P2=dat2[table[1]];
  67.         if(flag==1)P2=dat1[table[1]];
  68.         Delayms(2);
  69.         
  70.         S2=0;S3=1;
  71.         P2=dat1[table[2]];        
  72.         Delayms(2);
  73.         
  74.         S3=0;S4=1;
  75.         P2=dat1[table[3]];
  76.         Delayms(2);        
  77. //////////////////////////////////////////////////////
  78.         P2=0xff;
  79.         S4=0;S5=1;
  80.         P2=dat3[t_led0[0]]&dat4[t_led1[0]];
  81.         Delayms(2);               

  82.         P2=0xff;
  83.         S5=0;S6=1;
  84.         P2=dat3[t_led0[1]]&dat4[t_led1[1]];
  85.         Delayms(2);               

  86.         P2=0xff;
  87.         S6=0;S7=1;
  88.         P2=dat3[t_led0[2]]&dat4[t_led1[2]];
  89.         Delayms(2);               

  90.         P2=0xff;
  91.         S7=0;S8=1;
  92.         P2=dat3[t_led0[3]]&dat4[t_led1[3]];
  93.         Delayms(2);               

  94.         P2=0xff;
  95.         S8=0;S9=1;
  96.         P2=dat3[t_led0[4]]&dat4[t_led1[4]];
  97.         Delayms(2);               

  98.         P2=0xff;
  99.         S9=0;S10=1;
  100.         P2=dat3[t_led0[5]]&dat4[t_led1[5]];
  101.         Delayms(2);        

  102.         P2=0xff;
  103.         S10=0;S11=1;
  104.         P2=dat3[t_led0[6]]&dat4[t_led1[6]];
  105.         Delayms(2);        

  106.         P2=0xff;
  107.         S11=0;S12=1;
  108.         P2=dat3[t_led0[7]]&dat4[t_led1[7]];
  109.         Delayms(2);        

  110.         S1=S2=S3=S4=S5=S6=S7=S8=S9=S10=S11=S12=1;
  111.         P2=0xff;
  112.         S1=S2=S3=S4=S5=S6=S7=S8=S9=S10=S11=S12=0;
  113.         Delayms(2);                                                        
  114. }

  115. void init()
  116. {
  117.     TMOD= 0x01;                                   
  118.     TL0 = (65536-20000)/256;        //设置定时初值
  119.     TH0 = (65536-20000)%256;        //设置定时初值
  120.     ET0 = 1;
  121.     TR0 = 1;
  122.     EA = 1;
  123. }
  124. char menu=0;
  125. bit nf=0;
  126. bit gk=0;
  127. void key()
  128. {
  129.         uchar i;
  130.         if(jia==0 && menu==0)
  131.         {
  132.                 while(jia==0);
  133.                 xg++;
  134.                 nf=0;
  135.                 if(xg==2){dat4[0]=0XFF;dat4[1]=0XFF;dat4[2]=0XFF;dat4[3]=0XFF;dat4[4]=0XFF;dat4[5]=0XFF;dat4[6]=0XFF;dat4[7]=0XFF;dat4[8]=0XFF;}
  136.                 if(xg==3){dat3[0]=0xFE;dat3[1]=0xFC;dat3[2]=0xF8;dat3[3]=0xF0;dat3[4]=0xE0;dat3[5]=0xC0;dat3[6]=0x80;dat3[7]=0x00;dat3[8]=0xFF;}
  137.                  
  138.                 if(xg==5)
  139.                 {
  140.                         sudu1=0;sudu2=0;
  141.                         for(i=0;i<9;i++)
  142.                         {
  143.                                 //dat3[i]=0XFF;
  144.                                 dat4[i]=0XFE;        
  145.                         }
  146.                         dat3[0]=0X01;dat3[1]=0X03;dat3[2]=0X07;dat3[3]=0X0F;dat3[4]=0X1F;dat3[5]=0X3F;dat3[6]=0X7F;dat3[7]=0XFF;dat3[8]=0x00;
  147.                 }
  148.                 if(xg==6)
  149.                 {
  150.                         sudu1=0;sudu2=0;        
  151.                         for(i=0;i<9;i++)
  152.                         {
  153.                                 dat3[i]=0XFF;
  154.                                 dat4[i]=0XFC;        
  155.                         }
  156.                         for(i=0;i<8;i++){t_led0[i]=8;}
  157.                         for(i=0;i<8;i++){t_led1[i]=0;}
  158.                 }
  159.                 if(xg==7)
  160.                 {
  161.                         sudu1=0;sudu2=0;
  162.                         for(i=0;i<9;i++)
  163.                         {
  164.                                 dat3[i]=0XFF;
  165.                                 dat4[i]=0XFF;        
  166.                         }
  167.                         for(i=0;i<8;i++){t_led0[i]=i;}
  168.                         for(i=0;i<8;i++){t_led1[i]=i;}
  169.                 }
  170.                 if(xg==8)
  171.                 {
  172.                         sudu1=0;sudu2=0;
  173.                         for(i=0;i<9;i++)
  174.                         {
  175.                                 dat3[i]=0XFF;
  176.                                 dat4[i]=0XFF;        
  177.                         }
  178.                 }
  179.                 if(xg==9)
  180.                 {
  181.                         sudu1=0;sudu2=0;
  182.                         for(i=0;i<9;i++)
  183.                         {
  184.                                 dat3[i]=0XFF;
  185.                                 dat4[i]=0XFF;        
  186.                         }
  187.                 }                                                
  188.                 if(xg==10){xg=0;for(i=0;i<9;i++)dat4[i]=0XFF;}
  189.         }

  190.         if(set==0)
  191.         {
  192.                 bell=0;
  193.                 menu++;
  194.                 if(menu==3){read_nao();}
  195.                 if(menu==7){menu=0;ET1 = 1;write_time();}
  196.                 while(set==0);        
  197.                 bell=1;                        
  198.         }

  199.         if(menu==1)
  200.         {
  201.                 if(jia==0)
  202.                 {
  203.                         bell=0;
  204.                         if(fen >= 0x60)
  205.                                 fen = 0;

  206.                         fen=fen+0x01;
  207.                         if((fen & 0x0f) >= 0x0a)
  208.                                 fen = (fen & 0xf0) + 0x10;
  209.                         while(jia==0);
  210.                         bell=1;
  211.                 }                        
  212.         }
  213.         if(menu==2)
  214.         {
  215.                 if(jia==0)
  216.                 {
  217.                         bell=0;
  218.                         shi+=0x01;
  219.                         if((shi & 0x0f) >= 0x0a)
  220.                                 shi = (shi & 0xf0) + 0x10;

  221.                         if(shi >= 0x24)
  222.                                 shi = 0;
  223.                         while(jia==0);
  224.                         bell=1;
  225.                 }               
  226.         }
  227.         
  228.         if(menu==3)        //闹钟
  229.         {
  230.                 if(jia==0)
  231.                 {
  232.                         bell=0;
  233.                         if(nfen >= 0x60)
  234.                                 nfen = 0;

  235.                         nfen=nfen+0x01;
  236.                         if((nfen & 0x0f) >= 0x0a)
  237.                                 nfen = (nfen & 0xf0) + 0x10;
  238.                         while(jia==0);
  239.                         bell=1;        
  240.                 }
  241.         }
  242.         if(menu==4)
  243.         {
  244.                 if(jia==0)
  245.                 {
  246.                         bell=0;
  247.                         nshi+=0x01;
  248.                         if((nshi & 0x0f) >= 0x0a)
  249.                                 nshi = (nshi & 0xf0) + 0x10;

  250.                         if(nshi >= 0x24)
  251.                                 nshi = 0;
  252.                         while(jia==0);
  253.                         bell=1;
  254.                 }        
  255.         }
  256.         if(menu==5)
  257.         {
  258.                 if(jia==0)
  259.                 {
  260.                         while(jia==0);
  261.                         nf=!nf;
  262.                 }        
  263.         }
  264.         if(menu==6)
  265.         {
  266.                 if(jia==0)
  267.                 {
  268.                         while(jia==0);
  269.                         gk=!gk;
  270.                 }        
  271.         }        
  272. }
  273. void InitADC()
  274. {
  275.           P1ASF = 0x03;                        //Open channels ADC function 0100 0000 p1.6使用AD功能
  276.         ADC_RES  = 0;                                    //Clear previous result
  277.         ADC_LOW2 = 0;
  278.           ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
  279. }
  280. void GetADCResult(unsigned char ch,unsigned int *value)
  281. {
  282.         ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
  283.     _nop_();                        //Must wait before inquiry
  284.     _nop_();
  285.     _nop_();
  286.     _nop_();
  287.     _nop_();                        //Must wait before inquiry
  288.     _nop_();
  289.     while(!(ADC_CONTR & ADC_FLAG));//Wait complete flag
  290.     ADC_CONTR &= ~ADC_FLAG;         //Close ADC

  291.         *value = 0;
  292.         *value = ADC_RES;
  293.         *value = ((*value)*4 + ADC_LOW2);                //Return ADC result.×¢êíμ?′????ò·μ??8??ADC?á1?
  294. }

  295. void ADC_convert(void)
  296. {
  297.         GetADCResult(0,&temp[0]);
  298.         temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 278.15) * 100 );
  299. }
  300. void main()
  301. {
  302.         uchar i;
  303.     init();        
  304.         InitADC();
  305.         init_ds1302_io();
  306.         init_ds1302();

  307.         read_nao();

  308.         P3M0=0xf8;P3M1=0x00;

  309.         P2M0=0xff;P2M1=0x00;

  310.         P1M0=0xff;P1M1=0x00;

  311.         P5M0=0x10;P5M1=0x00;
  312.         while(1)
  313.         {
  314.                 P1ASF = 0x00;
  315.                 key();
  316.                 P1ASF = 0x03;
  317.                 if(menu==0)
  318.                 {
  319.                         read_time();
  320.                         if(t1>25 && t1<30)
  321.                         {
  322.                                 ADC_convert();
  323.                                 flag=1;
  324.                                 table[0]=10;
  325.                                 table[1]=temp[0]/1000;
  326.                                 table[2]=temp[0]%1000/100;
  327.                                 table[3]=11;
  328.                         }
  329.                         if(t1>0 && t1<25)
  330.                         {
  331.                                 table[0]=shi/16;
  332.                                 table[1]=shi%16;
  333.                                 table[2]=fen/16;
  334.                                 table[3]=fen%16;
  335.                         }
  336.                         if(t1>30)t1=0;        

  337.                            if(xg==0)
  338.                         {
  339.                                 dat3[0]=0xFE;dat3[1]=0xFD;dat3[2]=0xFB;dat3[3]=0xF7;dat3[4]=0xEF;dat3[5]=0xDF;dat3[6]=0xBF;dat3[7]=0x7F;dat3[8]=0xFF;
  340.                                 for(i=0;i<8;i++)t_led0[i]=8;
  341.                                 for(i=0;i<8;i++)t_led1[i]=8;
  342.                         }
  343.                         if(xg==1)
  344.                         {
  345.                                 dat4[0]=0XEF;dat4[1]=0XBD;dat4[2]=0XF7;dat4[3]=0XDE;dat4[4]=0X7B;dat4[5]=0XEF;dat4[6]=0XBD;dat4[7]=0X07;
  346.                                 for(i=0;i<8;i++)t_led1[i]=i;

  347.                                 dat3[0]=0xFE;dat3[1]=0xFD;dat3[2]=0xFB;dat3[3]=0xF7;dat3[4]=0xEF;dat3[5]=0xDF;dat3[6]=0xBF;dat3[7]=0x7F;dat3[8]=0xFF;
  348.                                 for(i=0;i<8;i++)t_led0[i]=8;
  349.                         }
  350.         
  351.                            if(xg==2)
  352.                         {                                       
  353.                                 dat3[0]=0x01;dat3[1]=0x02;dat3[2]=0x04;dat3[3]=0x08;dat3[4]=0x10;dat3[5]=0x20;dat3[6]=0x40;dat3[7]=0x80;dat3[8]=0x00;
  354.                                 for(i=0;i<8;i++)t_led0[i]=8;
  355.                         }
  356.                            if(xg==3)
  357.                         {
  358.                                 if(miao==0x01)for(i=0;i<8;i++){t_led0[i]=8;}
  359.                                 if(miao>0x08){t_led0[0]=7;}        
  360.                                 if(miao>0x16){t_led0[1]=7;}
  361.                                 if(miao>0x24){t_led0[2]=7;}
  362.                                 if(miao>0x32){t_led0[3]=7;}
  363.                                 if(miao>0x40){t_led0[4]=7;}
  364.                                 if(miao>0x48){t_led0[5]=7;}
  365.                                 if(miao>0x56){t_led0[6]=7;}
  366.                         }
  367.                         if(xg==4)
  368.                         {        
  369.                                 dat4[0]=0XEF;dat4[1]=0XBD;dat4[2]=0XF7;dat4[3]=0XDE;dat4[4]=0X7B;dat4[5]=0XEF;dat4[6]=0XBD;dat4[7]=0X07;
  370.                         }
  371.                         if(xg==5)
  372.                         {        
  373.                                 if(miao==0x01)for(i=0;i<8;i++){t_led0[i]=8;}
  374.                                 if(miao>0x08){t_led0[0]=7;}        
  375.                                 if(miao>0x16){t_led0[1]=7;}
  376.                                 if(miao>0x24){t_led0[2]=7;}
  377.                                 if(miao>0x32){t_led0[3]=7;}
  378.                                 if(miao>0x40){t_led0[4]=7;}
  379.                                 if(miao>0x48){t_led0[5]=7;}
  380.                                 if(miao>0x56){t_led0[6]=7;}                                                                                                                                                                                                                                                                                       
  381.                         }
  382.                         if(xg<6)
  383.                         {
  384.                                 if(miao==0x01)t_led0[0]=0;
  385.                                 if(miao==0x02)t_led0[0]=1;
  386.                                 if(miao==0x03)t_led0[0]=2;
  387.                                 if(miao==0x04)t_led0[0]=3;
  388.                                 if(miao==0x05)t_led0[0]=4;
  389.                                 if(miao==0x06)t_led0[0]=5;
  390.                                 if(miao==0x07)t_led0[0]=6;
  391.                                 if(miao==0x08)t_led0[0]=7;
  392.                
  393.                                 if(miao==0x09)t_led0[1]=0;
  394.                                 if(miao==0x10)t_led0[1]=1;
  395.                                 if(miao==0x11)t_led0[1]=2;
  396.                                 if(miao==0x12)t_led0[1]=3;
  397.                                 if(miao==0x13)t_led0[1]=4;
  398.                                 if(miao==0x14)t_led0[1]=5;
  399.                                 if(miao==0x15)t_led0[1]=6;
  400.                                 if(miao==0x16)t_led0[1]=7;
  401.                
  402.                                 if(miao==0x17)t_led0[2]=0;
  403.                                 if(miao==0x18)t_led0[2]=1;
  404.                                 if(miao==0x19)t_led0[2]=2;
  405.                                 if(miao==0x20)t_led0[2]=3;
  406.                                 if(miao==0x21)t_led0[2]=4;
  407.                                 if(miao==0x22)t_led0[2]=5;
  408.                                 if(miao==0x23)t_led0[2]=6;
  409.                                 if(miao==0x24)t_led0[2]=7;
  410.                
  411.                                 if(miao==0x25)t_led0[3]=0;
  412.                                 if(miao==0x26)t_led0[3]=1;
  413.                                 if(miao==0x27)t_led0[3]=2;
  414.                                 if(miao==0x28)t_led0[3]=3;
  415.                                 if(miao==0x29)t_led0[3]=4;
  416.                                 if(miao==0x30)t_led0[3]=5;
  417.                                 if(miao==0x31)t_led0[3]=6;
  418.                                 if(miao==0x32)t_led0[3]=7;
  419.                
  420.                                 if(miao==0x33)t_led0[4]=0;
  421.                                 if(miao==0x34)t_led0[4]=1;
  422.                                 if(miao==0x35)t_led0[4]=2;
  423.                                 if(miao==0x36)t_led0[4]=3;
  424.                                 if(miao==0x37)t_led0[4]=4;
  425.                                 if(miao==0x38)t_led0[4]=5;
  426.                                 if(miao==0x39)t_led0[4]=6;
  427.                                 if(miao==0x40)t_led0[4]=7;
  428.                
  429.                                 if(miao==0x41)t_led0[5]=0;
  430.                                 if(miao==0x42)t_led0[5]=1;
  431.                                 if(miao==0x43)t_led0[5]=2;
  432.                                 if(miao==0x44)t_led0[5]=3;
  433.                                 if(miao==0x45)t_led0[5]=4;
  434.                                 if(miao==0x46)t_led0[5]=5;
  435.                                 if(miao==0x47)t_led0[5]=6;
  436.                                 if(miao==0x48)t_led0[5]=7;
  437.                
  438.                                 if(miao==0x49)t_led0[6]=0;
  439.                                 if(miao==0x50)t_led0[6]=1;
  440.                                 if(miao==0x51)t_led0[6]=2;
  441.                                 if(miao==0x52)t_led0[6]=3;
  442.                                 if(miao==0x53)t_led0[6]=4;
  443.                                 if(miao==0x54)t_led0[6]=5;
  444.                                 if(miao==0x55)t_led0[6]=6;
  445.                                 if(miao==0x56)t_led0[6]=7;
  446.                
  447.                                 if(miao==0x57)t_led0[7]=0;
  448.                                 if(miao==0x58)t_led0[7]=1;
  449.                                 if(miao==0x59)t_led0[7]=2;
  450.                                 if(miao==0x00)t_led0[7]=3;               
  451.                         }               
  452.                 }

  453.                 if(menu==1)
  454.                 {        
  455.                         if(flag>0)
  456.                         {
  457.                                 table[2]=fen/16;
  458.                                 table[3]=fen%16;
  459.                         }
  460.                         else
  461.                         {
  462.                                 table[2]=10;
  463.                                 table[3]=10;                                
  464.                         }
  465.                         table[0]=shi/16;
  466.                         table[1]=shi%16;                        
  467.                 }
  468.                 if(menu==2)
  469.                 {
  470.                         table[2]=fen/16;
  471.                         table[3]=fen%16;
  472.                         if(flag>0)
  473.                         {
  474.                                 table[0]=shi/16;
  475.                                 table[1]=shi%16;                                
  476.                         }
  477.                         else
  478.                         {
  479.                                 table[0]=10;
  480.                                 table[1]=10;        
  481.                         }
  482.                 }
  483.                 if(menu==3)
  484.                 {        
  485.                         if(flag>0)
  486.                         {
  487.                                 table[2]=nfen/16;
  488.                                 table[3]=nfen%16;
  489.                         }
  490.                         else
  491.                         {
  492.                                 table[2]=10;
  493.                                 table[3]=10;                                
  494.                         }
  495.                         table[0]=nshi/16;
  496.                         table[1]=nshi%16;                        
  497.                 }
  498.                 if(menu==4)
  499.                 {
  500.                         table[2]=nfen/16;
  501.                         table[3]=nfen%16;
  502.                         if(flag>0)
  503.                         {
  504.                                 table[0]=nshi/16;
  505.                                 table[1]=nshi%16;                                
  506.                         }
  507.                         else
  508.                         {
  509.                                 table[0]=10;
  510.                                 table[1]=10;        
  511.                         }
  512.                 }
  513.                 if(menu==5)
  514.                 {
  515.                         table[0]=nf;
  516.                         table[1]=nf;
  517.                         table[2]=nf;
  518.                         table[3]=nf;        
  519.                 }
  520.                 if(menu==6)
  521.                 {
  522.                         table[0]=gk;
  523.                         table[1]=gk;
  524.                         table[2]=gk;
  525.                         table[3]=gk;        
  526.                 }

  527.                 if(gk==1)//开光控
  528.                 {
  529.                         GetADCResult(1,&temp[1]);
  530.                         if( temp[1]<100)ld=8;
  531.                         if( temp[1]>100 && temp[1]<300)ld=10;
  532.                         if( temp[1]>300 && temp[1]<500)ld=30;
  533.                         if( temp[1]>500 && temp[1]<600)ld=90;
  534.                         if( temp[1]>600 && temp[1]<700)ld=120;
  535.                         if( temp[1]>700 && temp[1]<800)ld=150;
  536.                         if( temp[1]>800 && temp[1]<900)ld=180;
  537.                         if( temp[1]>900)ld=200;                                
  538.                 }
  539.                 else ld=8;

  540.                 display();
  541.                 Delayms(ld);                                                
  542.         }
  543. }
  544. char count=10,bc=0;                                                                                                                                                                                
  545. void InitTimer1() interrupt 1  // 1毫秒@11.0592MHz
  546. {
  547.     TL0 = (65536-20000)/256;        //设置定时初值
  548.     TH0 = (65536-20000)%256;        //设置定时初值
  549.         t++;
  550.         if(t==40)
  551.         {
  552.                 t=0;
  553.                 t1++;
  554.                 if(menu==0){if(t1>0 && t1<25)flag=!flag;else flag=1;}
  555.                 if(menu==1 || menu==2 || menu==3 || menu==4) flag=!flag;
  556.                 if(menu==5 || menu==6)flag=1;

  557.                 if(nf==1)if(shi==nshi && fen==nfen)bell=!bell;
  558.                 else bell=1;
  559.         }
  560.         
  561.         if(xg==5)
  562.         {
  563.                 sudu2++;
  564.                 if(sudu2==7)
  565.                 {
  566.                         sudu2=0;
  567.                         sudu1++;
  568.                         
  569.                         dat4[0]=(dat4[0]>>1)|0x80;
  570.                         dat4[1]=(dat4[1]>>1)|0x80;
  571.                         dat4[2]=(dat4[2]>>1)|0x80;
  572.                         dat4[3]=(dat4[3]>>1)|0x80;
  573.                         dat4[4]=(dat4[4]>>1)|0x80;
  574.                         dat4[5]=(dat4[5]>>1)|0x80;
  575.                         dat4[6]=(dat4[6]>>1)|0x80;
  576.                         dat4[7]=(dat4[7]>>1)|0x80;
  577.                         if(sudu1==8){sudu1=0;dat4[0]=0X7F;dat4[1]=0X7F;dat4[2]=0X7F;dat4[3]=0X7F;dat4[4]=0X7F;dat4[5]=0X7F;dat4[6]=0X7F;dat4[7]=0X7F;}
  578.                 }
  579.         }

  580.         if(xg==6)
  581.         {
  582.                 sudu2++;
  583.                 if(sudu2==4)
  584.                 {
  585.                         sudu2=0;
  586.                         sudu1++;               
  587.                         dat4[0]=(dat4[0]<<1)|0x01;
  588.                         dat4[1]=(dat4[1]<<1)|0x01;
  589.                         dat4[2]=(dat4[2]<<1)|0x01;
  590.                         dat4[3]=(dat4[3]<<1)|0x01;
  591.                         dat4[4]=(dat4[4]<<1)|0x01;
  592.                         dat4[5]=(dat4[5]<<1)|0x01;
  593.                         dat4[6]=(dat4[6]<<1)|0x01;
  594.                         dat4[7]=(dat4[7]<<1)|0x01;
  595.                         if(sudu1==8){sudu1=0;dat4[0]=0XFC;dat4[1]=0XFC;dat4[2]=0XFC;dat4[3]=0XFC;dat4[4]=0XFC;dat4[5]=0XFC;dat4[6]=0XFC;dat4[7]=0XFC;}
  596.                 }
  597.         }

  598.         if(xg==7)
  599.         {
  600.                 sudu2++;
  601.                 if(sudu2==count)
  602.                 {
  603.                         sudu2=0;
  604.                         sudu1++;
  605.                         if(sudu1==1){dat4[0]=0xfe;dat4[7]=0xfb;}
  606.                         if(sudu1==2){dat4[0]=0xfd;dat4[7]=0xfd;}
  607.                         if(sudu1==3){dat4[0]=0xfb;dat4[7]=0xfe;}
  608.                         if(sudu1==4){dat4[0]=0xf7;dat4[7]=0xff;dat4[6]=0x7f;}
  609.                         if(sudu1==5){dat4[0]=0xef;dat4[6]=0xbf;}
  610.                         if(sudu1==6){dat4[0]=0xdf;dat4[6]=0xdf;}
  611.                         if(sudu1==7){dat4[0]=0xbf;dat4[6]=0xef;}
  612.                         if(sudu1==8){dat4[0]=0x7f;dat4[6]=0xf7;}
  613.                         if(sudu1==9){dat4[0]=0xff;dat4[1]=0xfe;dat4[6]=0xfb;}
  614.                         if(sudu1==10){dat4[1]=0xfd;dat4[6]=0xfd;}
  615.                         if(sudu1==11){dat4[1]=0xfb;dat4[6]=0xfe;}
  616.                         if(sudu1==12){dat4[1]=0xf7;dat4[6]=0xff;dat4[5]=0x7f;}
  617.                         if(sudu1==13){dat4[1]=0xef;dat4[5]=0xbf;}
  618.                         if(sudu1==14){dat4[1]=0xdf;dat4[5]=0xdf;}
  619.                         if(sudu1==15){dat4[1]=0xbf;dat4[5]=0xef;}
  620.                         if(sudu1==16){dat4[1]=0x7f;dat4[5]=0xf7;}
  621.                         if(sudu1==17){dat4[1]=0xff;dat4[2]=0xfe;dat4[5]=0xfb;}
  622.                         if(sudu1==18){dat4[2]=0xfd;dat4[5]=0xfd;}
  623.                         if(sudu1==19){dat4[2]=0xfb;dat4[5]=0xfe;}
  624.                         if(sudu1==20){dat4[2]=0xf7;dat4[5]=0xff;dat4[4]=0x7f;}
  625.                         if(sudu1==21){dat4[2]=0xef;dat4[4]=0xbf;}
  626.                         if(sudu1==22){dat4[2]=0xdf;dat4[4]=0xdf;}
  627.                         if(sudu1==23){dat4[2]=0xbf;dat4[4]=0xef;}
  628.                         if(sudu1==24){dat4[2]=0x7f;dat4[4]=0xf7;}
  629.                         if(sudu1==25){dat4[2]=0xff;dat4[3]=0xfe;dat4[4]=0xfb;}
  630.                         if(sudu1==26){dat4[3]=0xfd;dat4[4]=0xfd;}
  631.                         if(sudu1==27){dat4[3]=0xfb;dat4[4]=0xfe;}
  632.                         if(sudu1==28){dat4[3]=0x77;dat4[4]=0xff;}
  633.                         if(sudu1==29){dat4[3]=0xaf;}
  634.                         if(sudu1==30){dat4[3]=0xff;sudu1=0;if(count==1){bc++;if(bc==10)count=10;}else count--;}
  635.                 }
  636.         }

  637.         if(xg==8)
  638.         {
  639.                 sudu2++;
  640.                 if(sudu2==5)
  641.                 {
  642.                         sudu2=0;
  643.                         sudu1++;
  644.                         if(sudu1==1){dat4[0]=0x55;dat4[1]=0x55;dat4[2]=0x55;dat4[3]=0x55;dat4[4]=0x55;dat4[5]=0x55;dat4[6]=0x55;dat4[7]=0x55;}
  645.                         if(sudu1==2){dat4[0]=0xaa;dat4[1]=0xaa;dat4[2]=0xaa;dat4[3]=0xaa;dat4[4]=0xaa;dat4[5]=0xaa;dat4[6]=0xaa;dat4[7]=0xaa;}
  646.                         if(sudu1==3)sudu1=0;
  647.                 }
  648.         }

  649.         if(xg==9)
  650.         {
  651.                 sudu2++;
  652.                 if(sudu2==10)
  653.                 {
  654.                         sudu2=0;
  655.                         sudu1++;
  656.                         if(sudu1==1){dat4[7]=0xf9;dat4[5]=0xf3;dat4[3]=0xe7;dat4[1]=0xcf;}
  657.                         if(sudu1==2){dat4[7]=0xfe;dat4[6]=0x7f;dat4[5]=0xfc;dat4[3]=0xf9;dat4[1]=0xf3;}
  658.                         if(sudu1==3){dat4[7]=0xff;dat4[6]=0x9f;dat4[5]=0xff;dat4[4]=0x3f;dat4[3]=0xfe;dat4[2]=0x7f;dat4[1]=0xfc;}
  659.                         if(sudu1==4){dat4[6]=0xe7;dat4[4]=0xcf;dat4[3]=0xff;dat4[2]=0x9f;dat4[1]=0xff;dat4[0]=0x3f;}
  660.                         if(sudu1==5){dat4[6]=0xf9;dat4[4]=0xf3;dat4[2]=0xe7;dat4[1]=0xff;dat4[0]=0xcf;}
  661.                         if(sudu1==6){dat4[6]=0xfe;dat4[5]=0x7f;dat4[4]=0xfc;dat4[2]=0xf9;dat4[0]=0xf3;}

  662.                         if(sudu1==7){dat4[6]=0xff;dat4[5]=0x9f;dat4[4]=0xff;dat4[3]=0x3f;dat4[2]=0xfe;dat4[1]=0x7f;dat4[0]=0xfc;}

  663.                         if(sudu1==8){dat4[6]=0xfe;dat4[5]=0x7f;dat4[4]=0xfc;dat4[3]=0xff;dat4[2]=0xf9;dat4[1]=0xff;dat4[0]=0xf3;}
  664.                         if(sudu1==9){dat4[6]=0xf9;dat4[5]=0xff;dat4[4]=0xf3;dat4[2]=0xe7;dat4[0]=0xcf;}
  665.                         if(sudu1==10){dat4[6]=0xe7;dat4[4]=0xcf;dat4[2]=0x9f;dat4[0]=0x3f;}
  666.                         if(sudu1==11){dat4[6]=0x9f;dat4[4]=0x3f;dat4[3]=0xfe;dat4[2]=0x7f;dat4[1]=0xfc;dat4[0]=0xff;}
  667.                         if(sudu1==12){dat4[7]=0xfe;dat4[6]=0x7f;dat4[5]=0xfc;dat4[4]=0xff;dat4[3]=0xf9;dat4[2]=0xff;dat4[1]=0xf3;}
  668.                         if(sudu1==13){dat4[7]=0xf9;dat4[6]=0xff;dat4[5]=0xf3;dat4[3]=0xe7;dat4[1]=0xcf;}
  669.                         if(sudu1==14)sudu1=0;
  670.                 }
  671.         }
  672. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

8#
ID:737771 发表于 2021-6-20 12:00 | 只看该作者
第329行 temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 278.15) * 100 );公式怎么来的
回复

使用道具 举报

7#
ID:844772 发表于 2020-12-29 09:05 | 只看该作者
是个1302作的数码管钟,能bell,能测温度,还有一些装饰性二级管(它们还搞了5个亮灯模式),写的挺清楚了,还要注释哪里呢?
回复

使用道具 举报

6#
ID:420836 发表于 2020-12-29 07:25 | 只看该作者
如果有人可以查看代码并更正错误,那么我们可以根据正确的代码发表注释。
回复

使用道具 举报

5#
ID:155507 发表于 2020-12-28 19:54 | 只看该作者
程序看的迷迷糊糊的,你电路图是啥样的,连在一起看,才能清楚一点

这好像是个时钟程序吧 ,根据数码管和流水灯显示时间,adc是做 NTC 温度等。
回复

使用道具 举报

地板
ID:584814 发表于 2020-12-28 16:08 | 只看该作者
好像是一个用1302作的数码管钟,可以测供电电。
以下是这个产品的说明书,希望你能看懂:
1、安装好电池或接通电源,电源规格未知,请按标准执行;
2、通电后先按左边第一个键,显示正常后可进行下一步操作.......
回复

使用道具 举报

板凳
ID:824490 发表于 2020-12-28 11:18 | 只看该作者
本帖最后由 名字不是重点 于 2020-12-28 11:29 编辑

这代码。。。看的头疼。。。

可以优化的更好点,比如:
                                if(miao==0x01)t_led0[0]=0;
                                if(miao==0x02)t_led0[0]=1;
                                if(miao==0x03)t_led0[0]=2;
                                if(miao==0x04)t_led0[0]=3;
                                if(miao==0x05)t_led0[0]=4;
                                if(miao==0x06)t_led0[0]=5;
                                if(miao==0x07)t_led0[0]=6;
                                if(miao==0x08)t_led0[0]=7;
只要一行:t_led0[0]=miao%16-1;

一般超过3行的并列if,就考虑优化或直接用switch()了。
回复

使用道具 举报

沙发
ID:852300 发表于 2020-12-28 11:05 | 只看该作者
如果能定写一下电路板具体作用好定义!毕竟每个人对变量、标志位的定义代号都不同!
回复

使用道具 举报

楼主
ID:328014 发表于 2020-12-26 18:41 | 只看该作者
这好像是个时钟程序吧,为什么还要adc? adc是做什么用途的?很费解

586行到720行貌似是菜单显示?
搞清楚 if(xg==数字)这个就基本明白了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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