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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2175|回復: 0
收起左側

數碼管的動態顯示,單片機中斷,按鍵,外部脈沖

[復制鏈接]
ID:732534 發表于 2020-4-19 16:32 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit S1=P2^0;
sbit S2=P2^1;
sbit S3=P2^2;        
sbit S4=P2^3;                                    //位定義P2.3口
sbit S5=P2^4;                                    // 位定義P2.4口
sbit S6=P2^5;                                    //位P2.5口
sbit Key1=P3^7;                                     //定義P3.7口為按鍵口

uchar code duan_N[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};            //共陰極數碼管故低高電平導通,顯示斷碼,不帶小數點

uchar Key1Times=0;                                     //定義按鍵被按下次數
uint M=0;                                        //定義計時次數
                                          
void delay(uint);                   //定義延時函數
void display(uint miao);                        //定義顯示函數
void main()                  
{         //設置INT1s
   IT1=1;  //跳沿觸發方式,負跳變
         EX1=0;   //關閉INT1中斷容許,EX為外部中斷1允許位 ,1—允許外部中斷1中斷,0-禁止外部中斷1中斷ss
        EA=1;     //打開總中斷, S
         while(1)
         {
           
           if(Key1==0)                         //當有按鍵被按下時
           {
                     delay(10);                //去抖
                  while(Key1==0);          //再次檢查按鍵是否被按下
                           Key1Times++;           //記錄按鍵次數+1                                   
           }
           
                if(Key1Times==1){EX1=1;}          //按鍵第一次按下,允許中斷。
                if(Key1Times==2){EX1=0;}         //按鍵第二次按下,禁止中斷
                if(Key1Times==3){Key1Times=0;M=0;}                   //第三次按下,均清零
                          
           display(M);                         //調用自定義display函數,使數碼管顯示數字
         }
}
void delay(uint xms)                        //延時函數
{        
        int i,j;
        for(i=xms;i>0;i--)
                for(j=120;j>0;j--);    //這里用了for語句的嵌套,用來增加延時時間
}

void display(uint miao)                 //定義一個顯示函數                 
{
    uchar baimiao,shimiao,yimiao;


        baimiao=miao/100;                           //定義數碼管百位
        shimiao=miao/10%10;                          //十位
        yimiao=miao%10;                            //個位
        S1=0;                                          
                P0=0x66;                  
                delay(1);                                   
                S1=1;                                                
               
    S2=0;                                                
    P0=0x4F;                          
    delay(1);                                   
    S2=1;                                                        
        
                S3=0;                                                               
                P0=0x5B;                                          
                delay(1);                                                  
                S3=1;                                                           
                        

                S4=0;                                          //選擇第四位數碼管
                P0=duan_N[baimiao];                   //調用數組選擇百位的數
                delay(1);                                   //延時
                S4=1;                                                 //釋放第四位數碼管
               
    S5=0;                                                        //選擇第五位數碼管
    P0=duan_N[shimiao];                          //調用數組選擇十位的數
    delay(1);                                            //延時
    S5=1;                                                         //釋放第五位數碼管
        
                S6=0;                                                                  //選擇第六位數碼管
                P0=duan_N[yimiao];                                          //調用數組選擇個位的數
                delay(1);                                                           //延時
                S6=1;                                                            //釋放第六位數碼管
}
void Int1()interrupt 2                             //定義中斷函數,中斷源為外部中斷1 ,將中斷函數定義為void,以明確說明其沒有返回值
{
            M++;
                if(M==1000)                        
                {
              M=999;                  
           }
               
}                                        //結束返回主函數 while(1)循環


硬件電路圖

硬件電路圖

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线观看免费 | 中文字幕成人 | 午夜影视 | 一区二区三区四区在线 | 狠狠骚| 久久久国产一区二区三区 | 婷婷丁香在线视频 | 97av视频在线 | 本地毛片| 日本特黄a级高清免费大片 国产精品久久性 | 波波电影院一区二区三区 | 视频一区二区在线 | 午夜色播 | 国产精品乱码一区二三区小蝌蚪 | 日韩国产一区二区三区 | 一级黄在线观看 | 午夜电影合集 | 亚洲成人网在线 | 能看的av网站 | 亚洲狠狠爱| 亚洲精品一区二区冲田杏梨 | 成人在线看片 | 一区二区三区高清不卡 | 亚洲午夜精品一区二区三区 | 国产精品久久一区二区三区 | 午夜免费观看 | 亚洲欧美在线观看 | 亚洲国产黄色av | 一级黄色毛片 | 国产大片一区 | 三级特黄特色视频 | 尤物在线 | 精品一二三区视频 | 午夜av成人 | 久久久看| 色成人免费网站 | 日本人和亚洲人zjzjhd | 欧美精品电影一区 | 日韩欧美一级片 | 国产一级免费视频 | 国产自产c区 |