wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2515|回復: 1
打印 上一主題 下一主題
收起左側

求助工程大佬們 基于51單片機12864電子時鐘,不采用時鐘芯片

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:432611 發(fā)表于 2018-11-25 19:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求一個基于51單片機和12864設計的簡單電子時鐘,且不采用時鐘芯片的C51源程序和.hex可執(zhí)行文件和proteus仿真,顯示時分秒即可,謝謝
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:442767 發(fā)表于 2018-12-9 18:14 | 只看該作者
#include<msp430f149.h>
#include "p_lcd12864.h"


/**************************************************
函數(shù)名稱:lcd_delay_n
功    能:大致延時 只要滿足正常顯示即可 根據(jù)實際調(diào)節(jié)
參    數(shù):n
返回值  :無
**************************************************/
void lcd_delay_n(unsigned int n)
{
    unsigned int i;
    for(i=n;i>0;i--)  _NOP();
}



/**************************************************
函數(shù)名稱:my_abs
功    能:求絕對值   調(diào)用math。h中的abs總是有警告 于是自己寫
參    數(shù):a
返回值  :無
**************************************************/
unsigned int my_abs(int a)
{
    if(a<0)
        a=-a;
    return a;
}



/**************************************************
函數(shù)名稱:write_cmd
功    能:向液晶中寫控制命令
參    數(shù):cmd--控制命令
返回值  :無
**************************************************/
void write_cmd(unsigned char cmd)
{
    unsigned char lcdtemp = 0;
    LCD_RS_L;
    LCD_RW_H;
    LCD_DataIn;
    do
    {
        LCD_EN_H;
        _NOP();
        lcdtemp = LCD2MCU_Data;
        LCD_EN_L;
    }
    while(lcdtemp&0x80);
   
    LCD_DataOut;
    LCD_RS_L;
    LCD_RW_L;
    MCU2LCD_Data = cmd;
   
    LCD_EN_H;
    _NOP();
    LCD_EN_L;
}



/**************************************************
函數(shù)名稱:write_data
功    能:向液晶中寫數(shù)據(jù)
參    數(shù):dat--顯示數(shù)據(jù)
返回值  :無
**************************************************/
void write_data(unsigned char dat)
{
    unsigned char lcdtemp;
    LCD_RS_L;
    LCD_RW_H;
    LCD_DataIn;
    do
    {
        LCD_EN_H;
        _NOP();
        lcdtemp = LCD2MCU_Data;
        LCD_EN_L;
    }
    while(lcdtemp&0x80);
   
    LCD_RS_H;
    LCD_RW_L;
    LCD_DataOut;
    MCU2LCD_Data = dat;
    LCD_EN_H;
    _NOP();
    LCD_EN_L;
}




/**************************************************
函數(shù)名稱:lcd_read_data
功    能:讀取12864中一個字節(jié)的數(shù)據(jù)
參    數(shù):無
返回值  :顯示的數(shù)據(jù)
**************************************************/
unsigned char lcd_read_data(void)
{
    unsigned char Data_Temp;
    unsigned char lcdtemp;
    LCD_RS_L;
    LCD_RW_H;
    LCD_DataIn;
    do
    {
        LCD_EN_H;
        _NOP();
        lcdtemp = LCD2MCU_Data;
        LCD_EN_L;
    }
    while(lcdtemp&0x80);
   
    LCD_RS_H;
    LCD_RW_H;
    LCD_DataIn;
   
    LCD_EN_H;
    _NOP();
    Data_Temp = LCD2MCU_Data;
    LCD_EN_L;
   
    return Data_Temp;
}




/**************************************************
函數(shù)名稱:lcd_setxy
功    能:設置顯示位置   
參    數(shù):X(1~16),Y(1~4)
返回值  :無
**************************************************/
void lcd_setxy(unsigned char x,unsigned char y)
{
    switch(y)
    {
        case 1:
        write_cmd(0x7F+x);break;
        case 2:
        write_cmd(0x8F+x);break;
        case 3:
        write_cmd(0x87+x);break;
        case 4:
        write_cmd(0x97+x);break;
        default:break;
    }
}




/**************************************************
函數(shù)名稱:display_line
功    能:在指定位置顯示字符串   
參    數(shù):坐標x y 字符串str
返回值  :無
**************************************************/
void display_line(unsigned char x,unsigned char y,const char* str)
{
    unsigned char LCD_temp;
    lcd_setxy(x,y);
    LCD_temp=*str;
    while(LCD_temp != 0x00)
    {
        write_data(LCD_temp);
        LCD_temp=*(++str);
    }
}




/**************************************************
函數(shù)名稱:display_3digit
功    能:在指定位置開始顯示三位數(shù)字   
參    數(shù):坐標x y 數(shù)字d
返回值  :無
**************************************************/
void display_3digit(unsigned char x,unsigned char y,unsigned int d)
{
    unsigned char a[3],i;
    a[0]=d/100;
    a[1]=(d%100)/10;
    a[2]=d%10;
    lcd_setxy(x,y);
    for(i=0;i<3;i++)
    {
        write_data(0x30+a[i]);
        //DelayUs2x(15);
        lcd_delay_n(1);
    }
}




/**************************************************
函數(shù)名稱:display_2digit
功    能:在指定位置開始顯示兩位數(shù)字   
參    數(shù):坐標x y 數(shù)字d
返回值  :無
**************************************************/
void display_2digit(unsigned char x,unsigned char y,unsigned int d)
{
    unsigned char a[2],i;
    a[0]=d/10;
    a[1]=d%10;
    lcd_setxy(x,y);
    for(i=0;i<2;i++)
    {
        write_data(0x30+a[i]);
        //DelayUs2x(15);
        lcd_delay_n(1);
    }
}




/**************************************************
函數(shù)名稱:display_float
功    能:在指定位置開始顯示浮點數(shù)   
參    數(shù):坐標x y 數(shù)字d
返回值  :無
**************************************************/
void display_float(unsigned char x,unsigned char y,float d)
{
    char a[15];           
    sprintf(a,"%.2f",d);  //修改.f中間的數(shù)字可改變保留幾位小數(shù)
    display_line(x,y,a);
   
}




/**************************************************
函數(shù)名稱:display_float
功    能:清除顯示   
參    數(shù):無
返回值  :無
**************************************************/
void clr_screen(void)
{
    write_cmd(0x01);
    //delay_ms(15);
}




/**************************************************
函數(shù)名稱:display_page
功    能:顯示一頁字符   
參    數(shù):字符數(shù)組s
返回值  :無

格式const  char   *Page1[]=
{
     {"**【>>菜單<<】**"},
     {"撥號  通訊   QQ "},
     {"信息  設置  相機"},
     {"娛樂  備忘   UC "}
     
};
**************************************************/
void display_page( const char **s)
{
    unsigned char  i;
    clr_screen();
    for(i=1;i<5;i++)
        display_line(1,i,s[i-1]);
   
}




/**************************************************
函數(shù)名稱:init12864
功    能:初始化液晶模塊
參    數(shù):無
返回值  :無
**************************************************/
void init12864(void)
{
    LCD_DataOut;
    LCD_CMDOut;                  //液晶控制端口設置為輸出
   
    lcd_delay_n(50);
    write_cmd(0x30);            //基本指令集
    lcd_delay_n(50);
    write_cmd(0x30);            //選擇8bit數(shù)據(jù)流
    lcd_delay_n(50);
    write_cmd(0x02);            //地址歸位
    lcd_delay_n(50);
    write_cmd(0x0c);            //整體顯示打開,游標關閉
    lcd_delay_n(50);
    write_cmd(0x01);            //清除顯示
    lcd_delay_n(50);
    write_cmd(0x06);            //游標右移
    lcd_delay_n(50);
    write_cmd(0x80);            //設定顯示的起始地址
    lcd_delay_n(2000);
}





/**************************************************
函數(shù)名稱:Clear_GDRAM
功    能:清除液晶GDRAM中的隨機數(shù)據(jù)
參    數(shù):無
返回值  :無
**************************************************/
void clear_GDRAM(void)
{
    unsigned char i,j,k;
   
    write_cmd(0x34);               //打開擴展指令集
    i = 0x80;            
    for(j = 0;j < 32;j++)
    {
        write_cmd(i++);
        write_cmd(0x80);
        for(k = 0;k < 16;k++)
        {
            write_data(0x00);
        }
    }
    i = 0x80;
    for(j = 0;j < 32;j++)
    {
        write_cmd(i++);
        write_cmd(0x88);           
        for(k = 0;k < 16;k++)
        {
            write_data(0x00);
        }
    }   
    write_cmd(0x30);                  //回到基本指令集
}




/*******************************************
函數(shù)名稱:draw_picture
功    能:在整個液晶屏幕上畫圖
參    數(shù):圖片數(shù)組ptr
返回值  :無
格    式: 寬度x高度=128x64
unsigned char const logo[]={
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x3F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x01,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x7F,0x80,0x00,0x00,
    0x00,0x03,0xFF,0xFF,0xFE,0x00,0x00,0x01,0xFF,0xE0,0x00,0x01,0xFF,0xE0,0x00,0x00,
    0x00,0x07,0xFF,0xFF,0xFE,0x00,0x00,0x07,0xFF,0xF0,0x00,0x07,0xFF,0xF0,0x00,0x00,
    0x00,0x0F,0xF9,0xFD,0xFF,0x00,0x00,0x0F,0xFF,0xF8,0x00,0x0F,0xFF,0xF8,0x00,0x00,
    0x00,0x0F,0xF0,0xF0,0xFF,0x80,0x00,0x1F,0xFF,0xFC,0x00,0x1F,0xFF,0xFC,0x00,0x00,
    0x00,0x1F,0xF0,0x70,0x7F,0x80,0x00,0x3F,0xFF,0xFC,0x00,0x3F,0xFF,0xFC,0x00,0x00,
    0x00,0x1F,0xE1,0x70,0x7F,0x80,0x00,0x7F,0xFF,0xFE,0x00,0x7F,0xFF,0xFE,0x00,0x00,
    0x00,0x3F,0xE1,0x66,0x7F,0xC0,0x00,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFE,0x00,0x00,
    0x00,0x3F,0xE3,0xE0,0x7F,0xC0,0x01,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFE,0x00,0x00,
    0x00,0x3F,0xE0,0x60,0x7F,0xE0,0x01,0xFF,0xEF,0xFF,0x01,0xFF,0xEF,0xFF,0x00,0x00,
    0x00,0x7F,0xF0,0xF0,0x7F,0xC0,0x03,0xFF,0x87,0xFF,0x03,0xFF,0x87,0xFF,0x00,0x00,
    0x00,0x3F,0xF0,0xF8,0xFF,0xE0,0x03,0xFF,0x83,0xFF,0x83,0xFF,0x81,0xFF,0x80,0x00,
    0x00,0x7F,0xFF,0xFF,0xFF,0xE0,0x07,0xFF,0x01,0xFF,0x07,0xFF,0x01,0xFF,0x00,0x00,
    0x00,0x7F,0xFF,0xFF,0xFF,0xF0,0x07,0xFF,0x00,0xFF,0x87,0xFF,0x00,0xFF,0x80,0x00,
    0x00,0x7F,0xE0,0x00,0xBF,0xF0,0x0F,0xFE,0x00,0xFF,0x8F,0xFE,0x00,0xFF,0x80,0x00,
    0x00,0xFF,0x80,0x00,0x0F,0xF0,0x0F,0xFE,0x00,0xFF,0x8F,0xFE,0x00,0xFF,0x80,0x00,
    0x00,0xFE,0x00,0x00,0x07,0xF0,0x1F,0xFC,0x00,0x7F,0x9F,0xFC,0x00,0x7F,0x80,0x00,
    0x00,0xFF,0xB0,0x00,0x5F,0xF0,0x0F,0xFC,0x00,0xFF,0x8F,0xFC,0x00,0x7F,0x80,0x00,
    0x01,0xFF,0xF8,0x01,0xFF,0xF0,0x1F,0xF8,0x3D,0xFF,0x9F,0xFC,0x3D,0xFF,0x80,0x00,
    0x01,0xFF,0xFF,0xDF,0xFF,0xF8,0x0F,0xFC,0x37,0x0F,0x8F,0xFC,0x37,0x9F,0x80,0x00,
    0x07,0xFF,0xFF,0xFF,0xFF,0xF8,0x1F,0xF8,0x66,0x07,0x1F,0xF8,0x26,0x0F,0x80,0x00,
    0x07,0xFF,0xFF,0xFF,0xFF,0xFC,0x0F,0xFC,0x6C,0x63,0x8F,0xFC,0x66,0x63,0x80,0x00,
    0x1F,0xC7,0xFF,0xFF,0xFC,0xFE,0x0F,0xFE,0xEC,0x80,0x8F,0xFE,0xED,0x80,0x80,0x00,
    0x1F,0xC3,0xFF,0xFF,0xF0,0x7E,0x07,0xFF,0xFC,0x00,0x07,0xFF,0xFE,0x80,0x00,0x00,
    0x3F,0xC7,0xFF,0xFF,0x80,0x7F,0x07,0xFF,0xFE,0x00,0x07,0xFF,0xFE,0x00,0x00,0x00,
    0x3F,0xC3,0xFD,0xFA,0x00,0x3F,0x01,0xFF,0xFF,0x00,0x21,0xFF,0xFF,0x00,0x20,0x00,
    0x3F,0x87,0xF0,0x00,0x00,0x3F,0x00,0xFF,0xFF,0x00,0x40,0xFF,0xFF,0x00,0x40,0x00,
    0x7F,0x83,0xF8,0x00,0x00,0x3F,0x00,0x1F,0xFF,0x80,0x40,0x1F,0xFF,0xC0,0xC0,0x00,
    0x7F,0x87,0xF0,0x00,0x00,0x3F,0x00,0x00,0x00,0xC1,0x80,0x00,0x00,0xE3,0x80,0x00,
    0x7F,0xC3,0xF8,0x00,0x00,0x3F,0x80,0x00,0x00,0x7F,0x00,0x00,0x00,0x7F,0x00,0x00,
    0x7B,0x83,0xF0,0x00,0x00,0x3F,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x1C,0x00,0x00,
    0x79,0xC1,0xF0,0x00,0x00,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x21,0xC0,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0xE0,0x00,0x00,0x00,0x40,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0x00,0xE0,0x00,0x00,0x00,0xC0,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0x00,0x30,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x38,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x9C,0x00,0x00,0x06,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x07,0x00,0x00,0x0C,0x60,0x07,0xF8,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x70,
    0x01,0x81,0xC0,0x00,0x38,0x10,0x03,0x30,0x00,0x00,0x00,0x03,0x60,0x00,0x00,0x30,
    0x01,0x00,0xF8,0x00,0xE0,0x10,0x03,0x30,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x30,
    0x01,0x00,0x03,0xAD,0x00,0x10,0x01,0xE1,0xE3,0xF7,0xF8,0x06,0x01,0xE1,0xE1,0xF0,
    0x00,0xA0,0x0B,0x0E,0xA2,0xA0,0x01,0xE3,0x31,0xC3,0x30,0x06,0x03,0x33,0x33,0x30,
    0x00,0x00,0x54,0x00,0x00,0x00,0x01,0xE3,0xF1,0x81,0xE0,0x06,0xF3,0x33,0x33,0x30,
    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE3,0x01,0x81,0xE0,0x06,0x63,0x33,0x33,0x30,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC3,0x31,0x80,0xC0,0x03,0x63,0x33,0x33,0x30,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0xE3,0xE0,0xC0,0x01,0xC1,0xE1,0xE1,0xF8,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
********************************************/
void draw_picture(const unsigned char *ptr)
{
    unsigned char i,j,k;
   
    clr_screen();
   
    write_cmd(0x34);        //打開擴展指令集
    i = 0x80;            
    for(j = 0;j < 32;j++)
    {
        write_cmd(i++);
        write_cmd(0x80);
        for(k = 0;k < 16;k++)
        {
            write_data(*ptr++);
        }
    }
    i = 0x80;
    for(j = 0;j < 32;j++)
    {
        write_cmd(i++);
        write_cmd(0x88);           
        for(k = 0;k < 16;k++)
        {
            write_data(*ptr++);
        }
    }  
    write_cmd(0x36);        //打開繪圖顯示
    write_cmd(0x30);        //回到基本指令集
}




/**************************************************
函數(shù)名稱:set_white
功    能:任意位置反白   
參    數(shù):行數(shù)y 起始x 結束end_x  模式clear 0反白 1復原
返回值  :無
**************************************************/
void set_white(unsigned char y,unsigned char x,unsigned char end_x,unsigned char clear)
{
    unsigned char i, j, white_x, white_y,white_end_x,clr_x,clr_y;                //
    white_end_x = (end_x-x+1);
    white_end_x <<= 1;
    write_cmd(0x36);                   //打開繪圖模式
    if(y==1)
    {
        white_x = (0x80+x-1);
        white_y = 0x80;
        clr_x = 0x80;
        clr_y = 0x80;
    }
    else if(y==2)
    {
        white_x = (0x80+x-1);
        white_y = 0x90;
        clr_x = 0x80;
        clr_y = 0x90;
    }
    else if(y==3)
    {
        white_x = (0x88+x-1);
        white_y = 0x80;
        clr_x = 0x88;
        clr_y = 0x80;
    }
    else if(y==4)
    {
        white_x = (0x88+x-1);
        white_y = 0x90;
        clr_x = 0x88;
        clr_y = 0x90;
    }
    if(clear==0)                     //要反白時,先將整行的液晶全部清成不反白(此處行指y)
    {
        for(i=0;i<16;i++ )                //16行
        {
            write_cmd(clr_y++);                 //設置繪圖區(qū)的Y地址坐標0
            write_cmd(clr_x);                 //設置繪圖區(qū)的X地址坐標0
            for(j=0;j<16;j++)                 //
            {
                write_data(0x00);         //清成不反白
                //nop();
            }
        }
    }
    //nop();
    for(i=0;i<16;i++ )                        //16行,因為是16*16漢字
    {
        write_cmd(white_y++);                //設置繪圖區(qū)的Y地址坐標0
        write_cmd(white_x);                //設置繪圖區(qū)的X地址坐標0
        for(j=0;j<white_end_x;j++)        //
        {
            if(clear==1)
            {
                write_data(0x00);       //取消這一行的8個點的反白,液晶地址自動加1
                //(此處行指一個一個液晶點所組成的行)
            }
            else
            {
                write_data(0xff);       //反白這一行的8個點,液晶地址自動加1
                //(此處行指一個一個液晶點所組成的行)
            }
            // nop();
        }
    }
    write_cmd(0x30);                   //回到基本模式
}




/**************************************************
函數(shù)名稱:draw_dot
功    能:任意位置打點   
參    數(shù):坐標xy  color 0反白 1復原
返回值  :無
**************************************************/
void draw_dot(unsigned char x,unsigned char y,unsigned char color)
{
    unsigned char  row,tier,tier_bit;
    unsigned char  read_old_h,read_old_l;
    write_cmd(0x34);
    write_cmd(0x36);
    tier=x>>4;
    tier_bit=x&0x0f;
    if(y<32)
        row=y;
    else
    {
        row=y-32;
        tier+=8;
    }
    write_cmd(row+0x80);
    write_cmd(tier+0x80);
    lcd_read_data();
    read_old_h=lcd_read_data();
    read_old_l=lcd_read_data();
    write_cmd(row+0x80);
    write_cmd(tier+0x80);
   
    if(tier_bit<8)
    {
        switch(color)
        {
            case 0:read_old_h&=(~(0x01<<(7-tier_bit)));break;
            case 1:read_old_h|=(0x01<<(7-tier_bit))   ;break;
            case 2:read_old_h^=(0x01<<(7-tier_bit))   ;break;
            default:break;
        }
        write_data(read_old_h);
        write_data(read_old_l);
        
    }
    else
    {
        switch(color)
        {
            case 0:read_old_l&=(~(0x01<<(15-tier_bit)));break;
            case 1:read_old_l|=(0x01<<(15-tier_bit))   ;break;
            case 2:read_old_l^=(0x01<<(15-tier_bit))   ;break;
            default:break;
        }
        
        write_data(read_old_h);
        write_data(read_old_l);
    }
   
    write_cmd(0x30);
   
}




/**************************************************
函數(shù)名稱:draw_level_line
功    能:水平線   
參    數(shù):起始x0 x1 和y坐標  color 0反白 1復原
返回值  :無
**************************************************/
void draw_level_line(unsigned char x0,unsigned char x1,unsigned char y,unsigned char color)
{
    unsigned char temp;
    if(x0>x1)
    {
        temp=x1;
        x1=x0;
        x0=temp;
    }
    for(;x0<=x1;x0++)
    {
        draw_dot(x0,y,color);
    }
   
}



/**************************************************
函數(shù)名稱:draw_vertical_line
功    能:垂直線   
參    數(shù):起始y0 y1 和x坐標  color 0 1
返回值  :無
**************************************************/
void draw_vertical_line(unsigned char y0,unsigned char y1,unsigned char x,unsigned char color)
{
    unsigned char temp;
    if(y0>y1)
    {
        temp=y1;
        y1=y0;
        y0=temp;
    }
    for(;y0<=y1;y0++)
        draw_dot(x,y0,color);
}




/**************************************************
函數(shù)名稱:draw_line
功    能:畫任意直線   
參    數(shù):startx starty endx endy    color
返回值  :無
**************************************************/
void draw_line(unsigned char startx,unsigned char starty
               ,unsigned char endx,unsigned char endy,unsigned char color)
{
    int t,distance;
    int x=0,y=0,delta_x,delta_y;
    int incx,incy;
    delta_x=endx-startx;
    delta_y=endy-starty;
   
    if(delta_x>0)
    {
        incx=1;
    }
    else if(delta_x==0)
    {
        draw_vertical_line(startx,starty,endy,color);
        return;
    }
    else
    {
        incx= -1;
    }
    if(delta_y>0)
    {
        incy=1;
    }
    else if(delta_y==0)
    {
        draw_level_line(startx,endx,starty,color);
        return;
    }
    else
    {
        incy=-1;
    }
    delta_x=my_abs(delta_x);
    delta_y=my_abs(delta_y);
    if(delta_x>delta_y)
    {
        distance=delta_x;
    }
    else
    {
        distance=delta_y;
    }
    draw_dot(startx,starty,color);
    for(t=0;t<=distance+1;t++)
    {
        draw_dot(startx,starty,color);
        x+=delta_x;
        y+=delta_y;
        if(x>distance)
        {
            x-=distance;
            startx+=incx;
        }
        if(y>distance)
        {
            y-=distance;
            starty+=incy;
        }
        
    }
   
}




/**************************************************
函數(shù)名稱:contin_line
功    能:連續(xù)輸入Y 連成線,Y為0-63注意輸入進來時做轉(zhuǎn)換  線從startx至endx 0-127為最大范圍   
參    數(shù):startx  endx endy    color
返回值  :無
**************************************************/
void contin_line(unsigned char startx ,unsigned char endx ,unsigned char Y)
{
     static unsigned char i=0,y0=0,y1=0,f=1; //i連線開始坐標
     if(f)                                     //用于將startx只在第一次傳遞給i
     {
          f=0;
        i = startx;
     }
    // x0=i;
     y1=Y;                              //畫該函數(shù)的圖形,完全連接了,
     if(i!=startx)                      //保證不與00坐標連到一起
          draw_line(i-1,y0,i,y1,1);
     //x1=x0;
     y0=y1;
      
     if(i++>=endx)  //連線結束坐標
     {
         
          i=startx;
          clear_GDRAM();
     }
}




/**************************************************
函數(shù)名稱:draw_curve
功    能:將一系列無符號字符數(shù)組str的數(shù) 大小0-63注意傳遞前做處理,曲線開始位置 xstart 數(shù)組大小size   
參    數(shù):起點startx    size  *str
返回值  :無
**************************************************/
void draw_curve(unsigned char xstart, unsigned char size ,unsigned char *str)
{
    static unsigned char i=0,endx=0,y0=0,y1=0,f=1;
    if(f) //只傳遞一次
    {
        f=0;
        i = xstart;
    }
   
    endx = xstart + size;
    if(endx>=128)  //保證圖形不溢出
        endx =127;
    for(;i<endx;i++)
    {
        y1 = str[i-xstart];
        if(i!=xstart)
            draw_line(i-1,y0,i,y1,1);
        y0 = y1;
    }
    i = xstart;  
    //Clear_GDRAM();
   
}





/**************************************************
函數(shù)名稱:draw_circle
功    能:畫任意圓   
參    數(shù):圓心坐標xy 半徑r    color
返回值  :無
**************************************************/
void draw_circle(unsigned char x,unsigned char y,unsigned char r,unsigned char color)
{
    unsigned char a,b;
    float c;
    a = 0;
    b = r;
    //  c = 1.25 - r;
    c = 3 - 2*r;
    while(a < b)
    {
        draw_dot(x+a,y+b,color);
        draw_dot(x-a,y+b,color);
        draw_dot(x+a,y-b,color);
        draw_dot(x-a,y-b,color);
        
        draw_dot(x+b,y+a,color);
        draw_dot(x-b,y+a,color);
        draw_dot(x+b,y-a,color);
        draw_dot(x-b,y-a,color);
        
        if(c < 0)
        {
            c = c+4*a + 6;
        }
        else
        {
            c= c + 4*(a - b) + 10;
            b-=1;
        }
        a = a + 1;  //控制打點間隔
        
    }
    if(a == b)
    {
        draw_dot(x+a,y+b,color);
        draw_dot(x-a,y+b,color);
        draw_dot(x+a,y-b,color);
        draw_dot(x-a,y+b,color);
        
        draw_dot(x+b,y+a,color);
        draw_dot(x-b,y+a,color);
        draw_dot(x+b,y-a,color);
        draw_dot(x-b,y-a,color);
        
    }
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
三级视频在线| 日韩av免费在线| 在线观看日韩av| 久久久久久久久久久免费精品| 日韩美女主播视频| 鲁丝一区二区三区免费| 日本a视频在线观看| 999精品网站| 国产成人精品无码免费看夜聊软件| 激情五月少妇a| 亚洲专区在线播放| 久久99国产视频| 免费一级淫片| 国产天堂在线播放视频| 日韩区一区二| 亚洲成人二区| 国产成人av电影在线观看| 一区二区三区欧美亚洲| 日韩精品一区在线观看| 久久久久成人精品| 免费影院在线观看一区 | 最近免费中文字幕大全免费第三页| 特大巨黑人吊性xxx视频| 欧美视频综合| 国产极品嫩模在线观看91精品| 九九热线有精品视频99| 日韩黄色片在线观看| 久久精品视频免费| 欧美日韩一区二区在线观看视频| 日韩中文字幕久久| 成人在线免费网站| 无码人妻丰满熟妇区五十路百度| 三级网站在线免费观看| 国产又黄又粗又猛又爽| 中文字幕美女视频| 波多野结衣影片| 在线看片网址| 欧美jizzhd69巨大| 美女呻吟一区| 精品在线视频一区| 日韩欧亚中文在线| 欧美另类老女人| 欧美一区1区三区3区公司 | 欧美在线观看一区二区| 久久精品电影网| 国产中文一区二区| 91制片厂毛片| 亚洲精品中文字幕乱码三区91| 国产色在线播放| 免费av在线网址| 久久99国内| 不卡欧美aaaaa| 337p亚洲精品色噜噜噜| 国产精品久久二区| 妞干网在线视频观看| 黄色录像免费观看| 四虎成人精品在永久在线观看| 日本免费不卡| 欧美丝袜足交| www.日韩大片| 精品国产一区二区三区久久影院 | 激情图片中文字幕| 国产午夜精品久久久久| 一个人看的日本www的免费视频| 日本在线观看视频| 日本久久一二三四| 国产日产精品1区| 亚洲欧美日韩精品久久| 国产亚洲情侣一区二区无| 国产无遮挡猛进猛出免费软件| 成人免费毛片视频| 夜夜操天天干| 久久精品 人人爱| 九九久久精品视频| 91麻豆精品国产自产在线 | 国产亚洲精品美女久久久m| 中文字幕欧美视频| 精品国产无码AV| 欧美孕妇性xxxⅹ精品hd| 亚洲人和日本人hd| 久久久午夜精品| 亚洲性视频网站| 亚洲欧美国产精品桃花| 五月天婷婷丁香网| 轻轻草在线视频| 成人看片网站| 国产传媒久久文化传媒| 日韩电影网在线| 亚洲国内在线| 精品处破女学生| 成人黄色免费电影| 日韩国产在线不卡视频| av亚洲产国偷v产偷v自拍| 亚洲精品在线观看www| 品久久久久久久久久96高清| 殴美一级黄色片| 无人日本免费视频| 91大神在线观看线路一区| 日本欧美一区二区三区| 欧美一区二区在线免费观看| 国产一区二区三区黄| 久久国产柳州莫菁门| 亚洲无人区码一码二码三码| 男女啪啪网站| 免费看男女www网站入口在线 | 怡红院av亚洲一区二区三区h| 青青国产在线观看| 另类av导航| 久久在线电影| 精品国产乱码久久久久久婷婷| 国产成人在线视频| 四虎成人免费视频| 久久久久久国产视频| 国偷自产一区二区免费视频| 国内精品久久久久影院一蜜桃| 亚洲精品久久在线| 欧美少妇一区二区三区| 亚洲无码精品一区二区三区| 色就是色亚洲色图| 欧美久久综合| 欧美日韩精品免费观看视频| 久久这里精品国产99丫e6| 欧美日韩精品亚洲精品| 91免费版在线观看| 亚洲国产精品成人| 欧美色倩网站大全免费| 欧美精品一区二区三区久久| 精品无码久久久久| 香蕉av一区| 亚洲精一区二区三区| 日韩欧美一级二级| 日本三级中文字幕在线观看| 夜夜嗨aⅴ一区二区三区| 免费看a在线观看| 美女网站一区二区| 日韩在线精品一区| 五月婷婷丁香综合网| 欧美亚洲另类在线观看| 欧美激情不卡| 亚洲欧洲另类国产综合| 成人黄色在线播放| 日韩欧美国产成人精品免费| 色影视在线视频资源站| 在线精品在线| 亚洲免费视频在线观看| 国产福利一区视频| 欧美人善zozσ性伦交| 一区中文字幕| 精品日韩视频在线观看| 免费成人深夜夜行视频| 国产一卡二卡三卡| 任你弄在线视频免费观看| 成人综合在线观看| 欧美中文字幕精品| 特级西西人体高清大胆| 未来日记在线观看| 日韩 欧美一区二区三区| 国产欧美日本一区视频| 欧美性资源免费| 中国女人特级毛片| 中文字幕在线视频免费观看| 中文日韩欧美| 亚洲视频自拍偷拍| 国产一级片中文字幕| 免费在线观看h| 婷婷亚洲综合| 日韩av在线精品| 一级黄色香蕉视频| 再深点灬舒服灬太大了少妇 | 亚洲最大中文字幕| www.五月天色| a级免费视频| 国产一区二区中文| 一道本无吗dⅴd在线播放一区 | 免费一区二区| 欧美美女网站色| 日韩小视频在线播放| 久热国产视频| 偷拍欧美精品| 亚洲视频免费一区| 国产精品一区二区在线免费观看| 国产美女视频黄a视频免费| 亚洲欧美卡通另类91av| 欧美巨大黑人极品精男| 懂色av粉嫩av浪潮av| 国产大学生校花援交在线播放| 风流少妇一区二区| 亚洲va欧美va国产综合剧情| 中文字幕在线播出| 亚洲欧洲一二区| 欧美在线一二三四区| 女人和拘做爰正片视频| 奇米影视四色在观看线| 亚洲高清二区| 欧美精品xxx| 欧美国产精品一二三| 久久青草伊人| 精品福利一区二区| 99在线免费视频观看| 91视频播放| 亚洲毛片播放| 91精品国产高清自在线看超| 久久久久香蕉视频| 成人免费影院| 色哟哟日韩精品| 777米奇影视第四色| 毛片a片免费观看| 国产区在线看| 亚洲精品欧美综合四区| 五月天男人天堂| brazzers欧美最新版视频| 激情婷婷亚洲| 97国产在线观看| 日本三级片在线观看| 电影网一区二区| 色欧美片视频在线观看| 欧美激情成人网| 国产成+人+亚洲+欧美+综合| 高清不卡一区二区| 欧美日韩亚洲一区二区三区在线观看 | 亚洲欧美成人影院| 一区二区三区欧美在线观看| 黄色成人在线免费观看| jjzz在线观看| 国产精品一区免费在线观看| 国产自产精品| 欧美性猛交xxxx免费看手交| 激情成人综合| 国产精品久久国产精品99gif| 国产乱子伦精品无码码专区| 久久av电影| 九九精品视频在线| 婷婷激情五月网| 久久久亚洲欧洲日产| 伊人伊成久久人综合网小说| 成人免费毛片xxx| 97久久网站| 亚洲成人精品av| 国产又粗又猛又爽又黄的视频四季| 毛片在线网站| 91麻豆精品国产自产在线观看一区 | 91视频免费网址| 日韩成人精品| 中文字幕日韩欧美在线| 欧美人妻精品一区二区三区| 99精品美女视频在线观看热舞 | 色哟哟网站入口亚洲精品| 日日骚一区二区三区| 高清一区二区| 一区二区欧美亚洲| xxxx.国产| 岳的好大精品一区二区三区| 精品少妇v888av| 在线亚洲欧美日韩| 51精产品一区一区三区| 国产精品激情自拍| 视频区小说区图片区| 免费国产自线拍一欧美视频| 999在线观看免费大全电视剧| 最好看更新中文字幕| 日精品一区二区三区| 精品国产中文字幕| 三级a性做爰视频| 亚洲网站三级| 亚洲成色777777女色窝| 免费在线黄色网| 超碰成人在线免费| 九九热99久久久国产盗摄| 亚洲天天综合网| 欧美精品一级| 国产精品一区二区三区免费观看| xxxx性bbbb欧美| 波多野结衣精品在线| 免费不卡av在线| 国产三级在线免费| 在线欧美小视频| 亚洲av毛片基地| 成人爽a毛片| 久久久亚洲福利精品午夜| 性做久久久久久久| 日韩电影免费在线看| 午夜久久资源| 在线播放你懂的| 欧美日韩一区二区三区| 中文字幕狠狠干| 亚州欧美在线| 欧美肥婆姓交大片| 天天综合在线视频| 国产毛片精品国产一区二区三区| 国产一二三四五| 黄色美女网站在线观看| 欧美午夜电影网| 欧美第一页在线观看| 免费成人结看片| 国产欧美日韩最新| 三级全黄视频| 国产精品女人毛片| 性一交一黄一片| 日本免费成人| 性欧美xxxx视频在线观看| 久草免费福利视频| 高清成人在线观看| 日本久久久久久久久久久久| 国内激情视频在线观看| 中文字幕国产精品久久| 国产综合无码一区二区色蜜蜜| 免费在线成人网| 国产精品入口芒果| 国产欧美黑人| 国产香蕉一区二区三区在线视频 | 国产欧美一区二区三区精品观看| 国产精品久久久久77777| 桃乃木香奈和黑人aⅴ在线播放| 国产精品毛片高清在线完整版| 麻豆网站免费观看| 日韩黄色三级| 欧美一区二粉嫩精品国产一线天| 精品一成人岛国片在线观看| 国产精品三级视频| 五月婷婷综合在线观看| 美女少妇全过程你懂的久久| 99porn视频在线| 国产网友自拍电影在线 | 精品一区二区三区三区| 国产高清在线观看视频| 国产精品69久久久久水密桃| 欧美一级裸体视频| 影音av资源| 亚洲一区二区不卡免费| 中文字幕第69页| 亚洲xxx拳头交| 国产精品99久久久久久大便| 国产精品扒开做爽爽爽的视频| 在线观看亚洲区| 免费国产黄线在线观看视频| 国产精品国产a级| 欧美巨胸大乳hitomi| 亚洲激情中文在线| 一级黄色录像免费看| 青青草视频在线免费直播| 欧美成人免费小视频| 国产精品美女一区二区三区四区| 亚洲欧美激情一区二区| 精品一区在线观看视频| 亚洲精品精选| 男人揉女人奶房视频60分| 丝袜美腿一区| 国产精品美女网站| av成人动漫| 亚洲国产第一页| 男人午夜影院| 亚洲欧美日韩国产成人精品影院 | 性色av蜜臀av色欲av| 国产suv精品一区| 超碰97在线人人| 免费黄色片在线观看| 国产亚洲综合久久| 国产在线视频自拍| 精品国产精品三级精品av网址| 在线观看日本视频| 国产乱子伦视频一区二区三区 | 久久久精品成人| 国产精品magnet| 男人揉女人奶房视频60分| 日本综合精品一区| 美国av一区二区三区| 日韩激情美女| 日本乱人伦a精品| 最新亚洲伊人网| 最近中文字幕日韩精品| 女明星视频黄又免费| 欧美久久免费观看| 天堂av手机版| 亚洲电影第三页| 中文字幕在线观看精品| 91视频在线观看免费| 男人的午夜天堂| 美日韩一区二区| 少妇精品无码一区二区三区| 自拍日韩欧美| 波多野结衣作品集| 亚洲丝袜美腿一区| 欧美一区二区三区综合| 2020国产精品小视频| 欧美不卡在线一区二区三区| 123区在线| 92看片淫黄大片看国产片| 国产最新在线| 国产精品久久久久久久电影| 手机福利在线| 欧美激情一级二级| 在线免费看污| 欧美激情一区二区三区成人| 瑜伽美女视频| 久久影院资源网| 在线激情视频| 欧美老女人xx| av在线电影网站| 久久综合伊人77777| 亚洲国产综合久久|