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

📄 test_mobi2007.lst

📁 该程序为液晶显示模块MOBI2007的显示驱动程序
💻 LST
字号:
C51 COMPILER V6.12  TEST_MOBI2007                                                          11/01/2005 21:37:04 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE TEST_MOBI2007
OBJECT MODULE PLACED IN .\test_mobi2007.OBJ
COMPILER INVOKED BY: D:\2_soft\C51\BIN\C51.EXE .\test_mobi2007.C DEBUG OBJECTEXTEND

stmt level    source

   1          //液晶MOBI2007测试程序
   2          /*******************************包含的头文件***********************************/
   3          #include<at898252.h>
   4          #include <intrins.h>
   5          /**********************************宏定义**************************************/
   6          #define uchar unsigned char
   7          #define uint unsigned int
   8          /*****************************端口声明******************************/
   9          #define RESET P2_0
  10          #define SID P2_1
  11          #define SCLK P2_2
  12          #define RS P2_3
  13          //CS为片选
  14          //PS为并口与串口的选择
  15          /***************************全局变量的定义**************************/
  16          uchar bdata command;		//液晶控制字存储单元
  17          uchar bdata display_data;	//液晶显示数据存储单元
  18          sbit control_bit=command^7;
  19          sbit display_data_bit=display_data^7;
  20          uchar page;		//页面地址存储单元
  21          uchar column;		//列地址存储单元
  22          uchar page_temp;	//页面地址暂存单元
  23          uchar column_temp;	//列地址暂存单元
  24          uchar data_indx;
  25          uchar code data_ZIFU[16][8]={0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00,//"0"
  26          		        0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00,//"1"
  27          		        0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00,//"2"
  28          		        0x00,0x21,0x41,0x45,0x4B,0x31,0x00,0x00,//"3"
  29                 		        0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00,//"4"
  30                 		        0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,//"5"
  31                 		        0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00,//"6"
  32                 		        0x00,0x01,0x01,0x79,0x05,0x03,0x00,0x00,//"7"
  33                                  0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,//"8"
  34                                  0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00,//"9"
  35          			0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x00,//"A"
  36                  		0x00,0x41,0x7F,0x49,0x49,0x36,0x00,0x00,//"B"
  37                  		0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00,//"C"
  38                  		0x00,0x41,0x7F,0x41,0x41,0x3E,0x00,0x00,//"D"
  39                  		0x00,0x7F,0x49,0x49,0x49,0x49,0x00,0x00,//"E"
  40                  		0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00//"F"
  41                  		};
  42          uchar code data_HANZI[16][8]={
  43          			0x82,0x8A,0x92,0xB2,0x02,0xA7,0x92,0x5E,//蓬
  44                  		0x2A,0xAF,0x2A,0x5A,0x4A,0x83,0x82,0x00,
  45                  		0x00,0x80,0x40,0x3F,0x41,0x90,0x95,0x95,
  46                  		0x95,0xFF,0x95,0x95,0x95,0xD0,0x40,0x00,
  47                  		0x80,0x64,0x24,0x24,0x3F,0x24,0xA6,0x64,//勃
  48                  		0x20,0x20,0xFF,0x20,0x20,0xF0,0x20,0x00,
  49                  		0x00,0x08,0x49,0x89,0x7D,0x0B,0x89,0x40,
  50                  		0x30,0x0E,0x41,0x80,0x40,0x3F,0x00,0x00,
  51                  		0x40,0x42,0x44,0xCC,0x00,0x20,0x22,0xE2,//远
  52                  		0x22,0x22,0xE2,0x23,0x32,0x20,0x00,0x00,
  53                  		0x00,0x40,0x20,0x1F,0x20,0x50,0x4C,0x43,
  54                  		0x40,0x40,0x47,0x48,0x48,0x6E,0x20,0x00,
  55                  		0x20,0x20,0x20,0x20,0x20,0x20,0xD1,0x7F,//大
C51 COMPILER V6.12  TEST_MOBI2007                                                          11/01/2005 21:37:04 PAGE 2   

  56                  		0xD1,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
  57                  		0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,
  58                  		0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00
  59                  		};
  60          /****************************函数声明*******************************/
  61          void delay_s(uint x);		//延时x毫秒子函数
  62          void LCD_init(void);		//液晶初始化子函数
  63          void LCD_order_write(void);	//写控制字子函数
  64          void LCD_data_write(void);	//写数据子函数
  65          void LCD_Clear(uchar display_data_temp);
  66          void Display_ZIFU(void);	//西文字符显示子函数
  67          void Display_HANZI(void);
  68          void main(void);		//主函数
  69          /*************************延时X毫秒函数*****************************/
  70          //说明:实现功能:软件延时X毫秒
  71          //输入:软件延时的时间:xms
  72          //输出:无
  73          void delay_s(uint x)
  74          {
  75   1      	uint n;
  76   1      	while(x!=0)
  77   1      	{
  78   2      		for(n=0;n<125;n++)	//一次延时1ms
  79   2      		{;}
  80   2      		x--;
  81   2      	}
  82   1      }
  83          /*************************液晶初始化子函数**************************/
  84          //说明:完成对液晶的初始化
  85          //输入:无
  86          //输出:无
  87          void LCD_init(void)
  88          {
  89   1      	RESET=0;	//复位液晶
  90   1      	delay_s(250);	//延时250毫秒
  91   1      	RESET=1;
  92   1      	RS=0;		//传送控制字模式
  93   1      	SID=0;		//传送数据置为0
  94   1      	SCLK=0;		//时钟置为低电平
  95   1      	
  96   1      	command=0x0a3;	//显示占空比设置(A2 1/8;A3 1/65DUTY)
  97   1      	LCD_order_write();
  98   1      	
  99   1      	command=0x0a1;	//ADC SELECT
 100   1      	LCD_order_write();
 101   1      	
 102   1      	command=0x2f;	//POWER CONTROL
 103   1      	LCD_order_write();
 104   1      	
 105   1      	command=0x24;	//VOLT REGULATOR RADIO SET
 106   1      	LCD_order_write();
 107   1      	
 108   1              command=0x81;	//REFERENCE VOLT MODE set
 109   1      	LCD_order_write();
 110   1      	
 111   1              command=0x18;	//REFERENCE VOLT REG  set
 112   1      	LCD_order_write();
 113   1      	
 114   1              command=0x0c8;	//列地址选择为右移方式
 115   1      	LCD_order_write();
 116   1              
 117   1              command=0x0af;	//显示打开
C51 COMPILER V6.12  TEST_MOBI2007                                                          11/01/2005 21:37:04 PAGE 3   

 118   1      	LCD_order_write();
 119   1             
 120   1              command=0x40;	//显示起始行设置
 121   1      	LCD_order_write();    
 122   1      }
 123          /**********************写控制字子函数*******************************/
 124          //说明:通过串行方式写液晶的命令字
 125          //输入:无
 126          //输出:无
 127          void LCD_order_write(void)
 128          {
 129   1      	uchar i;
 130   1      	RS=0;	//传送命令字方式
 131   1      	for(i=0;i<8;i++)
 132   1      	{
 133   2      		SID=control_bit;//按位传送控制字
 134   2      		SCLK=0; 	//上升沿开始传送
 135   2      		delay_s(1);
 136   2      
 137   2      		SCLK=1;
 138   2      		command=command<<1;//命令字左移一位
 139   2      	}
 140   1      	SCLK=0;
 141   1      }
 142          /*************************写数据子函数******************************/
 143          //说明:通过串行方式写液晶的显示数据
 144          //输入:无
 145          //输出:无
 146          void LCD_data_write(void)
 147          {
 148   1      	uchar i;
 149   1      	RS=1;	//传送显示数据方式
 150   1      	for(i=0;i<8;i++)
 151   1      	{
 152   2      		SID=display_data_bit;//按位传送显示数据
 153   2      		SCLK=0; 	//上升沿开始传送
 154   2      		delay_s(1);
 155   2      
 156   2      		SCLK=1;
 157   2      		display_data=display_data<<1;//显示数据左移一位
 158   2      	}
 159   1      	SCLK=0;
 160   1      }
 161          /***********************液晶清屏子程序*****************************/
 162          //说明:
 163          //输入:无
 164          //输出:无
 165          void LCD_Clear(uchar display_data_temp)
 166          {
 167   1      	uchar page_temp;	//页面地址暂存单元
 168   1      //	uchar column_temp;	//列地址暂存单元
 169   1      	uchar i;
 170   1      	uchar j;
 171   1      	
 172   1      	for(j=0;j<8;j++)
 173   1      	{
 174   2      		page=j;			//页面地址设置为j
 175   2      		page_temp=page|0x0b0;	//"或"页面地址设置代码
 176   2      		command=page_temp;	
 177   2      		LCD_order_write();	//设置页面地址
 178   2      	
 179   2      		command=0x10;		//列地址自动加1
C51 COMPILER V6.12  TEST_MOBI2007                                                          11/01/2005 21:37:04 PAGE 4   

 180   2      		LCD_order_write();
 181   2      		column=0x00;		//列地址设置为"0"
 182   2      		command=column;
 183   2      		LCD_order_write();	//设置列地址
 184   2             
 185   2             		for(i=0;i<128;i++)
 186   2             		{
 187   3             			display_data=display_data_temp;
 188   3             			LCD_data_write();
 189   3             		}
 190   2             	}
 191   1      }
 192          /************************西文字符显示子函数************************/
 193          //说明:
 194          //输入:无
 195          //输出:无
 196          void Display_ZIFU(void)
 197          {
 198   1      	uchar i;
 199   1      //	column=0;
 200   1      //	page=0;	
 201   1      	uchar page_temp1;	//页面地址暂存单元
 202   1      	uchar column_temp1;	//列地址暂存单元
 203   1      	
 204   1      	page_temp1=page_temp;		//页面地址设置
 205   1      	page_temp1=page_temp1|0x0b0;	//"或"页面地址设置代码
 206   1      	command=page_temp1;	
 207   1      	LCD_order_write();	//设置页面地址
 208   1      	
 209   1      	column_temp1=column_temp/16;	
 210   1      	column_temp1=column_temp1+0x10;
 211   1      	command=column_temp1;
 212   1      	LCD_order_write();	//设置列地址高四位
 213   1      	
 214   1      	column_temp1=column_temp&0x0f;
 215   1      	command=column_temp1;
 216   1      	LCD_order_write();	//设置列地址低四位
 217   1             
 218   1             	for(i=0;i<8;i++)
 219   1             	{
 220   2             		display_data=data_ZIFU[data_indx][i];
 221   2             		LCD_data_write();
 222   2             	}
 223   1      }
 224          /*********************汉字显示子函数*******************************/
 225          //说明:
 226          //输入:
 227          //输出:
 228          void Display_HANZI(void)
 229          {
 230   1      	uchar i;
 231   1      
 232   1      	uchar page_temp1;	//页面地址暂存单元
 233   1      	uchar column_temp1;	//列地址暂存单元
 234   1      	
 235   1      	page_temp1=page_temp;		//页面地址设置
 236   1      	page_temp1=page_temp1|0x0b0;	//"或"页面地址设置代码
 237   1      	command=page_temp1;	
 238   1      	LCD_order_write();	//设置页面地址
 239   1      	
 240   1      	column_temp1=column_temp/16;	
 241   1      	column_temp1=column_temp1+0x10;
C51 COMPILER V6.12  TEST_MOBI2007                                                          11/01/2005 21:37:04 PAGE 5   

 242   1      	command=column_temp1;
 243   1      	LCD_order_write();	//设置列地址高四位
 244   1      	
 245   1      	column_temp1=column_temp&0x0f;
 246   1      	command=column_temp1;
 247   1      	LCD_order_write();	//设置列地址低四位
 248   1             
 249   1             	for(i=0;i<8;i++)
 250   1             	{
 251   2             		display_data=data_HANZI[data_indx][i];
 252   2             		LCD_data_write();
 253   2             	}
 254   1      }
 255          /***************************主函数*********************************/
 256          //说明:
 257          //输入:无
 258          //输出:无
 259          void main(void)
 260          {
 261   1      	uchar i;
 262   1      	uchar j;
 263   1      	uchar m;
 264   1      	
 265   1      	LCD_init();		//液晶初始化
 266   1      	LCD_Clear(0x55);
 267   1      	LCD_Clear(0x00);	//液晶清屏
 268   1      	
 269   1      	for(i=0;i<8;i++)	//显示西文字符
 270   1      	{
 271   2      		for(j=0;j<16;j++)
 272   2      		{
 273   3      			page_temp=i;	//设置页面地址
 274   3      			column_temp=8*j;//设置列地址
 275   3      			data_indx=j;
 276   3      			Display_ZIFU();	//显示西文字符
 277   3      		}
 278   2      	}
 279   1      	LCD_Clear(0x00);	//液晶清屏
 280   1      	
 281   1      	for(i=0;i<4;i++)	//显示汉字
 282   1      	{
 283   2      		m=i*4;
 284   2      		for(j=0;j<4;j++)
 285   2      		{
 286   3      			if(j<2)
 287   3      			{
 288   4      				page_temp=0x04;	//设置页面地址
 289   4      				column_temp=8*(j+4)+i*16;//设置列地址
 290   4      			}
 291   3      			else
 292   3      			{
 293   4      				page_temp=0x05;	//设置页面地址
 294   4      				column_temp=8*(j+4-2)+i*16;
 295   4      			}
 296   3      			data_indx=m+j;
 297   3      			Display_HANZI();	//显示西文字符
 298   3      		}
 299   2      	}	
 300   1      	while(1);
 301   1      }


C51 COMPILER V6.12  TEST_MOBI2007                                                          11/01/2005 21:37:04 PAGE 6   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    448    ----
   CONSTANT SIZE    =    256    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       3
   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 + -