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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機點陣時鐘源碼

[復制鏈接]
ID:130000 發表于 2016-7-11 12:21 | 顯示全部樓層 |閱讀模式
#include <reg52.h>
#define uint unsigned int        //數據類型宏定義,表示范圍從0~65535
#define uchar unsigned char       //數據類型宏定義,表示值范圍從0~255

uchar aa, bb, cc;
uchar miao, fen, shi;
uchar a_1, a_2, a_3, a_4;
uchar num1, num2;

sbit a = P0 ^ 0;//定義管腳
sbit b = P0 ^ 1;//
sbit c = P0 ^ 2;//
sbit d = P0 ^ 3;//
sbit e = P0 ^ 4;//
sbit f = P0 ^ 5;//
sbit g = P0 ^ 6;//
sbit h = P0 ^ 7;//

sbit zuo_1 = P1 ^ 0;//定義管腳
sbit zuo_2 = P1 ^ 1;//
sbit zuo_3 = P1 ^ 2;//
sbit zuo_4 = P1 ^ 3;//

sbit s1 = P1 ^ 4;//定義按鍵
sbit s2 = P1 ^ 5;//

void chushihua();
void guanjiao(uchar n);
void yanshi(uint z);
void xianshi();
void jianpan();
void write_shi(uchar shu);
void write_fen(uchar shu);
void xiaodou();

void main()
{
        chushihua();

        for (;;)
        {
               
                        if (miao == 60)
                        {
                                miao = 0; fen++;
                        }
                        write_fen(fen);
                        if (fen == 60)
                        {
                                fen = 0; shi++;
                        }
                        write_shi(shi);
                        if (shi == 24)
                        {
                                shi = 0;
                        }

                }
                jianpan();
                xianshi();
        }


void jianpan()//鍵盤掃描
{
        if (s2 == 0)           //判斷s2是否被摁下,如果是則進入if循環語句
        {
                xiaodou();
        }     
        if (s2 == 0)        //再次判斷s2是否被摁下

        {               
                fen++;                        
        }
        if (s1 == 0)           //判斷s1是否被摁下,如果是則進入if循環語句
        {
                xiaodou();
        }
        if (s1 == 0)        //再次判斷s1是否被摁下
        {
        shi++;
        }        
}
void xianshi()//顯示函數
{
        zuo_1 = 0;
        guanjiao(a_1);
        yanshi(2);
        zuo_1 = 1;

        guanjiao(11);
        yanshi(1);


        zuo_2 = 0;
        guanjiao(a_2);
        yanshi(2);
        zuo_2 = 1;

        guanjiao(11);
        yanshi(1);


        zuo_3 = 0;
        guanjiao(a_3);
        yanshi(2);
        guanjiao(bb);
        yanshi(2);
        zuo_3 = 1;

        guanjiao(11);
        yanshi(1);


        zuo_4 = 0;
        guanjiao(a_4);
        yanshi(2);
        zuo_4 = 1;

        guanjiao(11);
        yanshi(1);
}
void chushihua()//初始化函數
{
        TMOD = 0x01;        //設定時器0為工作方式1
        EA = 1;             //開總中斷
        ET0 = 1;            //開定時器0中斷
        TH0 = (65535 - 50000) / 256;       //對定時器0
        TL0 = (65535 - 50000) % 256;       //賦予初值

        TR0 = 1;                       //啟動定時器0

        aa = 0, bb = 10, cc = 0, miao = 0, fen = 0, shi = 0;
        zuo_1 = 1; zuo_2 = 1; zuo_3 = 1; zuo_4 = 1;
        num1 = 0; num2 = 0;



}
void yanshi(uint z)//延時函數
{
        uint x, y;
        for (x = z; x>0; x--)                //若for循環中數值為真,則維持循環,一旦為假,
                for (y = 110; y>0; y--);         //則退出循環語句,以此來達到延時的目的
}
void guanjiao(uchar n)//管腳顯示函數
{
        switch (n)
        {
        case 0:a = 0; b = 0; c = 0; d = 0; e = 0; f = 0; break;
        case 1:b = 0; c = 0; break;
        case 2:a = 0; b = 0; g = 0; e = 0; d = 0; break;
        case 3:a = 0; b = 0; g = 0; c = 0; c = 0; d = 0; break;
        case 4:f = 0; g = 0; b = 0; c = 0; break;
        case 5:a = 0; f = 0; g = 0; c = 0; d = 0; break;
        case 6:a = 0; f = 0; e = 0; d = 0; c = 0; g = 0; break;
        case 7:a = 0; b = 0; c = 0; break;
        case 8:a = 0; b = 0; c = 0; d = 0; e = 0; f = 0; g = 0; break;
        case 9:a = 0; b = 0; c = 0; d = 0; f = 0; g = 0; break;
        case 10:h = 0; break;
        case 11:a = 1; b = 1; c = 1; d = 1; e = 1; f = 1; g = 1; g = 1; f = 1; g = 1, h = 1; break;
        case 12:h = 1; break;
        }
}
void xiaodou()//消抖函數
{
        uchar x;
        for (x = 15; x > 0; x--) //若for循環中數值為真,則維持循環,一旦為假,則退出循環語句,以此來達到延時的目的
        {
                xianshi();
        }
}
void write_shi(uchar shu)//寫小時函數
{
        uchar shiwei, gewei;       //定義十位和個位數據類型
        shiwei = shu / 10;          //將一個數進行十位和
        gewei = shu % 10;//小時的拆分

        a_4 = shiwei;
        a_3 = gewei;
}
void write_fen(uchar shu)//寫分鐘函數
{
        uchar shiwei, gewei;       //定義十位和個位數據類型
        shiwei = shu / 10;          //將一個數進行十位和
        gewei = shu % 10;           //分鐘的拆分

        a_2 = shiwei;
        a_1 = gewei;

}
void timer()interrupt 1//中斷服務函數
{
        TH0 = (65535 - 50000) / 256;        // 對定時器0的高8位
        TL0 = (65535 - 50000) % 256;       //和低8位賦予初值
        aa++;     //定時器0每溢出一次aa的值加1,時間為50000*12/12M=0.05S
        
        if (aa >= 10)
        {
                bb = 10, cc = 0;
                if (aa == 20)
                {
                        aa = 0; miao++; bb = 12, cc = 1;
                }
        }

}



評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品综合 | 国产精品久久视频 | 日本久久综合 | 久久伊人操| 国产一区二区三区四区hd | 日日操夜夜操天天操 | 狠狠久久 | 久久久久亚洲av毛片大全 | 亚洲 欧美 日韩在线 | 亚洲国产精品第一区二区 | 日韩综合网 | 国产日韩欧美一区二区 | 久久夜色精品国产 | 日本在线你懂的 | 91精品国产日韩91久久久久久 | 中文一区 | 国产丝袜一区二区三区免费视频 | 少妇一级淫片aaaaaaaaa | 国产一区二区三区在线 | 一区二区三区国产在线观看 | 欧美福利视频一区 | 国产专区视频 | 亚洲一区二区精品 | 久久一区二区精品 | 国产成人久久精品 | 黄片毛片 | 国产精品日韩 | 粉嫩一区二区三区性色av | 国产一区二区影院 | 亚洲欧美精品在线 | 国产日韩欧美 | 日韩av成人 | 国产欧美在线观看 | 成人午夜影院 | 99免费视频 | 国产福利在线看 | 特黄一级 | 在线成人av | 国产精品美女一区二区三区 | 国产精品视频999 | 欧美日韩精品亚洲 |