我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 648|回复: 0

7段数码管驱动程序

[复制链接]

该用户从未签到

3

主题

2

回帖

7

积分

一级逆天

积分
7

社区居民

QQ
发表于 2015-4-30 09:56:21 | 显示全部楼层 |阅读模式
#include <reg52.h>


code char seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void delay(unsigned int z)
{
    while(z--);   
}
void single_number()
{
    char i;        
    P0 = seg;
    P2 = ~(1 << 0);
    i++;
    if(i == 10){
        i=0;
    }
   
//    delay(60000);
//    delay(60000);
//    delay(60000);
}
/*
void show_number(unsigned int n)
{
    char i;
    char a[4];
    a[0] = n/1000;
    a[1] = n%1000/100;
    a[2] = n%1000%100/10;
    a[3] = n%10;
    for(i=0;i<4;i++)
    {
        P0 = seg[a];
        P2 = ~(1 << i);
        delay(1000);
        P2 = 0xff;
    }
}
*/
void show_number(unsigned int n)
{//改进版
    char i,j;
    char a[4];
    j=0;
   
/*
aa: a[j] = n%10;
    n = n / 10;
    j++;
    if(n != 0)
    {
        goto aa;
    }
*/
    do{
        a[j++] = n%10;        
    }while(n/=10);

    for(i=0;i<j;i++)
    {
        P0 = seg[a];
        P2 = ~(1 << (3-i));//~(0x80 >> j);
        delay(600);
        P2 = 0xff;
    }
}





void main()
{    unsigned int i,j;
    while(1)
    {
    //    single_number();
        show_number(j);
    //    delay(60000);
        i++;
        if(i == 3)
        {
            i=0;
            j++;
            if(j == 9999)j=0;
        }
    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表