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

📄 shiyan72.c

📁 本程序用于把串口助手所写内容通过pc发送给单片机
💻 C
字号:
/***********************************************************************/
/*                                                                     */
/*  FILE        :LcdTest.c                                             */
/*  DATE        :Mon, Sep 06, 2004                                     */
/*  DESCRIPTION :Main Program                                          */
/*  CPU TYPE    :H8/3664F                                              */
/*                                                                     */
/*  This file is generated by Hitachi Project Generator (Ver.2.1).     */
/*                                                                     */
/***********************************************************************/
                  

#include <header3664.h>
#include <machine.h>

//端口5的P50--P57和LCD的DB0--DB7连接,端口8的P80,P81和P82连接LCD的E,RS,R/W;

#define E IO.PDR8.BIT.B0
#define RS IO.PDR8.BIT.B1
#define RW IO.PDR8.BIT.B2

void LCDupdate(void);			//LCD显示子程序
void LCDinit(void);				//LCD初始化
void LCD_Busy(void);			//LCD判忙子程序
void LCD_Print(void);			//LCD写程序
void LcdStrUpdate(void);		//LCD显示内容更新
void clear();

unsigned char LcdStr[] = {"How are you!    "};
int LcdBusy = 0;
int delaya = 0;					//延时变量
int delayb = 0;
int delayc = 0;

unsigned char RTD[100];
unsigned char counter;
long int m=0;

void main(void)
{
	unsigned char *ptr;
	IO.PCR8 = 0x0ff;
	IIC.ICCR.BIT.ICE = 0;		//选择端口5为通用IO
	IO.PMR5.BYTE = 0;

//	unsigned char *ptr;
	set_imask_ccr(1); /*禁止外部中断*/
	//串口初始化, 设置串行通信模式
	SCI3.SMR.BYTE=0x00; /*异步,8位,无校验,1停止位, n=0,16MHz*/
	SCI3.BRR= 51; /*波特率为9600bps*/
	IO.PMR1.BIT.TXD=1; /*P22作为TXD管脚*/
	SCI3.SCR3.BYTE=0x30; /*发送\接收允许,P21作为RXD管脚*/
	//查询方式发送ptr = &STD[0]; /*取字符串首地址*/
	ptr=RTD;

//	for(m=0;m<1000;m++)
//	{
//		while(SCI3.SSR.BIT.RDRF != 1)
//		{
//		;
//		}
	
	LCDinit();
	clear();
	while(1)
	{
	while (SCI3.RDR!=0x0D)
	{
	if (SCI3.RDR!=0x0D)
	{

		{*ptr=SCI3.RDR;
		ptr++;}
			while(SCI3.SSR.BIT.RDRF != 1)
		{
		;
		}
	}
	}
//	}
	LCDupdate();
	}
}

void abort(void)
{
	
}
/*--------------------------------------------------------------------------

Function:					void LCD_Busy(void)
Purpose:					判断LCD是否可写	

---------------------------------------------------------------------------*/

void LCD_Busy(void)
{
	RS = 0;
	RW = 1;
	
	IO.PCR5 = 0;				//选择端口5为输入端口
	E = 1;
	LcdBusy = IO.PDR5.BIT.B7;
	E = 0;

	for(;LcdBusy == 1;)
	{
		IO.PCR5 = 0;
		E = 1;
		LcdBusy = IO.PDR5.BIT.B7;
		E = 0;
	}
	return;
}

/*--------------------------------------------------------------------------

Function:					void LCD_Print(void)
Purpose:					LCD写程序	

---------------------------------------------------------------------------*/

void LCD_Print(void)
{
	delaya = 0;
	RW = 0;
	E = 1;
	E = 0;
	for(delaya = 0;delaya++<1000;);
	return;
}

/*--------------------------------------------------------------------------

Function:					void LCDinit(void)
Purpose:					初始化LCD,准备接收输入	

---------------------------------------------------------------------------*/

void LCDinit(void)
{
	int i = 0;
		
	set_imask_ccr(1);
	RS = 0;
	RW = 0;
	
	IO.PCR5 = 0x0ff;				//选择端口5为输出管脚
	IO.PDR5.BYTE = 0x30;

	for(i = 3;i > 0;i--)
	{
		E = 1;
		E = 0;
		for(delayb = 0;delayb++<8000;);
	}

	IO.PDR5.BYTE = 0x38;
	LCD_Print();
	
	IO.PDR5.BYTE = 0x01;
	LCD_Print();

	IO.PDR5.BYTE = 0x06;
	LCD_Print();

	IO.PDR5.BYTE = 0x0f;
	LCD_Print();
	set_imask_ccr(0);
	return;
}

/*--------------------------------------------------------------------------

Function:					void LCDupdate(void)
Purpose:					使LCD显示相应内容	

---------------------------------------------------------------------------*/

void LCDupdate(void)
{
	int i = 0;
	set_imask_ccr(1);
	RS = 0;
	IO.PCR5 = 0x0ff;
	IO.PDR5.BYTE = 0x01;
	LCD_Print();

	for(i = 1;i < 16; i++)
	{
		LCD_Busy();
		
		RS = 1;
		
		IO.PCR5 = 0x0ff;
		IO.PDR5.BYTE = RTD[i];
		LCD_Print();

/*		if(i == 7)
		{
			for(delayc = 0;delayc++ <4000;);
			RS = 0;
			IO.PDR5.BYTE = 0x0c0;
			LCD_Print();
		}*/
	}
	set_imask_ccr(0);
	return;
}
void clear()
{
	int i = 0;
	set_imask_ccr(1);
	RS = 0;
	IO.PCR5 = 0x0ff;
	IO.PDR5.BYTE = 0x01;
	LCD_Print();
	set_imask_ccr(0);
}

⌨️ 快捷键说明

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