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

📄 x5045.c

📁 使用51系列单片机(AT89S52)控制LCD(12864),全菜单化操作控制初始时间输入
💻 C
字号:
/*********************************************************************************************************                  
*                                     		x5045读写控制
*                                       	QZhao,2007
*                                       	All Rights Reserved  
* File : x5045.c
* By   : QZhao
* Contact : zq1987731@163.com
*********************************************************************************************************/

/*★★★可调用函数:R5045(地址)->读EEPROM地址内容	W5045(地址,内容)->将内容送入EEPROM指定地址*/

/*********************************************************************************************************   
*               
*                                     		写一字节
*
*********************************************************************************************************/

	static void write_byte(uchar mdata)
	{
   		uchar i;
   		SCK=0;
   		NOP
   		for(i=0;i<8;i++)
		{
			W_8255(mdata,2);
			SCK=1;
			mdata>>=1;
			SCK=0;		
		}
	}

/*********************************************************************************************************   
*               
*                                     		读一字节
*
*********************************************************************************************************/

	static uchar read_byte(void)
	{
	     uchar i,result;
	     result=0;
	     for(i=0;i<8;i++)
	     {
	        SCK=1;
	        result=result<<1;
	      	if(R_PC(6)) result|=0X01;
	        SCK=0;
	        NOP
	     }
	     return(result);
	}

/*********************************************************************************************************   
*               
*                                     		清看门狗
*			人口参数:无
*			返回值:无
*			功能:清除看门狗计数
*
*********************************************************************************************************/

	void CLR_WCHDOG(void)
	{
		CLR_CS_5045
		NOP
		SETB_CS_5045
	}

/*********************************************************************************************************   
*               
*                                     		写状态寄存器
*
*********************************************************************************************************/

	void wreg_5045(uchar mcode)
	{
	    CLR_CS_5045
	    write_byte(WREN);
	    SETB_CS_5045
	    NOP
	    CLR_CS_5045
	    write_byte(WRSR);
	    write_byte(mcode);
	    NOP
	    SETB_CS_5045
	    delayms(10);
	}

/*********************************************************************************************************   
*               
*                                     		读EEPROM
*			人口参数:R5045(地址)
*			返回值:读出的数据
*			功能:在EEPROM指定地址读出数据
*
*********************************************************************************************************/

	uchar R5045(uint address)
	{
	    uchar result;
	    CLR_CS_5045
	    NOP
	    write_byte((char)(address>255 ? (0x08|READ): READ)); //是否翻页
	    write_byte((char)(address & 0x00ff));
	    result=read_byte();
	    NOP
	    SETB_CS_5045
	    return(result);
	    delayms(10);                  //此处延时根据实际情况,如果不延时,可能会不正常
	}

/*********************************************************************************************************   
*               
*                                     		写EEPROM
*			人口参数:W5045(地址,数据)
*			返回值:无
*			功能:在X5045的EEPROM指定地址内写入指定数据
*
*********************************************************************************************************/

	void W5045(uint address,uchar udata)
	{
	   	CLR_CS_5045
	   	write_byte(WREN);
	   	SETB_CS_5045
	   	NOP
	   	CLR_CS_5045
	   	write_byte((uchar)(address>255 ? (0x08|WRITE): WRITE));
	   	write_byte((uchar)(address & 0x00ff));
	   	write_byte(udata);
	   	NOP
	   	SETB_CS_5045
	   	delayms(10);                //此处延时根据实际情况,如果不延时,可能会不正常
	}

⌨️ 快捷键说明

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