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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3011|回復: 8
收起左側

怎么添加讓液晶顯示4行,運行keil4總有一個警告

[復制鏈接]
ID:836924 發表于 2020-10-31 14:29 | 顯示全部樓層 |閱讀模式
51hei截圖20201031142724.png

單片機源程序如下:
#include<AT89X52.h>
unsigned char tab[]="  23:58:48";
unsigned char tab2[]="TIME";
#define lcdp P0
sbit rs=P3^5;
sbit rw=P3^6;
sbit en=P3^7;
sbit led=P1^7;
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
unsigned char n,count,mu;
char ss=23,ff=58,mm=55;
void delay(unsigned char z)
{
unsigned char i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
  void write_com(unsigned char com)// д???
{
rs=0;
rw=0;
en=0;
lcdp=com;
delay(5);
en=1;
delay(5);
en=0;
}
  void write_date(unsigned char date)// д????
{
rs=1;
rw=0;
en=0;
lcdp=date;
delay(5);
en=1;
delay(5);
en=0;
}
void write_sj(unsigned add,unsigned date)
{
unsigned char shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+add);
write_date(shi+0x30);
write_date(ge+0x30);
}
void init() // ?????
{
write_com(0x38); //???? 16x2 ????? 5x7 ???? 8 λ??????
write_com(0x06); // д?????????????????? 1
write_com(0x01); // ??????????????????
write_com(0x0c); // ???????????????
//write_com(0x08);
//write_com(0x0e);// ?????????????
write_com(0x80); // ???λ??
for(n=0;n<10;n++)
{
write_date(tab[n]);
delay(1);
}
write_com(0x80+0x40+3);// ????????
for(n=0;n<16;n++)
{
write_date(tab2[n]);
delay(1);
}
//??????????
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
}
void key()
{
if(s1==0)
{
delay(5);
if(s1==0)
{
mu++;
  while(!s1);
}
if(mu==1)
{
TR0=0;
write_com(0x80+9);
write_com(0x0f);// ??????
}
if(mu==2)
{
write_com(0x80+6);
write_com(0x0f);// ??????
}
if(mu==3)
{
write_com(0x80+3);
write_com(0x0f);// ??????
}
}
if(mu==4)
{
TR0=1;
mu=0;
write_com(0x0c);// ?????
}
if(mu!=0)
{
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!s2);
if(mu==1)
{
mm++;
if(mm==60)
mm=0;
write_sj(8,mm);
write_com(0x80+9);
}
if(mu==2)
{
ff++;
if(ff==60)
ff=0;
write_sj(5,ff);
write_com(0x80+6);
}
if(mu==3)
{
ss++;
led=!led;
if(ss==24)
ss=0;
write_sj(2,ss);
write_com(0x80+3);
}
}
}
if(s3==0)
{
delay(5);
if(s3==0)
{
while(!s3);
if(mu==1)
{
mm--;
if(mm==-1)
mm=59;
write_sj(8,mm);
write_com(0x80+9);
}
if(mu==2)
{
ff--;
if(ff==-1)
ff=59;
write_sj(5,ff);
write_com(0x80+6);
}
if(mu==3)
{
ss--;
led=!led;
if(ss==-1)
ss=23;
write_sj(2,ss);
write_com(0x80+3);
}
}
}
}
}
void main()
{
init();
while(1)
{
key();
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++; if(count==20)
{
count=0;
mm++;
if(mm==60)
{
mm=0;
ff++;
if(ff==60)
{
ff=0;
ss++;
if(ss==24)
{
ss=0;
}
write_sj(2,ss);
}
write_sj(5,ff);
}
write_sj(8,mm);
}
}
回復

使用道具 舉報

ID:155507 發表于 2020-10-31 16:05 | 顯示全部樓層
我給你來個程序試試

  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define DATA P1                                                                             //定義LCM數據總線P0
  5. sbit RS=P3^0;                                                       //寄存器選擇位(0指令1數據)
  6. sbit RW=P3^1;                                                       //設置讀寫位置(0寫入1讀取)
  7. sbit E=P3^7;                                                        //使能為(0禁止1允許)
  8. sbit BF=P3^3;

  9. uchar line1[]="LCD TEST PROGRAM By ";                                //第一行顯示字符
  10. uchar line2[]="Everything is OK! XY";                                
  11. uchar line3[]="aaaaaaaaaaaaaaaabcde";                              
  12. uchar line4[]="bbbbbbbbbbbbbbbcdefg";                                

  13. void Init_LCD(void);                                                 //聲明液晶初始化函數
  14. void write_cmd(uchar);                                               
  15. void write_data(uchar);                                             
  16. void check_BF(void);                                                
  17. void delay_1ms(uint);                                                
  18. void set_xy(uchar x,uchar y);                                       
  19. void display(uchar x,uchar y,uchar *s);                                                 //聲明顯示函數

  20. /*********************1ms延時函數****************************************************************/
  21. void delay_1ms(uint x)
  22. {
  23.         uint i,j;
  24.         for(i=1;i<x;i++)
  25.         for(j=1;j<110;j++);
  26. }
  27. /*********************液晶初始化函數*************************************************************/
  28. void Init_LCD(void)
  29. {
  30.         write_cmd(0x38);                                                         //設置8位格式,2行5X7
  31.         write_cmd(0x08);                                                         //Tune off screen
  32.         write_cmd(0x01);                                                        
  33.         write_cmd(0x06);                                                        
  34.         write_cmd(0x0c);                                                                             
  35. }
  36. /**********************寫指令函數******************************************************************/
  37. void write_cmd(uchar com)
  38. {
  39.         check_BF();
  40.         E=0;
  41.         RS=0;
  42.         RW=0;
  43.         DATA=com;
  44.         delay_1ms(2);
  45.         E=1;
  46.         delay_1ms(2);
  47.         E=0;
  48.         RS=1;
  49.         RW=1;
  50. }
  51. /**********************寫數據函數*******************************************************************/
  52. void write_data(uchar chardata)
  53. {
  54.         check_BF();
  55.         E=0;
  56.                                 RS=1;
  57.         RW=0;
  58.         DATA=chardata;
  59.         delay_1ms(2);
  60.         E=1;
  61.         delay_1ms(2);
  62.         E=0;
  63.         RS=0;
  64.         RW=1;
  65. }
  66. /**********************判忙函數******************************************************************/
  67. void check_BF(void)
  68. {
  69.        P1=0xff;
  70.        E=0;
  71.        RS=0;
  72.        RW=1;
  73.        E=1;
  74.                          //while((P2&0x80)==0x80);
  75.        E=0;
  76.        RS=1;
  77.        RW=0;        
  78. }
  79. /**********************定義顯示位置*******************************************************************/
  80. void set_xy(uchar x,uchar y)
  81. {
  82.         uchar add;
  83.         if(x==0)
  84.                 add=0x80+y;
  85.         else
  86.                 if(x==1)
  87.                         add=0xc0+y;
  88.         else
  89.                 if(x==2)
  90.                         add=0x94+y;
  91.         else
  92.                 if(x==3)
  93.                         add=0xd4+y;
  94.         write_cmd(add);

  95. }
  96. /**********************顯示函數***********************************************************************/
  97. void displayL(uchar x,uchar y,uchar *s)
  98. {
  99.         set_xy(x,y);
  100.         while(*s)
  101.         {
  102.                 DATA=*s;
  103.                 write_data(*s);
  104.                 s++;
  105.         }
  106.         
  107. }
  108. /**********************主函數*************************************************************************/
  109. void main()
  110. {
  111.         Init_LCD();
  112.         while(1)
  113.         {
  114.                 displayL(0,0,line1);
  115.                                 delay_1ms(10);
  116.                 displayL(1,0,line2);
  117.                 displayL(2,0,line3);
  118.                 displayL(3,0,line4);
  119.                         
  120.         }
  121. }

復制代碼
回復

使用道具 舉報

ID:836924 發表于 2020-11-1 09:23 | 顯示全部樓層
angmall 發表于 2020-10-31 16:05
我給你來個程序試試

液晶點亮沒顯示,換了接口也是一樣
回復

使用道具 舉報

ID:836924 發表于 2020-11-1 09:55 | 顯示全部樓層
angmall 發表于 2020-10-31 16:05
我給你來個程序試試

我是想用液晶做一個時鐘,顯示時間并另外顯示3排字
回復

使用道具 舉報

ID:839398 發表于 2020-11-5 21:02 來自手機 | 顯示全部樓層
警告一般不用管,實際上也不用管。
回復

使用道具 舉報

ID:155507 發表于 2020-11-5 22:49 | 顯示全部樓層
給你改了一下試試



  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define DATA P0                                                 //定義LCM數據總線P0
  5. sbit RS=P3^5;                                                     //寄存器選擇位(0指令1數據)
  6. sbit RW=P3^6;                                                       //設置讀寫位置(0寫入1讀取)
  7. sbit E=P3^7;                                                        //使能為(0禁止1允許)
  8. sbit BF=P3^3;
  9. sbit s1=P1^0;
  10. sbit s2=P1^1;
  11. sbit s3=P1^2;
  12. sbit led=P1^7;
  13. unsigned char n,count,mu;
  14. unsigned char ss=23,ff=58,mm=55;

  15. unsigned char tab[]="  23:58:48";
  16. unsigned char tab2[]="TIME       ";

  17. uchar line1[]="LCD TEST PROGRAM By ";                                //第一行顯示字符
  18. uchar line2[]="Everything is OK! XY";                                
  19. uchar line3[]="aaaaaaaaaaaaaaaabcde";                              
  20. uchar line4[]="bbbbbbbbbbbbbbbcdefg";                                

  21. void Init_LCD(void);                                                 //聲明液晶初始化函數
  22. void write_cmd(uchar);                                               
  23. void write_data(uchar);                                             
  24. void check_BF(void);                                                
  25. void delay_1ms(uint);                                                
  26. void set_xy(uchar x,uchar y);                                       
  27. void display(uchar x,uchar y,uchar *s);                                                 //聲明顯示函數

  28. /*********************1ms延時函數****************************************************************/
  29. void delay_1ms(uint x)
  30. {
  31.         uint i,j;
  32.         for(i=1;i<x;i++)
  33.         for(j=1;j<110;j++);
  34. }
  35. /*********************液晶初始化函數*************************************************************/
  36. void Init_LCD(void)
  37. {
  38.         write_cmd(0x38);                                                         //設置8位格式,2行5X7
  39.         write_cmd(0x08);                                                         //Tune off screen
  40.         write_cmd(0x01);                                                        
  41.         write_cmd(0x06);                                                        
  42.         write_cmd(0x0c);                                                                             
  43. }
  44. /**********************寫指令函數******************************************************************/
  45. void write_cmd(uchar com)
  46. {
  47.         check_BF();
  48.         E=0;
  49.         RS=0;
  50.         RW=0;
  51.         DATA=com;
  52.         delay_1ms(2);
  53.         E=1;
  54.         delay_1ms(2);
  55.         E=0;
  56.         RS=1;
  57.         RW=1;
  58. }
  59. /**********************寫數據函數*******************************************************************/
  60. void write_data(uchar chardata)
  61. {
  62.         check_BF();
  63.         E=0;
  64.                                 RS=1;
  65.         RW=0;
  66.         DATA=chardata;
  67.         delay_1ms(2);
  68.         E=1;
  69.         delay_1ms(2);
  70.         E=0;
  71.         RS=0;
  72.         RW=1;
  73. }
  74. /**********************判忙函數******************************************************************/
  75. void check_BF(void)
  76. {
  77.        P1=0xff;
  78.        E=0;
  79.        RS=0;
  80.        RW=1;
  81.        E=1;
  82.                          //while((P2&0x80)==0x80);
  83.        E=0;
  84.        RS=1;
  85.        RW=0;        
  86. }
  87. /**********************定義顯示位置*******************************************************************/
  88. void set_xy(uchar x,uchar y)
  89. {
  90.         uchar add;
  91.         if(x==0)
  92.                 add=0x80+y;
  93.         else
  94.                 if(x==1)
  95.                         add=0xc0+y;
  96.         else
  97.                 if(x==2)
  98.                         add=0x94+y;
  99.         else
  100.                 if(x==3)
  101.                         add=0xd4+y;
  102.         write_cmd(add);

  103. }
  104. /**********************顯示函數***********************************************************************/
  105. void displayL(uchar x,uchar y,uchar *s)
  106. {
  107.         set_xy(x,y);
  108.         while(*s)
  109.         {
  110.                 DATA=*s;
  111.                 write_data(*s);
  112.                 s++;
  113.         }
  114.         
  115. }
  116. void write_sj(unsigned add,unsigned date)
  117. {
  118.         unsigned char shi,ge;
  119.         shi=date/10;
  120.         ge=date%10;
  121.         write_cmd(0x80+add);
  122.         write_data(shi+0x30);
  123.         write_data(ge+0x30);
  124. }

  125. void key()
  126. {
  127.         if(s1==0)
  128.         {
  129.                 delay_1ms(5);
  130.                 if(s1==0)
  131.                 {
  132.                         mu++;
  133.                         while(!s1);
  134.                 }
  135.                 if(mu==1)
  136.                 {
  137.                         TR0=0;
  138.                         write_cmd(0x80+9);
  139.                         write_cmd(0x0f);// ??????
  140.                 }
  141.                 if(mu==2)
  142.                 {
  143.                         write_cmd(0x80+6);
  144.                         write_cmd(0x0f);// ??????
  145.                 }
  146.                 if(mu==3)
  147.                 {
  148.                         write_cmd(0x80+3);
  149.                         write_cmd(0x0f);// ??????
  150.                 }
  151.         }
  152.         if(mu==4)
  153.         {
  154.                 TR0=1;
  155.                 mu=0;
  156.                 write_cmd(0x0c);// ?????
  157.         }
  158.         if(mu!=0)
  159.         {
  160.                 if(s2==0)
  161.                 {
  162.                         delay_1ms(5);
  163.                         if(s2==0)
  164.                         {
  165.                                 while(!s2);
  166.                                 if(mu==1)
  167.                                 {
  168.                                         mm++;
  169.                                         if(mm==60)
  170.                                         mm=0;
  171.                                         write_sj(8,mm);
  172.                                         write_cmd(0x80+9);
  173.                                 }
  174.                                 if(mu==2)
  175.                                 {
  176.                                         ff++;
  177.                                         if(ff==60)
  178.                                         ff=0;
  179.                                         write_sj(5,ff);
  180.                                         write_cmd(0x80+6);
  181.                                 }
  182.                                 if(mu==3)
  183.                                 {
  184.                                         ss++;
  185.                                         led=!led;
  186.                                         if(ss==24)
  187.                                         ss=0;
  188.                                         write_sj(2,ss);
  189.                                         write_cmd(0x80+3);
  190.                                 }
  191.                         }
  192.                 }
  193.                 if(s3==0)
  194.                 {
  195.                         delay_1ms(5);
  196.                         if(s3==0)
  197.                         {
  198.                                 while(!s3);
  199.                                 if(mu==1)
  200.                                 {
  201.                                         mm--;
  202.                                         if(mm==-1)
  203.                                         mm=59;
  204.                                         write_sj(8,mm);
  205.                                         write_cmd(0x80+9);
  206.                                 }
  207.                                 if(mu==2)
  208.                                 {
  209.                                         ff--;
  210.                                         if(ff==-1)
  211.                                         ff=59;
  212.                                         write_sj(5,ff);
  213.                                         write_cmd(0x80+6);
  214.                                 }
  215.                                 if(mu==3)
  216.                                 {
  217.                                         ss--;
  218.                                         led=!led;
  219.                                         if(ss==-1)
  220.                                         ss=23;
  221.                                         write_sj(2,ss);
  222.                                         write_cmd(0x80+3);
  223.                                 }
  224.                         }
  225.                 }
  226.         }
  227. }


  228. /**********************主函數*************************************************************************/
  229. void main()
  230. {
  231.      Init_LCD();
  232.         TH0=(65536-50000)/256;
  233.         TL0=(65536-50000)%256;
  234.         TMOD=0x01;
  235.         EA=1;
  236.         ET0=1;
  237.         TR0=1;
  238.         write_cmd(0x80); // ???λ??
  239.         for(n=0;n<10;n++)
  240.         {
  241.                 write_data(tab[n]);
  242.                 delay_1ms(1);
  243.         }
  244.         write_cmd(0x80+0x40+3);// ????????
  245.         for(n=0;n<16;n++)
  246.         {
  247.                 write_data(tab2[n]);
  248.                 delay_1ms(1);
  249.         }
  250.           displayL(2,0,line3);
  251.           displayL(3,0,line4);
  252.         while(1)
  253.         {
  254.                 //displayL(0,0,line1);
  255.                  //delay_1ms(10);
  256.                 //displayL(1,0,line2);

  257.                           key();      
  258.                         write_sj(2,ss);
  259.                         write_sj(5,ff);
  260.                     write_sj(8,mm);
  261.         }
  262. }


  263. void time0() interrupt 1
  264. {
  265.         TH0=(65536-50000)/256;
  266.         TL0=(65536-50000)%256;
  267.         count++;
  268.    if(count==20)
  269.         {
  270.                 count=0;
  271.                 mm++;
  272.                 if(mm==60)
  273.                 {
  274.                         mm=0;
  275.                         ff++;
  276.                         if(ff==60)
  277.                         {
  278.                                 ff=0;
  279.                                 ss++;
  280.                                 if(ss==24)
  281.                                 {
  282.                                         ss=0;
  283.                                 }

  284.                         }

  285.                 }

  286.         }
  287. }


復制代碼
回復

使用道具 舉報

ID:836924 發表于 2020-11-16 20:38 | 顯示全部樓層
angmall 發表于 2020-11-5 22:49
給你改了一下試試

謝謝,有用了
回復

使用道具 舉報

ID:751181 發表于 2020-11-17 12:57 | 顯示全部樓層
不是有顯示模塊嗎,調用顯示函數
回復

使用道具 舉報

ID:836924 發表于 2020-12-1 13:22 | 顯示全部樓層
周小小123 發表于 2020-11-17 12:57
不是有顯示模塊嗎,調用顯示函數

還要加一個震蕩源的,有點麻煩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩成人一区二区 | 亚洲国产精品网站 | 99精品福利视频 | 国产精品免费播放 | 一级片免费视频 | 国产精品日韩欧美一区二区三区 | 日韩欧美一区二区三区在线播放 | 精品在线一区 | 欧美精品日韩精品国产精品 | 美女视频一区 | 97在线超碰 | 日日噜噜噜夜夜爽爽狠狠视频, | www.精品一区 | 91五月天 | 日韩精品视频在线 | 精品1区 | 2020亚洲天堂 | 中文字幕一区在线 | 亚洲精品一区二区 | 精品一区二区三区入口 | 国产三级精品视频 | 久久久成人精品 | 欧美日本在线 | 在线观看中文字幕视频 | 国产精品久久久久av | 久久精品在线免费视频 | 国产高清在线精品一区二区三区 | www.色午夜.com | 国产精品久久久久久久久图文区 | 国产欧美久久精品 | 男人天堂社区 | 精品久久久久久久人人人人传媒 | 亚洲综合色 | 国产精品久久久99 | 91久久久久久久久 | 欧美精品在线一区 | 涩涩导航 | 一区二区日本 | 婷婷在线免费 | 香蕉久久av | 久久黄色网 |