四位一体共阳级数码管动态显示c语言编程

四位一体共阳级数码管动态显示c语言编程,第1张

//满意请采纳

//这是一个四位数码管动态显示c语言程序,每隔一秒加一,直至加到9999为止

//使用时需采用锁存器

#include <reg52.h>

#include"stdio.h"

unsigned char code LED[]={0xc0, 0xf9, 0xa4,0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}

unsigned charLEDbuff[]={0xff,0xff,0xff,0xff}

//定义数码管的位选段

sbit SEG_bit_1 = P0^1

sbit SEG_bit_2 = P0^2

sbit SEG_bit_3 = P0^3

sbit SEG_bit_4 = P0^4

 

unsigned int cnt=0

unsigned int sec =0

unsigned int mini=0

unsigned int  hour=0

unsigned char i=0

/*void delay(unsigned int z )

{

unsigned int  x,y

 for(x=zx>0x--)

 for(y=110y>0y--)

}

*/

void interrupttimer0() interrupt 1 /*设置中断函数*/

{

         TH0=0xfc

         TL0=0x18

         cnt++

         //P1=0x80

         //delay(1)

         switch(i)

         {

                   case0: SEG_bit_1 = 0SEG_bit_4 = 1P1=LEDbuff[0]i++break

                   case1: SEG_bit_4 = 0SEG_bit_3 = 1P1=LEDbuff[1]i++break

                   case2: SEG_bit_3 = 0SEG_bit_2 = 1P1=LEDbuff[2]&i++break

                   case3: SEG_bit_2 = 0SEG_bit_1 = 1P1=LEDbuff[3]i=0break

                   default:break

         }

 

}

/************************************************

void serial_init()

 {

         //TMOD= 0x20       //定时器T/C1工作方式2

         SCON= 0x50   //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)

         TH1= 0xF3      //定时器初值高8位设置

         TL1= 0xF3       //定时器初值低8位设置

         PCON= 0x80  //波特率倍频(屏蔽本句波特率为2400)

         TR1= 1   //定时器启动   

  }

 **********************************************/

void main()

{       

   //serial_init()   //串口初始化

 

         //TMOD=0x21/*设置定时器*/

         TMOD=0x01

         TH0=0xfc

         TL0=0x18

         TR0=1

        

         EA=1/*设置中断*/

         ET0=1

 

         while(1)

         {

                   if(0==TF0)

                   {

                            if(cnt>=1000)

                            {

                                     cnt=0

                                     sec++

                                     if(sec>=60) {

                                       sec=0mini++

                                       if (mini>=60) {

                                       mini=0hour++

                                       if (hour>=24) hour=0

                                     }

                                     }

                                    

                                     LEDbuff[0]=LED[sec%10]//*设置数码管显示位*/

                                     LEDbuff[1]=LED[sec/10%10]

                                     LEDbuff[2]=LED[mini%10]

                                     LEDbuff[3]=LED[mini/10%10]

         //TI=1    //使用printf函数前须先将发送标志位TI置1

   // printf("%4d %x ,%x %x\n ",sec,LEDbuff[0],LEDbuff[1],LEDbuff[2])

   // TI=0

 

                            }

                   }

         }                

}

动态显示的是有固定格式的,赋值,开显示,延时,关显示,假设p0口接数据显示位,p2口低4位接片选,

p2=tab[1]

//赋值

p3_0=0

//开第一位显示

for(i=0i<200:i++)//延时

p3_0=1

//关第一位显示

p2=tab[2]

p3_1=0

//开第二位显示

for(i=0i<200:i++)

p3_1=1

这个程序就是让两个数码管分别显示1和2,注意程序开头包含头文件regx52.h,如果是包含reg52.h编译不了的


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11096502.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存