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

📄 可调时钟lcd1602.txt

📁 含Proteus仿真图的利用单片机控制的液晶显示程序
💻 TXT
字号:
/*******************************
本程序功能:由液晶显示的可调时钟。
不足之处:开启时,时分位自动加一

    Author:        chang ming
    Create Time:    2009/2/27
     
*******************************/

#include <reg51.h>
#include <intrins.h>

typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef bit BOOL ; 

unsigned char g,shi=20,fen=56,miao=50;

sbit rs	= P3^7;		//
sbit rw = P3^6;
sbit ep = P3^5;

unsigned char dis1[] = {"THE TIME IS:"};
unsigned char dis2[] = {"::::::::"};

delay(BYTE ms)
{							// 延时子程序
	BYTE i;
	while(ms--)
	{
		for(i = 0; i< 250; i++)
		{
			_nop_();
			_nop_();
			_nop_();
			_nop_();
		}
	}
}

BOOL lcd_bz()
{							// 测试LCD忙碌状态
	BOOL result;
	rs = 0;
	rw = 1;
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	result = (BOOL)(P1 & 0x80);
	ep = 0;
	return result;	
}

lcd_wcmd(BYTE cmd)
{							// 写入指令数据到LCD
	while(lcd_bz());
	rs = 0;
	rw = 0;
	ep = 0;
	_nop_();
	_nop_();	
	P1 = cmd;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 0;		
}

lcd_pos(BYTE pos)
{							//设定显示位置
	lcd_wcmd(pos | 0x80);
}

lcd_wdat(BYTE dat)	
{							//写入字符显示数据到LCD
	while(lcd_bz());
	rs = 1;
	rw = 0;
	ep = 0;
	P1 = dat;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 0;	
}

lcd_init()
{							//LCD初始化设定
	lcd_wcmd(0x38);			//
	delay(1);
	lcd_wcmd(0x0c);			//
	delay(1);
	lcd_wcmd(0x06);			//
	delay(1);
	lcd_wcmd(0x01);			//清除LCD的显示内容
	delay(1);
}

main()
{   
	BYTE i;

	P3=0xff;
    EA=1;
    EX0=1;
    EX1=1;			
    ET0=1;   //使用定时器0方式1中断
    TMOD=1;
    TCON=0X1f;
    TH0=(65535-10000)/256;
    TL0=(65535-10000)%256;
    
	lcd_init();				// 初始化LCD			
	delay(10);
	lcd_pos(0);				// 设置显示位置为第一行的第5个字符
	i = 0;
	while(dis1[i] != '\0')
	{						// 显示字符hificat.com
		lcd_wdat(dis1[i]);
		i++;
	}
	
	while(1)
    {   
	 dis2[7]=miao%10+'0';
     dis2[6]=miao/10+'0';
     dis2[4]=fen%10+'0';
     dis2[3]=fen/10+'0';
     dis2[1]=shi%10+'0';
     dis2[0]=shi/10+'0';
    lcd_pos(0x44);			// 设置显示位置为第二行第二个字符
	i = 0;
	while(dis2[i] != '\0')
	{
		lcd_wdat(dis2[i]);	// 显示字符" 0571-85956028 
		i++;
	}   }	
}

void intINT0() interrupt 0
{      fen++;
     if(fen==60)
        { fen=0;
          shi++;
      if(shi==24)
          shi=0;
        }
}

void intT0() interrupt 1
{ 
  g++;
  if(g==100)
   {
    g=0;
    miao++;
    if(miao==60)
     {  miao=0;
        fen++;
      if(fen==60)
        { fen=0;
          shi++;        
       if(shi==24)
          shi=0;
        }
     }
   } 
    TH0=(65535-10000)/256;
    TL0=(65535-10000)%256;
}

 void intINT1() interrupt 2
{     shi++;
   if(shi==24)
       shi=0;
}

⌨️ 快捷键说明

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