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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

藍(lán)橋杯單片機(jī)開發(fā)板 CT107D開發(fā)板矩陣按鍵 數(shù)碼管顯示(含定時器)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:537601 發(fā)表于 2020-7-17 22:41 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
藍(lán)橋杯單片機(jī)開發(fā)板 CT107D開發(fā)板矩陣按鍵 數(shù)碼管顯示,含定時器源碼,J5跳線 接12關(guān)鍵 ,J13接23

#include <STC15F2K60S2.H>
#include <intrins.h>

#define uchar unsigned char

#define Y4        P2 = 0X9F & (P2 | 0XE0);                //打開y4        可以控制led
#define Y5        P2 = 0XBF & (P2 | 0XE0);                //打開y5        可以控制蜂鳴器
#define Y6        P2 = 0XDF & (P2 | 0XE0);                //打開y6        可以控制數(shù)碼管位選
#define Y7        P2 = 0XFF & (P2 | 0XE0);                //打開y7        可以控制數(shù)碼管段選

/****************************************************************************
*        數(shù)碼管
****************************************************************************/
/*加上code的話 存在rom中  數(shù)不可變*/
unsigned char code table[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char code w[8] ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char display_buff[10] = {0,1,2,3,4,5,6,7,8,9};

int number = 0;

/****************************************************************************
*        延時
****************************************************************************/

void Delay10ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 108;
        j = 145;
        do
        {
                while (--j);
        } while (--i);
}

void Delay5ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 54;
        j = 199;
        do
        {
                while (--j);
        } while (--i);
}

/****************************************************************************
*        矩陣按鍵
****************************************************************************/
bit key_flag = 0;                                                                //當(dāng)按鍵按下為1,沒有按下為0
uchar key_num = 0;                                                        //存儲按鍵的值

void key_debounce()
{
        Delay10ms();
        while(!(P34&P35&P42&P44));
        Delay10ms();
}

int key_scanf()
{
        uchar  key_y,key_x = 0;
        if(key_flag == 0)                        //為0 時 掃描
        {
                P3 = 0x0f;
                P42 = 0;
                P44 = 0;
                if(!P30|!P31|!P32|!P33)
                {
                        if(P30 == 0){key_y = 1;}
                        if(P31 == 0){key_y = 2;}
                        if(P32 == 0){key_y = 3;}
                        if(P33 == 0){key_y = 4;}
                }
                P3 = 0xf0;P42 = 1;P44 = 1;
                if(!P34|!P35|!P42|!P44)
                {
                        if(P34 == 0){key_x = 4;}
                        if(P35 == 0){key_x = 3;}
                        if(P42 == 0){key_x = 2;}
                        if(P44 == 0){key_x = 1;}
                }
       
                if(key_x == 0)
                {
                        key_flag = 0;
                }
                else
                {
                        key_num = key_y * 4 + key_x - 5;
                }
               
        }
        return key_num;
}

/****************************************************************************
*        定時器中斷初始化
****************************************************************************/
void Timer0Init(void)                //3毫秒@11.0592MHz
{
        AUXR |= 0x80;                //定時器時鐘1T模式
        TMOD &= 0xF0;                //設(shè)置定時器模式
        TL0 = 0x66;                //設(shè)置定時初值
        TH0 = 0x7E;                //設(shè)置定時初值
        TF0 = 0;                //清除TF0標(biāo)志
        TR0 = 1;                //定時器0開始計時
       
        ET0 =1;
        EA = 1;
}
/****************************************************************************
*        中斷服務(wù)函數(shù)
****************************************************************************/

void timer0() interrupt 1
{
        key_scanf();
}
/****************************************************************************
*        主函數(shù)
****************************************************************************/

int main()
{
        P2 = 0XA0;                        //關(guān)閉蜂鳴器
        P0 = 0X00;
        P2 = 0X00;                        //關(guān)閉所有l(wèi)ed
        P0 = 0XFF;
               
        Timer0Init();                                //定時器中斷初始化.

        while(1)
        {               
                        key_debounce();
                        number = key_scanf();
                        Y6;                                                        //位選
                        P0 = w[1];
                        Y7;                                                        //段選
                        P0 = table[display_buff[number / 10]];
                        Delay5ms();
                       
                        Y6;                                                        //位選
                        P0 = w[2];
                        Y7;                                                        //段選
                        P0 = table[display_buff[number % 10]];
                        Delay5ms();
        }
}

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人免费视频在线观看 | 在线激情视频 | 九九综合| 国产一区二区三区四区 | 中文字幕久久精品 | 久久精品视频免费看 | 日韩精品免费一区二区在线观看 | 免费99精品国产自在在线 | 国产成人jvid在线播放 | 男女视频在线免费观看 | 精品国产亚洲一区二区三区大结局 | 日韩av成人在线 | 91久久| www日本高清视频 | 欧美精品被 | 久久久久久九九九九九九 | 韩日有码 | 日韩一级在线 | 成人av在线播放 | 一区二区三区视频 | 涩涩视频网站在线观看 | 欧美三级视频 | 亚洲精品乱 | 午夜视频在线 | 日韩亚洲一区二区 | 日韩黄色小视频 | 在线视频国产一区 | 亚洲综合中文字幕在线观看 | 国产在线a视频 | 亚洲网站在线 | 在线观看a视频 | 亚洲欧美一区二区三区国产精品 | 久久精品一区 | 国产久| 亚洲精品成人在线 | 欧美色偷拍| 欧美日韩中 | 正在播放国产精品 | 午夜精品一区二区三区在线观看 | 国产一区二区三区在线视频 | 黄网免费看|