📄 shiyan73.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();
void int1();
unsigned char LcdStr[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
int LcdBusy = 0;
int delaya = 0; //延时变量
int delayb = 0;
int delayc = 0;
int m=100;
int n=0;
void main(void)
{
set_imask_ccr(1);
IO.PMR1.BIT.IRQ1=1; //P14为irq1输入
IEGR1.BIT.IEG1=1; //irq1上升沿触发
IRR1.BIT.IRRI1=0; //清irq1中断标志
IENR1.BIT.IEN1=1; //允许irq1中断
IO.PCR8 = 0x0ff;
IIC.ICCR.BIT.ICE = 0;
IO.PMR5.BYTE = 0; //选择端口5为通用IO
clear();
set_imask_ccr(0);
while(1)
{
for(delaya=0;delaya<1000;delaya++);
delaya=0;
if (n==1)
{
LCDinit();
LCDupdate();
}
n=0;
}
}
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;delaya++);
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();
LCD_Busy();
RS = 1;
if (m==26)m=0;
IO.PCR5 = 0x0ff;
IO.PDR5.BYTE = LcdStr[m];
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();
}
void int1()
{
IRR1.BIT.IRRI1=0;
m++;
if(m==101)m=0;
clear();
n=1;
n=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -