在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            51單片機(jī)1602液晶程序

            作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò) 收藏
            #include

            #define Lcd_Data P0
            sbit RS=P2^0;
            sbit RW=P2^1;
            sbit E=P2^2;
            sbit Busy=P0^7;
            sbit k1=P1^0;
            sbit k2=P1^1;
            sbit k3=P1^2;
            sbit k4=P1^3;
            sbit buzzer=P3^7;
            unsigned int hour,min,second,day,month,year; ////////定義的幾個(gè)時(shí)間
            unsigned char code Time[] = {"Time: "};////用于顯示
            unsigned char code num[] = {"0123456789ABCDEF"};/////////////用于液晶顯示
            unsigned char code haha[]={"^_^"};
            unsigned char code middle[]={":"};
            unsigned int numberflag;
            unsigned int number;
            unsigned code heart[]={0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
            0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
            0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
            0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
            0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
            0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
            0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
            0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00};//心圖案
            unsigned int t0_1S;//定義0.1S變量
            unsigned char keyvalue;//定義鍵值
            void delay(unsigned int time)/////////////////////////////////////////////延時(shí)程序
            {
            while(time--);
            }
            void Delay_1ms(unsigned char t)///////////////////////////精確延時(shí)子程序,延時(shí) 1MS*t S
            {
            unsigned char a;
            while(--t != 0)
            {
            for(a = 0; a < 125; a++);
            }
            }
            ////////////////////////////////////////////////
            ///////////////////////////////////////////////////
            //////////////////////////////////////////////////液晶的程序
            void Read_Busy(void)
            {
            do{ Lcd_Data=0xff;
            RS=0;
            RW=1;
            E=0;
            delay(2);
            E=1;}while(Busy);
            }
            void Write_Comn(unsigned char comn)
            {
            Lcd_Data=comn;
            RS=0;
            RW=0;
            E=0;
            Read_Busy();
            E=1;
            }
            void Write_Data(unsigned char Lcddata)
            {
            Lcd_Data=Lcddata;
            RS=1;
            RW=0;
            E=0;
            Read_Busy();
            E=1;

            本文引用地址:http://www.biyoush.com/article/201611/318331.htm

            }
            void init()
            {
            Write_Comn(0x01);///清顯示
            delay(50);
            Write_Comn(0x02);//光標(biāo)位于左上方
            Write_Comn(0x38);//5*8點(diǎn)陣 8位2行
            Write_Comn(0x06);// 文字不動(dòng),光標(biāo)右移
            Write_Comn(0x0f);///光標(biāo)閃爍
            }
            ////////////////////////////////////////////////////
            //////////////////////////////////////////////
            ////////////////////////////////////////////////////
            ///////////////////////////////////////////以上為lcd的程序;
            /////////////////////////////////////////以下為鍵盤(pán)掃描的程序
            void KEY4X4_scan(void)
            {
            keyvalue=0x00;//無(wú)按鍵時(shí)返回Ox00
            P1=0xFE;//掃描第1行
            delay(1);
            if((P1&0xF0)!=0xF0)
            keyvalue=(P1>>4)|0x10;//返回鍵值
            P1=0xFD;//掃描第2行
            delay(1);
            if((P1&0xF0)!=0xF0)
            keyvalue=(P1>>4)|0x20;//返回鍵值
            P1=0xFB;//掃描第3行
            delay(1);
            if((P1&0xF0)!=0xF0)
            keyvalue=(P1>>4)|0x30;//返回鍵值
            P1=0xF7;//掃描第4行
            delay(1);
            if((P1&0xF0)!=0xF0)
            keyvalue=(P1>>4)|0x40;//返回鍵值
            //return keyvalue;
            }
            //////////////////////////////////////////////////
            /////////////////////////////////////////////////
            ///////////////////////////////////////////////秒表程序
            void seconddisplay(void)//顯示時(shí)間
            {
            unsigned char aa = 0, bb = 0, cc = 0, dd = 0,ee = 0;//定義時(shí)間各個(gè)位
            if(t0_1S>60000)t0_1S=0;
            aa=t0_1S/10000;
            bb=t0_1S%10000/1000;
            cc=t0_1S%1000/100;
            dd=t0_1S%100/10;
            ee=t0_1S%10;
            Write_Comn(0xc9);
            Write_Data(num[aa]);
            Write_Data(num[bb]);
            Write_Data(num[cc]);
            Write_Data( num[dd] );
            Write_Data(.);
            Write_Data(num[ee]);
            Write_Data(S);

            }

            /////////////////////////////////////////////////////////////秒表
            void mysecond()
            { unsigned int i;
            init();//初始化液晶
            Write_Comn(0x01);//清顯示
            k1=1;k2=1;
            t0_1S=0;
            Write_Comn(0x80);

            for(i=0;i<16;i++)
            {
            Write_Data( Time[i] );//顯示time字樣
            }
            run:
            seconddisplay();
            if(k1==0)
            {
            while(1)
            {
            Delay_1ms(100);//延時(shí)0.1S
            t0_1S++;
            seconddisplay();
            if(k2==0)
            {
            while(1)
            {
            if(k1==0)break;
            if(k3==0){t0_1S=0;
            goto over;
            }
            }
            }
            }
            }
            goto run;
            over:
            t0_1S=0;

            }
            ///////////////////////////////////////////////////////////////////////////
            ///////////////////////////////////////////////////////////////////////////
            //////////////////////////////////////////////////////////////////////
            void showheart()
            {
            unsigned int i; // char m=0;
            init();
            Write_Comn(0x40); //設(shè)定CGRAM地址
            for(i=0;i<64;i++) //將心型代碼寫(xiě)入CGRAM中
            {
            Write_Data(heart[i]);
            }
            Write_Comn(0x85); //設(shè)定上排的顯示位置
            for(i=0;i<4;i++) //顯示心型圖案的上半部分
            {
            Write_Data(i);
            }
            Write_Comn(0xc5); //將顯示坐標(biāo)轉(zhuǎn)移到下排和上排相對(duì)應(yīng)的地方
            for(i=4;i<8;i++) //顯示心型圖案的下半部分
            {
            Write_Data(i);
            }


            }
            //////////////////////////////////////////////////////////////////////
            /////////////////////////////////////////////////
            /////////////////////////////////////////////
            ////////////////////////////////////////////////
            ///////////////////////////////////定時(shí)器中斷的初始化
            void init_int()
            {
            TMOD=0x01;
            TH0=(65536-50000)/256;
            TL0=(65536-50000)%256;
            ET0=1;
            TR0=1;
            EA=1;
            }
            void edit(unsigned int t)////////////////////////////對(duì)月,天 時(shí) 分 秒的計(jì)算
            {
            unsigned int a,b;
            a=t/10;
            b=t%10;
            Write_Data(num[a]);
            Write_Data(num[b]);
            }
            void showmiddle(unsigned int x)///////////////////////////////顯示冒號(hào)的函數(shù)
            { Write_Comn(x);
            Write_Data(middle[0]);
            }
            void showhaha(unsigned int x)//////////////////////////////////顯示笑臉的函數(shù)
            {unsigned int i;
            Write_Comn(x);
            for(i=0;i<3;i++)
            Write_Data(haha[i]);
            }
            void showtime()
            {unsigned int a,b,c,d;


            a=year/1000;
            b=(year%1000)/100;
            c=((year%1000)%100)/10;
            d=year%1000%100%10;
            init();
            showhaha(0x80); /////////////////////////////////顯示笑臉
            Write_Comn(0x80+3);
            Write_Data(num[a]);
            Write_Data(num[b]);
            Write_Data(num[c]);
            Write_Data(num[d]);

            showmiddle(0x80+7); ////////////////////////////顯示冒號(hào)
            Write_Comn(0x80+8);
            edit(month);

            showmiddle(0x80+10); ////////////////////////////顯示冒號(hào)
            Write_Comn(0x80+11);
            edit(day);
            showhaha(0x80+13);///////////////////////////////////////顯示笑臉
            showhaha(0xc0+1); //////////////////////////////////////顯示笑臉
            Write_Comn(0xc0+4);
            edit(hour);

            showmiddle(0xc0+6); ////////////////////////////顯示冒號(hào)
            Write_Comn(0xc0+7);
            edit(min);

            showmiddle(0xc0+9); /////////////////////////////////顯示冒號(hào)
            Write_Comn(0xc0+10);
            edit(second);
            showhaha(0xc0+12);////////////////////////////////顯示笑臉
            }
            //////////////////////////////////
            /////////////////////////////////////
            ///////////////////////////////鍵盤(pán)上顯示數(shù)字的小函數(shù)
            void shownumber()
            {
            numberflag=0;
            Write_Comn(0x80+number-1);
            Write_Data(num[number]);
            }



            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉