找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 935|回复: 3
打印 上一主题 下一主题
收起左侧

程序下入单片机1602屏幕只显示一排小黑块?

[复制链接]
跳转到指定楼层
楼主
这是程序
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. bit flag_200ms ;
  5. bit flag_100ms ;
  6. sbit beep = P3^7;
  7. bit flag_beep_en;
  8. uint clock_value;
  9. uchar menu_1,menu_2;
  10. uchar key_time,flag_value;
  11. bit key_500ms  ;
  12. #include "ds1302.h"
  13. #include "lcd1602.h"

  14. void delay_1ms(uint q)
  15. {
  16.         uint i,j;
  17.         for(i=0;i<q;i++)
  18.                 for(j=0;j<120;j++);
  19. }

  20. void write_week(uchar hang,uchar add,uchar week)
  21. {
  22.         if(hang==1)
  23.                 write_com(0x80+add);
  24.         else
  25.                 write_com(0x80+0x40+add);
  26.         switch(week)
  27.         {
  28.                 case 1:write_data('S');
  29.                            write_data('U');
  30.                            write_data('N');
  31.                            break;

  32.                 case 2:write_data('M');
  33.                            write_data('O');
  34.                            write_data('N');
  35.                            break;

  36.                 case 3:write_data('T');
  37.                            write_data('U');
  38.                            write_data('E');
  39.                            break;

  40.                 case 4:write_data('W');
  41.                            write_data('E');
  42.                            write_data('D');
  43.                            break;

  44.                 case 5:write_data('T');
  45.                            write_data('H');
  46.                            write_data('U');
  47.                            break;

  48.                 case 6:write_data('F');
  49.                            write_data('R');
  50.                            write_data('I');
  51.                            break;

  52.                 case 7:write_data('S');
  53.                            write_data('T');
  54.                            write_data('A');
  55.                            break;
  56.         }
  57. }


  58. void init_1602_ds1302()
  59. {
  60.         write_sfm2_ds1302(1,1,shi);
  61.         write_sfm2_ds1302(1,4,fen);
  62.         write_sfm2_ds1302(1,7,miao);
  63.         write_week(2,12,week);
  64.         write_sfm2_ds1302(2,2,nian);
  65.         write_sfm2_ds1302(2,5,yue);
  66.         write_sfm2_ds1302(2,8,ri);
  67. }
  68. /*************?¨ê±?÷03?ê??ˉ3ìDò***************/
  69. void init_time0()
  70. {
  71.         EA   = 1;
  72.         TMOD = 0X01;
  73.         TH0 = 0X3C;
  74.         TL0 = 0XB0;
  75.         ET0  = 1;
  76.         TR0  = 1;
  77. }

  78. void menu_dis()
  79. {
  80.         static uchar mm,value;
  81.         if(flag_100ms == 1)
  82.         {
  83.                 flag_100ms = 0;
  84.                 if(open1 == 1)
  85.                 {
  86.                         if((miao == 0) && (fen == fen1) && (shi == shi1))
  87.                         {
  88.                                 flag_beep_en = 1;
  89.                         }
  90.                         if(flag_beep_en == 1)
  91.                         {
  92.                                 clock_value++;
  93.                                 if(clock_value <= 30)
  94.                                         beep = ~beep;
  95.                                 else if(clock_value > 30)
  96.                                 {
  97.                                         beep = 1;
  98.                                         if(clock_value > 40)
  99.                                         {
  100.                                                 clock_value = 0;

  101.                                         }
  102.                                 }

  103.                                 value ++;
  104.                                 if(value >= 10)
  105.                                 {
  106.                                         value = 0;
  107.                                         mm++;
  108.                                         if(mm >= 60)
  109.                                         {
  110.                                                 mm = 0;
  111.                                                 flag_beep_en = 0;
  112.                                                 beep = 1;
  113.                                         }
  114.                                 }
  115.                         }
  116.                 }
  117.         }
  118. }



  119. uchar key_can;

  120. void key()
  121. {
  122.         static uchar key_new;
  123.         key_can = 20;
  124.         P3 |= 0x78;
  125.         if((P3 & 0x78) != 0x78)
  126.         {
  127.                 delay_1ms(1);
  128.                 if(((P3 & 0x78) != 0x78) && (key_new == 1))
  129.                 {
  130.                         key_new = 0;
  131.                         switch(P3 & 0x78)
  132.                         {
  133.                                 case 0x70:  key_can = 4;  break;
  134.                                 case 0x68:  key_can = 3;  break;
  135.                                 case 0x58:  key_can = 2;  break;
  136.                                 case 0x38:  key_can = 1;  break;
  137.                         }

  138.                 }
  139.         }
  140.         else
  141.                 key_new = 1;
  142. }



  143. void key_with()
  144. {
  145.         if(key_can == 1)
  146.         {
  147.                 menu_1++;
  148.                 if(menu_1 == 1)
  149.                 {
  150.                         menu_2 = 1;
  151.                         write_string(1,0,"    :  :    W:  ");
  152.                         write_string(2,0," 20  -  -       ");
  153.                 }
  154.                 if(menu_1 == 2)
  155.                 {
  156.                         menu_2 = 1;
  157.                         write_string(1,0,"   set clock    ");
  158.                         write_string(2,0,"    Y  00:00      ");
  159.                 }
  160.                 if(menu_1 > 2)
  161.                 {
  162.                         menu_1 = 0;
  163.                         write_guanbiao(1,2,0);
  164.                         init_1602_dis_csf();
  165.                 }
  166.         }
  167.         if(key_can == 2)
  168.         {
  169.                 flag_200ms = 1;
  170.                 if(menu_1 == 1)
  171.                 {
  172.                         menu_2 ++;
  173.                         if(menu_2 > 7)
  174.                                 menu_2 = 1;
  175.                 }
  176.                 if(menu_1 == 2)
  177.                 {
  178.                         menu_2 ++;
  179.                         if(menu_2 > 3)
  180.                                 menu_2 = 1;
  181.                 }
  182.         }
  183.         if(menu_1 == 1)
  184.         {
  185.                 if(menu_2 == 1)
  186.                 {
  187.                         if(key_can == 3)
  188.                         {
  189.                                 shi+=0x01;
  190.                                 if((shi & 0x0f) >= 0x0a)
  191.                                         shi = (shi & 0xf0) + 0x10;
  192.                                 if(shi >= 0x24)
  193.                                         shi = 0;
  194.                         }
  195.                         if(key_can == 4)
  196.                         {
  197.                                 if(shi == 0x00)
  198.                                         shi = 0x24;
  199.                                 if((shi & 0x0f) == 0x00)
  200.                                         shi = (shi | 0x0a) - 0x10;
  201.                                 shi -- ;
  202.                         }
  203.                 }
  204.                 if(menu_2 == 2)
  205.                 {
  206.                         if(key_can == 3)
  207.                         {
  208.                                 fen+=0x01;
  209.                                 if((fen & 0x0f) >= 0x0a)
  210.                                         fen = (fen & 0xf0) + 0x10;
  211.                                 if(fen >= 0x60)
  212.                                         fen = 0;
  213.                         }
  214.                         if(key_can == 4)
  215.                         {
  216.                                 if(fen == 0x00)
  217.                                         fen = 0x5a;
  218.                                 if((fen & 0x0f) == 0x00)
  219.                                         fen = (fen | 0x0a) - 0x10;
  220.                                 fen -- ;
  221.                         }
  222.                 }
  223.                 if(menu_2 == 3)
  224.                 {
  225.                         if(key_can == 3)
  226.                         {
  227.                                 miao+=0x01;
  228.                                 if((miao & 0x0f) >= 0x0a)
  229.                                         miao = (miao & 0xf0) + 0x10;
  230.                                 if(miao >= 0x60)
  231.                                         miao = 0;
  232.                         }
  233.                         if(key_can == 4)
  234.                         {
  235.                                 if(miao == 0x00)
  236.                                         miao = 0x5a;
  237.                                 if((miao & 0x0f) == 0x00)
  238.                                         miao = (miao | 0x0a) - 0x10;
  239.                                 miao -- ;
  240.                         }
  241.                 }
  242.                 if(menu_2 == 4)
  243.                 {
  244.                         if(key_can == 3)
  245.                         {
  246.                             week+=0x01;
  247.                                 if((week & 0x0f) >= 0x0a)
  248.                                         week = (week & 0xf0) + 0x10;
  249.                                 if(week >= 0x08)
  250.                                         week = 1;
  251.                         }
  252.                         if(key_can == 4)
  253.                         {
  254.                                 if(week == 0x01)
  255.                                         week = 0x08;
  256.                                 if((week & 0x0f) == 0x00)
  257.                                         week = (week | 0x0a) - 0x10;
  258.                                 week -- ;
  259.                         }
  260.                 }
  261.                 if(menu_2 == 5)
  262.                 {
  263.                         if(key_can == 3)
  264.                         {
  265.                             nian+=0x01;
  266.                                 if((nian & 0x0f) >= 0x0a)
  267.                                         nian = (nian & 0xf0) + 0x10;
  268.                                 if(nian >= 0x9a)
  269.                                         nian = 1;
  270.                         }
  271.                         if(key_can == 4)
  272.                         {
  273.                                 if(nian == 0x01)
  274.                                         nian = 0x9a;
  275.                                 if((nian & 0x0f) == 0x00)
  276.                                         nian = (nian | 0x0a) - 0x10;
  277.                                 nian -- ;
  278.                         }
  279.                 }
  280.                 if(menu_2 == 6)
  281.                 {
  282.                         if(key_can == 3)
  283.                         {
  284.                             yue+=0x01;
  285.                                 if((yue & 0x0f) >= 0x0a)
  286.                                         yue = (yue & 0xf0) + 0x10;
  287.                                 if(yue >= 0x13)
  288.                                         yue = 1;
  289.                         }
  290.                         if(key_can == 4)
  291.                         {
  292.                                 if(yue == 0x01)
  293.                                         yue = 0x13;
  294.                                 if((yue & 0x0f) == 0x00)
  295.                                         yue = (yue | 0x0a) - 0x10;
  296.                                 yue -- ;
  297.                         }
  298.                 }
  299.                 if(menu_2 == 7)
  300.                 {
  301.                         if(key_can == 3)
  302.                         {
  303.                     ri+=0x01;
  304.                         if((ri & 0x0f) >= 0x0a)
  305.                                 ri = (ri & 0xf0) + 0x10;
  306.                         if(ri >= 0x32)
  307.                                 ri = 0;
  308.                         }
  309.                         if(key_can == 4)
  310.                         {
  311.                                 if(ri == 0x01)
  312.                                         ri = 0x32;
  313.                                 if((ri & 0x0f) == 0x00)
  314.                                         ri = (ri | 0x0a) - 0x10;
  315.                                 ri -- ;
  316.                         }
  317.                 }
  318.                 write_sfm2_ds1302(1,2,shi);
  319.                 write_sfm2_ds1302(1,5,fen);
  320.                 write_sfm2_ds1302(1,8,miao);
  321.                 write_sfm1(1,14,week);
  322.                 write_sfm2_ds1302(2,3,nian);
  323.                 write_sfm2_ds1302(2,6,yue);
  324.                 write_sfm2_ds1302(2,9,ri);
  325.                 switch(menu_2)
  326.                 {
  327.                         case 1:  write_guanbiao(1,2,1);  break;
  328.                         case 2:  write_guanbiao(1,5,1);  break;
  329.                         case 3:  write_guanbiao(1,8,1);  break;
  330.                         case 4:  write_guanbiao(1,14,1);  break;
  331.                         case 5:  write_guanbiao(2,3,1);  break;
  332.                         case 6:  write_guanbiao(2,6,1);  break;
  333.                         case 7:  write_guanbiao(2,9,1);  break;
  334.                 }
  335.                 write_time();
  336.         }

  337.         if(menu_1 == 2)
  338.         {
  339.                 if(menu_2 == 1)
  340.                 {
  341.                         if(key_can == 3)
  342.                         {
  343.                                 open1 = 1;
  344.                         }
  345.                         if(key_can == 4)
  346.                         {
  347.                                 open1 = 0;
  348.                         }
  349.                 }
  350.                 if(menu_2 == 2)
  351.                 {
  352.                         if(key_can == 3)
  353.                         {
  354.                             shi1+=0x01;
  355.                                 if((shi1 & 0x0f) >= 0x0a)
  356.                                         shi1 = (shi1 & 0xf0) + 0x10;
  357.                                 if(shi1 >= 0x24)
  358.                                         shi1 = 0;
  359.                         }
  360.                         if(key_can == 4)
  361.                         {
  362.                                 if(shi1 == 0x00)
  363.                                         shi1 = 0x5a;
  364.                                 if((shi1 & 0x0f) == 0x00)
  365.                                         shi1 = (shi1 | 0x0a) - 0x10;
  366.                                 shi1 -- ;
  367.                         }
  368.                 }
  369.                 if(menu_2 == 3)
  370.                 {
  371.                         if(key_can == 3)
  372.                         {
  373.                             fen1+=0x01;
  374.                                 if((fen1 & 0x0f) >= 0x0a)
  375.                                         fen1 = (fen1 & 0xf0) + 0x10;
  376.                                 if(fen1 >= 0x60)
  377.                                         fen1 = 0;
  378.                         }
  379.                         if(key_can == 4)
  380.                         {
  381.                                 if(fen1 == 0x00)
  382.                                         fen1 = 0x5a;
  383.                                 if((fen1 & 0x0f) == 0x00)
  384.                                         fen1 = (fen1 | 0x0a) - 0x10;
  385.                                 fen1 -- ;
  386.                         }
  387.                 }
  388.                 if(open1 == 1)
  389.                         write_string(2,4,"Y");
  390.                 else
  391.                         write_string(2,4,"N");
  392.                 write_sfm2_ds1302(2,7,shi1);
  393.                 write_sfm2_ds1302(2,10,fen1);
  394.                 switch(menu_2)
  395.                 {
  396.                         case 1:  write_guanbiao(2,4,1);  break;
  397.                         case 2:  write_guanbiao(2,7,1);  break;
  398.                         case 3:  write_guanbiao(2,10,1);  break;
  399.                 }

  400.         }
  401. }


  402. void main()
  403. {
  404.         beep = 0;
  405.         delay_1ms(150);
  406.         P0 = P1 = P2 = P3 = 0xff;
  407.         init_time0();

  408.         init_1602();
  409.         init_1602_dis_csf();

  410.         while(1)
  411.         {
  412.                 key();
  413.                 if(key_can < 10)
  414.                 {
  415.                         if(flag_beep_en == 0)
  416.                                 key_with();
  417.                         else
  418.                         {
  419.                                 flag_beep_en = 0;
  420.                                 beep = 1;
  421.                                 clock_value = 0;
  422.                                 read_time();
  423.                         }

  424.                 }

  425.                 if(flag_200ms == 1)
  426.                 {
  427.                         flag_200ms = 0;
  428.                         if(menu_1 == 0)
  429.                         {
  430.                                 read_time();
  431.                                 init_1602_ds1302();
  432.                         }
  433.                 }
  434.                 menu_dis();
  435.                 delay_1ms(1);
  436.         }
  437. }


  438. void time0() interrupt 1
  439. {
  440.         static uchar value;
  441.         TH0 = 0X3C;
  442.         TL0 = 0XB0;
  443.         value ++;
  444.         if((value % 2) == 0)
  445.                 flag_100ms = 1;
  446.         if(value >= 6)
  447.         {
  448.                 value = 0;
  449.                 flag_200ms = 1;
  450.         }
  451. }

复制代码


编译的时候提示这个:
RAMSIZE(256)
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?INIT_DS1302?______DS1302____________________LCD1602__
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_WRITE_SFM2?______DS1302____________________LCD1602__
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?CLEAR_1602?______DS1302____________________LCD1602__
******************************************************************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0933H BYTE (114%) *
******************************************************************************
Program Size: data=30.5 xdata=0 code=2524
LINK/LOCATE RUN COMPLETE.  3 WARNING(S),  0 ERROR(S)
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?INIT_DS1302?______DS1302____________________LCD1602__
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_WRITE_SFM2?______DS1302____________________LCD1602__
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?CLEAR_1602?______DS1302____________________LCD1602__
*** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
    MODULE:  E:\C51\C51\LIB\C51S.LIB (-----)
    LIMIT:   0800H BYTES
Target not created.
Build Time Elapsed:  00:00:02
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2022-11-28 10:39 | 只看该作者

你下了什么入单片机?
回复

使用道具 举报

板凳
ID:1054314 发表于 2022-11-28 11:10 | 只看该作者
lkc8210 发表于 2022-11-28 10:39
你下了什么入单片机?

我下的是万年历程序
回复

使用道具 举报

地板
ID:320306 发表于 2022-11-28 16:40 | 只看该作者
确认下是不是LCD1602对比度的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表