久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2146|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

這是共陽(yáng)極數(shù)碼管顯示電子鐘的程序。如果是共陰極數(shù)碼管,用74HC138該如何修改呢

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:548414 發(fā)表于 2019-6-12 18:56 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg51.h>                                                                                                                                                          #include<reg51.h>
//#define char signed char
char code dis_7[12]=
{0xc0,0xf9,0xa4,0x4b0,0x99,0x92,0xb2,0xf8,0x80,0x90,0xff,0xbf};
char code scan_con[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char data dis[8]={0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00};
char data timedata[3]={0x00,0x00,0x00};
char data ms50=0x00,con=0x00,con1=0x00,con2=0x00;
sbit key0=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;
delay1ms(int t)
{
        int i, j;
        for (i=0; i<t; i++)
           for (j=0; j<120; j++)
           ;
}
keyscan()
{
EA=0;
if (key0 == 0)
{
   delay1ms (10);
        while (key0 == 0);
        con++;TR0=0; ET0=0;
        if (con >= 3)
        {con=0;  TR0=1;ET0=1;}
}
if (con!= 0)
{
        if(key1==0)
        {
        delay1ms(10);
        while(key1==0);
        timedata[con]++;
        if(con==2) con1=24;else con1=60;
        if(timedata[con]>=con1)
        {timedata[con]=0;}
  }
}
if (con!=0)
{
        if (key2==0)
                {
        delay1ms(10);
        while(key2==0);
        timedata[con]--;
        if (con==2) con2=23; else con2=59;
        if(timedata[con]<=0)
        {timedata[con]=con2;}
        }
}
EA=1;
}
scan()
{
        char k;
        dis[0]=timedata[0]%10;dis[1]=timedata[0]/10;
        dis[3]=timedata[1]%10;dis[4]=timedata[1]/10;
        dis[6]=timedata[2]%10;dis[7]=timedata[2]/10;
        for(k=0;k<8;k++)
        {
                P0=dis_7[dis[k]]; P2=scan_con[k]; delay1ms(1); P2=0xff;
        }
}
main()
{
TH0=0x3c; TL0=0xb0;
TMOD=0x01; ET0=1; TR0=1; EA=1;
while (1)
{
scan();
keyscan();
}
}
void time_intt0(void) interrupt        1
{
        ET0=0; TR0=0; TH0=0x3c; TL0=0xb0; TR0=1;
        ms50++;
        if(ms50==20)
{
ms50=0x00; timedata[0]++;
if(timedata[0]==60)
{
        timedata[0]=0; timedata[1]++;
        if(timedata[1] ==60)
        {
                timedata[1]=0; timedata[2]++;
                if (timedata[2]==24)
          {
                timedata[2]=0;
          }
        }
  }
}
ET0=1;
}
#define char signed char
char code dis_7[12]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
char code scan_con[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char data dis[8]={0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00};
char data timedata[3]={0x00,0x00,0x00};
char data ms50=0x00,con=0x00,con1=0x00,con2=0x00;
sbit key0=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
delay1ms(int t)
{
        int i, j;
        for (i=0; i<t; i++)
           for (j=0; j<120; j++)
           ;
}
keyscan()
{
EA=0;
if (key0 == 0)
{
   delay1ms (10);
        while (key0 == 0);
        con++;TR0=0; ET0=0;
        if (con >= 3)
        {con=0;  TR0=1;ET0=1;}
}
if (con!= 0)
{
        if(key1==0)
        {
        delay1ms(10);                                            
        while(key1==0);
        timedata[con]++;
        if(con==2) con1=24;else con1=60;
        if(timedata[con]>=con1)
        {timedata[con]=0;}
  }
}
if (con!=0)
{
        if (key2==0)
                {
        delay1ms(10);
        while(key2==0);
        timedata[con]--;
        if (con==2) con2=23; else con2=59;
        if(timedata[con]<=0)
        {timedata[con]=con2;}
        }
}
EA=1;
}
scan()
{
        char k;
        dis[0]=timedata[0]%10;dis[1]=timedata[0]/10;
        dis[3]=timedata[1]%10;dis[4]=timedata[1]/10;
        dis[6]=timedata[2]%10;dis[7]=timedata[2]/10;
        for(k=0;k<8;k++)
        {
                P0=dis_7[dis[k]]; P2=scan_con[k]; delay1ms(1); P2=0xff;
        }
}
main()
{
TH0=0x3c; TL0=0xb0;
TMOD=0x01; ET0=1; TR0=1; EA=1;
while (1)
{
scan();
keyscan();
}
}
void time_intt0(void) interrupt        1
{
        ET0=0; TR0=0; TH0=0x3c; TL0=0xb0; TR0=1;
        ms50++;
        if(ms50==20)
{
ms50=0x00; timedata[0]++;
if(timedata[0]==60)
{
        timedata[0]=0; timedata[1]++;
        if(timedata[1] ==60)
        {
                timedata[1]=0; timedata[2]++;
                if (timedata[2]==24)
          {
                timedata[2]=0;
          }
        }
  }
}
ET0=1;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2019-6-13 11:43 | 只看該作者
補(bǔ)一下電路基礎(chǔ)課。
回復(fù)

使用道具 舉報(bào)

板凳
ID:343799 發(fā)表于 2019-6-18 16:50 | 只看該作者
程序可以不用改,可以改硬件,38譯碼器的輸出端接八個(gè)非門(mén)就行了,
回復(fù)

使用道具 舉報(bào)

地板
ID:517466 發(fā)表于 2019-6-18 21:12 | 只看該作者
138為8選一輸出,被選中的輸出0,用0驅(qū)動(dòng)共陰數(shù)碼管的陽(yáng)極,可以考慮加PNP三極管,或者使用與非門(mén)+ULN2003的方式。用非門(mén)直接驅(qū)動(dòng)的方式不可取,同時(shí)點(diǎn)亮7個(gè)筆段的話(huà),輸出需要70mA電流,會(huì)燒毀非門(mén)芯片的。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 老司机久久 | 高清黄色网址 | 日韩字幕 | 久久另类视频 | 国产一区二区三区在线视频 | 日本精品视频在线观看 | 国产激情偷乱视频一区二区三区 | 欧美日韩综合精品 | 国产网站在线免费观看 | 中文字幕在线免费观看 | 国产午夜精品一区二区三区嫩草 | 精品无码久久久久久久动漫 | 天天拍天天插 | 亚洲欧美日韩在线不卡 | 中文字幕 国产精品 | 免费黄网站在线观看 | 亚洲a视频| 欧美成人a∨高清免费观看 91伊人 | 国产一级在线 | 亚洲精品视频免费观看 | 天天草视频 | 久久国际精品 | www.99精品| 伦理午夜电影免费观看 | 黄色av免费网站 | 欧美一区二区三区小说 | 午夜精品久久 | 一区二区在线 | 精品久久久久久久人人人人传媒 | 成人一区二区视频 | 亚洲综合成人网 | 美女黄频 | 欧美日韩福利视频 | 精品在线播放 | 精区3d动漫一品二品精区 | 欧美999| 中文在线一区二区 | 小h片免费观看久久久久 | 成人毛片视频在线播放 | 美女久久 | 九九热视频这里只有精品 |