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

📄 lcd.lst

📁 智能计时计数器 有计两脉冲间隔时间、几脉冲间隔时间、30秒脉冲数等
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V6.20c  LCD                                                                   07/15/2004 09:46:24 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include <.\zm.h>
   3          #include <reg52.h>
   4          #include <absacc.h>
   5          #define uchar unsigned char
   6          #define asscii 46 //how many one byte
   7          #define null 44//NULL
   8          #define cheng 46 //成
   9          #define du1 47//都
  10          #define si 48//世
  11          #define ji1 49//纪
  12          #define zhong1 50//中
  13          #define ke 51//科
  14          #define ping 52//平
  15          #define jun 53//均
  16          #define su 54//速
  17          #define du2 55//度
  18          #define jia 56//加
  19          #define guang 57//光
  20          #define dian 58//电
  21          #define men 59//门
  22          #define zi 60//自
  23          #define jian 61//检
  24          #define dan 62//单
  25          #define shuang 63//双
  26          #define bai 64//摆
  27          #define zhou 65//周
  28          #define qi1 66//期
  29          #define zhong2 67//钟
  30          #define pen 68//碰
  31          #define zhuang 69//撞
  32          #define jiao 70//角
  33          #define zhuan 71//转
  34          #define xian 72//线
  35          #define miao 73//秒
  36          #define fen 74//分
  37          #define shou 75//手
  38          #define dong 76//动
  39          #define ce 77//测
  40          #define liang 78//量
  41          #define zhi 79//智
  42          #define neng 80//能
  43          #define ji2 81//计
  44          #define shu 82//数
  45          #define shi 83//时
  46          #define qi2 84//器
  47          #define tong 85//通
  48          #define dao 86//道
  49          #define gao 87//高
  50          #define di 88 //低
  51          #define duo 89
  52          #define mai 90
  53          #define chong 91
  54          #define ci 92
  55          //code char ZM[];
C51 COMPILER V6.20c  LCD                                                                   07/15/2004 09:46:24 PAGE 2   

  56          extern select_id;
  57          extern void PR0(char COM);
  58          extern void PR1(char DAT);
  59          extern void PR3(char COM);
  60          extern void PR4(char DAT);
  61          void char_byte(unsigned char lin,unsigned char byte,unsigned char linehead )
  62          {
  63   1      unsigned char i;
  64   1      unsigned char k;
  65   1      unsigned int addr_ziku;
  66   1      i=byte*8;
  67   1      if(i<=53)//left
  68   1      	{
  69   2      	PR0(i);
  70   2      	PR0(0xb8|lin);
  71   2      	for(k=0;k<8;k++)
  72   2      		{
  73   3      		addr_ziku=linehead*16+k;
  74   3      		PR1(ZM[addr_ziku]);
  75   3      		}
  76   2      	PR0(i);
  77   2      	PR0(0xb8|(lin+1));
  78   2      	for(k=0;k<8;k++)
  79   2      		{addr_ziku=linehead*16+k+8;
  80   3      		PR1(ZM[addr_ziku]);
  81   3      		}
  82   2      	}
  83   1      else if(i>=61)//right
  84   1      	{
  85   2      	PR3(i%61);
  86   2      	PR3(0xb8|lin);
  87   2      	for(k=0;k<8;k++)
  88   2      		{addr_ziku=linehead*16+k;
  89   3      		PR4(ZM[addr_ziku]);
  90   3      		}
  91   2      	PR3(i%61);
  92   2      	PR3(0xb8|(lin+1));
  93   2      	for(k=0;k<8;k++)
  94   2      		{addr_ziku=linehead*16+k+8;
  95   3      		PR4(ZM[addr_ziku]);
  96   3      		}
  97   2      	}
  98   1      else         //mid
  99   1      	{
 100   2      	PR0(i);
 101   2      	PR0(0xb8|lin);
 102   2      	for(k=0;k<(61-i);k++)
 103   2      		{addr_ziku=linehead*16+k;
 104   3      		PR1(ZM[addr_ziku]);
 105   3      		}
 106   2      	PR3(0);
 107   2      	PR3(0xb8|lin);
 108   2      	for(k=0;k<(i+8-61);k++)
 109   2      		{addr_ziku=linehead*16+k+61-i;
 110   3      		PR4(ZM[addr_ziku]);
 111   3      		}
 112   2      	PR0(i);
 113   2      	PR0(0xb8|(lin+1));
 114   2      	for(k=0;k<(61-i);k++)
 115   2      		{addr_ziku=linehead*16+k+8;
 116   3      		PR1(ZM[addr_ziku]);
 117   3      		}
C51 COMPILER V6.20c  LCD                                                                   07/15/2004 09:46:24 PAGE 3   

 118   2      	PR3(0);
 119   2      	PR3(0xb8|(lin+1));
 120   2      	for(k=0;k<(i+8-61);k++)
 121   2      		{addr_ziku=linehead*16+8+k+61-i;
 122   3      		PR4(ZM[addr_ziku]);
 123   3      		}
 124   2      	}
 125   1      }
 126          
 127          
 128          void line_lcd(unsigned char lin,unsigned char linehead[])
 129          {
 130   1      unsigned char i=0;
 131   1      unsigned char j=0;
 132   1      unsigned char k=0;
 133   1      unsigned int addr_ziku;
 134   1      while(linehead[i]!=0xff)
 135   1      	{
 136   2      	if(linehead[i]>=asscii)//判断是汉字还是字符
 137   2      		j+=16;
 138   2      	else j+=8;
 139   2      
 140   2      	if((j<69)&&(j>61)&&(linehead[i]<asscii))//字符从56列开始,左屏有5列,右屏有3列
 141   2      		{
 142   3      		PR0(j-8);
 143   3      		PR0(0xb8|lin);
 144   3      		for(k=0;k<(8-j+61);k++)
 145   3      			{
 146   4                              addr_ziku=linehead[i]*16+k;
 147   4      			PR1(ZM[addr_ziku]);}
 148   3      		PR3(0);
 149   3      		PR3(0xb8|lin);
 150   3      		for(k=0;k<=(j-61);k++)
 151   3      			{addr_ziku=linehead[i]*16+k-j+69;
 152   4      			PR4(ZM[addr_ziku]);}
 153   3      
 154   3      		PR0(j-8);
 155   3      		PR0(0xb8|(lin+1));
 156   3      		for(k=0;k<(69-j);k++)
 157   3      			{addr_ziku=linehead[i]*16+k+8;
 158   4      			PR1(ZM[addr_ziku]);}
 159   3      		PR3(0);
 160   3      		PR3(0xb8|(lin+1));
 161   3      		for(k=0;k<=(j-61);k++)
 162   3      			{addr_ziku=linehead[i]*16+k+77-j;
 163   4      			PR4(ZM[addr_ziku]);}
 164   3      		}
 165   2      	else if((j<77)&&(j>61)&&(linehead[i]>=asscii))//汉字从56列或48列开始,左屏有5列,右屏有11列或左屏有13列,
             -右屏有5列
 166   2      		{
 167   3      		PR0(j-16);
 168   3      		PR0(0xb8|lin);
 169   3      		for(k=0;k<(77-j);k++)
 170   3      			{addr_ziku=(linehead[i]-asscii)*32+asscii*16+k;
 171   4      			PR1(ZM[addr_ziku]);}
 172   3      		PR3(0);
 173   3      		PR3(0xb8|lin);
 174   3      		for(k=0;k<=(j-61);k++)
 175   3      			{addr_ziku=(linehead[i]-asscii)*32+asscii*16+16-(j-61)+k;
 176   4      			PR4(ZM[addr_ziku]);}
 177   3      
 178   3      		PR0(j-16);
C51 COMPILER V6.20c  LCD                                                                   07/15/2004 09:46:24 PAGE 4   

 179   3      		PR0(0xb8|(lin+1));
 180   3      		for(k=0;k<(61-(j-16));k++)
 181   3      			{addr_ziku=(linehead[i]-asscii)*32+asscii*16+k+16;
 182   4      			PR1(ZM[addr_ziku]);}
 183   3      		PR3(0);
 184   3      		PR3(0xb8|(lin+1));
 185   3      		for(k=0;k<(j-61);k++)
 186   3      			{addr_ziku=(linehead[i]-asscii)*32+asscii*16+16+16-(j-61)+k;
 187   4      			PR4(ZM[addr_ziku]);}
 188   3      		}
 189   2      	else
 190   2      		{
 191   3      		if(linehead[i]<asscii)//8*16
 192   3      			{
 193   4      			if(j<61)//左屏字符
 194   4      				{
 195   5      				PR0(j-8);
 196   5      				PR0(0xb8|lin);
 197   5      				for(k=0;k<8;k++)
 198   5      					{addr_ziku=linehead[i]*16+k;
 199   6      					PR1(ZM[addr_ziku]);}
 200   5      				PR0(j-8);
 201   5      				PR0(0xb8|(lin+1));
 202   5      				for(k=0;k<8;k++)
 203   5      					{addr_ziku=linehead[i]*16+k+8;
 204   6      					PR1(ZM[addr_ziku]);}
 205   5      				}
 206   4      			else
 207   4      				{
 208   5      				PR3((j-8)%61);
 209   5      				PR3(0xb8|lin);
 210   5      				for(k=0;k<8;k++)
 211   5      					{addr_ziku=linehead[i]*16+k;
 212   6      					PR4(ZM[addr_ziku]);}
 213   5      				PR3((j-8)%61);
 214   5      				PR3(0xb8|(lin+1));
 215   5      				for(k=0;k<8;k++)
 216   5      					{addr_ziku=linehead[i]*16+k+8;
 217   6      					PR4(ZM[addr_ziku]);}
 218   5      				}//右屏字符
 219   4      			}
 220   3      		else//16*16
 221   3      			{
 222   4      			if(j<61)//左屏汉字
 223   4      				{
 224   5      				PR0(j-16);
 225   5      				PR0(0xb8|lin);
 226   5      				for(k=0;k<16;k++)
 227   5      					{addr_ziku=(linehead[i]-asscii)*32+asscii*16+k;
 228   6      					PR1(ZM[addr_ziku]);}
 229   5      				PR0(j-16);
 230   5      				PR0(0xb8|(lin+1));
 231   5      				for(k=0;k<16;k++)
 232   5      					{addr_ziku=(linehead[i]-asscii)*32+asscii*16+k+16;
 233   6      					PR1(ZM[addr_ziku]);}
 234   5      				}
 235   4      			else//右屏汉字
 236   4      				{
 237   5      				PR3(j-61-16);
 238   5      				PR3(0xb8|lin);
 239   5      				for(k=0;k<16;k++)
 240   5      					{addr_ziku=(linehead[i]-asscii)*32+asscii*16+k;
C51 COMPILER V6.20c  LCD                                                                   07/15/2004 09:46:24 PAGE 5   

 241   6      					PR4(ZM[addr_ziku]);}
 242   5      				PR3(j-61-16);
 243   5      				PR3(0xb8|(lin+1));
 244   5      				for(k=0;k<16;k++)
 245   5      					{addr_ziku=(linehead[i]-asscii)*32+asscii*16+k+16;
 246   6      					PR4(ZM[addr_ziku]);}
 247   5      				}
 248   4      			}
 249   3      		}
 250   2      	i+=1;
 251   2      
 252   2      	}
 253   1      }
 254          
 255          
 256          void clear_up(void)
 257          {
 258   1      char i;
 259   1       PR0(0);
 260   1       PR3(0);
 261   1       PR0(0xb8);
 262   1       PR3(0xb8);
 263   1       for(i=0;i<61;i++)
 264   1      	{
 265   2       	PR1(0);

⌨️ 快捷键说明

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