| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:求C语言大师进来指点。
只看楼主 加入收藏
busterking
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-5-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
求C语言大师进来指点。
文件名  :  数码管显示.c
* 描述    :  该程序为数码管静态显示程序。
             两位数码管进行自加显示            
*********************************
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int

//数码管的段码编码
uchar table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

/*****************************************
名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
*********************************************
void Delay_1ms(uint i)//1ms延时
{
    uchar x,j;
    for(j=0;j<i;j++)
    for(x=0;x<=148;x++);   
}

/*********************************
名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
*********************************
void main()
{
    uint i = 0,j;
    while(1)
    {
        for(j=0;j<100;j++)
        {
            P0 = 0;                             //消隐
            P2 = 6;                              //第6位数码管显示
            P0 = table[(i / 10)%10];         //在这里取 i 的个位数
            Delay_1ms(3);                     //延时3毫秒后显示下一个数
            P0 = 0;                              //消隐
            P2 = 7;                              //第7位数码管显示
            P0 = table[i % 10];                 //在这里取 i 的个位数
            Delay_1ms(3);                     //延时3毫秒后显示下一个数   
        }
        i++;                    
    }
}

主程序里面的for循环看不懂 不知道这个出程序是怎么一步一步执行的。。谁能告诉一下。
搜索更多相关主题的帖子: 数码管 延时 include C语言 子程序 
2013-05-21 09:06
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:7 
for循环的延时600ms左右,也就是0.6S显示一个数字。第一次while循环 P0 = table[(i / 10)%10]; 是T[0] 也就是6号管显示0,P0 = table[i % 10];也是T[0]7号管显示0;
第二次wihile循环I=1;P0 = table[(i / 10)%10];是T[0]显示0。P0 = table[i % 10]是T[1]就是显示1.这样一直循环下去

C++菜鸟
2013-05-21 15:32
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:7 
void main()
 {
     uint i = 0,j;
     while(1)
     {
         for(j=0;j<100;j++)                                 
         {
             P0 = 0;                             //消隐
            P2 = 6;                              //第6位数码管显示
            P0 = table[(i / 10)%10];         //在这里取 i 的个位数
            Delay_1ms(3);                     //延时3毫秒后显示下一个数
            P0 = 0;                              //消隐
            P2 = 7;                              //第7位数码管显示
            P0 = table[i % 10];                 //在这里取 i 的个位数
            Delay_1ms(3);                     //延时3毫秒后显示下一个数   
         }
         i++;                    
     }
 }
for循环一步步执行,执行完一次才开始执行下一次,比如你那里面调用别的函数,那就执行,把函数体里面的执行完,然后进行下一次

Maybe
2013-05-21 16:44
小xiong
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:388
专家分:1722
注 册:2013-2-8
收藏
得分:7 
你这个是两数码管显示0,显示100次,再i++.7号显示1,100次,6显示0,100次,……
2013-05-21 17:16
快速回复:求C语言大师进来指点。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015830 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved