找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6309|回复: 3
打印 上一主题 下一主题
收起左侧

笨鸟先飞之四位十进制数显最大值9999

[复制链接]
跳转到指定楼层
楼主
ID:23261 发表于 2010-4-28 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

/*
这是个四位数10进制数码显示程序,最大可显示9999,因为8位通常最大数只能到255,利用两位最大十进数99,小于3位数255,可以
正常显示.设计想法就利用两对两位数值的递加来实现最大数显9999的值.当然可以参考这个做更多位的.可以做成10进制秒表,不过
我中断停留程序还没学,就这些吧.希望有人能帮忙多提见解.
*/
#include"reg52.h"
#include"intrins.h"
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
uchar temp1,temp2,aa,qian,bai,shi,ge;
void delay(uint z);
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66 ,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar qian,uchar bai,uchar shi,uchar ge);
void init();
void main()

 init(); //中断初始化
 while(1)
/*步骤四,就是段显值递加程序设计,如下*/ 
{
  if(aa==20)  //相当于显数亮停留的时间必须小于一个周期256,否则将数显将一直亮0000,不懂解释的对不对
    {   
   aa=0;  //这个为什么要初值,如果不初值那会显数将很快跳过
   temp1++;
   
   if(temp1==100)
      {
     temp1=0;
     temp2++;
     if(temp2==100)  
      {
       temp2=0;       
      
                }
 
    } 
    
   qian=temp2%100/10;  //取十位位值
   bai=temp2%10;   //取个位位值
   shi=temp1%100/10;
   ge=temp1%10;
    }   
          
  display(qian,bai,shi,ge);  //载入位显位置
 }
}

void delay(uint z) //延时函数
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=30;y>0;y--);
}

void display(uchar qian,uchar bai,uchar shi,uchar ge) //位显位置函数组 
/*步骤一,首先我们应该要做的就是让哪四个位显能显示,如下*/
{
        duan=1;
  P0=table[qian];
  duan=0;
  P0=0xff;
  wei=1;
  P0=0xfe;
  wei=0;
  delay(1);

        duan=1;
  P0=table[bai];
  duan=0;
  P0=0xff;
  wei=1;
  P0=0xfd;
  wei=0;
  delay(1);

  duan=1;
  P0=table[shi];
  duan=0;
  P0=0xff;
  wei=1;
  P0=0xfb;
  wei=0;
  delay(1);

  duan=1;
  P0=table[ge];
  duan=0;
  P0=0xff;
  wei=1;
  P0=0xf7;
  wei=0;
  delay(1);
}

void init()  //步骤二,中断请求初始函数组

 wei=0;
 duan=0;
 temp1=0;
 temp2=0;
 TMOD=0x01;
 TH0=0xfe;
 TL0=0xfe;
 EA=1;
 ET0=1;
 TR0=1; 
}

void timer0() interrupt 1 //步骤三,中断次数,相当于中断时间
{
 TH0=0xfe;
 TL0=0xfe;
 aa++; 
}

[此贴子已经被作者于2010-4-28 16:28:47编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:14556 发表于 2010-8-28 15:37 | 只看该作者

学习学习,谢谢啦

回复

使用道具 举报

板凳
ID:448852 发表于 2018-12-28 21:50 | 只看该作者
赞一个,好。
回复

使用道具 举报

地板
ID:57570 发表于 2019-2-10 01:23 来自手机 | 只看该作者
可以用unsigned int数组的
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表