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

📄 text7.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 LCDD=P0^5;
sbit LCDC=P0^4;

sbit YANZ1=P1^6;
sbit YANZ2=P1^7;

uchar code byte[20]="gnhjuju";
uchar code byte1[20]="2008";
uchar code byte2[]="ST";
uchar tr_flag=1;


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);
void uart_send(uchar *dat);
uchar uart_read();
//void Light1();
//void Light2();



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;//双缓冲禁止,组合中断禁止,停止位结束产生Tx中断.采用查询方式发送和接收
  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 Light1()
{
  uchar i;
  for(i=0;i<20;i++)
  {
		YANZ1=1;  	
  	dally_timer1(100);
  	YANZ1=0;  	
		dally_timer1(100);
	}

}

void Light2()
{
  uchar i;
  for(i=0;i<20;i++)
  {
		YANZ2=1;
  	dally_timer1(100);  
  	YANZ2=0;
		dally_timer1(100);
	}

}*/

uchar uart_read()
{
	uchar dat1;
  
	while(RI==0);
	RI=0;
  dat1=SBUF;
  
	return dat1;
}


void main()
{
  uint i;
  uchar dat11[16]="4326788600007";
  P0M1=0x00;
  P0M2=0x00;
  P1M1=0x00;
  P1M2=0x00;
  P2M1=0x00;
  P2M2=0x00;

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

  SP=0x7F;
 	TMOD=0x20;//T1工作方式2
  TAMOD=0x00;
	TL1=0x6C;//装入T1初值
  TH1=0x6C;
 
  LCDInit();
	uart_init();
	//IEN0=0x90;
  //Light1();
	lcd12232_zfc(0,0,dat11);
	while(1)
	{
   
    for(i=0;i<16;i++)
    {
		  dat11[i]=uart_read(); 
	  }	
    clear_lcd();
		lcd12232_zfc(0,0,dat11);
    dally_timer1(50);
  
	   uart_send(byte);
 
  }
}

⌨️ 快捷键说明

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