色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)_1602液晶自定義心形圖案

          51單片機(jī)_1602液晶自定義心形圖案

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

          unsigned char table1[]={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};//心圖案
          #define CLEARSCREEN LCD_write_command(0x01)

          本文引用地址:http://cafeforensic.com/article/201611/323849.htm

          /**************定義接口************************/

          #define LCDIO P0
          sbit LCD1602_RS=P2^2;
          sbit LCD1602_RW=P2^1;
          sbit LCD1602_EN=P2^0;

          /**************定義函數(shù)************************/
          void LCD_write_command(unsigned char command);//寫(xiě)入指令函數(shù)
          void LCD_write_dat(unsigned char dat);//寫(xiě)入數(shù)據(jù)函數(shù)
          void LCD_set_xy( unsigned char x, unsigned char y );//設(shè)置顯示位置函數(shù)
          void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat);//顯示一個(gè)字符函數(shù)
          void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s);//顯示字符串函數(shù)
          void LCD_init(void);//初始化函數(shù)
          void delay_nms(unsigned int n);//延時(shí)函數(shù)
          /********************************************/

          /************初始化函數(shù)****************/
          void LCD_init(void)
          {
          CLEARSCREEN;//clear screen
          LCD_write_command(0x38);//set 8 bit data transmission mode
          LCD_write_command(0x0c);//open display (enable lcd display)
          LCD_write_command(0x80);//set lcd first display address
          CLEARSCREEN;//clear screen
          }
          /****************************************************/

          /**************寫(xiě)指令函數(shù)********************************/
          void LCD_write_command(unsigned char command)
          {
          LCDIO=command;
          LCD1602_RS=0;
          LCD1602_RW=0;
          LCD1602_EN=0;
          LCD1602_EN=1;
          delay_nms(10);
          }
          /***************************************************/
          /****************寫(xiě)數(shù)據(jù)函數(shù)************************/
          void LCD_write_dat(unsigned char dat)
          {
          LCDIO=dat;
          LCD1602_RS=1;
          LCD1602_RW=0;
          LCD1602_EN=0;
          delay_nms(1);
          LCD1602_EN=1;
          }
          /****************************************************/

          /***************設(shè)置顯示位置**************************/
          void LCD_set_xy( unsigned char x, unsigned char y )
          {
          unsigned char address;
          if (y == 1)
          address = 0x80 + x;
          else
          address =0xc0+ x;
          LCD_write_command(address);
          }
          /***************************************************/

          /****************顯示一個(gè)字符**********************/
          void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat)
          {
          LCD_set_xy( x, y );
          LCD_write_dat(dat);
          }
          /**********************************************/

          /***************顯示字符串函數(shù)***************/
          void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s)
          {
          LCD_set_xy( X, Y );
          while (*s)
          {
          LCD_write_dat(*s);
          s ++;
          }
          }
          /***********************************************/

          /********** 延時(shí)**********************/
          void delay_nms(unsigned int n)
          {
          unsigned int i=0,j=0;
          for (i=n;i>0;i--)
          for (j=0;j<10;j++);
          }
          /**************************************/

          /***********主函數(shù)**************/
          void main(void)
          {
          unsigned char i,j,k,tmp;
          LCD_init();
          delay_nms(100);
          tmp=0x40;//設(shè)置CGRAM地址的格式字
          k=0;
          for(j=0;j<8;j++)
          {
          for(i=0;i<8;i++)
          {
          LCD_write_command(tmp+i); // 設(shè)置自定義字符的 CGRAM 地址
          delay_nms(2);
          LCD_write_dat(table1[k]); // 向CGRAM寫(xiě)入自定義字符表的數(shù)據(jù)
          k++;
          delay_nms(2);
          }
          tmp=tmp+8;
          }
          LCD_dsp_string(1,1,"heart: ");//在第一行第一列顯示“heart”
          for (i=0;i<4;i++)
          {
          LCD_dsp_char( 10+i,1,i);//在第一行第10列位置顯示心圖案的上半部
          delay_nms(1);
          }
          for (i=4;i<8;i++)
          {
          LCD_dsp_char( 10+i-4,2,i);//在第二行第10列位置顯示心圖案的下半部
          delay_nms(1);
          }
          while (1);
          }
          /************************ 感謝陳青華老師的幫助********************************************/



          評(píng)論


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

          關(guān)閉