新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 12864液晶電子時(shí)鐘+溫度顯示

        12864液晶電子時(shí)鐘+溫度顯示

        作者: 時(shí)間:2012-08-06 來源:網(wǎng)絡(luò) 收藏

        void delay(uint t)
        {
        uint i,j;
        for(i=120;i>0;i--);
        for(j=t;j>0;j--);
        }
        /**********************************************************
        void delay_us(uchar t) //延時(shí)計(jì)算公式:5+2*t
        {
        while(--t);
        }
        ***********************************************************/
        void read_busy()
        {
        EN=0;
        RW=1;
        RS=0;
        EN=1;
        while(P00x80);
        EN=0;
        }
        void write_com(uchar com) //寫命令
        {
        read_busy();
        EN=1;
        RS=0;
        RW=0;
        P0=com;
        delay(1);
        EN=0;

        }
        void write_dat(uchar dat) //寫數(shù)據(jù)
        {
        read_busy();
        EN=1;
        RS=1;
        RW=0;
        P0=dat;
        delay(1);
        EN=0;
        }

        控制閃爍的函數(shù)如下:

        void shan(void)
        {
        uchar i;
        write_com(0x94); //將數(shù)據(jù)寫在0x94地址上
        if(f==1) //按鍵按一下年開份始閃爍
        {
        {
        tab2[8]=' '; //向要閃爍的位置寫空格
        tab2[9]=' ';
        }
        for (i=8;i=15;i++)
        {
        write_dat(tab2[i]); //寫數(shù)據(jù)
        }
        goto return1;
        }
        if(f==2) //按鍵按兩下月份開始閃爍
        {
        {
        tab2[11]=' ';
        tab3[12]=' ';

        }

        for (i=8;i=15;i++)
        {
        write_dat(tab2[i]);
        }
        goto return1;
        }
        if(f==3) //按鍵按三下,日期開始閃爍
        {
        {
        tab2[14]=' ';
        tab2[15]=' ';
        }
        for (i=8;i=15;i++)
        {
        write_dat(tab2[i]);
        }

        goto return1;
        }
        write_com(0x8b);
        if(f==4) //按鍵按四下,小時(shí)開始閃爍
        {
        {
        tab3[6]=' ';
        tab3[7]=' ';
        }
        for (i=6;i=13;i++)
        {
        write_dat(tab3[i]);
        }

        goto return1;
        }
        if(f==5) //按鍵按五下,分鐘開始閃爍
        {
        {
        tab3[9]=' ';
        tab3[10]=' ';
        }
        for (i=6;i=13;i++)
        {
        write_dat(tab3[i]);
        }

        goto return1;
        }
        if(f==6) //按鍵按六下,秒開始閃爍
        {
        {
        tab3[12]=' ';
        tab3[13]=' ';
        }
        for (i=6;i=13;i++)
        {
        write_dat(tab3[i]);
        }

        goto return1;
        }
        if(f==7) //按鍵按七下,調(diào)時(shí)完畢,停止閃爍,開始走時(shí)
        {
        {
        for (i=6;i=13;i++)
        {
        write_dat(tab3[i]);
        TR0=1; //時(shí)間設(shè)定完畢,打開定時(shí)器
        }
        }
        }

        return1:_nop_();

        }

        顯示數(shù)組:

        uchar code tab1[]="時(shí)鐘 + ";
        uchar tab2[16]="日期:20";
        uchar tab3[14]="時(shí)間:";
        uchar tab4[12]="當(dāng)前溫度:" ;

        定時(shí)器初始化,ASCii碼轉(zhuǎn)換

        /**********************************************************
        程序功能:液晶顯示電子時(shí)鐘(包括年月日時(shí)分秒),具有閃爍,移位,調(diào)時(shí)功能
        并顯示當(dāng)前溫度
        程序編譯環(huán)境:keil4
        程序運(yùn)行環(huán)境:HJM-1
        整理人:張家越 QQ:435835181
        整理時(shí)間:2011-04-17

        *********************************************************/
        #include reg52.h>
        #include"lcd.h"
        #include intrins.h>
        #include "flash.h"
        #include"scan.h"
        #include "18B20.h"
        uchar tempreture[2];
        #define uchar unsigned char
        #define uint unsigned int
        uchar utime; //定時(shí)20ms,每20ms,utime++
        void shan(); //控制閃爍函數(shù)
        void tkey(void); //按鍵處理函數(shù)

        void init_clock() //定時(shí)器初始化函數(shù)
        {
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        ET0=1 ;
        EA=1;
        TR0=1;
        }
        void iscii_change() //將需要顯示的時(shí)間轉(zhuǎn)換成ISCii碼
        {
        tab3[6]=clock[3]/10+0x30;
        tab3[7]=clock[3]%10+0x30;

        tab3[8]=0x3a;
        tab3[9]=clock[4]/10+0x30;
        tab3[10]=clock[4]%10+0x30;

        tab3[11]=0x3a;
        tab3[12]=clock[5]/10+0x30;
        tab3[13]=clock[5]%10+0x30;

        tab2[8]=clock[0]/10+0x30;
        tab2[9]=clock[0]%10+0x30;
        tab2[10]=0x2d;
        tab2[11]=clock[1]/10+0x30;
        tab2[12]=clock[1]%10+0x30;
        tab2[13]=0x2d;
        tab2[14]=clock[2]/10+0x30;
        tab2[15]=clock[2]%10+0x30;

        tab4[10]=temp/10+0x30;
        tab4[11]=temp%10+0x30;
        }
        void display() //顯示函數(shù)
        {
        uchar i;
        write_com(0x80);
        for(i=0;i16;i++)
        {
        write_dat(tab1[i]);
        }
        write_com(0x90);
        for(i=0;i16;i++)
        {
        write_dat(tab2[i]);
        }
        write_com(0x88);
        for(i=0;i14;i++)
        {
        write_dat(tab3[i]);
        delay(1);
        }
        write_com(0x98);
        for(i=0;i12;i++)
        {
        write_dat(tab4[i]);
        }
        }
        void main()
        {
        init_clock();
        init_12864();

        while(1)
        {
        Read_temp();
        iscii_change();
        display();
        tkey();
        shan();


        }

        }



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 鲁山县| 平江县| 平阴县| 时尚| 湖口县| 公主岭市| 黄龙县| 鄄城县| 崇文区| 钦州市| 常宁市| 灵川县| 沁阳市| 藁城市| 灵寿县| 宁远县| 襄城县| 洛南县| 南安市| 藁城市| 长宁县| 阿拉善盟| 当雄县| 调兵山市| 禹城市| 冕宁县| 廊坊市| 乳山市| 汉中市| 景洪市| 班玛县| 砚山县| 铁岭市| 太仓市| 塔城市| 丹棱县| 遂溪县| 肥东县| 淮南市| 裕民县| 麻江县|