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

📄 beifen

📁 基于LPC2132和图形液晶128*64(型号为MGL(S)-12864T)的控制显示系统。可以显示时间
💻
字号:


/*************************
*	文件名:	BEEPCON.C
*	功能:	蜂鸣器控制。对蜂鸣器B1进行控制,采用软件延时方法
*			使用I/O口直接控制,采用灌电流的方式
*	说明:	将跳线器JP9短接,JP4断开
****************************************************/

//#include	"Startup.s"
#include	<includes.h>
#include <LPC21xx.H>                            /* LPC21xx definitions */
#define		BEEPCON		0x80000000			/*P0.7 引脚控制B1,低电平蜂鸣*/
#define		safe		0x00000800		/*p0.11绿灯亮 低电平亮*/
#define		danger		0x00001000		 /*p0.12红灯亮*/
#define     LCD_BL		0x00800000		/*P0.23背光高电平亮 */
#define  GUI_LCM_XMAX		128							/* 定义液晶x轴的点数 */
#define  GUI_LCM_YMAX		64							/* 定义液晶y轴的点数 */

//IODIR1=IODIR1|0xFFFF0000;	   使用P1 口时用这种办法改变输入输出方向
//IOSET1=0xB1AA0000	;

 /* 硬件连接: D0--D7  <===>  P1.16--P1.23   PINSEL2 =0x0008H  P1:25:16 用作GPIO 管脚。
*         	LCD_DIR <--->  P0.22
*			LCD_BL   <-->  P0.23
*           /WR     <===>  P0.27
*           /RD     <===>  P0.28
*           /CE     <===>  P0.29

*		    C/D     <===>  P1.27/TDO    跳线
*           /RST    <===>  P1.24*/

#define	 LCD_WR				0x08000000
#define	 LCD_RD				0x10000000
#define	 LCD_CE				0x20000000 
#define  LCD_CD		   		0x08000000
#define  LCD_RST			0x01000000
#define  LCD_DIR			0x00400000


/* T6963C 命令定义 */
#define  LCD_CUR_POS		0x21						/* 光标位置设置(只有设置到有效显示地址并打开显示时才看到) */
#define  LCD_CGR_POS		0x22						/* CGRAM偏置地址设置(可以增加自已的符号) */
#define  LCD_ADR_POS		0x24						/* 地址指针位置(设置读写操作指针) */

#define  LCD_TXT_STP		0x40						/* 文本区首址(从此地址开始向屏幕左上角显示字符) */
#define  LCD_TXT_WID		0x41						/* 文本区宽度(设置显示宽度,N/6或N/8,其中N为x轴的点数) */
#define  LCD_GRH_STP		0x42						/* 图形区首址(从此地址开始向屏幕左上角显示点) */
#define  LCD_GRH_WID		0x43						/* 图形区宽度(设置显示宽度,N/6或N/8,其中N为x轴的点数) */

#define  LCD_MOD_OR			0x80						/* 显示方式:逻辑或 */
#define  LCD_MOD_XOR		0x81						/* 显示方式:逻辑异或 */
#define  LCD_MOD_AND		0x82						/* 显示方式:逻辑与 */
#define  LCD_MOD_TCH		0x83						/* 显示方式:文本特征 */

#define  LCD_DIS_SW			0x90						/* 显示开关:D0=1/0,光标闪烁启用/禁用 */
														/* 			D1=1/0,光标显示启用/禁用 */
														/* 			D2=1/0,文本显示启用/禁用(打开后再使用) */
														/* 			D3=1/0,图形显示启用/禁用(打开后再使用) */
														
#define  LCD_CUR_SHP		0xA0						/* 光标形状选择:0xA0-0xA7表示光标占的行数 */

#define  LCD_AUT_WR			0xB0						/* 自动写设置 */
#define  LCD_AUT_RD			0xB1						/* 自动读设置 */
#define  LCD_AUT_OVR		0xB2						/* 自动读/写结束 */

#define  LCD_INC_WR			0xC0						/* 数据一次写,地址加1 */
#define  LCD_INC_RD			0xC1						/* 数据一次读,地址加1 */
#define  LCD_DEC_WR			0xC2						/* 数据一次写,地址减1 */
#define  LCD_DEC_RD			0xC3						/* 数据一次读,地址减1 */
#define  LCD_NOC_WR			0xC4						/* 数据一次写,地址不变 */
#define  LCD_NOC_RD			0xC5						/* 数据一次读,地址不变 */

#define  LCD_SCN_RD			0xE0						/* 屏读 */

#define  LCD_SCN_CP			0xE8						/* 屏拷贝 */

#define  LCD_BIT_OP			0xF0						/* 位操作:D0-D2--定义D0-D7位,D3--1为置位,0为清除 */
uint8 gui_disp_buf[GUI_LCM_YMAX][GUI_LCM_XMAX/8];

/************************************************
*	名称:DelayNS()
*	功能:长软件延时
*	入口参数:dly				延时参数,值越大,延时越长
*	出口参数:无
***************************************************/
extern void DelayNs(uint32 dly);
extern void LCD_WriteData(uint8 lcddat);
extern void  LCD_FillAll(uint8 dat);
extern uint8 LCD_ReadData();
extern void  LCD_UpdatePoint(uint32 x, uint32 y);
extern uint8  LCD_WriteTCommand2(uint8 command, uint8 dat1);

extern void  LCD_Initialize(void);

extern uint8 LCD_ReadState(void);
extern uint8  LCD_WriteTCommand3(uint8 command, uint8 dat1, uint8 dat2);
extern uint8  LCD_WriteTCommand2(uint8 command, uint8 dat1) ;
extern uint8  LCD_WriteTCommand1(uint8 command);
extern uint8  LCD_RTCommand1(uint8 command);
extern uint8  LCD_WriteTData1(uint8 dat);

/***********************************
*名称:	main()
*
********************************************/

	

int	main(void)
{		
   uint32 i;
 uint8 j;
 uint32 addr1;
 uint8 k;
   // uint8 temp;
	uint8 dat;

	uint8  Matrix001[36]=
{
/*------------------------------------------------------------------------------
;  源文件 / 文字: 戴

;  宽×高(像素) : 18×16
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x08,0x40,0x7F,0x50,
  0x08,0x48,0xFF,0xFC,0x29,0x40,0x3F,0x40,
  0x29,0x48,0x3F,0x48,0x14,0x50,0x7F,0x20,
  0x14,0x20,0xFF,0x54,0x22,0x8C,0x41,0x04,
  0x00,0x00,0x00,0x00
};
   DelayNs(6000);  //延时为LCD作准备

   /*引脚定义*/
	PINSEL0=0x00000005;
	PINSEL1=0x00000000;				//设置引脚连接GPIO
    PINSEL2=PINSEL2&0xFFFFFF03;			    //P1.16-P1.31均设置为GPIO

	IODIR0=	LCD_WR|LCD_RD|LCD_CE|BEEPCON|safe|danger|LCD_DIR|LCD_BL ;
	IODIR1=IODIR1|0xFFFF0000;		//P1口暂时定义全为 输出 使用时记得修改
	IOCLR1|=LCD_RST;				//重置LCD
	IOSET0=IOSET0|BEEPCON;			//禁止 蜂鸣
	IOCLR0=IOCLR0|safe;
	IOCLR0|=danger;
	DelayNs(1000);
	IOSET1|=LCD_RST;
		
/*for(i=0;i<2;i++)
	{
	IOSET0|=safe;
	IOSET0|=danger;
	DelayNs(4000);
    IOCLR0|=safe;
	DelayNs(4000);
	IOCLR0|=danger;
	DelayNs(4000);
	}
	IOCLR0=IOCLR0|LCD_BL;		
	DelayNs(4000); 	*/
	

	// for(i=0;i<255;i++)
   //{  LCD_WriteData(0xFF);									// 写数据
  // }
			
/***************2**********/	 
	
	/*初始化LCD*/
	LCD_Initialize();
	LCD_FillAll(0x00); 
  //LCD_WriteTCommand3(LCD_TXT_STP, 0x00, 0x00);			// 设置文本方式RAM起始地址

//	LCD_WriteTCommand2(LCD_INC_WR, 0xFF);		
//	DelayNs(1000);
	/**给显示缓冲区加入数据0xF0**/
/*	for(i=0;i<GUI_LCM_YMAX;i++)
		{ for(j=0;j<GUI_LCM_XMAX/8;j++)
			{  gui_disp_buf[i][j] = 0xF0;
			 }
		 } */

//	LCD_FillAll(0xF0);
	IOCLR1=IOCLR1&0xFF00FFFF;
	IOSET0|=safe;
	 IOSET0|=danger;
	 IOCLR0|=LCD_DIR;
	/*temp=LCD_ReadState();
	if( (temp&0x03)==0x03 )
		 {IOSET0=IOSET0|LCD_BL;	}  */
//LCD_WriteTCommand2(LCD_NOC_WR, 0xFA);
//LCD_WriteTCommand2(LCD_INC_WR, 0xFF);
//if(LCD_RTCommand1(LCD_NOC_RD)==0xFA)IOCLR0|=BEEPCON;

//LCD_WriteTCommand2(LCD_INC_WR, 0xFF);



 LCD_WriteTCommand3(LCD_ADR_POS, 0x00, 0x00);			// 置地址指针
   DelayNs(1);
   //LCD_WriteTCommand1(LCD_AUT_WR);						// 自动写
   DelayNs(1);
   	   i=0;
   dat=Matrix001[i] ;
   	 for(k=0;k<18;k++)
	 	{for(j=0;j<2;j++)
	 			{addr1=k*16+j;
		LCD_WriteTCommand3(LCD_ADR_POS, addr1&0xFF, addr1>>8);	// 置地址指针	
     LCD_WriteTCommand2(LCD_NOC_WR, dat);
	 dat=Matrix001[i] ;
	 i++;}
	 }								// 写数据
   
   DelayNs(1);
  // LCD_WriteTCommand1(LCD_AUT_OVR);						// 自动写结束
   DelayNs(1);
   LCD_WriteTCommand3(LCD_ADR_POS,0x00,0x00);			// 重置地址指针
   //gui_disp_buf[GUI_LCM_YMAX][GUI_LCM_XMAX/8];
 





	//IOSET0=IOSET0|LCD_BL;	
  //IOCLR0|=BEEPCON;
	//while(1); 
return(1);	}
 


























 /***********此注释程序为测试IO口程序*****************
	IODIR0=0x00801800;					//设置I/O为输出
//IODIR0=LCD_BL;

	 IOCLR0=LCD_BL;
		DelayNs(10000);
	
for(i=0;i<5;i++) 
	  {	
	
	
		IOCLR0=safe;				//绿灯亮
		DelayNs(3000);
		IOSET0=safe ;
		DelayNs(3000);
		IOCLR0=safe;				//绿灯亮
		DelayNs(3000);
	IOCLR0=danger;				//	红灯亮
	
		DelayNs(1000);
//IOSET0=BEEPCON;				//BEEPCON=1
      //DelayNs(10000);  
	//IOCLR0=BEEPCON;				//BEEPCON=0
	//	DelayNs(10000); 
		IOSET0=safe ;
	  DelayNs(3000);
		  IOSET0=danger;
		DelayNs(3000);
	IOSET0=LCD_BL;
	DelayNs(10000);
		}
	return(0); ******************/

⌨️ 快捷键说明

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