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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

我接下來(lái)要怎樣實(shí)現(xiàn)按鍵加減時(shí)鐘分鐘呢?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#include<reg52.h>          
#define uchar unsigned char
#define uint unsigned int
#define LCD1602_DB P0
sbit LCD1602_RS=P1^0;
sbit LCD1602_RW=P1^1;
sbit LCD1602_E =P1^5;

unsigned char code KeyCode[]={
0xE7,0xD7,0xB7,0x77,0xEB,0xDB,0xBB,0x7B,
0xED,0xDD,0xBD,0x7D,0xEE,0xDE,0xBE,0x7E
};

void LCD1602_INIT();
void LcdSetCursor(uchar x,uchar y);
void LcdShowDat(uchar x,uchar y,uchar dat);
void LCD1602_WCMD(uchar cmd);
void delay_ms(uint cnt);
void an();

uint cnt=0;
uchar sec=0;min=0;hour=0;key=16;

void ScanKeyBoard()
{
        unsigned char scan1,scan2,KeyBoard;
        unsigned char i;
        P2=0xf0;
        scan1=P2;
        TR0=0;
        if((scan1&0xf0)!=0xf0)
        {
                delay_ms(10);
                scan1=P2;
                if((scan1&0xf0)!=0xf0)
                {
                        P2=0x0f;
                        scan2=P2;
                        KeyBoard=scan1|scan2;
                        while((P2&0x0f)!=0x0f);
                        for(i=0;i<=15;i++)
                        {
                                if(KeyBoard==KeyCode[i])
                                key=i;
                        }
                }
        }
}
void an()
{
        uchar a=key;
        ScanKeyBoard();
        switch(a)
                {
                        case 0:hour=hour+1;break;
                        case 1:hour=hour-1;break;
                        case 2:min++;break;
                        case 3:min--;break;
                        default: break;
                }
}
void delay_ms(unsigned int cnt)
{
        unsigned char i;
        while(cnt--)
        {
                for(i=0;i<=110;i++);
        }
}
void main()
{
        uchar temp;
        TMOD=0x01;
        TH0=0xfc;
        TL0=0x67;
        TR0=1;
        EA=1;
        ET0=1;

        LCD1602_INIT();

        while(1)
        {
               
                temp=hour/10;
                temp+=0x30;
                LcdShowDat(2,0,temp);
                temp=hour%10;
                temp+=0x30;
                LcdShowDat(3,0,temp);
                LcdShowDat(4,0,':');
                temp=min/10;
                temp+=0x30;
                LcdShowDat(5,0,temp);
                temp=min%10;
                temp+=0x30;
                LcdShowDat(6,0,temp);
                LcdShowDat(7,0,0x3a);
                temp=sec/10;
                temp+=0x30;
                LcdShowDat(8,0,temp);
                temp=sec%10;
                temp+=0x30;
                LcdShowDat(9,0,temp);
        }

}
void LcdWaitReady()
{
        unsigned char sta;
        LCD1602_DB=0xff;
        LCD1602_RS=0;
        LCD1602_RW=1;
        do{
                LCD1602_E=1;
                sta=LCD1602_DB;
                LCD1602_E=0;
        }while(sta&0x80);
}
void LCD1602_WCMD(unsigned char cmd)
{
        LcdWaitReady();
        LCD1602_RS=0;
        LCD1602_RW=0;
        LCD1602_DB=cmd;
        LCD1602_E=1;
        LCD1602_E=0;
}
void LCD1602_WDat(unsigned char dat)
{
        LcdWaitReady();
        LCD1602_RS=1;
        LCD1602_RW=0;
        LCD1602_DB=dat;
        LCD1602_E=1;
        LCD1602_E=0;
}
void LcdSetCursor(uchar x,uchar y)
{
        unsigned char addr;
        if(y==0)
        addr=0x00+x;
        else
        addr=0x40+x;
        LCD1602_WCMD(addr|0x80);
}
void LcdShowDat(uchar x,uchar y,uchar dat)
{
        LcdSetCursor(x,y);
        LCD1602_WDat(dat);
}
void LCD1602_INIT()
{
        LCD1602_E=0;
        LCD1602_WCMD(0x38);
        LCD1602_WCMD(0x0c);
        LCD1602_WCMD(0x06);
        LCD1602_WCMD(0x01);
}
void clok()interrupt 1
{
        cnt++;
        TH0=0xfc;
        TL0=0x67;
        if(cnt==1000)
        {
                cnt=0;
                sec++;
                if(sec==60)
                {
                        sec=0;
                        min++;
                        if(min==60)
                        {
                                min=0;
                                hour++;
                                if(hour==24)
                                {
                                        hour=0;
                                }
                        }
                }
        }
}

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

使用道具 舉報(bào)

沙發(fā)
ID:111634 發(fā)表于 2017-11-9 19:03 | 只看該作者
本帖最后由 zl2168 于 2017-11-9 19:04 編輯

你提的問(wèn)題,下例有解答。
實(shí)例91  具有校正功能的時(shí)鐘1302(LCD1602顯示)
先Proteus仿真,確認(rèn)有效。
實(shí)例91 帶校正時(shí)鐘1302(LCD1602顯示).rar (52.68 KB, 下載次數(shù): 8)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書(shū)上看了。到圖書(shū)館借,或到新華書(shū)店翻閱,或到網(wǎng)上書(shū)店打折購(gòu)買(mǎi)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人综合一区 | 国产精品久久久久久久久久 | 日韩欧美国产一区二区 | 激情视频中文字幕 | www.成人久久 | 国内精品久久久久久久影视简单 | 毛片a区 | 精品国产一区二区三区性色av | av免费网址 | 亚洲一区二区视频 | 精品欧美乱码久久久久久1区2区 | 欧美一区二区三区在线观看视频 | 精品一区二区av | 7777奇米影视 | 国产精品国产a级 | 国产成人精品一区二区三区网站观看 | 殴美黄色录像 | 激情欧美一区二区三区中文字幕 | 二区三区av | 日本三级网址 | 欧美一区二区三区电影 | 国产激情一区二区三区 | 亚洲国产一区二区三区, | 欧美一区二区三区四区在线 | 一本色道精品久久一区二区三区 | 欧美日韩综合一区 | 色婷婷精品国产一区二区三区 | 精品动漫一区 | 中文字幕一区二区三区乱码图片 | 欧洲精品码一区二区三区免费看 | 91精品国产一区二区三区香蕉 | 国产欧美日韩一区 | 中文一区 | 亚洲综合视频一区 | 日韩有码一区 | 欧美一区二区三区 | a级在线免费观看 | aaa国产大片 | 国产不卡在线观看 | 中文字幕亚洲区 | 91精品国产综合久久久久 |