在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Atmega16單片機(jī)實(shí)用程序

            Atmega16單片機(jī)實(shí)用程序

            作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
            /****************************************************************
            名稱:設(shè)置顯示列地址
            功能:設(shè)置顯示列地址y,範(fàn)圍0~63;
            *****************************************************************/
            void LCD_Command_set_y(uchar column)
            {
            RW_WRITE;
            RS_COMM;
            EN_CLR;
            SET_DATA(0x40+column); //設(shè)置顯示列地址y,範(fàn)圍0~63;
            EN_SET;
            delayus(2);
            EN_CLR;
            }
            /********************************************************************
            名稱:LCD顯示數(shù)據(jù)寫入
            功能:將顯示數(shù)據(jù)寫入12864液晶
            *********************************************************************/
            void LCD_Command_writebyte(uchar data)
            {
            RW_WRITE;
            RS_DATA;
            EN_CLR;
            SET_DATA(data);
            EN_SET;
            delayus(2);
            EN_CLR;
            }
            /*********************************************************************
            名稱:LCD複位操作
            功能:複位LCD
            **********************************************************************/
            void LCD_RESET()
            {
            RESET;
            NOP();
            NOP();
            NOP();
            RESET_OVER;
            }
            /************************************************************
            名稱:清除指定範(fàn)圍函數(shù)
            功能:清除LCD屏幕指定範(fàn)圍起始行~結(jié)束行的顯示內(nèi)容
            ************************************************************/
            void LCD_CLEAR_LINE(uchar startline,uchar endline)
            {
            uchar i,j;
            for(i-startline;i<=endline;i++)
            {
            CS1_EN;
            CS2_EN;
            LCD_Command_set_x(i);
            LCD_Command_set_y(0); //y地址每次操作後自動(dòng)加1;
            for(j=0;j<64;j++)
            {
            LCD_Command_writebyte(0x00);
            }
            }
            }
            /*************************************************************
            名稱:顯示初始化
            功能:初始化LCD
            *************************************************************/
            void LCD_init()
            {
            LCD_RESET();
            LCD_CLEAR_LINE(0,7);
            NOP();
            LCD_Command_Displayonoff(1);
            NOP();
            LCD_Command_setstartline(0);
            }
            /**************************************************************
            名稱:LCD_WRITE_DATA
            輸入:x in [0,7] and y in [0,127]
            輸出:無
            功能:在LCD指定行列寫一個(gè)數(shù)據(jù)
            **************************************************************/
            void LCD_write_data(uchar x,uchar y,uchar data)
            {
            if(y<64)
            {
            CS1_EN;
            CS2_DIS;
            LCD_Command_set_x(x);
            LCD_Command_set_y(y);
            }
            else
            {
            CS1_DIS;
            CS2_EN;
            LCD_Command_set_x(x);
            LCD_Command_set_y(y-64);
            }
            LCD_Command_writebyte(data);
            delayus(1);
            }
            /*********************************************************
            名稱:LCD_WRITE_DOT
            輸入:x in [0,63] and y in [0,127]
            輸出:無
            功能:在指定像素位置描點(diǎn),此函數(shù)為覆蓋式描點(diǎn),原位置一個(gè)
            字節(jié)數(shù)據(jù)被覆蓋
            *********************************************************/
            void LCD_write_dot(uchar x,uchar y)
            {
            uchar x_address,y_address;
            uchar data=0;
            if((x<64)&&(y<128))
            {
            x_address=x>>3;
            y_address=y;
            LCD_write_data(x_address,y_address,data|(1<<(x%8)));
            }
            }
            /**********************************************************
            名稱:LCD_WRITE_CHAR
            輸入:x in [0,3],y in [0,15], disp-顯示字符自模數(shù)組首地址
            輸出:無
            功能:在LCD指定顯示單元顯示一個(gè)字符,每個(gè)顯示單元默認(rèn)為8*16
            點(diǎn)陣字體,對12864點(diǎn)陣LCD,x最多顯示4行,y最多顯示16個(gè)字
            符。
            ***********************************************************/
            void LCD_write_char(uchar x,uchar y,const uchar *disp)
            {
            uchar i;
            uchar x_address;
            uchar y_address;
            if((x<4)&&(y<16))
            {
            for(i=0;i<8;i++)
            {
            x_address=x<<1;
            y_address=(y<<3)+i;
            LCD_write_data(x_address,y_address,*disp++);
            }
            for(i=0;i<8;i++)
            {
            x_address=(x<<1)+1;
            y_address=(y<<3)+i;
            LCD_write_data(x_address,y_address,*disp++);
            }
            }
            }
            /***********************************************************
            名稱:LCD_write_word
            輸入:x in [1,3],y in [1,14] disp-顯示字符字模組首地址
            輸出:無
            功能:在LCD指定顯示單元顯示一個(gè)中文字符,每個(gè)顯示單元默認(rèn)為
            16*16點(diǎn)陣字體,對128*64點(diǎn)陣LCD,x最多顯示4行,y最多顯
            示16個(gè)字符,不允許顯示半個(gè)漢字
            ***********************************************************/
            void LCD_write_word(int x,int y,const uchar *disp)
            {
            int i;
            int x_address;
            int y_address;
            if((x<4)&&(y<15))
            {
            for(i=0;i<16;i++)
            {
            x_address=x<<1;
            y_address=(y<<3)+i;
            LCD_write_data(x_address,y_address,*disp++);
            }
            }
            for(i=0;i<16;i++)
            {
            x_address=(x<<1)+1;
            y_address=(y<<3)+i;
            LCD_write_data(x_address,y_address,*disp++);
            }
            }
            /************************************************************
            名稱:LCD_write_picture
            輸入:x in [1,7] and y in [0,127],x1_length-縱向像素(8的整數(shù)倍),
            y1_length-橫向像素(不一定為8的整數(shù)倍)
            輸出:無
            功能:在指定區(qū)域顯示指定像素大小的圖片
            ************************************************************/
            void LCD_write_picture(int x1,int y1,int x_length,int y_length,const int *pdata)
            {
            int x_address;
            int y_address;
            for(x_address=x1;x_address<=x1+(x_length>>3)-1;x_address++)
            {
            for(y_address=y1;y_address {
            LCD_write_data(x_address,y_address,*pdata);
            }
            }
            }
            /**********************************************************
            名稱: busy
            輸入:無
            輸出:忙狀態(tài)返回1,空閒狀態(tài)返回0;
            功能:判別LCD控制器內(nèi)部狀態(tài),忙時(shí)返回1,閑時(shí)返回0
            **********************************************************/
            uchar busy(void)
            {
            RS_COMM;
            RW_READ;
            if(BIT(7)==0)
            {
            return 0;
            }
            else
            return 1;
            }
            /***************************************************************
            名稱:12864測試
            功能:逐點(diǎn)掃描
            ****************************************************************/
            void LCD_test()
            {
            uchar i,j;
            for(i=0;i<63;i++)
            {
            for(j=0;j<127;j++)
            {
            delayms(20);
            LCD_write_dot(i,j);
            delayms(100);
            }
            }
            }
            /**************************************************************
            名稱:axis()
            輸入:無
            輸出:無
            功能:標(biāo)定界面坐標(biāo)
            ***************************************************************/
            void axis()
            {
            uchar a,b,y,x;
            for(a=0;a<63;a++) //y軸坐標(biāo)及分位點(diǎn);
            {
            LCD_write_data(a,29,0x01);
            }
            for(b=0;b<127;b+=5) //x軸坐標(biāo)及分位點(diǎn);
            {
            LCD_write_data(30,b,0x04);
            }
            }
            /**********************************************************
            /********************************************************
            名稱:定時(shí)器0初始化
            輸入:
            輸出:
            描述:普通方式,中斷工作方式,注意中斷響應(yīng)程序中要重裝初值
            *********************************************************/
            void timer0_init()
            {
            SFIOR|=BIT(0); //復(fù)位預(yù)定比例分頻器;
            TCCR0|=(BIT(2)|BIT(0)); //設(shè)定分頻器為1024分頻;
            //TCCR0|=BIT(0); //設(shè)定分頻器為無分頻;
            TCNT0=255; //裝訂計(jì)數(shù)初值
            TIMSK|=BIT(0); //開啟T/C0中斷;
            SEI(); //開總中斷;
            DDRC|=BIT(0);
            PORTC|=BIT(0);
            }
            /************************************************************
            中斷處理函數(shù)
            ************************************************************/
            #pragma interrupt_handler time0_proc:10
            void time0_proc()
            {
            TIMSK&=~BIT(0); //關(guān)閉中斷;
            TCNT0=255; //重新裝訂計(jì)數(shù)初值;
            PORTC^=BIT(0);
            TIMSK|=BIT(0); //開啟T0中斷
            }
            /*************************************************************
            名稱:6位數(shù)碼管按鍵位移顯示
            輸入:無
            輸出:無
            描述:按鍵輸入時(shí)在LED上移位顯示按鍵值,當(dāng)按下f時(shí),全部清零。
            **************************************************************/
            void keymovedis()
            {
            uchar keyval1,keyval2,presstimes;
            while(1)
            {
            if(keyscan()==15) //F的鍵值為15;
            {
            for(presstimes=0;presstimes<5;presstimes++)
            {
            dispbuf[presstimes]=date[0];
            show(0,presstimes);
            }
            }
            else
            {
            for(presstimes=0;presstimes<5;presstimes++)
            {
            dispbuf[5-presstimes]=dispbuf[4-presstimes];
            dispbuf[0]=keyscan();
            show(dispbuf[presstimes],presstimes);
            }
            }
            }
            }
            /*********************************************************
            主函數(shù)main().c,地球人都知道,不必廢話
            **********************************************************/
            void main()
            {
            while(1)
            {
            }
            }
            上一頁 1 2 3 下一頁

            評論


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

            關(guān)閉