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

            新聞中心

            TFT畫出任意斜率的直線

            作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
            在之前共享的幾篇關(guān)于TFT的應(yīng)用程序中,大家可以看出程序的主要框架沒有發(fā)生大的變化;變化的只是將帶你用的函數(shù)做了更為靈活的改變!

            所以大家學(xué)習(xí)程序時(shí),一定要能從長篇的程序中找出精華,并及時(shí)拷貝下來做積累,最終能夠靈活的應(yīng)用!!

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

            這篇文章或許是關(guān)于TFT的最后一遍文章了!再有也只是TFT的應(yīng)用程序!

            只要大家能掌握之前的幾篇文章,就可以自己靈活的應(yīng)用了!?。?img onload="if(this.width>620)this.width=620;" onclick="window.open(this.src)" style="cursor:pointer" real_src="http://editerupload.eepw.com.cn/fetch/20161101/321647_1_0.jpg" src="http://editerupload.eepw.com.cn/fetch/20161101/321647_1_0.jpg" type="face" />

            #include
            #defineuint unsigned int
            #define uchar unsigned char
            #defineTYPE_LCD_DATA1
            #defineTYPE_LCD_COMMAND0
            #defineLCD_SIZE_X128
            #defineLCD_SIZE_Y160
            #defineDATAP0
            sbit LCD_RST= P2^7;//RST 引腳定義
            sbit LCD_RD= P3^2;//RD引腳定義
            sbit LCD_WR= P3^3;//WR引腳定義
            sbit LCD_RS= P2^5;//RS引腳定義
            sbit LCD_CS= P2^6;//CS引腳定義
            uint colors[]=
            {
            0xf800,0x07e0,0x001f,0xffe0,0x0000,0x07ff,0xf81f,0xffff ,0x7bef
            };
            void delay_ms(uint ms)
            {
            unsigned char k;
            while (ms--)
            {
            for (k = 0; k < 228; k++)
            ;
            }
            }


            void LCD_Write(uchar type, uint value)
            {
            LCD_CS = 0;
            LCD_RS = type;// 0: command1: data

            LCD_WR= 0;
            DATA = (uchar)value;;
            LCD_WR = 1;
            LCD_CS = 1;
            }



            void LCD_Wirte_Data16(uint value)// color data
            {
            LCD_CS = 0;
            LCD_RS = 1;
            LCD_WR= 0;
            DATA = (uchar)value;
            LCD_WR= 1;
            LCD_WR= 0;
            DATA = (uchar)(value>>8);
            LCD_WR = 1;
            LCD_CS = 1;
            }


            void Reg_Write(uint reg,uint value)
            {
            LCD_Write(TYPE_LCD_COMMAND,reg);
            LCD_Write(TYPE_LCD_DATA,value);
            }



            void LCD_SetRamAddr(uint xStart, uint xEnd, uint yStart, uint yEnd)
            {
            Reg_Write(0x09, xStart);
            Reg_Write(0x10, yStart);
            Reg_Write(0x11, xEnd);
            Reg_Write(0x12, yEnd);
            Reg_Write(0x18, xStart);
            Reg_Write(0x19, yStart);
            LCD_Write(TYPE_LCD_COMMAND,0x22);// 0x22
            }



            void LCD_init(void)
            {
            uint num;
            Reg_Write(0x0001,0x0002); //MODE_SEL1
            Reg_Write(0x0002,0x0012);//MODE_SEL2
            Reg_Write(0x0003,0x0000);//MODE_SEL3
            Reg_Write(0x0004,0x0010);//MODE_SEL3
            LCD_SetRamAddr(0,127, 0,159);
            for(num=20480;num>0;num--)
            LCD_Wirte_Data16(0xffff);

            Reg_Write(0x0005,0x0008);//VCO_MODE
            Reg_Write(0x0007,0x007f);//VCOMHT_CTRL
            Reg_Write(0x0008,0x0017);//VCOMLT_CTRL
            Reg_Write(0x0009,0x0000);//write SRAM window start X point
            Reg_Write(0x0010,0x0000);//write SRAM window start y point
            Reg_Write(0x0011,0x0083);//write SRAM window end x point
            Reg_Write(0x0012,0x009f);//write SRAM window end y point
            Reg_Write(0x0017,0x0000);//SRAM contrl
            Reg_Write(0x0018,0x0000);//SRAM x position
            Reg_Write(0x0019,0x0000);//SRAM y position
            Reg_Write(0x0006,0x00c5);//DAC_OP_CTRL2
            delay_ms(10); //延時(shí)

            }

            //打點(diǎn)函數(shù)
            void Dadian(uint Xposition, uint Yposition,uint n)
            {
            uintnum ;
            LCD_SetRamAddr(Xposition,Xposition,Yposition ,Yposition);
            for(num=2;num>0;num--)
            LCD_Wirte_Data16(colors[n]);
            }

            void Xiexian(uint x1,uint y1,uint x2,uint y2,uint color)
            {
            uint t;
            int xerr=0,yerr=0,delta_x,delta_y,distance;
            int incx,incy;
            uint row,col;
            delta_x = x2-x1;//計(jì)算坐標(biāo)增量
            delta_y = y2-y1;
            col=x1;
            row=y1;
            if(delta_x>0) incx=1;//設(shè)置單步方向
            else
            {
            if(delta_x==0) incx=0;//垂直線
            else {incx=-1;delta_x=-delta_x;}
            }
            if(delta_y>0)incy=1;
            else
            {
            if(delta_y==0) incy=0;//水平線
            else
            {
            incy=-1;
            delta_y=-delta_y;
            }
            }
            if(delta_x>delta_y) distance=delta_x;//選取基本增量坐標(biāo)軸
            else distance=delta_y;

            for(t=0;t<=distance+1;t++)
            {//畫線輸出
            Dadian(col, row, color);
            xerr+=delta_x;
            yerr+=delta_y;
            if(xerr>distance)
            {
            xerr-=distance;
            col+=incx;
            }
            if(yerr>distance)
            {
            yerr-=distance;
            row+=incy;
            }
            }
            }
            void main()
            {
            P2 = 0xff;
            P0 = 0xff;
            LCD_init();
            while(1)
            {
            Xiexian(0,0,100,160,0);
            }
            }



            關(guān)鍵詞: TFT任意斜率直

            評(píng)論


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

            關(guān)閉