java 位运算取8位_数码管8位显示时分秒的程序

#include

typedef signed char int8;         //8位有符号字符型

typedef signed int int16;         //16位有符号整型

typedef signed long int32;        //32位有符号长整型

typedef unsigned char uint8;      //8位无符号字符型

typedef unsigned int uint16;      //16位无符号整型

typedef unsigned long uint32;     //32位无符号长整型

sbit duanxuan = P2^5;            //数码管驱动芯片74HC573 段选 

sbit weixuan  = P2^6;            //数码管驱动芯片74HC573 位选

void delay1(uint16 x_ms);

uint8 code tab1[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};  //共阳数码管编码表

uint8 code tab2[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};       //定义八位数码管位选数据数组

void delay();                      //延时函数声明

unsigned char second;     // 秒计数变量

unsigned char minute;    //分钟计数变量

unsigned char hour;      // 小时计数变量

  void main() 

  {

uint8 time;

time=0;

second=01;

minute=59;

hour=23;

time++;

while(1)

{

  time++;

if(time>=60)

      {

              time=0;    //中断计数变量清0

          second++;    //秒计数变量加1

     }

         if(second>=60)

            {

           second=0;

             minute++;

             }

                if(minute>=60)

                 {

                 minute=0;

                  hour++;

                      }

                        if(hour>=24)

                        {

                        hour=0;

}

    duanxuan=0;

  weixuan=0;

    P0=tab1[second/10];

  duanxuan=1;

  duanxuan=0;

   duanxuan = 0;            //数码管驱动芯片74HC573 段选 

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   P0       =0X40;          //数码管 位选 左至右第 1 个 

     weixuan  = 1;            //数码管驱动芯片74HC573 位选

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   delay1(90);

//消影

  duanxuan = 0;            //数码管驱动芯片74HC573 段选 

      weixuan  = 0;            //数码管驱动芯片74HC573 位选

  P0       =0X00;          //数码管位选清零

      weixuan  = 1;            //数码管驱动芯片74HC573 位选

      weixuan  = 0;            //数码管驱动芯片74HC573 位选

duanxuan=0;

  weixuan=0;

    P0=tab1[second%10];

  duanxuan=1;

  duanxuan=0;

   duanxuan = 0;            //数码管驱动芯片74HC573 段选 

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   P0       =0X80;          //数码管 位选 左至右第 1 个 

     weixuan  = 1;            //数码管驱动芯片74HC573 位选

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

delay1(90);

//消影

  duanxuan = 0;            //数码管驱动芯片74HC573 段选 

      weixuan  = 0;            //数码管驱动芯片74HC573 位选

  P0       =0X00;          //数码管位选清零

      weixuan  = 1;            //数码管驱动芯片74HC573 位选

      weixuan  = 0;            //数码管驱动芯片74HC573 位选

delay1(90);

/

  duanxuan=0;

  weixuan=0;

    P0=tab1[minute/10];

  duanxuan=1;

  duanxuan=0;

   duanxuan = 0;            //数码管驱动芯片74HC573 段选 

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   P0       =0X08;          //数码管 位选 左至右第 1 个 

     weixuan  = 1;            //数码管驱动芯片74HC573 位选

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   delay1(90);

duanxuan=0;

  weixuan=0;

    P0=tab1[minute%10];

  duanxuan=1;

  duanxuan=0;

   duanxuan = 0;            //数码管驱动芯片74HC573 段选 

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   P0       =0X10;          //数码管 位选 左至右第 1 个 

     weixuan  = 1;            //数码管驱动芯片74HC573 位选

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   delay1(90);

duanxuan=0;

  weixuan=0;

    P0=tab1[hour%10];

  duanxuan=1;

  duanxuan=0;

   duanxuan = 0;            //数码管驱动芯片74HC573 段选 

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   P0       =0X02;          //数码管 位选 左至右第 1 个 

     weixuan  = 1;            //数码管驱动芯片74HC573 位选

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   delay1(90);

duanxuan=0;

  weixuan=0;

    P0=tab1[hour/10];

  duanxuan=1;

  duanxuan=0;

  duanxuan = 0;            //数码管驱动芯片74HC573 段选 

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   P0       =0X01;          //数码管 位选 左至右第 1 个 

     weixuan  = 1;            //数码管驱动芯片74HC573 位选

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   delay1(90);

//消影

  duanxuan = 0;            //数码管驱动芯片74HC573 段选 

      weixuan  = 0;            //数码管驱动芯片74HC573 位选

  P0       =0X00;          //数码管位选清零

      weixuan  = 1;            //数码管驱动芯片74HC573 位选

      weixuan  = 0;            //数码管驱动芯片74HC573 位选 

    duanxuan=0;

  weixuan=0;

    P0=0xbf;

  duanxuan=1;

  duanxuan=0;

duanxuan = 0;            //数码管驱动芯片74HC573 段选 

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   P0       =0X04;          //数码管 位选 左至右第 1 个 

     weixuan  = 1;            //数码管驱动芯片74HC573 位选

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

    delay1(90);

    //消影

  duanxuan = 0;            //数码管驱动芯片74HC573 段选 

      weixuan  = 0;            //数码管驱动芯片74HC573 位选

  P0       =0X00;          //数码管位选清零

      weixuan  = 1;            //数码管驱动芯片74HC573 位选

      weixuan  = 0;            //数码管驱动芯片74HC573 位选

    duanxuan=0;

  weixuan=0;

    P0=0xbf;

  duanxuan=1;

  duanxuan=0;

   duanxuan = 0;            //数码管驱动芯片74HC573 段选 

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   P0       =0X20;          //数码管 位选 左至右第 1 个 

     weixuan  = 1;            //数码管驱动芯片74HC573 位选

     weixuan  = 0;            //数码管驱动芯片74HC573 位选

   delay1(60);

  //消影

  duanxuan = 0;            //数码管驱动芯片74HC573 段选 

      weixuan  = 0;            //数码管驱动芯片74HC573 位选

  P0       =0X00;          //数码管位选清零

      weixuan  = 1;            //数码管驱动芯片74HC573 位选

      weixuan  = 0;            //数码管驱动芯片74HC573 位选

}

}

void delay1(uint16 x_ms) //延迟  x_ms*1  毫秒

{

   uint16 i,j;

for(i=x_ms;i>2;i--)

for(j=1;j>2;j--);

}

921b709f9fc74444d7ef56ac7205e79d.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值