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

📄 text1.c

📁 LPC9XX系列的串口通讯程序
💻 C
字号:
#include <reg938.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
#define _Nop()  _nop_()
//定义变量

sbit LCDC=P1^0;
sbit LCDD=P1^1;


uchar code byte1[20]="2008";
uchar code byte2[]="ST";
uchar dat11[]="888888888888888";
uchar temp=0;


void dally_timer1(uint data ms);
void dally_timer2(uint data us);
void LCD_WRITE1(uchar data TMP1);
void LCD_WRITE(uchar data LCD_COMMAND,uchar data LCD_TMP);
void LCDInit(void);
void lcd12232_zfc(uchar row,uchar tier,uchar *puts);
void clear_lcd(void);
void uart_init(void);

uchar code AC_TABLE[]={ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,      //第一行汉字位置
												0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,      //第二行汉字位置
								   			0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,      //第三行汉字位置
												0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f};	    //第四行汉字位置

uchar code lcd_tab[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
										    0x41,0x42,0x43,0x44,0x45,0x46};


void dally_timer1(uint data ms)
{
 	uint i;
 	TR1=1;//启动定时器T1
  for(i=ms*25;i>0;i--)
  {
		while(TF1==0)
    {
      _Nop();
    };
    TF1=0;//清除T1溢出标志TF1
  }
  TR1=0;//关闭定时器T1
}

void dally_timer2(uint data us)
{
  do
	{
		us--;
	}
	while (us > 0);
}


void LCD_WRITE1(uchar data TMP1)
{
	uchar data m,TMP;
	for(m=8;m>0;m--)
	{
	   LCDC=0; 
		TMP=(TMP1&(0x01<<(m-1)))>>(m-1);//取数据的第7-0位
		if(TMP==0)
		{
			LCDD=0;	          //?i??0,lcd???0
		}
		if(TMP==1)
		{
			LCDD=1;              //?i??1,lcd???1	
		}	
		               //lcd?????????
		dally_timer2(1);
		LCDC=1;			
	}
}

void LCD_WRITE(uchar data LCD_COMMAND,uchar data LCD_TMP)       
{
  uchar data TMP1;
  TMP1=LCD_COMMAND;                  //??lcd??
  LCD_WRITE1(TMP1);
  TMP1=LCD_TMP&0xF0;                //??lcd??????4?
  LCD_WRITE1(TMP1);
  TMP1=(LCD_TMP&0x0F)<<4;           //??lcd??????4?
  LCD_WRITE1(TMP1);
}

void LCDInit(void)
{
	LCD_WRITE(0xf8,0x01);
	dally_timer1(40);
	LCD_WRITE(0xf8,0x30);
	dally_timer1(40);
	LCD_WRITE(0xf8,0x02);
	dally_timer1(40);
	LCD_WRITE(0xf8,0x04);
	dally_timer1(40);
	LCD_WRITE(0xf8,0x0c);
	dally_timer1(40);
	LCD_WRITE(0xf8,0x01);
	dally_timer1(40);
	LCD_WRITE(0xf8,0x80);
	dally_timer1(40);
}

void lcd12232_zfc(uchar row,uchar tier,uchar *puts)
{
	uchar data tmp;
	tmp = AC_TABLE[8*row+tier];
	LCD_WRITE(0xf8,tmp);
	while(*puts != '\0')									//???????????
	{
		LCD_WRITE(0xfa,*puts);							//
		puts++;
	}
}



void clear_lcd(void)
{
	LCD_WRITE(0xf8,0x01);
	dally_timer1(40);
}

void uart_init(void)
{
	SCON=0x50;//模式1,使能串行接受	
	SSTAT=0x60;//双缓冲禁止,组合中断使能,采用查询方式发送和接收
  BRGCON=0;  
	BRGR0=0xF0;//
	BRGR1=0x02;//
	BRGCON=0x03;//使能波特率发生器
}

void uart_send(uchar *dat)
{
	uint j=0;
	
	while(dat[j] !='\0')	// send string
	{
		SBUF=dat[j];				// start sending one byte
		while (!TI);				// wait until sent
		TI=0;	
    j++;
  
	}

}



void intermit ()interrupt 4
{ 
  if(temp>15)
  {
		temp=0;
  }
  dat11[temp]=SBUF;	
  temp++;  
  RI=0;
}


void main()
{
  uchar byte[27]="";
  P0M1=0x00;
  P0M2=0x00;
  P1M1=0x00;
  P1M2=0xC0;
  P2M1=0x00;
  P2M2=0x00;

  P0=0xf8;
  P1=0x3f;
  P2=0xff;

  SP=0x7F;

 	TMOD=0x20;//T1工作方式2
  TAMOD=0x00;
	TL1=0x6C;//装入T1初值
  TH1=0x6C;
  //uart_init(); 
  LCDInit();
 
  //IEN0=0x90;
	while(1)
	{    
    lcd12232_zfc(0,0,dat11);
		//uart_send(byte);
    dally_timer1(500);
		dally_timer1(500);
		dally_timer1(500);
		dally_timer1(500);
  }
}

⌨️ 快捷键说明

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