?? ledctrl.c
字號(hào):
/***********************************************************************/
/* */
/* 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>
#include <string.h>
//端口5的P50--P57和LCD的DB0--DB7連接,端口1的P10,P11和P12連接LCD的E,RS,R/W;
#define E IO.PDR1.BIT.B0
#define RS IO.PDR1.BIT.B1
#define RW IO.PDR1.BIT.B2
void LCDupdate(void); //LCD顯示子程序
void LCDinit(void); //LCD初始化
void LCD_Busy(void); //LCD判忙子程序
void LCD_Print(void); //LCD寫(xiě)程序
void LcdStrUpdate(void); //LCD顯示內(nèi)容更新
extern unsigned char LcdStr[32];
int LcdBusy = 0;
int delaya = 0; //延時(shí)變量
int delayb = 0;
int delayc = 0;
extern int LCDk;
void LCD(char LCD_pr)
{
IO.PCR1 = 0x0ff;
IIC.ICCR.BIT.ICE = 0; //選擇端口5為通用IO
IO.PMR5.BYTE = 0;
LCDinit();
LcdStr[LCDk] = LCD_pr;
LCDk++;
LCDupdate();
}
/*--------------------------------------------------------------------------
Function: void LCD_Busy(void)
Purpose: 判斷LCD是否可寫(xiě)
---------------------------------------------------------------------------*/
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寫(xiě)程序
---------------------------------------------------------------------------*/
void LCD_Print(void)
{
delaya = 0;
RW = 0;
E = 1;
E = 0;
for(delaya = 0;delaya++<1000;);
return;
}
/*--------------------------------------------------------------------------
Function: void LCDinit(void)
Purpose: 初始化LCD,準(zhǔn)備接收輸入
---------------------------------------------------------------------------*/
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顯示相應(yīng)內(nèi)容
---------------------------------------------------------------------------*/
void LCDupdate(void)
{
int i = 0;
set_imask_ccr(1);
RS = 0;
IO.PCR5 = 0x0ff;
IO.PDR5.BYTE = 0x01;
LCD_Print();
for(i = 0;i <=32; i++)
{
LCD_Busy();
RS = 1;
IO.PCR5 = 0x0ff;
IO.PDR5.BYTE = LcdStr[i];
LCD_Print();
if(i == 15)
{
for(delayc = 0;delayc<4000;delayc++);
RS = 0;
IO.PDR5.BYTE = 0x0c0;
LCD_Print();
}
}
set_imask_ccr(0);
return;
}
void LCDDisplay(char dis_con[], int len, int cl){
int i, dl;
if (len == 0) dl = strlen(dis_con);
else dl = len;
if (cl == 1){
clear_arr(LcdStr, 32, 0x20);
LCDk = 0;
}
for (i = 0; i < dl; i++){
LCD(dis_con[i]);
delay();
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -