欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機1602顯示心形程序及實物

[復制鏈接]
跳轉到指定樓層
樓主
ID:624820 發表于 2019-10-16 09:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 1850638586 于 2019-10-16 09:32 編輯
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. unsigned char table1[]={0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
  5.                         0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
  6.                         0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
  7.                         0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
  8.                         0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
  9.                         0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
  10.                         0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
  11.                         0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00};//心圖案
  12. #define   CLEARSCREEN   LCD_write_command(0x01)

  13. /**************定義接口************************/

  14. #define   LCDIO    P2
  15. sbit LCD1602_RS=P0^7;   
  16. sbit LCD1602_RW=P0^6;   
  17. sbit LCD1602_E=P0^5;

  18. /**************定義函數************************/
  19. void LCD_write_command(unsigned char command);//寫入指令函數
  20. void LCD_write_dat(unsigned char dat);//寫入數據函數
  21. void LCD_set_xy( unsigned char x, unsigned char y );//設置顯示位置函數
  22. void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat);//顯示一個字符函數
  23. void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s);//顯示字符串函數
  24. void LCD_init(void);//初始化函數
  25. void delay_nms(unsigned int n);//延時函數
  26. /********************************************/

  27. /************初始化函數****************/
  28. void LCD_init(void)
  29. {
  30. CLEARSCREEN;//clear screen
  31. LCD_write_command(0x38);//set 8 bit data transmission mode
  32. LCD_write_command(0x0c);//open display (enable lcd display)
  33. LCD_write_command(0x80);//set lcd first display address
  34. CLEARSCREEN;//clear screen
  35. }
  36. /****************************************************/

  37. /**************寫指令函數********************************/
  38. void LCD_write_command(unsigned char command)
  39. {
  40.     LCDIO=command;
  41.     LCD1602_RS=0;   
  42.     LCD1602_RW=0;
  43.     LCD1602_E=0;
  44.     LCD1602_E=1;
  45.     delay_nms(10);
  46. }
  47. /***************************************************/
  48. /****************寫數據函數************************/
  49. void LCD_write_dat(unsigned char dat)
  50. {
  51. LCDIO=dat;
  52. LCD1602_RS=1;
  53. LCD1602_RW=0;
  54. LCD1602_E=0;
  55. delay_nms(1);
  56. LCD1602_E=1;
  57. }
  58. /****************************************************/

  59. /***************設置顯示位置**************************/
  60. void LCD_set_xy( unsigned char x, unsigned char y )
  61. {
  62. unsigned char address;
  63. if (y == 1)
  64.    address = 0x80 + x;
  65. else
  66.       address =0xc0+ x;
  67. LCD_write_command(address);
  68. }
  69. /***************************************************/

  70. /****************顯示一個字符**********************/
  71. void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat)
  72. {
  73. LCD_set_xy( x, y );
  74. LCD_write_dat(dat);
  75. }
  76. /**********************************************/

  77. /***************顯示字符串函數***************/
  78. void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s)
  79. {
  80.      LCD_set_xy( X, Y );
  81.      while (*s)
  82.      {
  83.        LCD_write_dat(*s);   
  84.        s ++;
  85.      }
  86. }
  87. /***********************************************/

  88. /********** 延時**********************/
  89. void delay_nms(unsigned int n)      
  90. {
  91.      unsigned int i=0,j=0;
  92.      for (i=n;i>0;i--)
  93.      for (j=0;j<10;j++);
  94. }
  95. /**************************************/

  96. /***********主函數**************/
  97. void main(void)
  98. {
  99. unsigned char i,j,k,tmp;
  100. LCD_init();
  101. delay_nms(100);
  102. tmp=0x40;//設置CGRAM地址的格式字
  103. k=0;
  104. for(j=0;j<8;j++)
  105.    {
  106.       for(i=0;i<8;i++)
  107.        {
  108.          LCD_write_command(tmp+i); // 設置自定義字符的 CGRAM 地址
  109.          delay_nms(2);
  110.          LCD_write_dat(table1[k]); // 向CGRAM寫入自定義字符表的數據
  111.          k++;
  112.          delay_nms(2);
  113.        }
  114.       tmp=tmp+8;
  115.     }
  116.    LCD_dsp_string(1,1,"heart");//在第一行第一列顯示“heart”
  117.    for (i=0;i<4;i++)
  118.      {
  119.        LCD_dsp_char( 10+i,1,i);//在第一行第10列位置顯示心圖案的上半部
  120.        delay_nms(1);
  121.      }
  122.    for (i=4;i<8;i++)
  123.      {
  124.        LCD_dsp_char( 10+i-4,2,i);//在第二行第10列位置顯示心圖案的下半部
  125.        delay_nms(1);
  126.      }
  127.    while (1);
  128. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表