⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdx1.lst

📁 此程序主要测试50HZ~3KHZ音频范围幅频特性测试程序.程序包含主控程序和显示程序.
💻 LST
📖 第 1 页 / 共 5 页
字号:
 958   3                              while(TI==0);TI=0;
 959   3                      }
 960   2              }
 961   1      bufov=1;
 962   1      }
 963          
 964          /*显示横向音量条形图:num范围0_64*/
 965          void disp_vol_bar(uchar num)
 966          {
 967   1              point p1,p2;
 968   1              p1.y=1;
 969   1              p2.y=6;
 970   1              if(vol_bar_num<num)
 971   1              {
 972   2                      p1.x=vol_bar_num+19;
 973   2                      p2.x=num-1+19;
 974   2                      draw_srec(p1,p2,0xff);
 975   2              }
 976   1              else if(vol_bar_num>num)
 977   1              {
 978   2                      p1.x=num+19;
 979   2                      p2.x=vol_bar_num-1+19;
 980   2                      draw_srec(p1,p2,0);
 981   2              }
 982   1              vol_bar_num=num;
 983   1      }
 984          
 985          /*显示商标*/
C51 COMPILER V7.07   LCDX1                                                                 01/25/2005 13:50:05 PAGE 17  

 986          void disp_trademark(void)
 987          {
 988   1              uchar i;
 989   1              offlcd();
 990   1              onlcd();
 991   1              clr_lcd();
 992   1      /*显示商标*/
 993   1              cursor.x=48;
 994   1              cursor.y=0;
 995   1              zf_fs=1;
 996   1              disp_one_hz(0,16,cctab,1);
 997   1              disp_one_hz(1,16,cctab,1);
 998   1              cursor.x=48;
 999   1              cursor.y+=16;
1000   1              disp_one_hz(2,16,cctab,1);
1001   1              disp_one_hz(3,16,cctab,1);
1002   1      /*显示公司名称*/
1003   1              cursor.x=32;
1004   1              cursor.y=36;
1005   1              for(i=4;i<8;i++) {disp_one_hz(i,16,cctab,1);}
1006   1      /*延迟*/
1007   1              for(i=0;i<8;i++) {delay(0xff);}
1008   1      /*清屏*/
1009   1              clr_lcd();
1010   1      }
1011          
1012          /*将选中的频率标识反显*/
1013          void select_fre(uchar fre)
1014          {
1015   1      /*清除上一次选中的频率点*/
1016   1              point p1,p2;
1017   1              uchar a;
1018   1              a=ffpos*21;
1019   1              p1.x=3+a;;
1020   1              p1.y=51;
1021   1              p2.x=19+a;
1022   1              p2.y=62;
1023   1              draw_srec(p1,p2,1);
1024   1      /*选中当前的频率点*/
1025   1              a=fre*21;
1026   1              p1.x=3+a;;
1027   1              p1.y=51;
1028   1              p2.x=19+a;
1029   1              p2.y=62;
1030   1              draw_srec(p1,p2,1);
1031   1      /*保存当前的频率点数值*/
1032   1              ffpos=fre;
1033   1      }
1034          
1035          /*开机时由ADUC812发送命令0X94后调用该子程序,选中上一次关机时的频率点*/
1036          void ini_fre(uchar fre)
1037          {
1038   1              point p1,p2;
1039   1              uchar a;
1040   1              a=fre*21;
1041   1              p1.x=3+a;;
1042   1              p1.y=51;
1043   1              p2.x=19+a;
1044   1              p2.y=62;
1045   1              draw_srec(p1,p2,1);
1046   1              ffpos=fre;
1047   1      }
C51 COMPILER V7.07   LCDX1                                                                 01/25/2005 13:50:05 PAGE 18  

1048          
1049          
1050          /*初始化LCD屏幕显示内容*/
1051          void ini_displayer(void)
1052          {
1053   1              point p1,p2;
1054   1              uchar i,a;
1055   1      /*显示VOL字母*/
1056   1              cursor.x=0;
1057   1              cursor.y=0;
1058   1              disp_one_hz(21,6,sutab,1);
1059   1              disp_one_hz(14,6,sutab,1);
1060   1              disp_one_hz(11,6,sutab,1);
1061   1      /*显示音量框及初始值0*/
1062   1              p1.x=18;
1063   1              p1.y=0;
1064   1              p2.x=83;
1065   1              p2.y=7;
1066   1              draw_rec(p1,p2,1);
1067   1              disp_vol_bar(vol_bar_num<<1);
1068   1      
1069   1      /*显示频率点A B C D E F,以及其方框*/
1070   1              p1.x=0;
1071   1              p1.y=50;
1072   1              p2.x=127;
1073   1              p2.y=63;
1074   1              for(i=0;i<6;i++)
1075   1              {
1076   2                      a=i*21;
1077   2                      cursor.x=6+a;
1078   2                      cursor.y=46+3;
1079   2                      disp_one_hz(i,11,tttt,1);
1080   2                      p1.x=1+a;
1081   2                      p2.x=21+a;
1082   2                      draw_rec(p1,p2,1);
1083   2              }
1084   1              p1.x=0;
1085   1              p1.y=50;
1086   1              p2.x=127;
1087   1              p2.y=63;
1088   1              draw_rec(p1,p2,1);
1089   1      
1090   1      /*显示横向条形图的初始值0*/
1091   1              cursor.x=lbarnum;
1092   1              cursor.y=33;
1093   1              transfer(lbarnum);
1094   1      
1095   1      /*显示电池电量外框*/
1096   1              disp_bat_edge(1);
1097   1      }
1098          
1099          void main()
1100          {
1101   1      disp_trademark();
1102   1      
1103   1      ini_displayer();
1104   1      
1105   1      /**********************************************************/
1106   1      
1107   1      /**********************************************************/
1108   1      /*初始化串口*/
1109   1      init();
C51 COMPILER V7.07   LCDX1                                                                 01/25/2005 13:50:05 PAGE 19  

1110   1      
1111   1      /*初始化定时器0*/
1112   1      init0();
1113   1      
1114   1      /*主程序循环*/
1115   1      for(;;)
1116   1      {
1117   2              if(bufov==1)
1118   2              {
1119   3                      if(buf[0]==0x1b)
1120   3                      {
1121   4                              switch(buf[1])
1122   4                              {
1123   5                              case 0x11:
1124   5      /*写入横向条形图的数据*/
1125   5                                      {
1126   6                                              disp_lbar(buf[2]);
1127   6                                      }break;
1128   5                              case 0x92:
1129   5                                      {
1130   6      /*频率点增加程序*/
1131   6                                              select_fre(buf[2]);
1132   6                                      }break;
1133   5                              case 0x93:
1134   5                                      {
1135   6      /*频率点下降程序*/
1136   6                                              select_fre(buf[2]);
1137   6                                      }break;
1138   5                              case 0x94:
1139   5                                      {
1140   6      /*ADUC812将上一次关机时的频率点数值发送过来,并选中*/
1141   6                                              ini_fre(buf[2]);
1142   6                                      }break;
1143   5                              case 0xa0:
1144   5      /*设置电池电量*/
1145   5                                      {
1146   6                                              disp_bat(buf[2],1);
1147   6                                      }break;
1148   5                              case 0xa1:
1149   5      /*设置电池闪动*/
1150   5                                      {
1151   6                                              batf=1;
1152   6                                      }break;
1153   5                              case 0xa2:
1154   5      /*清除电池闪动*/
1155   5                                      {
1156   6                                              batf=0;
1157   6                                              disp_bat(batnum,1);
1158   6                                      }break;
1159   5                              case 0xc0:
1160   5                                      {
1161   6      /*音量条增加程序*/
1162   6                                              disp_vol_bar(buf[2]<<1);
1163   6                                      }break;
1164   5                              case 0xc1:
1165   5                                      {
1166   6      /*音量条减少程序*/
1167   6                                              disp_vol_bar(buf[2]<<1);
1168   6                                      }break;
1169   5                              }
1170   4                      }
1171   3                      bufov=0;
C51 COMPILER V7.07   LCDX1                                                                 01/25/2005 13:50:05 PAGE 20  

1172   3              }
1173   2              flash_func();
1174   2              receive(buf);
1175   2      }
1176   1      }
1177          
1178          
1179          
1180          
1181          
1182          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   4042    ----
   CONSTANT SIZE    =    906    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10      77
   IDATA SIZE       =      8    ----
   BIT SIZE         =     11       6
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -