欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 修改程序,能不能加中斷器、計時器、定時器(三選二) [打印本頁]

作者: hzz823    時間: 2018-5-27 14:39
標題: 修改程序,能不能加中斷器、計時器、定時器(三選二)
數碼管顯示閃爍也解決一下

新建 Microsoft Word 文檔.docx

14.74 KB, 下載次數: 8


作者: wulin    時間: 2018-5-27 14:39
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit led0=P2^2;
sbit buzzer=P2^3;
sbit dula=P2^6;                //聲明段選線選通端
sbit wela=P2^7;                //聲明位選線選通端
sbit clear=P3^4;
uchar key,shi,ge,count;
uchar code tab[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f};
uchar k=0;
/*延時子函數,xms為形參*/
/*void delay(uint xms)
{
        uint x,y;
        for(x=xms;x>0;x--)
                for(y=110;y>0;y--);
}*/

/*矩陣鍵盤掃描子程序*/
void matrixkeyscan()
{
        static bit sign=0;                        //按鍵自鎖標志
        static uint count=0;                //消抖計數變量                       
        uchar num=0;                                //臨時變量
        P3=0xf0;                                        //賦值P3 1111 0000
        if(P3!=0xf0)                                //檢測有按鍵按下
        {
                count++;                                //消抖計數
                if((count>=500)&&(sign==0))
                {                       
                        sign=1;                                //按鍵自鎖標志置1
                        num=P3;                                //保存P3值xxxx 0000,x為0或1
                        num|=0x0f;                        //保存num按位或0x0f值xxxx 1111
                        P3=num;                                //賦值P3 xxxx 1111
                        num=P3;                                //保存P3值xxxx xxxx
                        switch(num)
                        {
                                case 0xee: key=16; break;
                                case 0xde: key=15; break;
                                case 0xbe: key=14; break;
                                case 0x7e: key=13; break;
                                case 0xed: key=12; break;
                                case 0xdd: key=11; break;
                                case 0xbd: key=10; break;
                                case 0x7d: key= 9; break;
                                case 0xeb: key= 8; break;
                                case 0xdb: key= 7; break;
                                case 0xbb: key= 6; break;
                                case 0x7b: key= 5; break;
                                case 0xe7: key= 4; break;
                                case 0xd7: key= 3; break;
                                case 0xb7: key= 2; break;
                                case 0x77: key= 1; break;
                        }
                        k=1;
                }
        }
        else                                                //鍵抬起
        {
                sign=0;                                //按鍵自鎖標志清0
                count=0;                                //消抖計數清0
        }
}

void alarm()
{  
        static uint i=0;
        if(k==1)
        {
                buzzer=0;
                led0=0;
                i++;
                if(i==1000)
                {
                        i=0;
                        k=0;
                        buzzer=1;
                        led0=1;
                }
//        buzzer=~buzzer;
//        led0=~led0;
//        delay(30);
        }
}

void display(uchar num)
{
        static uchar i=0;
        P0=0x00;//消隱
        dula=1;
        dula=0;
        if(i==0)
        {
                P0=0xfe;
                wela=1;
                wela=0;

                P0=tab[num/10];
                dula=1;
                dula=0;
                i=1;
        }
        else
        {
                P0=0xfd;
                wela=1;
                wela=0;

                P0=tab[num%10];
                dula=1;
                dula=0;
                i=0;
        }
}
void main()
{
        P0=0x00;
        while(1)
        {
                matrixkeyscan();
                alarm();
                display(key);
        }
}
作者: angmall    時間: 2018-5-27 21:28
樓主未描述清楚,
1、你想做什么?達成什么目標?
2、你現在是如何做的?
3、做完成后應該出什么?
4、結果現在出現了什么?

發一下 原理圖





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1