新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC16F917 NOKIA5110 LCD 任意畫點程序

        PIC16F917 NOKIA5110 LCD 任意畫點程序

        作者: 時間:2016-11-18 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201611/316058.htm

        void LCD_Print_Pix(unsigned char x,unsigned char y,unsigned char display_mode);//1/4區域任意畫點程序

        unsigned char bank1 Lcd_Buffer0[3][21] = {{0}, {0}}; //LCD顯示數據緩存區
        unsigned char bank2 Lcd_Buffer1[3][21] = {{0}, {0}}; //LCD顯示數據緩存區
        ///////////////////////LCD任意位置寫點/////////////
        //必須把LCD顯示數據緩存,這樣才可以任意畫點,RAM需要(48/6)×84個字節才能整個屏幕寫
        //本程序是1/4 LCD區域內顯示任意點
        //x=x軸坐標,y=y軸坐標,display_mode=0不顯示;display_mode=1顯示點;
        void LCD_Print_Pix(unsigned char x,unsigned char y,unsigned char display_mode)
        {
        unsigned char row;
        unsigned char offset;
        unsigned char lcd_data;
        unsigned char i;

        if ( x > 41 ) return; //由于RAM空間問題,對1/4屏幕操作
        if ( y > 23 ) return;
        if ( display_mode > 1 ) return;

        row = y / 8;
        offset = y % 8;

        if(x<=20)lcd_data = Lcd_Buffer0[row][x]; //從緩沖區讀LCD顯示數據
        if(x>20)lcd_data = Lcd_Buffer1[row][x-21];


        if (display_mode == 0)
        {
        lcd_data &= (~(0x01 << offset));//擦除
        }
        else if (display_mode== 1)
        {
        lcd_data|= (0x01 << offset);//畫點
        }

        if(x<=20)Lcd_Buffer0[row][x] = lcd_data; //LCD顯示數據保存到緩沖區
        if(x>20) Lcd_Buffer1[row][x-21] = lcd_data;

        lcd_data=change_char_h_l(lcd_data);//y軸顯示時高低位互換


        LCD_set_XY(x,row);
        ////寫LCD數據///
        LCD_CE=0 ; // 使能LCD
        LCD_DC=1 ; // 傳送數據
        for(i=0;i<8;i++)
        {
        if((lcd_data>>i)&0x01)
        {SPI_MOSI=1;}
        else
        {SPI_MOSI=0;}
        SPI_CLK=0;
        NOP();
        SPI_CLK=1;
        }
        LCD_CE=1 ;// 關閉LCD
        /////////
        }

        例子:

        LCD_Print_Pix(0,0,1); x顯示一個點

        畫個方塊:

        for(i=0;i<15;i++)
        {
        LCD_Print_Pix(i,0,1);
        LCD_Print_Pix(i,9,1);
        }
        for(i=0;i<10;i++)
        {
        LCD_Print_Pix(0,i,1);
        LCD_Print_Pix(14,i,1);
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 新干县| 华阴市| 剑川县| 赤峰市| 固阳县| 改则县| 定襄县| 兴业县| 芒康县| 长兴县| 六安市| 宜州市| 揭西县| 凤庆县| 武胜县| 南岸区| 璧山县| 保康县| 蒙城县| 阿拉善盟| 张家口市| 邢台市| 石棉县| 慈利县| 呼和浩特市| 仙桃市| 迁西县| 武功县| 穆棱市| 玛曲县| 九江市| 乌鲁木齐县| 西安市| 邯郸县| 东山县| 元阳县| 扎囊县| 望都县| 双辽市| 沾化县| 洞口县|