51静态数码管

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**********************51单片机学习例程************************
*  平台:Keil U4 + STC89C52
*  名称: 静态数码管试验流动显示0-F
*  编写:Tony
*  日期:2022-2-2
*   QQ : 674749794
*  晶体:12MHZ
*    变更记录:无
******************************************************************/
#include<reg51.h>
 
//--定义你要使用的IO口--//
#define GPIO_DIG P0
 
//--声明全局函数--//
void Delay10ms(unsigned int c);   //误差 0us
 
//--定义全局变量--//
//RAM,ROM
unsigned char code DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
                                 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};//共阴极数码管的段选code
  
//0~F段码
//0:0011_1111
/*******************************************************************************
* 函 数 名         : main
* 函数功能         : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void main(void)
{
    unsigned char i = 0;
 
    while(1)
    {
        GPIO_DIG = ~DIG_CODE[i]; //共阳极数码管
        i++;
        if(i == 16)
        {
            i = 0;
        }
        Delay10ms(50);
    }              
}
 
/*******************************************************************************
* 函 数 名         : Delay10ms
* 函数功能         : 延时函数,延时10ms
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
 
void Delay10ms(unsigned int c)   //误差 0us
{
    unsigned char a, b;
 
    //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
    for (;c>0;c--)
    {
        for (b=38;b>0;b--)
        {
            for (a=130;a>0;a--);
        }         
    }      
}

  

posted @   xiaoberber  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示