• #循循渐进学51单片机#定时器与数码管#not.4


    1、熟练掌握单片机定时器的原理和应用方法。

    1)时钟周期:单片机时序中的最小单位,具体计算的方法就是时钟源分之一。

    2)机器周期:我们的单片机完成一个操作的最短时间。

    3)定时器:打开定时器“储存寄存器”的值经过一个机器周期自动加一,也就是说,机器周期是一个计数周期。

    4)

    5)

    6)

    7)

    2,代码实现

    1. #include <REGX52.H>
    2. sbit add0 = P1^0;
    3. sbit add1 = P1^1;
    4. sbit add2 = P1^2;
    5. sbit add3 = P1^3;
    6. sbit ENLED = P1^4;
    7. unsigned int cnt = 1,i ,a = 0,arr = 1;
    8. void main()
    9. {
    10. ENLED = 0;
    11. add3 = 1;
    12. add0 = 0;
    13. add1 = 1;
    14. add2 = 1;
    15. TMOD = 0x01;//开启总开关
    16. TH0 = 0xfc;//置高位计值
    17. TL0 = 0x00;//置低位开始计值
    18. TR0 = 1;//计时器开始计时
    19. while(1)
    20. {
    21. if(1 == TF0)//判断是否进制
    22. {
    23. TF0 = 0;
    24. TH0 = 0xfc;
    25. TL0 = 0x00;
    26. if(100 > cnt)
    27. {
    28. cnt = 0;
    29. hans();
    30. }
    31. }


    3、使用定时器来实现延时,完成左右移动的流水灯的程序。

    1. #include <REGX52.H>
    2. sbit add0 = P1^0;
    3. sbit add1 = P1^1;
    4. sbit add2 = P1^2;
    5. sbit add3 = P1^3;
    6. sbit ENLED = P1^4;
    7. unsigned int cnt = 0,arr3,a = 0,arr = 0,arr2 = 0;
    8. void main()
    9. {
    10. ENLED = 0;
    11. add3 = 1;
    12. add0 = 0;
    13. add1 = 1;
    14. add2 = 1;
    15. TMOD = 0x01;
    16. TH0 = 0xb8;
    17. TL0 = 0x00;
    18. TR0 = 1;
    19. while(1)
    20. {
    21. if(1 == TF0)
    22. {
    23. TF0 = 0;
    24. TH0 = 0xb8;
    25. TL0 = 0x00;
    26. arr2++;
    27. arr++;
    28. if(50 == arr2)
    29. {
    30. arr2 = 0;
    31. P0 = ~(0x80 >> cnt);
    32. cnt++;
    33. }
    34. if(cnt >= 8)
    35. {
    36. cnt = 0;
    37. arr2 = 51;
    38. }
    39. if(arr == 400)
    40. {
    41. P0 = ~(0x01 << a);
    42. a++;
    43. arr = 350;
    44. }
    45. } if(a >= 8)
    46. {
    47. arr2 = 0;
    48. cnt = 0;
    49. a = 0;
    50. arr = 0;
    51. }
    52. }
    53. }


    4、了解数码管的原理,掌握数码管的真值表的计算方法。


    5、编程实现数码管静态显示秒表的倒计时。

    1. #include <REGX52.H>
    2. sbit add0 = P1^0;
    3. sbit add1 = P1^1;
    4. sbit add2 = P1^2;
    5. sbit add3 = P1^3;
    6. sbit ENLED = P1^4;
    7. unsigned char code LedChar[] = {
    8. 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    9. 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
    10. };
    11. unsigned char i = 0x0f,a = 0;
    12. void main()
    13. {
    14. ENLED = 0;
    15. add3 = 1;
    16. add0 = 0;
    17. add1 = 0;
    18. add2 = 0;
    19. TMOD = 0x01;
    20. TH0 = 0xb8;
    21. TL0 = 0x00;
    22. TR0 = 1;
    23. while(1)
    24. {
    25. if(1 == TF0)
    26. {
    27. TF0 = 0;
    28. TH0 = 0xb8;
    29. TL0 = 0x00;
    30. a++;
    31. if(a >= 50)
    32. {
    33. a = 0;
    34. P0 = LedChar[i];
    35. if(i > 0)
    36. {
    37. i--;
    38. }
    39. else
    40. {
    41. i = 0x0f;
    42. }
    43. }
    44. }
    45. }
    46. }

  • 相关阅读:
    你能分清Java的关键字和标识符吗?
    助力商家高效接单发货,震坤行物流服务再升级
    浅谈数据和人工智能项目的管理
    Node.js在Python中的应用实例解析
    Java 面试题 —— TCP 粘包、拆包问题
    Python 用相对名称来导入包中的子模块
    无参数构造器
    基于Java毕业设计中药分类管理系统源码+系统+mysql+lw文档+部署软件
    指令系统、流水线
    P1352 没有上司的舞会
  • 原文地址:https://blog.csdn.net/2301_77479336/article/details/132839583