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

📄 main.c

📁 LPC2104/5/6的嵌入式程序及其仿真文件,适合入门指导
💻 C
字号:

#include  "config.h"

#define rs (1<<8)
#define rw (1<<9)
#define en (1<<10)
#define busy (1<<7)

#define  TASK_STK_SIZE                  64
OS_STK        TaskStartStk[TASK_STK_SIZE];

void  TaskStart(void *data);
uint8 txt[]={"helloworld"};
uint8 BCD[6];
uint32 t=1000;
void delay(uint32 t)
{ while(t--);
}
/****************************************************************************
* 名称:ChkBusy()
* 功能:检查总线是否忙
****************************************************************************/
void ChkBusy()
{
	//PINSEL0=0xffc00000;
	IODIR=0x700;
	while(1)
	{
		IOCLR=rs;
		IOSET=rw;
		IOSET=en;
		if(!(IOPIN & busy))break;
		IOCLR=en;
	}
	IODIR=0x7ff;
}
/****************************************************************************
* 名称:LCDCls()
* 功能:LCD清屏
****************************************************************************/
void LCDCls()
    {ChkBusy();
     IOCLR=rs;		//全部清零
     IOCLR=rw;
     IOCLR=0xff;	
     IOSET=0x00000001;
     IOSET=en;
     IOCLR=en;
     }
/****************************************************************************
* 名称:LCDWraction()
* 功能:写指令到LCD
****************************************************************************/
void LCDcmd(uint8 cmd)
    {ChkBusy();
     IOCLR=rs;		//全部清零
     IOCLR=rw;
     IOCLR=0xff;	
     IOSET=cmd;
     IOSET=en;
     //delay(1000000);
     IOCLR=en;
    // delay(1000000);
     }
/****************************************************************************
* 名称:LCDsetxy()
* 功能:LCD光标定位到xy处
****************************************************************************/
void LCDsetxy(uint8 x,uint8 y)
{ uint8 temp;
  if(x==1)
  {temp=0x80+y-1;
   LCDcmd(temp);
   }
   else 
   {temp=0xc0+y-1;
    LCDcmd(temp);
    } 
}
/****************************************************************************
* 名称:LCDgohome()
* 功能:LCD光标归位
****************************************************************************/
void LCDgohome(void)
{LCDcmd(0x02);
}

/****************************************************************************
* 名称:WrOp()
* 功能:写函数
****************************************************************************/
void LCDWrdata(uint8 dat)
{
	
	ChkBusy();
	IOSET=rs;		//全部清零
	IOCLR=rw;
	IOCLR=0xff;		//先清零
	IOSET=dat;		//再送数
	IOSET=en;
	IOCLR=en;
}

/****************************************************************************
* 名称:LCDinit()
* 功能:初始化LCD
****************************************************************************/
void LCDinit()
{LCDcmd(0x38);/*8位数据,2行显示*/
// LCDcmd(0x08);/*显示关闭*/
// LCDcmd(0x01);/*清屏*/ 
    /*清屏和光标归位需要较长的时间*/
LCDcmd(0x06);/*写入数据后光标右移*/
LCDcmd(0x0c);/*显示开,不显示光标*/
// LCDCls();
 }

/****************************************************************************
* 名称:DisText()
* 功能:显示文本函数
****************************************************************************/

void DisplayText(uint8 x,uint8 y,uint8 *p)
{
	LCDsetxy(x,y);
	while(*p !='\0')
	LCDWrdata(*(p++));
}
void ShowInt(uint8 x,uint8 y,uint16 num)			//在addr处显示数字num
{//将num转化成五个BCD码存放在全局数组BCD[5]中
	uint8 i;
	for(i=5;i>0;i--)       //将NUM数据转化成ASCII码,如521会转化为00521
	{
       	  BCD[i-1]=(uint8)(num%10+0x30);     //取出最低位
       	  num/=10;                           //去掉最低位
    }
    i=0;
	while(BCD[i] ==0x30 && i<4) BCD[i++]=' ';    //NUM转换成数组存放,但还没有加上小数点
	BCD[5]='\0';
	DisplayText(x,y,BCD);
}
/****************************************************************************
* 名称:main()
* 功能:显示文本
****************************************************************************/

 int main (void)
{   PINSEL0=0xffc00000;
    OSInit();

    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 3);
    OSStart();
    return 0;
}
/****************************************************************************
* 名称:TaskStart()
* 功能:任务
****************************************************************************/

void  TaskStart(void *pdata)
{   pdata=pdata;
	TargetInit();
    //LCDWrdata(0x0c);
    LCDinit();
	IODIR=0x7ff;		//设置为输出
	IOCLR=0x7ff;
	//IOSET=0x7ff;
	//LCDcmd(0x7f);
	//IOSET=0x7ff;
	//LCDsetxy(1,1);
	DisplayText(2,15,txt);
	ShowInt(1,1,t);
	OSTaskDel(3);
	while(1);
	
}

⌨️ 快捷键说明

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