数码管

来源:互联网 发布:淘宝违规考试答案2013 编辑:程序博客网 时间:2024/06/05 08:56
#include <reg52.h>#define DataPort P0 //定义数据端口sbit LATCH_Seg = P2^2;//定义锁存使能端口,段锁存sbit LATCH_Bit = P2^3;//                  位unsigned char DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char WeiMa[] ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char sec;//unsigned char i;void delay(unsigned int t);void ISR_T0(void);/*void Delay_1s()//50*20{    int t;    TMOD = 0x01;    for(t=0;t<20;t++)    {        TH0 = 0x3c;//高位        TL0 = 0xb0;//低位        TR0 = 1;//开关        while(!TF0);//标志位(溢出)        TF0 = 0;    }}*/void timer_init(){     TH0 = 0x3c;//高位     TL0 = 0xb0;//低位}void main(void){   int i;//int num;TMOD = 0x01;Timer_init();        TR0 = 1;//开关        //while(!TF0);//标志位(溢出)        //TF0 = 0;//num = 0;EA = 1;//总开关ET0 = 1;//外部中断开关sec = 0;while(1){      // if(i<60) //  {       //     num++;        while(1)    {         //       if(sec == 10) sec = 0; if(sec == 60){        sec = 0;    i++; }            DataPort = DuanMa[sec%10];            LATCH_Seg = 1;        LATCH_Seg = 0;        DataPort = WeiMa[7];        LATCH_Bit = 1;        LATCH_Bit = 0; delay(200); DataPort = DuanMa[sec/10];            LATCH_Seg = 1;        LATCH_Seg = 0;        DataPort = WeiMa[6];        LATCH_Bit = 1;        LATCH_Bit = 0; delay(200);// Delay_1s();     //   DataPort = DuanMa[num/10];        //    LATCH_Seg = 1;        //LATCH_Seg = 0;       // DataPort = WeiMa[6];        //LATCH_Bit = 1;      //  LATCH_Bit = 0;  //      Delay_1s();//i++;}//if(i>=60)//{ //   num = 0;//i=0;//}//    }}}void delay(unsigned int t){   while(t--);}void ISR_T0(void) interrupt 1{    unsigned char i;EA = 0;//关掉其他中断    timer_init();    i++;if(i==20){    sec++;i = 0;}//如果i=20时完成了1sEA = 1;//结束后再打开中断}



0 0
原创粉丝点击