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

📄 8080_parallel_base.c

📁 我写的使用LPC2148模拟8080并口驱动OLED屏的程序
💻 C
字号:
/********************************************************/
/*8080_parallel_base.c*/
/********************************************************/
/*	模块:		8080_parallel_base.c												*/
/*	描述:		8080并口通讯模块													*/
/*						用于定义工作6800并口各种基本操作					*/
/*  处理器:																						*/
/*  调用函数:																					*/
/*  版本历史:																						*/
/*	==================================================	*/
/*	V1.0																								*/
/*  作者:			AncentLee																	*/
/*	日期:																								*/
/*	修改原因:																						*/
/*	==================================================	*/
/********************************************************/

#include "config.H"

/*F_parallel_init****************************************/
/*  函数名:																						*/
/*  参数:																							*/
/*  返回值:																						*/
/*  作用域:																						*/
/*  功能:																							*/
/********************************************************/
void parallel_init(void)
{
	IO0DIR=IO0DIR|(1<<OLED_CS)|(1<<OLED_RES)|(1<<OLED_DC)|(1<<OLED_WR)|(1<<OLED_RD);//将OLED相关控制引脚配置为输出
	IO0CLR=(1<<OLED_RES);//复位OLED
	DelayNS (1);
	IO0SET=(1<<OLED_CS)|(1<<OLED_RES)|(1<<OLED_WR)|(1<<OLED_RD);//置位OLED_CS、OLED_WR和OLED_RD,取消OLED复位	
}                                                        
/* End of F_parallel_init********************************/

                                                         
/*F_parallel_write_command*******************************/
/*  函数名:																						*/
/*  参数:																							*/
/*  返回值:																						*/
/*  作用域:																						*/
/*  功能:																							*/
/********************************************************/
void parallel_write_command(uint8 command_byte)
{	
	IO0DIR=(IO0DIR|(0xff<<OLED_DATA));//设置8位数据线为输出
	IO0CLR=(1<<OLED_DC)|(0xff<<OLED_DATA);//清零OLED_DC位,表示进行命令操作;同时清零8位数据线
	IO0SET=(command_byte<<OLED_DATA);//将8位命令字节放到总线上
	IO0CLR=(1<<OLED_CS)|(1<<OLED_WR);//片选OLED且打开写使能
	//_nop_(); //等待写入完成	
	IO0SET=(1<<OLED_CS)|(1<<OLED_WR);//拉高CS,取消OLED片选且关闭写使能
}                                                        
/* End of F_parallel_write_command***********************/


/*F_parpllel_write_data**********************************/
/*  函数名:																						*/
/*  参数:																							*/
/*  返回值:																						*/
/*  作用域:																						*/
/*  功能:																							*/
/********************************************************/
void parallel_write_data(uint8 data_byte)
{
	IO0DIR=IO0DIR|(0xff<<OLED_DATA);//设置8位数据线为输出
	IO0CLR=(0xFF<<OLED_DATA);//清零8位数据线
	IO0SET=(1<<OLED_DC)|(data_byte<<OLED_DATA);//置位OLED_DC位,表示进行数据操作;同时将8位数据字节放到总线上
	IO0CLR=(1<<OLED_CS)|(1<<OLED_WR);//片选OLED且打开写使能
	//_nop_(); //等待写入完成	
	IO0SET=(1<<OLED_WR)|(1<<OLED_CS);//拉高CS,取消OLED片选且关闭写使能
}                                                          
/* End of F_*********************************************/


/*F_*****************************************************/
/*  函数名:																						*/
/*  参数:																							*/
/*  返回值:																						*/
/*  作用域:																						*/
/*  功能:																							*/
/********************************************************/
uint8 parallel_read_command(void)
{
	uint8 command_byte;

	IO0DIR=IO0DIR&(0xffffffff-(0xff<<OLED_DATA));//设置8位数据线为输入
	IO0CLR=(1<<OLED_CS)|(1<<OLED_DC)|(1<<OLED_RD);//当前操作转换为命令操作、片选OLED且打开读使能
	//_nop_(); //等待数据稳定
	command_byte=(uint8)(IO0PIN>>OLED_DATA);
	IO0SET=(1<<OLED_CS)|(1<<OLED_RD);//拉高CS,取消OLED片选且关闭读使能
	
	return command_byte;
}                                                                  
/* End of F_parallel_read_command************************/


/*F_parallel_read_data***********************************/
//  函数名:OLED_init()																	*/
//  参数:	无																					*/
//  返回值:无																					*/
// 作用域:																						*/
//  功能:																							*/
/********************************************************/
/*
uint8 parallel_read_data(void)
{
	uint8	data_byte;
	OLED_RD=0;
	OLED_DC=1;
	OLED_WR=1;
	OLED_parallel_IO=0xff;
	OLED_RD=1;
	OLED_CS=0;
	_nop_();
	data_byte=OLED_parallel_IO;
	OLED_CS=1;
	OLED_RD=0;
	
	return data_byte;
}
*/                                                            
/* End of F_parallel_read_data***************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -