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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2003|回復: 1
打印 上一主題 下一主題
收起左側

51單片機數碼管時鐘(帶138譯碼器)

[復制鏈接]
跳轉到指定樓層
樓主
ID:718952 發表于 2020-3-30 17:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char

uchar code leddata[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};         //數碼管位選數據

sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;//位選控制,二進制在138譯碼器里轉成十進制對應的數碼管位

uint miao=0;                //秒
uint fen=0;                        //分
uint shi=0;                    //時
uint n=0;                        //100us計數次數
uint date[]={0,0,0,0,0,0};          //時,分,秒的個位和十位,此數組起到過度段碼參數的作用

void delay(uint z)                         //掃描顯示延時函數
{
     uint x,y;
         for(x=z;x>0;x--)
          for(y=50;y>0;y--);
}
/************************************************************/
void led_num(uchar we)                 //數碼管位選
        {

         switch(we)//直接屏蔽了用不到的兩個位
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;

                        case(3):
                                LSA=1;LSB=1;LSC=0; break;
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;

                        case(6):
                                LSA=0;LSB=1;LSC=1; break;
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;
               
                }
          }
/****************************************************************/
void led_date(uint a)                                     //數碼管段選
{
         P0=leddata[a];
}
/***************************************************************/                                                                       
void display()                                                        //顯示函數,逐條執行
{          
        led_num(0);//送位選
        led_date(date[0]);//送段選
        delay(1);//顯示延時
        P0 = 0x00;//結合前面的先送位選信號,再送段選信號,再消除段選端依然存在的高電平,可消除殘影

        led_num(1);
        led_date(date[1]);
        delay(1);
        P0 = 0x00;

        led_num(3);
        led_date(date[2]);
        delay(1);
        P0 = 0x00;
         
        led_num(4);
        led_date(date[3]);
        delay(1);
        P0 = 0x00;

        led_num(6);
        led_date(date[4]);
        delay(1);
        P0 = 0x00;

        led_num(7);
        led_date(date[5]);
        delay(1);
        P0 = 0x00;

         
}
/***********************************************************************/
void time_init()                                                   //定時器初始化函數
{
    TMOD=0x02;                                                          //選擇方式2
        TH0=156;                                                          //重裝初值為156
        TL0=156;                                                          //運行值為156
        EA=1;                                                                  //開總中斷
        ET0=1;                                                                  //開定時器0中斷
        TR0=1;                                                                  //開定時器0
}
/***********************************************************************///主函數
void main()
{

   time_init();
   while(1)
   {
       display();

   }


}


/************************************************************************/
void timer() interrupt 1                                          //定時器0中斷
{         
     n++;
         if(n==10000)                                                                 //當n=10000時,表示1s到了 !
         {         
             n=0;
             miao++;
                 if(miao==60)
                 {
                     miao=0;
                     fen++;
                         if(fen==60)
                         {
                             fen=0;
                                 shi++;
                                 if(shi==24)
                                 {
                                    shi=0;
                                 }
                         }
                 }
                 date[0]=miao%10; //顯示秒的個位
                 date[1]=miao/10; //顯示秒的十位

                 date[2]=fen%10;
                 date[3]=fen/10;

                 date[4]=shi%10;
                 date[5]=shi/10;
       
         }

          
}
//此例程使用的是8個共陰數碼管(2個4位的),位選端接138譯碼器輸出端,段選端接74HC573輸出,P0接573的輸入。

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

使用道具 舉報

沙發
ID:734445 發表于 2020-4-21 15:48 來自手機 | 只看該作者
請問有電路仿真圖嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕视频在线观看免费 | 久久久久久影院 | 色影视| 精品中文字幕久久 | 狠狠综合久久av一区二区老牛 | 欧美一区免费 | 一区二区精品 | 久久99精品久久久久久狂牛 | 日韩欧美网 | av黄色在线观看 | 91亚洲精选 | 国产成人一区二区 | 国产欧美日韩精品在线观看 | 亚洲日本国产 | 日本一二区视频 | 黄色av网站在线观看 | 久久精品 | 欧洲精品在线观看 | 免费在线观看成人av | 91在线看片 | 黄色一级视频 | 国产一区二区三区 | 午夜三级网站 | 精品99在线 | 日本aa毛片a级毛片免费观看 | 人人叉 | av一级毛片| 国产精品99久久久久久久久 | 日韩欧美三区 | 日韩一区二区三区视频 | 亚洲精品一区在线观看 | 亚洲啪啪| 亚洲视频一区在线观看 | 中国一级毛片免费 | 欧美日韩中 | 久久一区二区免费视频 | 久久久九九九九 | 日韩精品久久 | 欧美一区二区免费视频 | 91视频麻豆 | 欧美视频免费 |