• 定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”


    各位CSDN的uu们好呀,今天,小雅兰的内容是51单片机中的定时器以及按键控制LED流水灯模式&定时器时钟,下面,让我们进入51单片机的世界吧!!!


    定时器

    按键控制LED流水灯模式

    定时器时钟

    源代码


    定时器

     

     

     

     

     

     

     

     

     


    按键控制LED流水灯模式

    0~65535  每隔1微秒计数加一  总共定时时间65535微秒

    64535离计数器溢出差值1000,所以计时时间为1ms

    Delay.c的内容:

    1. void Delay(unsigned int xms)
    2. {
    3. unsigned char i, j;
    4. while(xms--)
    5. {
    6. i = 2;
    7. j = 239;
    8. do
    9. {
    10. while (--j);
    11. } while (--i);
    12. }
    13. }

    Key.c的内容:

    1. #include
    2. #include "Delay.h"
    3. /**
    4. * @brief 获取独立按键键码
    5. * @param 无
    6. * @retval 按下按键的键码,范围:0~4,无按键按下时返回值为0
    7. */
    8. unsigned char Key()
    9. {
    10. unsigned char KeyNumber=0;
    11. if(P3_1==0)
    12. {
    13. Delay(20);
    14. while(P3_1==0);
    15. Delay(20);
    16. KeyNumber=1;
    17. }
    18. if(P3_0==0)
    19. {
    20. Delay(20);
    21. while(P3_0==0);
    22. Delay(20);
    23. KeyNumber=2;
    24. }
    25. if(P3_2==0)
    26. {
    27. Delay(20);
    28. while(P3_2==0);
    29. Delay(20);
    30. KeyNumber=3;
    31. }
    32. if(P3_3==0)
    33. {
    34. Delay(20);
    35. while(P3_3==0);
    36. Delay(20);
    37. KeyNumber=4;
    38. }
    39. return KeyNumber;
    40. }

    Timer0.c的内容:

    1. #include
    2. /**
    3. * @brief 定时器0初始化,1毫秒@12.000MHz
    4. * @param 无
    5. * @retval 无
    6. */
    7. void Timer0Init(void)
    8. {
    9. TMOD &= 0xF0; //设置定时器模式
    10. TMOD |= 0x01; //设置定时器模式
    11. TL0 = 0x18; //设置定时初值
    12. TH0 = 0xFC; //设置定时初值
    13. TF0 = 0; //清除TF0标志
    14. TR0 = 1; //定时器0开始计时
    15. ET0=1;
    16. EA=1;
    17. PT0=0;
    18. }

    Delay.h的内容:

    1. #ifndef __DELAY_H__
    2. #define __DELAY_H__
    3. void Delay(unsigned int xms);
    4. #endif

    Key.h的内容:

    1. #ifndef __KEY_H__
    2. #define __KEY_H__
    3. unsigned char Key();
    4. #endif

    Timer0.h的内容:

    1. #ifndef __TIMER0_H__
    2. #define __TIMER0_H__
    3. void Timer0Init(void);
    4. #endif

    main.c的内容:

    1. #include
    2. #include "Timer0.h"
    3. #include "Key.h"
    4. #include
    5. unsigned char KeyNum,LEDMode;
    6. void main()
    7. {
    8. P2=0xFE;
    9. Timer0Init();
    10. while(1)
    11. {
    12. KeyNum=Key(); //获取独立按键键码
    13. if(KeyNum) //如果按键按下
    14. {
    15. if(KeyNum==1) //如果K1按键按下
    16. {
    17. LEDMode++; //模式切换
    18. if(LEDMode>=2)LEDMode=0;
    19. }
    20. }
    21. }
    22. }
    23. void Timer0_Routine() interrupt 1
    24. {
    25. static unsigned int T0Count;
    26. TL0 = 0x18; //设置定时初值
    27. TH0 = 0xFC; //设置定时初值
    28. T0Count++; //T0Count计次,对中断频率进行分频
    29. if(T0Count>=500)//分频500次,500ms
    30. {
    31. T0Count=0;
    32. if(LEDMode==0) //模式判断
    33. P2=_crol_(P2,1); //LED输出
    34. if(LEDMode==1)
    35. P2=_cror_(P2,1);
    36. }
    37. }


    定时器时钟

    Delay.c的内容:

    1. void Delay(unsigned int xms)
    2. {
    3. unsigned char i, j;
    4. while(xms--)
    5. {
    6. i = 2;
    7. j = 239;
    8. do
    9. {
    10. while (--j);
    11. } while (--i);
    12. }
    13. }

    Delay.h的内容:

    1. #ifndef __DELAY_H__
    2. #define __DELAY_H__
    3. void Delay(unsigned int xms);
    4. #endif

    LCD1602.c的内容:

    1. #include
    2. //引脚配置:
    3. sbit LCD_RS=P2^6;
    4. sbit LCD_RW=P2^5;
    5. sbit LCD_EN=P2^7;
    6. #define LCD_DataPort P0
    7. //函数定义:
    8. /**
    9. * @brief LCD1602延时函数,12MHz调用可延时1ms
    10. * @param 无
    11. * @retval 无
    12. */
    13. void LCD_Delay()
    14. {
    15. unsigned char i, j;
    16. i = 2;
    17. j = 239;
    18. do
    19. {
    20. while (--j);
    21. } while (--i);
    22. }
    23. /**
    24. * @brief LCD1602写命令
    25. * @param Command 要写入的命令
    26. * @retval 无
    27. */
    28. void LCD_WriteCommand(unsigned char Command)
    29. {
    30. LCD_RS=0;
    31. LCD_RW=0;
    32. LCD_DataPort=Command;
    33. LCD_EN=1;
    34. LCD_Delay();
    35. LCD_EN=0;
    36. LCD_Delay();
    37. }
    38. /**
    39. * @brief LCD1602写数据
    40. * @param Data 要写入的数据
    41. * @retval 无
    42. */
    43. void LCD_WriteData(unsigned char Data)
    44. {
    45. LCD_RS=1;
    46. LCD_RW=0;
    47. LCD_DataPort=Data;
    48. LCD_EN=1;
    49. LCD_Delay();
    50. LCD_EN=0;
    51. LCD_Delay();
    52. }
    53. /**
    54. * @brief LCD1602设置光标位置
    55. * @param Line 行位置,范围:1~2
    56. * @param Column 列位置,范围:1~16
    57. * @retval 无
    58. */
    59. void LCD_SetCursor(unsigned char Line,unsigned char Column)
    60. {
    61. if(Line==1)
    62. {
    63. LCD_WriteCommand(0x80|(Column-1));
    64. }
    65. else if(Line==2)
    66. {
    67. LCD_WriteCommand(0x80|(Column-1+0x40));
    68. }
    69. }
    70. /**
    71. * @brief LCD1602初始化函数
    72. * @param 无
    73. * @retval 无
    74. */
    75. void LCD_Init()
    76. {
    77. LCD_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵
    78. LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关
    79. LCD_WriteCommand(0x06);//数据读写操作后,光标自动加一,画面不动
    80. LCD_WriteCommand(0x01);//光标复位,清屏
    81. }
    82. /**
    83. * @brief 在LCD1602指定位置上显示一个字符
    84. * @param Line 行位置,范围:1~2
    85. * @param Column 列位置,范围:1~16
    86. * @param Char 要显示的字符
    87. * @retval 无
    88. */
    89. void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char)
    90. {
    91. LCD_SetCursor(Line,Column);
    92. LCD_WriteData(Char);
    93. }
    94. /**
    95. * @brief 在LCD1602指定位置开始显示所给字符串
    96. * @param Line 起始行位置,范围:1~2
    97. * @param Column 起始列位置,范围:1~16
    98. * @param String 要显示的字符串
    99. * @retval 无
    100. */
    101. void LCD_ShowString(unsigned char Line,unsigned char Column,char *String)
    102. {
    103. unsigned char i;
    104. LCD_SetCursor(Line,Column);
    105. for(i=0;String[i]!='\0';i++)
    106. {
    107. LCD_WriteData(String[i]);
    108. }
    109. }
    110. /**
    111. * @brief 返回值=X的Y次方
    112. */
    113. int LCD_Pow(int X,int Y)
    114. {
    115. unsigned char i;
    116. int Result=1;
    117. for(i=0;i
    118. {
    119. Result*=X;
    120. }
    121. return Result;
    122. }
    123. /**
    124. * @brief 在LCD1602指定位置开始显示所给数字
    125. * @param Line 起始行位置,范围:1~2
    126. * @param Column 起始列位置,范围:1~16
    127. * @param Number 要显示的数字,范围:0~65535
    128. * @param Length 要显示数字的长度,范围:1~5
    129. * @retval 无
    130. */
    131. void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
    132. {
    133. unsigned char i;
    134. LCD_SetCursor(Line,Column);
    135. for(i=Length;i>0;i--)
    136. {
    137. LCD_WriteData(Number/LCD_Pow(10,i-1)%10+'0');
    138. }
    139. }
    140. /**
    141. * @brief 在LCD1602指定位置开始以有符号十进制显示所给数字
    142. * @param Line 起始行位置,范围:1~2
    143. * @param Column 起始列位置,范围:1~16
    144. * @param Number 要显示的数字,范围:-32768~32767
    145. * @param Length 要显示数字的长度,范围:1~5
    146. * @retval 无
    147. */
    148. void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length)
    149. {
    150. unsigned char i;
    151. unsigned int Number1;
    152. LCD_SetCursor(Line,Column);
    153. if(Number>=0)
    154. {
    155. LCD_WriteData('+');
    156. Number1=Number;
    157. }
    158. else
    159. {
    160. LCD_WriteData('-');
    161. Number1=-Number;
    162. }
    163. for(i=Length;i>0;i--)
    164. {
    165. LCD_WriteData(Number1/LCD_Pow(10,i-1)%10+'0');
    166. }
    167. }
    168. /**
    169. * @brief 在LCD1602指定位置开始以十六进制显示所给数字
    170. * @param Line 起始行位置,范围:1~2
    171. * @param Column 起始列位置,范围:1~16
    172. * @param Number 要显示的数字,范围:0~0xFFFF
    173. * @param Length 要显示数字的长度,范围:1~4
    174. * @retval 无
    175. */
    176. void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
    177. {
    178. unsigned char i,SingleNumber;
    179. LCD_SetCursor(Line,Column);
    180. for(i=Length;i>0;i--)
    181. {
    182. SingleNumber=Number/LCD_Pow(16,i-1)%16;
    183. if(SingleNumber<10)
    184. {
    185. LCD_WriteData(SingleNumber+'0');
    186. }
    187. else
    188. {
    189. LCD_WriteData(SingleNumber-10+'A');
    190. }
    191. }
    192. }
    193. /**
    194. * @brief 在LCD1602指定位置开始以二进制显示所给数字
    195. * @param Line 起始行位置,范围:1~2
    196. * @param Column 起始列位置,范围:1~16
    197. * @param Number 要显示的数字,范围:0~1111 1111 1111 1111
    198. * @param Length 要显示数字的长度,范围:1~16
    199. * @retval 无
    200. */
    201. void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
    202. {
    203. unsigned char i;
    204. LCD_SetCursor(Line,Column);
    205. for(i=Length;i>0;i--)
    206. {
    207. LCD_WriteData(Number/LCD_Pow(2,i-1)%2+'0');
    208. }
    209. }

    LCD1602.h的内容:

    1. #ifndef __LCD1602_H__
    2. #define __LCD1602_H__
    3. //用户调用函数:
    4. void LCD_Init();
    5. void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char);
    6. void LCD_ShowString(unsigned char Line,unsigned char Column,char *String);
    7. void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
    8. void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length);
    9. void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
    10. void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
    11. #endif

    Timer0.c的内容:

    1. #include
    2. /**
    3. * @brief 定时器0初始化,1毫秒@12.000MHz
    4. * @param 无
    5. * @retval 无
    6. */
    7. void Timer0Init(void)
    8. {
    9. TMOD &= 0xF0; //设置定时器模式
    10. TMOD |= 0x01; //设置定时器模式
    11. TL0 = 0x18; //设置定时初值
    12. TH0 = 0xFC; //设置定时初值
    13. TF0 = 0; //清除TF0标志
    14. TR0 = 1; //定时器0开始计时
    15. ET0=1;
    16. EA=1;
    17. PT0=0;
    18. }

    Timer0.h的内容:

    1. #ifndef __TIMER0_H__
    2. #define __TIMER0_H__
    3. void Timer0Init(void);
    4. #endif

    main.c的内容:

    1. #include
    2. #include "Delay.h"
    3. #include "LCD1602.h"
    4. #include "Timer0.h"
    5. unsigned char Sec=55,Min=59,Hour=23;
    6. void main()
    7. {
    8. LCD_Init();
    9. Timer0Init();
    10. LCD_ShowString(1,1,"Clock:"); //上电显示静态字符串
    11. LCD_ShowString(2,1," : :");
    12. while(1)
    13. {
    14. LCD_ShowNum(2,1,Hour,2); //显示时分秒
    15. LCD_ShowNum(2,4,Min,2);
    16. LCD_ShowNum(2,7,Sec,2);
    17. }
    18. }
    19. void Timer0_Routine() interrupt 1
    20. {
    21. static unsigned int T0Count;
    22. TL0 = 0x18; //设置定时初值
    23. TH0 = 0xFC; //设置定时初值
    24. T0Count++;
    25. if(T0Count>=1000) //定时器分频,1s
    26. {
    27. T0Count=0;
    28. Sec++; //1秒到,Sec自增
    29. if(Sec>=60)
    30. {
    31. Sec=0; //60秒到,Sec清0,Min自增
    32. Min++;
    33. if(Min>=60)
    34. {
    35. Min=0; //60分钟到,Min清0,Hour自增
    36. Hour++;
    37. if(Hour>=24)
    38. {
    39. Hour=0; //24小时到,Hour清0
    40. }
    41. }
    42. }
    43. }
    44. }


     源代码

    定时器时钟

    main.c的内容:

    #include
    #include "Delay.h"
    #include "LCD1602.h"
    #include "Timer0.h"

    unsigned char Sec=55,Min=59,Hour=23;

    void main()
    {
        LCD_Init();
        Timer0Init();
        
        LCD_ShowString(1,1,"Clock:");    //上电显示静态字符串
        LCD_ShowString(2,1,"  :  :");
        
        while(1)
        {
            LCD_ShowNum(2,1,Hour,2);    //显示时分秒
            LCD_ShowNum(2,4,Min,2);
            LCD_ShowNum(2,7,Sec,2);
        }
    }

    void Timer0_Routine() interrupt 1
    {
        static unsigned int T0Count;
        TL0 = 0x18;        //设置定时初值
        TH0 = 0xFC;        //设置定时初值
        T0Count++;
        if(T0Count>=1000)    //定时器分频,1s
        {
            T0Count=0;
            Sec++;            //1秒到,Sec自增
            if(Sec>=60)
            {
                Sec=0;        //60秒到,Sec清0,Min自增
                Min++;
                if(Min>=60)
                {
                    Min=0;    //60分钟到,Min清0,Hour自增
                    Hour++;
                    if(Hour>=24)
                    {
                        Hour=0;    //24小时到,Hour清0
                    }
                }
            }
        }
    }

     

    Delay.c的内容:

    void Delay(unsigned int xms)
    {
        unsigned char i, j;
        while(xms--)
        {
            i = 2;
            j = 239;
            do
            {
                while (--j);
            } while (--i);
        }
    }

    Timer0.c的内容:

    #include

    /**
      * @brief  定时器0初始化,1毫秒@12.000MHz
      * @param  无
      * @retval 无
      */
    void Timer0Init(void)
    {
        TMOD &= 0xF0;        //设置定时器模式
        TMOD |= 0x01;        //设置定时器模式
        TL0 = 0x18;        //设置定时初值
        TH0 = 0xFC;        //设置定时初值
        TF0 = 0;        //清除TF0标志
        TR0 = 1;        //定时器0开始计时
        ET0=1;
        EA=1;
        PT0=0;
    }

     

    LCD1602.c的内容:

    #include

    //引脚配置:
    sbit LCD_RS=P2^6;
    sbit LCD_RW=P2^5;
    sbit LCD_EN=P2^7;
    #define LCD_DataPort P0

    //函数定义:
    /**
      * @brief  LCD1602延时函数,12MHz调用可延时1ms
      * @param  无
      * @retval 无
      */
    void LCD_Delay()
    {
        unsigned char i, j;

        i = 2;
        j = 239;
        do
        {
            while (--j);
        } while (--i);
    }

    /**
      * @brief  LCD1602写命令
      * @param  Command 要写入的命令
      * @retval 无
      */
    void LCD_WriteCommand(unsigned char Command)
    {
        LCD_RS=0;
        LCD_RW=0;
        LCD_DataPort=Command;
        LCD_EN=1;
        LCD_Delay();
        LCD_EN=0;
        LCD_Delay();
    }

    /**
      * @brief  LCD1602写数据
      * @param  Data 要写入的数据
      * @retval 无
      */
    void LCD_WriteData(unsigned char Data)
    {
        LCD_RS=1;
        LCD_RW=0;
        LCD_DataPort=Data;
        LCD_EN=1;
        LCD_Delay();
        LCD_EN=0;
        LCD_Delay();
    }

    /**
      * @brief  LCD1602设置光标位置
      * @param  Line 行位置,范围:1~2
      * @param  Column 列位置,范围:1~16
      * @retval 无
      */
    void LCD_SetCursor(unsigned char Line,unsigned char Column)
    {
        if(Line==1)
        {
            LCD_WriteCommand(0x80|(Column-1));
        }
        else if(Line==2)
        {
            LCD_WriteCommand(0x80|(Column-1+0x40));
        }
    }

    /**
      * @brief  LCD1602初始化函数
      * @param  无
      * @retval 无
      */
    void LCD_Init()
    {
        LCD_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵
        LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关
        LCD_WriteCommand(0x06);//数据读写操作后,光标自动加一,画面不动
        LCD_WriteCommand(0x01);//光标复位,清屏
    }

    /**
      * @brief  在LCD1602指定位置上显示一个字符
      * @param  Line 行位置,范围:1~2
      * @param  Column 列位置,范围:1~16
      * @param  Char 要显示的字符
      * @retval 无
      */
    void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char)
    {
        LCD_SetCursor(Line,Column);
        LCD_WriteData(Char);
    }

    /**
      * @brief  在LCD1602指定位置开始显示所给字符串
      * @param  Line 起始行位置,范围:1~2
      * @param  Column 起始列位置,范围:1~16
      * @param  String 要显示的字符串
      * @retval 无
      */
    void LCD_ShowString(unsigned char Line,unsigned char Column,char *String)
    {
        unsigned char i;
        LCD_SetCursor(Line,Column);
        for(i=0;String[i]!='\0';i++)
        {
            LCD_WriteData(String[i]);
        }
    }

    /**
      * @brief  返回值=X的Y次方
      */
    int LCD_Pow(int X,int Y)
    {
        unsigned char i;
        int Result=1;
        for(i=0;i     {
            Result*=X;
        }
        return Result;
    }

    /**
      * @brief  在LCD1602指定位置开始显示所给数字
      * @param  Line 起始行位置,范围:1~2
      * @param  Column 起始列位置,范围:1~16
      * @param  Number 要显示的数字,范围:0~65535
      * @param  Length 要显示数字的长度,范围:1~5
      * @retval 无
      */
    void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
    {
        unsigned char i;
        LCD_SetCursor(Line,Column);
        for(i=Length;i>0;i--)
        {
            LCD_WriteData(Number/LCD_Pow(10,i-1)%10+'0');
        }
    }

    /**
      * @brief  在LCD1602指定位置开始以有符号十进制显示所给数字
      * @param  Line 起始行位置,范围:1~2
      * @param  Column 起始列位置,范围:1~16
      * @param  Number 要显示的数字,范围:-32768~32767
      * @param  Length 要显示数字的长度,范围:1~5
      * @retval 无
      */
    void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length)
    {
        unsigned char i;
        unsigned int Number1;
        LCD_SetCursor(Line,Column);
        if(Number>=0)
        {
            LCD_WriteData('+');
            Number1=Number;
        }
        else
        {
            LCD_WriteData('-');
            Number1=-Number;
        }
        for(i=Length;i>0;i--)
        {
            LCD_WriteData(Number1/LCD_Pow(10,i-1)%10+'0');
        }
    }

    /**
      * @brief  在LCD1602指定位置开始以十六进制显示所给数字
      * @param  Line 起始行位置,范围:1~2
      * @param  Column 起始列位置,范围:1~16
      * @param  Number 要显示的数字,范围:0~0xFFFF
      * @param  Length 要显示数字的长度,范围:1~4
      * @retval 无
      */
    void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
    {
        unsigned char i,SingleNumber;
        LCD_SetCursor(Line,Column);
        for(i=Length;i>0;i--)
        {
            SingleNumber=Number/LCD_Pow(16,i-1)%16;
            if(SingleNumber<10)
            {
                LCD_WriteData(SingleNumber+'0');
            }
            else
            {
                LCD_WriteData(SingleNumber-10+'A');
            }
        }
    }

    /**
      * @brief  在LCD1602指定位置开始以二进制显示所给数字
      * @param  Line 起始行位置,范围:1~2
      * @param  Column 起始列位置,范围:1~16
      * @param  Number 要显示的数字,范围:0~1111 1111 1111 1111
      * @param  Length 要显示数字的长度,范围:1~16
      * @retval 无
      */
    void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
    {
        unsigned char i;
        LCD_SetCursor(Line,Column);
        for(i=Length;i>0;i--)
        {
            LCD_WriteData(Number/LCD_Pow(2,i-1)%2+'0');
        }
    }

     

     

    LCD1602.h的内容:

    #ifndef __LCD1602_H__
    #define __LCD1602_H__

    //用户调用函数:
    void LCD_Init();
    void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char);
    void LCD_ShowString(unsigned char Line,unsigned char Column,char *String);
    void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
    void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length);
    void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
    void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);

    #endif

     

    Delay.h的内容:

    #ifndef __DELAY_H__
    #define __DELAY_H__

    void Delay(unsigned int xms);

    #endif
     

    Timer0.h的内容:

    #ifndef __TIMER0_H__
    #define __TIMER0_H__

    void Timer0Init(void);

    #endif


    好啦,小雅兰今天的内容就到这里啦,还要继续加油呀!!!

     

  • 相关阅读:
    Servlet开发-通过代码案例熟悉HttpServletRequest类
    13.3 GAS与属性
    【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(上)
    MySQL 快速入门之第二章 数据类型、建表以及约束
    Windows 11 22H2 (2022 年更新) 发布,简体中文版、英文版下载
    接口自动化测试框架【reudom】
    断言(assert)的用法
    深度学习求解微分方程系列四:一种基于自适应激活函数的PINN求解方法—burger方程逆问题
    第7 部分 HDLC 和PPP
    服务器证书是网络信息安全的基础
  • 原文地址:https://blog.csdn.net/weixin_74957752/article/details/133546055