久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機LCD1602字符液晶垂直滾動可以但是水平滾動程序不行 求指導

[復制鏈接]
跳轉到指定樓層
樓主
ID:228147 發(fā)表于 2021-4-21 14:51 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
一、電路設計此電路由AT89C51最小系統(tǒng)、LCD1602顯示模塊和獨立按鍵組成。
可實現(xiàn)文字的上下左右滾動
二、運行效果
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

三、部分單片機代碼
  1. /***************   writer:shopping.w   ******************/
  2. #include <reg52.h>
  3. #include <string.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. void Initialize_LCD();
  7. void ShowString(uchar,uchar,uchar *);
  8. sbit K1 = P3^0;
  9. sbit K2 = P3^1;
  10. sbit K3 = P3^2;

  11. uchar code Prompt[]="PRESS K1--K4 TO START DEMO PROG";
  12. uchar const Line_Count = 6;
  13. uchar code Msg[][80]=
  14. {
  15.      "Many CAD users dismiss",
  16.     "process of creating PCB",
  17.     "of view.with PCB layout",
  18.     "placement and track routing,",
  19.     "can often be the most time",
  20.     "And if you use circuit simulation",
  21.     "you are going to spend even more"
  22. };
  23. uchar Disp_Buffer[32];
  24. void Delayxms(uint ms)
  25. {
  26.      uchar i;
  27.     while(ms--)
  28.     {
  29.          for(i=0;i<120;i++);
  30.     }
  31. }

  32. void V_Scroll_Display()
  33. {
  34.      uchar i,j,k = 0;
  35.     uchar *p = Msg[0];
  36.     uchar *q = Msg[Line_Count] + strlen(Msg[Line_Count]);
  37.     while(p<q)
  38.     {
  39.          for(i=0;(i<16)&&(p<q);i++)
  40.         {
  41.              if(((i==0)||(i==15))&& *p == ' ')
  42.                 p++;
  43.             if(*p != '\0')
  44.             {
  45.                  Disp_Buffer[i] = *p++;
  46.             }
  47.             else
  48.             {
  49.                  if(++k>Line_Count)
  50.                     break;
  51.                 p = Msg[k];
  52.                 Disp_Buffer[i] = *p++;
  53.             }
  54.         }
  55.         for(j=i;j<16;j++)
  56.             Disp_Buffer[j]=' ';
  57.         while(F0)
  58.             Delayxms(5);
  59.         ShowString(0,0,"      ");
  60.         Delayxms(150);
  61.         while(F0)
  62.             Delayxms(5);
  63.         ShowString(0,1,Disp_Buffer);
  64.         Delayxms(150);
  65.         while(F0)
  66.             Delayxms(5);
  67.         ShowString(0,0,Disp_Buffer);
  68.         ShowString(0,1,"      ");
  69.         Delayxms(150);   
  70.     }
  71.     ShowString(0,0,"         ");
  72.     ShowString(0,1,"         ");
  73. }

  74. void H_Scroll_Display()
  75. {
  76.     uchar m,n,t = 0,L=0;
  77.     uchar *p = Msg[0];
  78.     uchar *q = Msg[Line_Count] + strlen(Msg[Line_Count]);
  79.     for(m=0;m<16;m++)
  80.             Disp_Buffer[m]=' ';   
  81.     while(p<q)
  82.     {
  83.          if((m=16||m==31)&& *p == ' ')
  84.             p++;
  85.         for(m=16;m<32&&p<q;m++)
  86.         {
  87.              if(*p != '\0')
  88.             {
  89.                 Disp_Buffer[m] = *p++;     
  90.             }
  91.             else
  92.             {
  93.                  if(++t>Line_Count)
  94.                     break;
  95.                 p = Msg[t];
  96.                 Disp_Buffer[m] = *p++;
  97.             }
  98.         }
  99.         for(n=m;n<32;n++)
  100.             Disp_Buffer[n]=' ';
  101.         for(m=0;m<=16;m++)
  102.         {
  103.              while(F0)
  104.                  Delayxms(5);
  105.                ShowString(0,L,Disp_Buffer+1);
  106.                while(F0)
  107.                  Delayxms(5);
  108.             Delayxms(20);
  109.         }
  110.         L = (L==0)? 1:0;
  111.         Delayxms(200);
  112.     }
  113.     if(L==1)
  114.         ShowString(0,1,"      ");   
  115. }

  116. void EX_INT0() interrupt 0
  117. {
  118.      F0 = !F0;
  119. }

  120. void main()
  121. {
  122.      uint Count = 0;
  123.     IE = 0x81;
  124.     IT0 = 1;
  125. ……………………

  126. …………限于本文篇幅 余下代碼請從51黑下載附件…………

復制代碼
全部資料51hei下載地址:
1602字符液晶滾動演示程序.zip (88.69 KB, 下載次數(shù): 35)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清一区二区三区 | 亚洲精品一二三区 | 国产在线播放av | 亚洲精品一区二区三区蜜桃久 | 亚洲精品大全 | 亚洲精品久久久久久久久久久 | 欧美高清性xxxxhd | 国产午夜精品理论片a大结局 | 婷婷色在线播放 | 色网站入口 | 无码一区二区三区视频 | 狠狠的干狠狠的操 | 日韩在线中文字幕 | 一区二区在线不卡 | 久久性av | 日韩在线观看 | 日本视频在线 | 日韩一级免费电影 | 99精品欧美一区二区蜜桃免费 | 伊人国产精品 | 一区二区三区视频在线 | 不用播放器看的av | 成人做爰www免费看视频网站 | 亚洲在线一区 | 久久成人精品视频 | 日韩一区二区三区在线播放 | 国产高清精品在线 | 精品欧美一区二区三区久久久 | 国产97视频在线观看 | 国产有码 | 欧美一区成人 | 国产午夜精品一区二区三区四区 | 中文字幕成人av | 在线不卡视频 | 国久久| 国产精品日韩欧美一区二区三区 | 91婷婷韩国欧美一区二区 | 自拍偷拍第一页 | 国产精品一区二区视频 | 91久久精品国产91久久性色tv | 青青草av网站 |