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

📄 p1.lst

📁 程序名称:32x64LED点阵上显示32X32的汉字 日期 :2006.11.25 程序说明:一个汉字占128个字节
💻 LST
字号:
C51 COMPILER V6.12  P1                                                                     11/28/2006 21:31:21 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE P1
OBJECT MODULE PLACED IN .\P1.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE .\P1.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*************************************************
   2          程序名称:32x64LED点阵上显示32X32的汉字
   3          日期    :2006.11.25
   4          程序说明:一个汉字占128个字节,点阵每一行数据占4个字节
   5          作者	:liuanggh	
   6          *************************************************/
   7          #include <reg52.h>
   8          #include "P1.h"
   9          
  10          sbit  	LOAD 	=P3^2;	//74LS595锁存
  11          sbit  	RST 	=P3^3;  //
  12          sbit 	SLECET 	=P2^3;  //74LS138译码器使能端,低电平有效
  13          
  14          uchar code line[] = {   //行扫描段码
  15          						0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07
  16          					};
  17          uchar line_count;			//行计数器
  18          uchar move_count;			//移位计数器
  19          uchar font_count;			//字计数器
  20          uchar buff[16] = {0x00};//一行有128列,每8列数据占一个字节,所以缓冲区需要16个字节
  21          
  22          void transform_data();  //数据转换
  23          void send_data();  		//串行发送8个字节的数据
  24          
  25          main()
  26          {
  27   1      	uchar i;
  28   1      	uchar j = 0;
  29   1      	SCON = 0;				//串口工作在方式0下
  30   1      	SLECET = 1;     		//138译码器无效
  31   1      	RST = 0;        
  32   1      	RST = 1;			//595复位
  33   1      	/*
  34   1      	for(i = 0; i < 32; i++)
  35   1      	{
  36   1      		LOAD = 0;
  37   1      		send_data();
  38   1      		LOAD = 1;
  39   1      		P2 = line[j%8];  //片选138
  40   1      		P1 = line[i%8];
  41   1      		if(i%8 == 7)
  42   1      		j++;		
  43   1      	}
  44   1      	*/
  45   1      	for(i = 0; i < 8; i++)
  46   1      	{
  47   2      		P2 = line[i];		//138译码器片选
  48   2      		for(j = 0; j < 8; j++)
  49   2      		{			
  50   3      			LOAD = 0;      //保持原有数据
  51   3      			send_data();	//发送数据
  52   3      			SLECET = 1; 	//关闭显示
  53   3      			LOAD = 1;		//595锁存数据
  54   3      			SLECET = 0; 	//138译码器有效
  55   3      			P1 = line[j];	//行扫描
C51 COMPILER V6.12  P1                                                                     11/28/2006 21:31:21 PAGE 2   

  56   3      			line_count++;	//行扫描一次,行计数器加1
  57   3      			//if(line_count > 31)
  58   3      			if(line_count > 64)
  59   3      			line_count = 0;
  60   3      			delay();
  61   3      		}
  62   2      	}
  63   1      
  64   1      }	
  65          
  66          void transform_data()  //数据转换
  67          {
  68   1      	/*
  69   1          uchar temp[5] = {0};
  70   1      	uchar i;
  71   1      	for( i = 0; i < 4; i++)
  72   1      	temp[i] = font[(font_count + i) * 8 + line_count]; //取第i行数据
  73   1      	for( i = 0; i < 4; i++)
  74   1      	buff[i] = ( temp[ i ] >> move_count )|( temp[ i + 1] << ( 7 - move_count ) );
  75   1      	*/
  76   1      	uchar i;
  77   1      	for(i = 0; i < 8; i++)
  78   1      	{
  79   2      		buff[i] = hanzi[ line_count*8 + i];
  80   2      	}
  81   1      
  82   1      	for(i = 8; i < 16; i++)
  83   1      	{
  84   2      		buff[i] = hanzi[ line_count*8 + (i-8) + 512];
  85   2      	}
  86   1      	/*
  87   1      	for(i = 0; i < 4; i++)
  88   1      	{
  89   1      		buff[i] = hanzi[ line_count*4 + i];
  90   1      	}
  91   1      
  92   1      	for(i = 4; i < 8; i++)
  93   1      	{
  94   1      		buff[i] = hanzi[ line_count*4 + i + 128];
  95   1      	}
  96   1      
  97   1      	for(i = 8; i < 12; i++)
  98   1      	{
  99   1      		buff[i] = hanzi[ line_count*4 + i + 256];
 100   1      	}
 101   1      
 102   1      	for(i = 12; i < 16; i++)
 103   1      	{
 104   1      		buff[i] = hanzi[ line_count*4 + i + 384];
 105   1      	}
 106   1      	*/
 107   1      
 108   1      
 109   1      }
 110          
 111          
 112          void send_data()  			//串行发送8个字节的数据
 113          {
 114   1      	uchar i;
 115   1      	transform_data();			//数据转换
 116   1      
 117   1      	//显示"阵点"
C51 COMPILER V6.12  P1                                                                     11/28/2006 21:31:21 PAGE 3   

 118   1      	for( i = 0; i < 16; i++)
 119   1      	{
 120   2      		//SBUF = 0xff;
 121   2            SBUF = buff[i];
 122   2      		while(!TI);
 123   2      		TI = 0;
 124   2      	} 
 125   1      
 126   1      	/*
 127   1      	//显示"点阵"
 128   1      	for( i = 4; i < 8; i++)
 129   1      	{
 130   1      		//SBUF = 0xff;
 131   1            SBUF = buff[i];
 132   1      		while(!TI);
 133   1      		TI = 0;
 134   1      	} 
 135   1      	for( i = 0; i < 4; i++)
 136   1      	{
 137   1      		//SBUF = 0xff;
 138   1            SBUF = buff[i];
 139   1      		while(!TI);
 140   1      		TI = 0;
 141   1      	} 
 142   1      	*/
 143   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    213    ----
   CONSTANT SIZE    =   1032    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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