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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

各位高手幫忙看看為什么單片機控制led不顯示 求幫助

[復制鏈接]
跳轉到指定樓層
樓主
單片機程序
#include <stc15.h>                        // 包含STC15的頭文件
#include <intrins.h>                // 包含intrins.h頭文件,以便延時函數中用
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
/*七段共陽極管顯示定義*/
uchar code dispcode[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極數碼管顯示數字0~9
sbit CLK=P5^5; //74HC595的11引腳
sbit DAT=P5^4; //74HC595的14引腳
sbit RCLK=P3^6;  //74HC595的12引腳
sbit CS1=P1^0; //數碼管段位COM1(公共端)即數碼管的1腳
sbit CS2=P1^1; //數碼管段位COM2(公共端)即數碼管的2腳
sbit CS3=P1^2; //數碼管段位COM3(公共端)即數碼管的3腳
sbit CS4=P1^3; //數碼管段位COM4(公共端)即數碼管的4腳
sbit CS5=P1^4; //數碼管段位COM5(公共端)即數碼管的5腳
sbit CS6=P1^5; //數碼管段位COM6(公共端)即數碼管的6腳

/*定義并初始化變量*/
uchar seconde=0;
uchar minite=0;
uchar hour=12;
uchar mstcnt=0;
//uchar i=0;

sbit P1_0=P3^3;                 // second 調整定義k3
sbit P1_1=P3^1;                 //minite調整定義,k2
sbit P1_2=P3^2;                 //hour調整定義,k1
/*函數聲明*/
void delay(uchar k );      //延時子程序
void time_pro( );    //時間處理子程序
void write595(uchar word);  //寫595 ,顯示
void keyscan( );       //鍵盤掃描子程序
/*****************************/
/*延時子程序*/
/****************************/
void delay(uchar k)   //延時函數100us
{
uchar m=30;
_nop_();
_nop_();
  do
   {
    while(--m);
    }
        while(--k);
   }
//寫數碼管函數
void write595(uchar word)
{
        uchar num;
                  
                uchar c=0;  
                num=dispcode[word];
         for(c=0;c<8;c++)
        {
                   CLK=0;
           DAT=num&0x80;
           num=num<<1;
           CLK=1;
                                 
                 }
                  
            RCLK=0;
               _nop_();
               _nop_();
        RCLK=1;
               
}

void select1(void)
{ //第一位數碼管
        CS1=0;CS2=1;CS3=1;CS4=1;CS5=1;CS6=1;
}

void select2(void)
{ //第二位數碼管
        CS1=1;CS2=0;CS3=1;CS4=1;CS5=1;CS6=1;
}

void select3(void)
{ //第三位數碼管
        CS1=1;CS2=1;CS3=0;CS4=1;CS5=1;CS6=1;
}

void select4(void)
{ //第四位數碼管
        CS1=1;CS2=1;CS3=1;CS4=0;CS5=1;CS6=1;
}

void select5(void)
{ //第五位數碼管
        CS1=1;CS2=1;CS3=1;CS4=1;CS5=0;CS6=1;
}

void select6(void)
{ //第六位數碼管
        CS1=1;CS2=1;CS3=1;CS4=1;CS5=1;CS6=0;
}


/**************************/
/*時間處理子程序*/
/**************************/

void time_pro(void)
{
        if(seconde==60)                    //秒鐘設為60進制
          { seconde=0;
            minite++;
           if( minite==60)              //分鐘設為60進制
              { minite=0;
                hour++;
              if(hour==12)              //時鐘設為12進制
                 {hour=0; }
              }
          }

}
/*******************************/
/*鍵盤掃描子程序*/
/*******************************/
void keyscan(void)
{
    if(P1_0==0)                     //按鍵3秒的調整
       {
           delay(30);
               if(P1_0==0)
                   {
                       seconde++;
                      if(seconde==60)
                        {seconde=0; }
                   }
       }
    if(P1_1==0)                    //按鍵2分的調整
       {
            delay(30);
               if(P1_1==0)
                 {
                    minite++;
                    if(minite==60)
                      {minite=0;}
       }
     }
    if(P1_2==0)                   //按鍵1小時的調整
       {
            delay(30);
               if(P1_2==0)
                   {
                       hour++;
                    if(hour==24)
                      {hour=0; }
                 }
       }
}
void time_0()interrupt 1 //定時器0 50ms
{
         TH0=0x4c;             //預置計數初值
     TL0=0x00;

        mstcnt++;
        if(mstcnt==20)
        {
            seconde++;
            mstcnt=0;    //注意點。對計數單元的清零十分的重要,本次調試中就是
        }               //因為忽略了這一點,給我早成了很大的被動。

}
/**************************/
/*主函數*/
/**************************/
void main(void)
{
P1=0xff;                //初始化p1口,全設為1
AUXR &= 0x7F;                //定時器時鐘12T模式
        TMOD &= 0xF0;                //設置定時器模式
        TL0 = 0x00;                //設置定時初值
        TH0 = 0x4C;
        EA=1;                //設置定時初值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時


    while (1)
{
         keyscan( );    //按鍵掃描
         time_pro( ); //時間處理
           write595(hour/10); //要寫的值         
           select1(); //顯示第一位數碼管  
           delay(1);
           write595(hour%10); //要寫的值
           select2(); //顯示第二位數碼管
           delay(1);  
           write595(minite/10); //要寫的值
           select3(); //顯示第三位數碼管
            delay(1);   
           write595(minite%10); //要寫的值
           select4(); //顯示第四位數碼管
           delay(1);   
           write595(seconde/10); //要寫的值
           select5(); //顯示第五位數碼管
            delay(1);   
           write595(seconde%10); //要寫的值
           select6(); //顯示第六位數碼管
            delay(1);

}
}

led.jpg (208.87 KB, 下載次數: 23)

用人家的電路自己編程實現LED時鐘

用人家的電路自己編程實現LED時鐘
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:280678 發表于 2019-6-30 18:10 | 只看該作者
只是實現LED時鐘和調節時間功能
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久艹av| 免费v片在线观看 | 在线观看av网站永久 | 在线播放国产视频 | 日韩精品久久久久 | 久久久久久网 | 日韩视频免费 | 人人射人人插 | 午夜精品一区二区三区在线观看 | 国产精品成av人在线视午夜片 | 伊人超碰在线 | 成人精品鲁一区一区二区 | 中文字幕日韩欧美一区二区三区 | 欧美久久久久久 | 午夜精品视频在线观看 | 国产精品成人久久久久 | 亚洲人成人一区二区在线观看 | 日韩毛片 | 成人天堂| 视频第一区 | 91免费看片 | 中国大陆高清aⅴ毛片 | yiren22综合网成人 | 欧美日韩在线成人 | 三级成人在线 | 欧美一级黄色片 | 久久精品国产一区二区电影 | 亚洲精品日韩精品 | 欧美三级不卡 | 精品一区二区在线看 | 粉嫩高清一区二区三区 | 久久精品一区二区 | 欧美国产视频一区二区 | 羞羞视频免费观看入口 | av片网站| 国产视频一区二区在线观看 | 精品99在线 | 羞羞视频在线观看 | 欧美福利 | 精品久久久久久久久久久久久久 | 欧美一区二区三区在线看 |