📄 st7920.c
字号:
#include "SAMPIOC.h"
#include "ST7920.h"
#include "AT91SAM7S128.h"
#include "lib_at91sam7s128.h"
#include "SAMpioc.h"
//=================LCD_DRIVER===============================
int get_lcd()
{
int i;
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,LCD_RW);
Delay(DLY2);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,LCD_EN);
Delay(DLY2);
i = (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & DABUS) >> OFFSET;
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LCD_EN);
Delay(DLY2);
return(i);
}
void put_lcd(int val)
{
AT91F_PIO_OutputEnable(AT91C_BASE_PIOA,DABUS);
AT91F_PIO_ForceOutput(AT91C_BASE_PIOA,(val<<OFFSET));
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LCD_RW);
Delay(DLY2);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,LCD_EN);
Delay(DLY2);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LCD_EN);
Delay(DLY2);
}
int lcd_wr_cmd(unsigned char val) //lcd 写命令函数
{
int i;
Delay(DLY2);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LCD_EN);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LCD_RS);
Delay(DLY3);
// while((char) get_lcd()&0x80)
Delay(DLY3);
/*if(i&0x0080)
{
i = get_lcd();
if(i&0x0080)
return(i);
}
else*/
{
//AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LCD_RW);
put_lcd(val);
}
return(0x0);
}
//----------------------------------------------
int lcd_wr_dat(unsigned char val) //lcd 写数据函数
{
int i;
Delay(DLY2);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LCD_EN);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LCD_RS);
Delay(DLY3);
// while((char) get_lcd()&0x80)
{
Delay(DLY3);
}
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,LCD_RS);
put_lcd(val);
return(0);
}
void lcd_sprint(char* s,char row,char col,char num)
{
int i,j;
switch(row)
{
case 0:
i = 0x80;
break;
case 1:
i = 0x90;
break;
case 2:
i = 0x88;
break;
case 3:
i = 0x98;
break;
default:
break;
}
i = i + col;
lcd_wr_cmd(i);
Delay(DLY3);
for(j = 0;j < num;j++)
{
lcd_wr_dat(*s);
s++;
Delay(DLY2);
}
}
//-----------------------------------------------------
void lcd_clr()
{
lcd_wr_cmd(0x01);
Delay(DLY3);
}
//-----------------------------------------------------
void lcd_init()
{
Delay(DLY3);
lcd_wr_cmd(0x30); //8bit interface and base intr
Delay(DLY3);
lcd_wr_cmd(0x30); //8bit interface and base intr
Delay(DLY3);
lcd_wr_cmd(0x0c); //显示打开,光标关,反白显示关
Delay(DLY3);
lcd_wr_cmd(0x02); //游标,ddram归位到0地址
Delay(DLY3);
// lcd_wr_cmd(0x01); //清除屏幕显示,将DDRAM的地址计数器归零
// Delay(DLY3);
lcd_wr_cmd(0x06); //DDRAM的地址计数器(AC)加1
Delay(DLY3);
lcd_wr_cmd(0x80); //DD RAM 地址-----0000000
Delay(DLY3);
// lcd_sprint(logo0,0,0,12);
lcd_sprint("宝鸡中天奥林",0,1,12);
Delay(DLY3);
// lcd_sprint(logo1,1,0,12);
lcd_sprint("电子有限公司",1,1,12);
Delay(DLY3);
// lcd_sprint(logo2,2,0,12);
lcd_sprint("Copy Right By",2,0,13);
lcd_sprint("BaoJi ZT Lt'd.",3,0,14);
// lcd_sprint("宝鸡中天奥林",0,1,12);
Delay(DLY3);
Delay(DLY3);
Delay(DLY3);
Delay(DLY3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -