2.数码管动态扫描 随意显示9999以内的数

时间:2023-01-27 19:36:47
  1. /*
  2.  ***********************************************************************************************
  3.  * Cool51
  4.  * 51开发板例程
  5.  *
  6.  *
  7.  * 文件名称:“main.c”
  8.  * 摘 要:数码管扫描显示程序,随意显示一个9999以内数据大小
  9.  * 作 者:Rays_ele
  10.  *
  11.  * 当前版本:1.0
  12.  * 完成日期:2011/04/27
  13.  * 版权所有:Rays - Copyright (C) 2011
  14.  *
  15.  ***********************************************************************************************
  16.  */

  17. /*包含必要的头文件*/
  18. #include<reg52.h>//开发51单片机必须包含51单片机的头文件,该文件定义了51单片机内部寄存器的地址
  19. /*常用宏定义*/
  20. #define uchar unsigned char
  21. #define uint unsigned int
  22. /*程序接口定义*/
  23. //数码管的段码在原理图上已经和P0口相接,即P0.0对应数码管的a段,P0.1对于b段,依此类推,简单表示如下
  24. #define LED P1
  25. //LED_a-------P0.0
  26. //LED_b-------P0.1
  27. //LED_c-------P0.2
  28. //LED_d-------P0.3
  29. //LED_e-------P0.4
  30. //LED_f-------P0.5
  31. //LED_g-------P0.6
  32. //LED_s-------P0.7
  33. //下面是数码管的位定义,也就是数码管的公共端,具体电路讲解见Cool51原理图,该引脚为低电平即选通该位数码管
  34. sbit LED_1=P2^0;//LED_1-------P2.0
  35. sbit LED_2=P2^1;//LED_2-------P2.1
  36. sbit LED_3=P2^2;//LED_3-------P2.2
  37. sbit LED_4=P2^3;//LED_4-------P2.3

  38. /*全局变量定义部分*/
  39. unsigned char code LED_Code[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};//共阳码
  40. // 0 1 2 3 4 5 6 7 8 9 灭
  41. /*
  42. +---------------------------------------------------------------------------------------+
  43. |函数名称: Delay_ms |
  44. |---------------------------------------------------------------------------------------|
  45. |函数原型: void Delay_ms(uint ms) |
  46. |函数功能: 普通延时函数 |
  47. |入口参数: 延时时间,单位毫秒 |
  48. +---------------------------------------------------------------------------------------+
  49. */
  50. void Delay_ms(uint ms)
  51. {
  52.    uchar t;
  53.    while(ms--)
  54.    {
  55.      for(t = 0; t < 120; t++);
  56.    }
  57. }
  58. /*
  59. +---------------------------------------------------------------------------------------+
  60. |函数名称: ShuMaGuan |
  61. |---------------------------------------------------------------------------------------|
  62. |函数原型: void ShuMaGuan(uint dat) |
  63. |函数功能: 数码管扫描显示程序,随意显示一个9999以内数据大小 |
  64. |入口参数: 要显示的0000-9999之间的数据,数据是多少,就显示多少 |
  65. +---------------------------------------------------------------------------------------+
  66. */
  67. void ShuMaGuan(uint dat)
  68. {
  69.    LED=LED_Code[dat/1000];//将dat的千位取出来,用千位数来索引LED_Code的对应段码,再将段码送到对应段码口上
  70.    LED_1=0;     //段码送出去后,再选通千位数码管的公共端,此时对应千位数码管会显示
  71.    Delay_ms(5);             //将显示延时一段时间,视觉暂留
  72.    LED_1=1;
  73.    LED=LED_Code[dat%1000/100];
  74.    LED_2=0;
  75.    Delay_ms(5);
  76.    LED_2=1;
  77.    LED=LED_Code[dat%100/10];
  78.    LED_3=0;
  79.    Delay_ms(5);
  80.    LED_3=1;
  81.    LED=LED_Code[dat%10];
  82.    LED_4=0;
  83.    Delay_ms(5);
  84.    LED_4=1;

  85. }

  86. /*
  87. +---------------------------------------------------------------------------------------+
  88. |函数名称: main |
  89. |---------------------------------------------------------------------------------------|
  90. |函数原型: void main(void) |
  91. |函数功能: 数码管扫描显示程序,随意显示一个9999以内数据大小 |
  92. |入口参数:|
  93. +---------------------------------------------------------------------------------------+
  94. */
  95. void main(void)
  96. {
  97.    while(1)
  98.    {
  99.    ShuMaGuan(5674);
  100.    }
  101. }
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(141) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议