1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標(biāo)題: 求助!想請(qǐng)教大家單片機(jī)+lcd連續(xù)顯示的問題 [打印本頁]

作者: 一個(gè)杰    時(shí)間: 2019-12-10 22:59
標(biāo)題: 求助!想請(qǐng)教大家單片機(jī)+lcd連續(xù)顯示的問題
大家好!我做了一個(gè)舵機(jī)角度的代碼,其中有uint value[]={1500,1000,1500,2000,1500};
uint ms[]={0,45,0,45,0};
。。。。。。
        for(i=0;i<5;i++)                {
                        pwm_value=value;//通過數(shù)組就可以改變舵機(jī)的轉(zhuǎn)角度
                        delay_ms(1000);
       }
想要在lcd上隨著這個(gè)循環(huán)連續(xù)顯示數(shù)組ms里的數(shù),怎么改呢?
我讀51單片機(jī)實(shí)戰(zhàn)指南這本書上面,都是直接顯示一個(gè)數(shù)組,不會(huì)舉一反三了。想請(qǐng)問大家。





作者: wulin    時(shí)間: 2019-12-10 22:59
按你的要求給你寫一個(gè)示例+仿真,有詳細(xì)注釋,看懂后就可以隨心所欲的顯示各種字符。
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit LCD_RS=P3^5;                                //液晶屏RS口  寫指令低,寫數(shù)據(jù)高
  5. sbit LCD_EN=P3^4;                                //液晶屏EN口  高脈沖使能寫指令/數(shù)據(jù),低跳變執(zhí)行

  6. uint value[]={1500,1000,1500,2000,1500};
  7. uint ms[]={0,45,0,45,0};
  8. uint pwm_value;
  9. /*******100us延時(shí)程序********/
  10. void delay(uint x)
  11. {
  12.         uint a,b;
  13.         for(a=x;a>0;a--)
  14.                 for(b=10;b>0;b--);
  15. }
  16. /*******1ms延時(shí)程序********/
  17. void delay_ms(uint x)
  18. {
  19.         uint a,b;
  20.         for(a=x;a>0;a--)
  21.                 for(b=125;b>0;b--);
  22. }
  23. /*******液晶寫指令程序********/
  24. void write_com(uchar com)
  25. {
  26.         LCD_EN=0;        //初始設(shè)置LCD_EN低電平
  27.         LCD_RS=0;        //允許寫指令
  28.         P0=com;                //傳遞指令
  29.         delay(10);        //延時(shí)1ms
  30.         LCD_EN=1;        //使能寫入
  31.         delay(10);        //延時(shí)1ms
  32.         LCD_EN=0;        //低跳變執(zhí)行
  33.        
  34. }
  35. /*******液晶寫數(shù)據(jù)程序********/
  36. void write_date(uchar date)
  37. {
  38. //        LCD_EN=0;        //初始設(shè)置LCD_EN低電平
  39.         LCD_RS=1;        //允許寫數(shù)據(jù)
  40.         P0 =date;        //傳遞數(shù)據(jù)
  41.         delay(10);        //延時(shí)1ms
  42.         LCD_EN=1;        //使能寫入
  43.         delay(10);        //延時(shí)1ms
  44.         LCD_EN=0;        //低跳變執(zhí)行
  45.        
  46. }
  47. /*******液晶初始化程序********/
  48. void init()                //設(shè)置顯示模式、
  49. {
  50.         write_com(0x38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
  51.         write_com(0x01);//顯示清零,數(shù)據(jù)指針清零
  52.         write_com(0x0c);//設(shè)置開顯示,不顯光標(biāo)
  53.         write_com(0x06);//設(shè)置寫一個(gè)字符后地址指針加1
  54. }
  55. /**********************主程序*************************/
  56. void main()
  57. {
  58.         uchar i;                                        //定義循環(huán)變量
  59.         init();                                        //初始化LCD程序
  60.         for(i=0;i<5;i++)
  61.         {
  62.                 pwm_value=value[i];//通過數(shù)組就可以改變舵機(jī)的轉(zhuǎn)角度

  63.                 write_com(0x80);//LCD1602的第一行第0位置起
  64.                 write_date(value[i]/1000%10+'0');//LCD顯示數(shù)據(jù)的千位
  65.                 write_date(value[i]/100%10+'0');//LCD顯示數(shù)據(jù)的百位
  66.                 write_date(value[i]/10%10+'0');//LCD顯示數(shù)據(jù)的十位
  67.                 write_date(value[i]%10+'0');//LCD顯示數(shù)據(jù)的個(gè)位

  68.                 write_com(0xc0+i*3);//LCD1602的第二行第0位置起,每次+3格
  69.                 write_date(ms[i]/10+'0');//LCD顯示數(shù)據(jù)的十位
  70.                 write_date(ms[i]%10+'0');//LCD顯示數(shù)據(jù)的個(gè)位
  71.                 delay_ms(1000);
  72.         }
  73.         while(1);
  74. }
復(fù)制代碼






作者: moluxiyan    時(shí)間: 2019-12-11 08:56
你把數(shù)組里的數(shù)一個(gè)一個(gè)的送到顯示不就可以嗎,每次循環(huán)完后數(shù)組下標(biāo)在從0開始
作者: 一個(gè)杰    時(shí)間: 2019-12-11 09:44
moluxiyan 發(fā)表于 2019-12-11 08:56
你把數(shù)組里的數(shù)一個(gè)一個(gè)的送到顯示不就可以嗎,每次循環(huán)完后數(shù)組下標(biāo)在從0開始

大佬,可以麻煩你一下能用代碼寫一兩行嗎?隨著循環(huán)顯示lcd
作者: 一個(gè)杰    時(shí)間: 2019-12-11 09:46
moluxiyan 發(fā)表于 2019-12-11 08:56
你把數(shù)組里的數(shù)一個(gè)一個(gè)的送到顯示不就可以嗎,每次循環(huán)完后數(shù)組下標(biāo)在從0開始

那個(gè)數(shù)組里面的數(shù)還要再加一些的,怕這樣單個(gè)單個(gè)顯示會(huì)讓整個(gè)代碼冗長。
作者: moluxiyan    時(shí)間: 2019-12-11 11:20
一個(gè)杰 發(fā)表于 2019-12-11 09:44
大佬,可以麻煩你一下能用代碼寫一兩行嗎?隨著循環(huán)顯示lcd

for(i=0;i<5;i++)               
{
            pwm_value=value;//通過數(shù)組就可以改變舵機(jī)的轉(zhuǎn)角度
            delay_ms(1000);
            顯示(ms);
  }
作者: 一個(gè)杰    時(shí)間: 2019-12-11 14:39
wulin 發(fā)表于 2019-12-11 13:30
按你的要求給你寫一個(gè)示例+仿真,有詳細(xì)注釋,看懂后就可以隨心所欲的顯示各種字符。

大佬,是運(yùn)行1500的時(shí)候,舵機(jī)轉(zhuǎn)0度,同時(shí)在lcd上顯示0度,然后運(yùn)行1000,舵機(jī)轉(zhuǎn)45度,同時(shí)在lcd上顯示45度等等。每運(yùn)行一次lcd顯示一個(gè)角度。再改一下就完美了。感謝感謝!
作者: 一個(gè)杰    時(shí)間: 2019-12-11 14:39
moluxiyan 發(fā)表于 2019-12-11 11:20
for(i=0;i

這個(gè)之前也想到過,但是感覺不太行。
作者: 一個(gè)杰    時(shí)間: 2019-12-11 14:52
wulin 發(fā)表于 2019-12-10 22:59
按你的要求給你寫一個(gè)示例+仿真,有詳細(xì)注釋,看懂后就可以隨心所欲的顯示各種字符。

對(duì)的對(duì)的!感謝
作者: 一個(gè)杰    時(shí)間: 2019-12-11 16:14
wulin 發(fā)表于 2019-12-10 22:59
按你的要求給你寫一個(gè)示例+仿真,有詳細(xì)注釋,看懂后就可以隨心所欲的顯示各種字符。

大佬,我按照你的方法弄出來了,但是LCD上本該顯示數(shù)字的地方顯示四條橫線,第二條橫線隨著循環(huán)在動(dòng),請(qǐng)問你知道啥意思嗎




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1