📄 shiyan72.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 + -