当前位置:   article > 正文

【AT89C52单片机项目】99累减器_89c52rc的单片机怎么从99减到1

89c52rc的单片机怎么从99减到1

  • 实验目的

掌握STC89C52RC单片机最小系统构成,最小系统由单片机芯片、时钟电路及复位电路组成。

掌握STC89C52RC单片机开发板与数码管的原理图、控制方式。

掌握对单片机I/O的复杂控制

熟练掌握C语言的设计和调试方法。

  • 实验仪器

一套STC89C52RC开发板套件,包括STC89C52RC开发板,以及USB烧录线。

  • 设计要求

使用STC89C52RC的I/O控制、调配数码管,使得数码管能够在相应的位置显示出99累减。

  • 实验原理

通过观察原理图使用I/O口进行数据的控制,通过段码与位码分别控制数码管的数字、以及控制哪个数码管进行数字显示,最后通过循环函数实现99累减的功能,在预计的数码管上显示。

  • 实验流程
  1. 根据教材进行学习数码管显示控制,本项目单片机为八段共阴数码管,段码为{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f},分别表示0~9
  2. 根据教材进行学习定时器相关知识,学习教材上的99累减代码。
  3. 将代码烧录进入单片机
  • 实验结果

单片机数码管上数字从99开始递减直至00。

  • 代码
  1. #include <reg52.h>
  2. #define DataPort P0 //定义数据端口
  3. sbit LATCH1 = P2 ^ 6; //定义锁存使能端口 段锁存
  4. sbit LATCH2 = P2 ^ 7; // 定义锁存使能端口 位锁存
  5. unsigned char code DuanMa[] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管段码表
  6. unsigned char code WeiMa[] = { 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位码表
  7. unsigned char TempData[8]; //用来存放数码管数据
  8. void Delay(unsigned int t); //延迟函数
  9. void Display(unsigned char FirstBit, unsigned char Num); //数码管显示函数
  10. main()
  11. {
  12. unsigned char num = 99; //设置初始数字为99
  13. unsigned int j = 0; //设置初始变量j用于计数,与累减器数字变化的时间相关
  14. while (1)
  15. {
  16. j++;
  17. if (j == 500) //这个数字与数码管数字变化时间有关
  18. {
  19. j = 0;
  20. if (num > 0)
  21. {
  22. num--; //控制累减器数字递减
  23. }
  24. else
  25. {
  26. num = 99; //当数字为00时,数字重置为99
  27. }
  28. }
  29. TempData[0] = DuanMa[num / 10]; //取十位数
  30. TempData[1] = DuanMa[num % 10]; //取个位数
  31. Display(2, 2);
  32. }
  33. }
  34. void Delay(unsigned int t)
  35. {
  36. while (t--)
  37. {
  38. }
  39. }
  40. void Display(unsigned char FirstBit, unsigned char Num)
  41. {
  42. unsigned char i;
  43. for (i = 0; i < Num; i++)
  44. {
  45. DataPort = 0; //清空数据,防止有交替重影
  46. LATCH1 = 1;
  47. LATCH1 = 0;
  48. DataPort = WeiMa[i + FirstBit]; //取位码
  49. LATCH2 = 1; //位锁存
  50. LATCH2 = 0;
  51. DataPort = TempData[i]; //取显示数据,段码
  52. LATCH1 = 1; //段锁存
  53. LATCH1 = 0;
  54. Delay(200); //扫描间隙延时,时间太长会闪烁
  55. //太短会造成重影
  56. }
  57. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/495116
推荐阅读
相关标签
  

闽ICP备14008679号