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

📄 lcm_t.lst

📁 用51单片机设计的时钟电路(毕业论文)资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V6.12  LCM_T                                                                  02/10/2007 00:13:53 PAGE 1   


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

stmt level    source

   1          
   2          //---程序说明---//
   3          
   4          /*
   5          	名字:main.c
   6          	作者:杜洋(doyoung)
   7          	创建日:2006-11-26
   8          	工程:智能助理电子钟(AI-timer)
   9          */
  10          
  11          //---修改日志---//
  12          
  13          /*
  14          
  15          */
  16          
  17          
  18          //---硬件说明---//
  19          
  20          /*
  21          P0.0~0.7	NC
  22          
  23          P1.0		右上角LED-G		低电平有效(L)
  24          P1.1		右下角LED-G		L
  25          P1.2		左下角LED-G		L
  26          P1.3		左上角LED-G		L
  27          P1.4		4个LED-R		L
  28          
  29          P1.5~1.7	ISP下载用		~
  30          
  31          P2.1		LCM -5 SID		串行数据输入,~
  32          P2.2		LCD -6 CLK		串行时钟,~
  33          
  34          P2.3		左上角KEY		-
  35          P2.4		左下角KEY		-
  36          P2.5		右上角KEY		-
  37          P2.6		右下角KEY		-
  38          
  39          P2.7		背后LED-B		L
  40          
  41          P3.0		温度单总线		~
  42          
  43          P3.1		BEEP			L
  44          
  45          P3.2		KEY中断			-
  46          
  47          P3.3		DS1302 -5 RST_	低电平复位(L)
  48          P3.4		DS1302 -6 IO	~
  49          P3.5		DS1302 -7 SCLK	~
  50          
  51          P3.6		24C02 -6 SCL	~
  52          P3.7		24C02 -5 SDA	~
  53          
  54          */
  55          
C51 COMPILER V6.12  LCM_T                                                                  02/10/2007 00:13:53 PAGE 2   

  56          /****************************************************************************/
  57          //头文件
  58          #include <AT89X52.h>
  59          #include <string.h>
  60          /*****************************************************************************/
  61          //灯与蜂鸣器定义
  62          sbit	led_b = P2^7;
  63          sbit	led_r = P1^4;
  64          sbit	led_g1 = P1^3;
  65          sbit	led_g2 = P1^2;
  66          sbit	led_g3 = P1^0;
  67          sbit	led_g4 = P1^1;
  68          sbit	beep   = P3^1;
  69          /*****************************************************************************/
  70          //温度传感器定义
  71          sbit DQ = P3 ^ 0;//ds18B20
  72          /*****************************************************************************/
  73          //键盘引脚定义
  74          sbit KEY_1 = P2^3;	 //左上
  75          sbit KEY_2 = P2^4;	 //左下
  76          sbit KEY_3 = P2^6;	 //右上
  77          sbit KEY_4 = P2^5;	 //右下
  78          sbit KEY_I = P3^2;	 //常0
  79          /****************************************************************************/
  80          //引脚定义
  81          sbit   SID   =  P2^1;	//数据
  82          sbit   SCLK  =  P2^2;	//时钟
  83          /*****************************************************************************/
  84          //定义DS1302时钟接口
  85          sbit clock_clk = P3 ^ 5;//ds1302_clk(时钟线)
  86          sbit clock_dat = P3 ^ 4;//ds1302_dat(数据线)
  87          sbit clock_Rst = P3 ^ 3;//ds1302_Rst(复位线)
  88          /*****************************************************************************/
  89          //定义累加器A中的各位
  90          sbit a0   = ACC ^ 0;
  91          sbit a1   = ACC ^ 1;
  92          sbit a2   = ACC ^ 2;
  93          sbit a3   = ACC ^ 3;
  94          sbit a4   = ACC ^ 4;
  95          sbit a5   = ACC ^ 5;
  96          sbit a6   = ACC ^ 6;
  97          sbit a7   = ACC ^ 7;
  98          /****************************************************************************/
  99          //定义全局变量
 100          unsigned char yy,mo,dd,xq,hh,mm,ss;//定义时间映射全局变量(专用寄存器)
 101          bit w = 0; //调时标志位
 102          static unsigned char menu = 0;//定义静态小时更新用数据变量
 103          static unsigned char keys = 0;//定义静态小时更新用数据变量
 104          static unsigned char timecount = 0;//定义静态软件计数器变量
 105          /****************************************************************************/
 106          void DelayM(unsigned int a){//延时函数 1MS/次	
 107   1      		unsigned char i;
 108   1      		while( --a != 0){		
 109   2      			for(i = 0; i < 125; i++);  //一个 ; 表示空语句,CPU空转。
 110   2      		}   				   //i 从0加到125,CPU大概就耗时1毫秒
 111   1      }
 112          /****************************************************************************/
 113          //函数声明
 114          void lcm_w_word(unsigned char *str) ;  //写字符  例:lcm_w_word("您好!");
 115          void lcm_w_test(bit start,unsigned char ddata);  //(0,指令) (1,数据)
 116          void lcm_w_byte(unsigned char bbyte);  //写一个字节给lcm
 117          void delaynms(unsigned int di);  //延时
C51 COMPILER V6.12  LCM_T                                                                  02/10/2007 00:13:53 PAGE 3   

 118          void lcm_init(void); //lcm初始化
 119          void lcm_clr(void);  //清屏
 120          
 121          void days (viod) {	  //公历节日数据库
 122   1      		
 123   1      		lcm_w_test(0,0x80);
 124   1      		lcm_w_word("[Dis]      [Set]");
 125   1      
 126   1      		lcm_w_test(0,0x98);
 127   1      //												----|----------------|
 128   1      		if ( mo == 0x01 && dd == 0x17 ){ lcm_w_word("三天后是你的生日"); }//
 129   1      		if ( mo == 0x01 && dd == 0x19 ){ lcm_w_word("明天是你的生日!!"); }//
 130   1      
 131   1      		if ( mo == 0x01 && dd == 0x01 ){ lcm_w_word("Happy New Year!!"); }//1月
 132   1      		if ( mo == 0x01 && dd == 0x28 ){ lcm_w_word("  世界麻风日    "); }
 133   1      		
 134   1      		if ( mo == 0x02 && dd == 0x02 ){ lcm_w_word("  世界湿地日    "); }//2月
 135   1      		if ( mo == 0x02 && dd == 0x13 ){ lcm_w_word("  明天情人节了  "); }		
 136   1      		if ( mo == 0x02 && dd == 0x14 ){ lcm_w_word("  今天是情人节  "); }
 137   1      				
 138   1      		if ( mo == 0x03 && dd == 0x01 ){ lcm_w_word("  国际海豹日    "); }//3月		
 139   1      		if ( mo == 0x03 && dd == 0x03 ){ lcm_w_word("  全国爱耳日    "); }		
 140   1      		if ( mo == 0x03 && dd == 0x08 ){ lcm_w_word("   3.8妇女节    "); }		
 141   1      		if ( mo == 0x03 && dd == 0x12 ){ lcm_w_word("    植树节      "); }		
 142   1      		if ( mo == 0x03 && dd == 0x14 ){ lcm_w_word("  国际警察日    "); }		
 143   1      		if ( mo == 0x03 && dd == 0x15 ){ lcm_w_word("  消费者权益日  "); }		
 144   1      		if ( mo == 0x03 && dd == 0x17 ){ lcm_w_word("  国际航海日    "); }		
 145   1      		if ( mo == 0x03 && dd == 0x21 ){ lcm_w_word("  世界森林日    "); }		
 146   1      		if ( mo == 0x03 && dd == 0x22 ){ lcm_w_word("    世界水日    "); }		
 147   1      		if ( mo == 0x03 && dd == 0x23 ){ lcm_w_word("  世界气象日    "); }		
 148   1      		if ( mo == 0x03 && dd == 0x24 ){ lcm_w_word("世界防治结核病日"); }
 149   1      				
 150   1      		if ( mo == 0x04 && dd == 0x01 ){ lcm_w_word("愚人节  小心上当"); }//4		
 151   1      		if ( mo == 0x04 && dd == 0x07 ){ lcm_w_word("  世界卫生日    "); }		
 152   1      		if ( mo == 0x04 && dd == 0x08 ){ lcm_w_word("    复活节      "); }		
 153   1      		if ( mo == 0x04 && dd == 0x13 ){ lcm_w_word("  黑色星期五    "); }
 154   1      				
 155   1      		if ( mo == 0x05 && dd == 0x01 ){ lcm_w_word("  劳动节  放假  "); }//5		
 156   1      		if ( mo == 0x05 && dd == 0x04 ){ lcm_w_word("    青年节      "); }		
 157   1      		if ( mo == 0x05 && dd == 0x08 ){ lcm_w_word("  世界红十字日  "); }		
 158   1      		if ( mo == 0x05 && dd == 0x12 ){ lcm_w_word("  国际护士节    "); }		
 159   1      		if ( mo == 0x05 && dd == 0x05 ){ lcm_w_word("近日注意母亲节  "); }		
 160   1      		if ( mo == 0x05 && dd == 0x15 ){ lcm_w_word("  国际家庭日    "); }
 161   1      		if ( mo == 0x05 && dd == 0x31 ){ lcm_w_word("  世界无烟日    "); }		
 162   1      				
 163   1      		if ( mo == 0x06 && dd == 0x01 ){ lcm_w_word("  国际儿童节    "); }//6
 164   1      		if ( mo == 0x06 && dd == 0x05 ){ lcm_w_word("  世界环境日    "); }		
 165   1      		if ( mo == 0x06 && dd == 0x26 ){ lcm_w_word("  国际禁毒日    "); }		
 166   1      		if ( mo == 0x06 && dd == 0x06 ){ lcm_w_word("  全国爱眼日    "); }		
 167   1      		if ( mo == 0x06 && dd == 0x13 ){ lcm_w_word("近日注意父亲节  "); }
 168   1      		if ( mo == 0x06 && dd == 0x15 ){ lcm_w_word("近日注意父亲节  "); }
 169   1      				
 170   1      		if ( mo == 0x07 && dd == 0x01 ){ lcm_w_word("香港回归记念日  "); }//7
 171   1      		if ( mo == 0x07 && dd == 0x07 ){ lcm_w_word("抗日战争记念日  "); }
 172   1      		if ( mo == 0x07 && dd == 0x11 ){ lcm_w_word("  世界人口日    "); }
 173   1      
 174   1      		if ( mo == 0x08 && dd == 0x01 ){ lcm_w_word("  八一建军节    "); }//8
 175   1      		if ( mo == 0x08 && dd == 0x08 ){ lcm_w_word("  中国男子节    "); }
 176   1      		if ( mo == 0x08 && dd == 0x15 ){ lcm_w_word("抗战胜利记念日  "); }
 177   1      
 178   1      		if ( mo == 0x09 && dd == 0x10 ){ lcm_w_word("  中国教师节    "); }//9
 179   1      		if ( mo == 0x09 && dd == 0x18 ){ lcm_w_word("九·一八事变记念"); }
C51 COMPILER V6.12  LCM_T                                                                  02/10/2007 00:13:53 PAGE 4   

 180   1      		if ( mo == 0x09 && dd == 0x20 ){ lcm_w_word("  国际爱牙日    "); }
 181   1      		if ( mo == 0x09 && dd == 0x27 ){ lcm_w_word("  世界旅游日    "); }
 182   1      
 183   1      		if ( mo == 0x10 && dd == 0x01 ){ lcm_w_word("  中国国庆节    "); }//10
 184   1      		if ( mo == 0x10 && dd == 0x04 ){ lcm_w_word("  世界动物日    "); }
 185   1      		if ( mo == 0x10 && dd == 0x24 ){ lcm_w_word("    联合国日    "); }
 186   1      		if ( mo == 0x10 && dd == 0x12 ){ lcm_w_word("明天国际教师节  "); }
 187   1      		if ( mo == 0x10 && dd == 0x13 ){ lcm_w_word("  国际教师节    "); }
 188   1      
 189   1      		if ( mo == 0x11 && dd == 0x10 ){ lcm_w_word("  世界青年节    "); }//11
 190   1      		if ( mo == 0x11 && dd == 0x17 ){ lcm_w_word("  世界学生节    "); }
 191   1      
 192   1      		if ( mo == 0x12 && dd == 0x01 ){ lcm_w_word("  世界艾滋病日  "); }//12
 193   1      		if ( mo == 0x12 && dd == 0x23 ){ lcm_w_word("  明晚平安夜    "); }
 194   1      		if ( mo == 0x12 && dd == 0x24 ){ lcm_w_word("  今晚平安夜    "); }
 195   1      		if ( mo == 0x12 && dd == 0x25 ){ lcm_w_word("    圣诞快乐    "); }
 196   1      		if ( mo == 0x12 && dd == 0x31 ){ lcm_w_word("    明日新年    "); }
 197   1      
 198   1      		else{ 
 199   2      			if ( hh >= 0x04 && hh <  0x06 ){ lcm_w_word("★★__▲▲__凌晨"); }
 200   2      			if ( hh >= 0x06 && hh <  0x08 ){ lcm_w_word("☆○__▲△__早晨"); }
 201   2      			if ( hh >= 0x08 && hh <  0x12 ){ lcm_w_word("__●__▲▲__上午"); }
 202   2      			if ( hh == 0x12)               { lcm_w_word("____▲●▲__中午"); }
 203   2      			if ( hh >= 0x13 && hh <  0x18 ){ lcm_w_word("__▲▲__●__下午"); }
 204   2      			if ( hh >= 0x18 && hh <  0x22 ){ lcm_w_word("△▲__●☆__晚上"); }
 205   2      			if ( hh >= 0x22 && hh <= 0x23 ){ lcm_w_word("△▲__★☆__夜里"); }
 206   2      			if ( hh >= 0x00 && hh <  0x04 ){ lcm_w_word("__★▲▲★__深夜"); }
 207   2      			}
 208   1      
 209   1      
 210   1      
 211   1      }
 212          /****************************************************************************/
 213          //初始化LCM
 214          void lcm_init(void)	 {
 215   1      	delaynms(100); //启动等待,等LCM讲入工作状态
 216   1        	lcm_w_test(0,0x30);  //8 位介面,基本指令集
 217   1        	lcm_w_test(0,0x0c);  //显示打开,光标关,反白关
 218   1        	lcm_w_test(0,0x01);  //清屏,将DDRAM的地址计数器归零 
 219   1      	delaynms(100); //启动等待,等LCM讲入工作状态
 220   1       
 221   1      }
 222          /******************************************************************************/
 223          //写指令或数据  (0,指令) (1,数据)
 224          void lcm_w_test(bit start, unsigned char ddata) {
 225   1      	unsigned char start_data,Hdata,Ldata;
 226   1        	if(start==0) 
 227   1      		start_data=0xf8;	 //0:写指令
 228   1          else    
 229   1          	start_data=0xfa;  //1:写数据
 230   1        
 231   1        	Hdata=ddata&0xf0;		  //取高四位
 232   1        	Ldata=(ddata<<4)&0xf0;  //取低四位
 233   1        	lcm_w_byte(start_data);	  //发送起始信号
 234   1        	delaynms(5); //延时是必须的
 235   1        	lcm_w_byte(Hdata);	      //发送高四位
 236   1        	delaynms(5);  //延时是必须的
 237   1        	lcm_w_byte(Ldata);		  //发送低四位
 238   1        	delaynms(5);  //延时是必须的
 239   1      }
 240          
 241          /******************************************************************************/
C51 COMPILER V6.12  LCM_T                                                                  02/10/2007 00:13:53 PAGE 5   

 242          //发送一个字节(底层函数)
 243          void lcm_w_byte(unsigned char bbyte) {

⌨️ 快捷键说明

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