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

📄 1.s

📁 点阵显示汉字
💻 S
📖 第 1 页 / 共 3 页
字号:
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x00,0x00,0xFF,0xF8,0x12,0x08,0x12,0x48,0x12,0x48,0x12,0x48,0x7E,0x48,0x12,0x48,
; 0x12,0x48,0x12,0xA8,0x1C,0xA0,0xE1,0x22,0x01,0x22,0x02,0x22,0x04,0x1E,0x08,0x00,
; 
; /*--  文字:  在  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x02,0x00,0x02,0x00,0x7F,0xFE,0x04,0x00,0x04,0x00,0x08,0x40,0x18,0x40,0x17,0xFC,
; 0x30,0x40,0x50,0x40,0x90,0x40,0x10,0x40,0x10,0x40,0x17,0xFE,0x10,0x00,0x00,0x00,
; 
; /*--  文字:  与  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x00,0x00,0x08,0x00,0x08,0x04,0x0F,0xFE,0x08,0x00,0x08,0x00,0x0F,0xFC,0x00,0x04,
; 0x00,0x04,0x00,0x24,0x7F,0xF4,0x00,0x04,0x00,0x04,0x00,0x48,0x00,0x30,0x00,0x00,
; 
; /*--  文字:  未  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x03,0x00,
; 0x03,0x80,0x05,0x40,0x05,0x20,0x09,0x18,0x31,0x0E,0xC1,0x04,0x01,0x00,0x01,0x00,
; 
; /*--  文字:  来  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x01,0x00,0x01,0x00,0x3F,0xFC,0x01,0x00,0x09,0x30,0x05,0x20,0x03,0x40,0x7F,0xFE,
; 0x01,0x80,0x03,0x40,0x05,0x20,0x09,0x18,0x31,0x0E,0xC1,0x04,0x01,0x00,0x01,0x00,
; 
; /*--  文字:  却  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x08,0x00,0x08,0x7C,0x08,0x44,0x7F,0x44,0x08,0x44,0x08,0x44,0x08,0x44,0xFF,0x44,
; 0x10,0x44,0x12,0x44,0x21,0x44,0x27,0xD4,0x79,0x48,0x20,0x40,0x00,0x40,0x00,0x40,
; 
; /*--  文字:  由  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,
; 0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x20,0x08,0x00,0x00,
; 
; /*--  文字:  我  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x06,0x40,0x38,0x50,0x08,0x48,0x08,0x48,0x08,0x40,0xFF,0xFE,0x08,0x40,0x08,0x48,
; 0x0E,0x28,0x38,0x30,0xC8,0x20,0x08,0x50,0x09,0x92,0x08,0x0A,0x28,0x06,0x10,0x02,
; 
; 
; /*--  文字:  们  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x0A,0x00,0x09,0x00,0x11,0xBC,0x11,0x04,0x34,0x04,0x24,0x04,0x64,0x04,0xA4,0x04,
; 0x24,0x04,0x24,0x04,0x24,0x04,0x24,0x04,0x24,0x04,0x24,0x14,0x24,0x08,0x00,0x00,
; 
; 
; /*--  文字:  掌  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x11,0x10,0x09,0x20,0x7F,0xFE,0x40,0x04,0x0F,0xE0,0x08,0x20,0x0F,0xE0,0x00,0x00,
; 0x3F,0xF0,0x01,0x00,0x3F,0xF8,0x01,0x00,0x7F,0xFC,0x01,0x00,0x05,0x00,0x02,0x00,
; 
; /*--  文字:  握  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
; 0x20,0x00,0x23,0xFC,0x22,0x04,0xFB,0xFC,0x22,0x00,0x23,0xFE,0x2A,0x40,0x32,0x88,
; 0x63,0xFC,0xA2,0x24,0x22,0x20,0x23,0xFC,0x24,0x20,0x24,0x20,0xAB,0xFE,0x40,0x00,
; };
; //下面是数字储存数组
; const data1[10][16]=
; {
; /*--  文字:  0  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},
; 
; /*--  文字:  1  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},
; 
; /*--  文字:  2  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},
; 
; /*--  文字:  3  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},
; 
; /*--  文字:  4  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},
; 
; /*--  文字:  5  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},
; 
; /*--  文字:  6  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},
; 
; /*--  文字:  7  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},
; 
; /*--  文字:  8  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},
; 
; /*--  文字:  9  --*/
; /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
; {0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00}
; };
; //下面是驱动行  驱动74LS154
; const uchar ROW[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};//行控制数组
; #pragma data:data
; /***************************************************************************************************
;                                         把上述代码放在code区
; ****************************************************************************************************/
; 
; /***************************************************************************************************
;                                        下面32*80大点阵驱动程序
; ****************************************************************************************************/
; //送绿色数据
; void Send_Byte_DG(uchar data)
; {
	.dbline 231
; uchar i=0;
	clr R20
	.dbline 232
; clr_DR( );
	cbi 0x18,7
	.dbline 233
; for(i=0;i<8;i++)
	xjmp L21
L18:
	.dbline 234
; {
	.dbline 235
; clr_CLK();
	cbi 0x18,5
	.dbline 236
; if((data&0x80)==0)
	sbrc R16,7
	rjmp L22
	.dbline 237
; clr_DG();
	cbi 0x18,6
	xjmp L23
L22:
	.dbline 239
; else//列控制
; set_DG();
	sbi 0x18,6
L23:
	.dbline 240
	sbi 0x18,5
	.dbline 241
	lsl R16
	.dbline 242
L19:
	.dbline 233
	inc R20
L21:
	.dbline 233
	cpi R20,8
	brlo L18
	.dbline 243
; set_CLK();
; data<<=1;
; }
; clr_DG();
	cbi 0x18,6
	.dbline -2
L17:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r data 16 c
	.dbend
	.dbfunc e Send_Byte_DR _Send_Byte_DR fV
;              i -> R20
;           data -> R16
	.even
_Send_Byte_DR::
	xcall push_gset1
	.dbline -1
	.dbline 247
; }
; //送红色数据
; void Send_Byte_DR(uchar data)
; {
	.dbline 248
; uchar i=0;
	clr R20
	.dbline 249
; clr_DG();
	cbi 0x18,6
	.dbline 250
; for(i=0;i<8;i++)
	xjmp L28
L25:
	.dbline 251
; {
	.dbline 252
; clr_CLK();
	cbi 0x18,5
	.dbline 253
; if((data&0x80)==0)
	sbrc R16,7
	rjmp L29
	.dbline 254
; clr_DR();
	cbi 0x18,7
	xjmp L30
L29:
	.dbline 256
; else//列控制  该位所在列的二极管得正电位 在允许接地的情况下发光!!!
; set_DR();
	sbi 0x18,7
L30:
	.dbline 257
	sbi 0x18,5
	.dbline 258
	lsl R16
	.dbline 259
L26:
	.dbline 250
	inc R20
L28:
	.dbline 250
	cpi R20,8
	brlo L25
	.dbline 260
; set_CLK();
; data<<=1;
; }
; clr_DR();
	cbi 0x18,7
	.dbline -2
L24:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r data 16 c
	.dbend
	.dbfunc e Send_Byte_DR_DG _Send_Byte_DR_DG fV
;              i -> R20
;           data -> R16
	.even
_Send_Byte_DR_DG::
	xcall push_gset1
	.dbline -1
	.dbline 264
; }
; //送橙色数据
; void Send_Byte_DR_DG(uchar data)
; {
	.dbline 265
; uchar i=0;
	clr R20
	.dbline 266
; for(i=0;i<8;i++)
	xjmp L35
L32:
	.dbline 267
; {
	.dbline 268
; clr_CLK();
	cbi 0x18,5
	.dbline 270
; 
; if((data&0x80)==0)
	sbrc R16,7
	rjmp L36
	.dbline 271
; {
	.dbline 272
; clr_DG();
	cbi 0x18,6
	.dbline 273
; clr_DR();
	cbi 0x18,7
	.dbline 274
; }
	xjmp L37
L36:
	.dbline 276
; else//列控制  该位所在列的二极管得正电位 在允许接地的情况下发光!!!
; {
	.dbline 277
; set_DR();
	sbi 0x18,7
	.dbline 278
; set_DG();
	sbi 0x18,6
	.dbline 279
; }
L37:
	.dbline 280
	sbi 0x18,5
	.dbline 281
	lsl R16
	.dbline 282
L33:
	.dbline 266
	inc R20
L35:
	.dbline 266
	cpi R20,8
	brlo L32
	.dbline 283
; set_CLK();
; data<<=1;
; }
; clr_DR();
	cbi 0x18,7
	.dbline 284
; clr_DG();
	cbi 0x18,6
	.dbline -2
L31:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r data 16 c
	.dbend
	.dbfunc e putin _putin fV
;              i -> R20
;          point -> R16
	.even
_putin::
	xcall push_gset1
	.dbline -1
	.dbline 288
; }
; //将汉字符装入显示寄存器
; void putin (uchar point)//字符载入函数
; {  
	.dbline 290
;     uchar i;//定义变量用于数据提取指针
;     for(i=0;i<16;i++)
	clr R20
	xjmp L42
L39:
	.dbline 291
	.dbline 292
	ldi R24,32
	mul R24,R16
	movw R2,R0
	ldi R24,<_data
	ldi R25,>_data
	add R2,R24
	adc R3,R25
	ldi R24,2
	mul R24,R20
	movw R30,R0
	add R30,R2
	adc R31,R3
	lpm R30,Z
	ldi R24,58
	mul R24,R20
	movw R2,R0
	ldi R24,<_Ledplay
	ldi R25,>_Ledplay
	add R2,R24
	adc R3,R25
	lds R26,_bn
	clr R27
	add R26,R2
	adc R27,R3
	st x,R30
	.dbline 293
	ldi R24,32
	mul R24,R16
	movw R2,R0
	ldi R24,<_data
	ldi R25,>_data
	add R2,R24
	adc R3,R25
	ldi R24,2
	mul R24,R20
	movw R30,R0
	adiw R30,1
	add R30,R2
	adc R31,R3
	lpm R30,Z
	ldi R24,58
	mul R24,R20
	movw R2,R0
	ldi R24,<_Ledplay
	ldi R25,>_Ledplay
	add R2,R24
	adc R3,R25
	lds R26,_bn
	clr R27
	adiw R26,1
	add R26,R2
	adc R27,R3
	st x,R30
	.dbline 294
L40:
	.dbline 290
	inc R20
L42:
	.dbline 290
	cpi R20,16
	brsh X0
	xjmp L39
X0:
	.dbline 295
; 	{ 
; 	     Ledplay[i][bn]=data[point][2*i];                          //行储存转化为列储存
; 	     Ledplay[i][bn+1]=data[point][(2*i)+1];                     //行储存转化为列储存
; 	}
; 	bn+=2;
	lds R24,_bn
	subi R24,254    ; addi 2
	sts _bn,R24
	.dbline -2
L38:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r point 16 c
	.dbend
	.dbfunc e putin1 _putin1 fV
;              i -> R20
;          point -> R16
	.even
_putin1::
	xcall push_gset1
	.dbline -1
	.dbline 300
; }
; 
; //将数字符装入显示寄存器
; void putin1 (uchar point)//字符载入函数  载入第point个汉字
; {
	.dbline 302
; 	uchar i;//定义变量用于数据提取指针
;     for(i=0;i<16;i++)
	clr R20
	xjmp L47
L44:
	.dbline 303
	.dbline 304
	ldi R24,32
	mul R24,R16
	movw R2,R0
	ldi R24,<_data1
	ldi R25,>_data1
	add R2,R24
	adc R3,R25
	ldi R24,2
	mul R24,R20
	movw R30,R0
	add R30,R2
	adc R31,R3
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ldi R24,58
	mul R24,R20
	movw R2,R0
	ldi R24,<_Ledplay
	ldi R25,>_Ledplay
	add R2,R24
	adc R3,R25
	lds R26,_bn
	clr R27
	add R26,R2
	adc R27,R3
	st x,R30
	.dbline 305
L45:
	.dbline 302
	inc R20
L47:
	.dbline 302
	cpi R20,16
	brlo L44
	.dbline 306
; 	{ 
; 	     Ledplay[i][bn]=data1[point][i];
; 	}
; 	bn++;
	lds R24,_bn
	subi R24,255    ; addi 1
	sts _bn,R24
	.dbline -2
L43:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r point 16 c
	.dbend
	.dbfunc e clearRAM _clearRAM fV
;              b -> R16
;              a -> R18
	.even
_clearRAM::
	.dbline -1
	.dbline 310
; }
; //显示存器清空(0x00)
; void clearRAM (void)
; {//寄存器清空函数
	.dbline 312
; 	uchar a,b;//定义变量用于清空数据指针fyhh
; 	for(b=0;b<17;b++)
	clr R16
	xjmp L52
L49:
	.dbline 313
; 	{
	.dbline 314
	clr R18
	xjmp L56
L53:
	.dbline 314
	.dbline 315
	ldi R24,58
	mul R24,R16
	movw R2,R0
	ldi R24,<_Ledplay
	ldi R25,>_Ledplay
	add R2,R24
	adc R3,R25
	mov R30,R18
	clr R31
	add R30,R2
	adc R31,R3
	clr R2
	std z+0,R2
	.dbline 316
L54:
	.dbline 314
	inc R18
L56:
	.dbline 314
	cpi R18,42
	brlo L53
	.dbline 317
L50:
	.dbline 312
	inc R16
L52:
	.dbline 312
	cpi R16,17
	brlo L49
	.dbline -2
L48:
	.dbline 0 ; func end
	ret
	.dbsym r b 16 c
	.dbsym r a 18 c
	.dbend
	.dbfunc e clearping _clearping fV
;              j -> R20
	.even
_clearping::
	xcall push_gset1
	.dbline -1
	.dbline 321
; 	  for(a=0;a<42;a++){//指向40个寄存器
; 		Ledplay[b][a]=0;//将指向的寄存器清空
; 	  }
; 	}
; }
; //清屏
; void clearping(void)
; {unsigned char j;
	.dbline 322
;  clr_STB();	
	cbi 0x18,4
	.dbline 323
;      for(j=0;j<20;j++)//20*8列都不显示红‘绿色
	clr R20
	xjmp L61
L58:
	.dbline 324
	clr R16
	xcall _Send_Byte_DR_DG
L59:
	.dbline 323
	inc R20
L61:
	.dbline 323
	cpi R20,20
	brlo L58
	.dbline 325
; 	 Send_Byte_DR_DG(0x00);//8位的各个所在列都不显示红‘绿色
;      set_STB();//锁存
	sbi 0x18,4
	.dbline -2
L57:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbend
	.dbfunc e DisPlay_onetime _DisPlay_onetime fV
;              i -> R22
;              j -> R10
;         colour -> R20
	.even
_DisPlay_onetime::
	xcall push_gset4
	mov R20,R16
	.dbline -1
	.dbline 330
; }
; //显示一次板面汉字
; void DisPlay_onetime(unsigned char colour)
; //colour=0\1\2分别为红\绿\橙色显示
; {
	.dbline 332
;   uchar i,j;	
;   for(i=0;i<16;i++)//扫描16行 
	clr R22
	xjmp L66
L63:
	.dbline 333
;   {
	.dbline 334
;      clr_STB();	 
	cbi 0x18,4
	.dbline 335
;         for(j=0;j<20;j++)//每一片点阵出现的第一个汉字从第|Jmax-20|列(从输入端开始数)开始入x=20时每一片点阵出现的第一个汉字从第0个字位开始入
	clr R10
	xjmp L70
L67:
	.dbline 336
; 	 {                   //*本版面最多能显示10个字,即20列(Ledplay的前20 列)其他汉字通过移动(把20列以后的字信号移到前20列范围内,即版内)
	.dbline 337
; 	  switch(colour)
	mov R12,R20
	clr R13
	tst R12
	brne X1
	tst R13
	breq L74
X1:
	movw R24,R12
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L75
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L76
	xjmp L72
X2:
	.dbline 338
; 	 {
L74:
	.dbline 339
; 	  case 0: Send_Byte_DR(Ledplay[i][j]);
	ldi R24,58
	mul R24,R22
	movw R2,R0
	ldi R24,<_Ledplay
	ldi R25,>_Ledplay
	add R2,R24
	adc R3,R25
	mov R30,R10
	clr R31
	add R30,R2
	adc R31,R3
	ldd R16,z+0
	xcall _Send_Byte_DR
	.dbline 340
; 	        break;
	xjmp L72
L75:
	.dbline 341
; 	 case 1: Send_Byte_DG(Ledplay[i][j]);
	ldi R24,58
	mul R24,R22
	movw R2,R0
	ldi R24,<_Ledplay
	ldi R25,>_Ledplay
	add R2,R24
	adc R3,R25
	mov R30,R10
	clr R31
	add R30,R2
	adc R31,R3
	ldd R16,z+0
	xcall _Send_Byte_DG
	.dbline 342
; 	       break;  
	xjmp L72
L76:
	.dbline 343
; 	 case 2: Send_Byte_DR_DG(Ledplay[i][j]);
	ldi R24,58
	mul R24,R22
	movw R2,R0
	ldi R24,<_Ledplay
	ldi R25,>_Ledplay
	add R2,R24
	adc R3,R25
	mov R30,R10
	clr R31
	add R30,R2
	adc R31,R3
	ldd R16,z+0
	xcall _Send_Byte_DR_DG
	.dbline 344
; 	        break;
	.dbline 345
; 	 default:break;
L72:
	.dbline 347
L68:
	.dbline 335
	inc R10
L70:
	.dbline 335
	mov R24,R10
	cpi R24,20
	brsh X3
	xjmp L67
X3:

⌨️ 快捷键说明

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