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

📄 st7920.c

📁 At91sam7s64+ucosII+pid温度控制
💻 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 + -