"KS0108.h" lcd driver

Başlatan armsistem, 21 Nisan 2012, 17:02:43

armsistem

21 Nisan 2012, 17:02:43 Son düzenlenme: 21 Nisan 2012, 17:08:13 armsistem
Arkadaşlar merhaba , aşağıda 128x64 glcd driver bulunmaktadır. Driver çalışmaktadır lakin benim yapmak istediğim data uçlarını değiştirmek ; örnekte data uçları aşağıdadır.

LCD  MCU
D0    P0.0
D1    P0.1
D2    P0.2
D3    P0.3
D4    P0.4
D5    P0.5
D6    P0.6
D7    P0.7


fakat benim istediğim aşağıdaki şekilde yapmak istiyorum (port numaraları salladım)

LCD  MCU
D0    P0.0
D1    P0.1
D2    P1.5
D3    P1.6
D4    P2.2
D5    P2.3
D6    P3.1
D7    P3.2



data yı nasıl bu şekilde parçalayabilirim işin mantığını öğrenmeye çalışıyorum o yüzden yardımcı olacak arkadaşlar direkt kodu yazmadan başka örneklerlede anlatabilirler. Şimdiden teşekkür ederim.





   
#include <lpc213x.h>
   #include "KS0108.h"


#define KS0108_DATA_DIR
	
	
IODIR0
#define KS0108_DATA_PIN
	
	
IOPIN0
#define KS0108_DATA_SET
	
	
IOSET0
#define KS0108_DATA_CLR
	
	
IOCLR0
#define KS0108_D0
	
	
	
0
#define KS0108_CTRL_DIR
	
	
IO1DIR
#define KS0108_CTRL_SET
	
	
IO1SET
#define KS0108_CTRL_CLR
	
	
IO1CLR
#define KS0108_RS
	
	
	
(1 << 18)
#define KS0108_RW
	
	
	
(1 << 17)
#define KS0108_EN
	
	
	
(1 << 16)
#define KS0108_CS1
	
	
	
IO0DIR = (0x01 << 19)
#define KS0108_CS2
	
	
	
IO0DIR = (0x01 << 20)
#define DISPLAY_STATUS_BUSY
	
0x80
extern unsigned char screen_x;
extern unsigned char screen_y;


void GLCD_Delay(void)
{
__nop();
__nop();
}
//-------------------------------------------------------------------------------------------------
// Enalbe Controller (0-2)
//-------------------------------------------------------------------------------------------------
void GLCD_EnableController(unsigned char controller)
{
switch(
controller){
	
case 
IO0CLR = (0x01 << 19); break;
	
case 
IO0CLR = (0x01 << 20); break;
//
	
case 2 : break;
	
}
}
//-------------------------------------------------------------------------------------------------
// Disable Controller (0-2)
//-------------------------------------------------------------------------------------------------
void GLCD_DisableController(unsigned char controller)
{
switch(
controller){
	
case 
IO0SET = (0x01 << 19); break;
	
case 
IO0SET = (0x01 << 20); break;
//
	
case 2 :  break;
	
}
}
//-------------------------------------------------------------------------------------------------
// Read Status byte from specified controller (0-2)
//-------------------------------------------------------------------------------------------------
unsigned char GLCD_ReadStatus(unsigned char controller)
{
unsigned char status;
KS0108_DATA_DIR &= ~(0xFF << KS0108_D0);
KS0108_CTRL_SET KS0108_RW;
KS0108_CTRL_CLR KS0108_RS;
GLCD_EnableController(controller);
KS0108_CTRL_SET KS0108_EN;
GLCD_Delay();
status = (KS0108_DATA_PIN >> KS0108_D0);
KS0108_CTRL_CLR KS0108_EN;
GLCD_DisableController(controller);
return 
status;
}
//-------------------------------------------------------------------------------------------------
// Write command to specified controller
//-------------------------------------------------------------------------------------------------
void GLCD_WriteCommand(unsigned char commandToWriteunsigned char controller)
{
while(
GLCD_ReadStatus(controller)&DISPLAY_STATUS_BUSY);
KS0108_DATA_DIR |= (0xFF << KS0108_D0);
KS0108_CTRL_CLR = (KS0108_RW KS0108_RS);
GLCD_EnableController(controller);

KS0108_DATA_SET = (commandToWrite << KS0108_D0);
commandToWrite ^= 0xFF;
KS0108_DATA_CLR = (commandToWrite << KS0108_D0);

KS0108_CTRL_SET KS0108_EN;
GLCD_Delay();
KS0108_CTRL_CLR KS0108_EN;
GLCD_DisableController(controller);
}
//-------------------------------------------------------------------------------------------------
// Read data from current position
//-------------------------------------------------------------------------------------------------
	
	
	
  
unsigned char GLCD_ReadData(void)
{
unsigned char data;
while(
GLCD_ReadStatus(screen_x 64)&DISPLAY_STATUS_BUSY);
KS0108_DATA_DIR &= ~(0xFF << KS0108_D0);
KS0108_CTRL_SET = (KS0108_RW KS0108_RS);
GLCD_EnableController(screen_x 64);
//GLCD_Delay();
KS0108_CTRL_SET KS0108_EN;
GLCD_Delay();
data = (KS0108_DATA_PIN >>  KS0108_D0);
KS0108_CTRL_CLR KS0108_EN;
GLCD_DisableController(screen_x 64);
screen_x++;
return 
data;
}
	
  
//-------------------------------------------------------------------------------------------------
// Write data to current position
//-------------------------------------------------------------------------------------------------
void GLCD_WriteData(unsigned char dataToWrite)
{
while(
GLCD_ReadStatus(screen_x 64)&DISPLAY_STATUS_BUSY);
KS0108_DATA_DIR |= (0xFF << KS0108_D0);
KS0108_CTRL_CLR KS0108_RW;
KS0108_CTRL_SET KS0108_RS;

KS0108_DATA_SET = (dataToWrite << KS0108_D0);
dataToWrite ^= 0xFF;
KS0108_DATA_CLR = (dataToWrite << KS0108_D0);

GLCD_EnableController(screen_x 64);
KS0108_CTRL_SET KS0108_EN;
GLCD_Delay();
KS0108_CTRL_CLR KS0108_EN;
GLCD_DisableController(screen_x 64);
screen_x++;
}
//-------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------
	
unsigned char GLCD_ReadByteFromROMMemory(char ptr)
{
return *(
ptr);
}








void GLCD_InitalizePorts (void)
{
IO0DIR 0xFFFFFFFF;
 
IO1DIR 0xFFFFFFFF;
 


}







int main (void)

{

	


	
	
	
	
 
GLCD_Initalize();
GLCD_ClearScreen();
	
  



	
GLCD_GoTo(1,1);
GLCD_WriteString("           armsistem");

	
	
 
GLCD_Rectangle(10,10,10,10);

GLCD_Circle(20,20,20);
GLCD_Line(15,15,15,15);
	

	
	
while(
1){
	
	


}
	
	
	
	
 }
www.silivriotomasyon.com, www.armsistem.com

tmhzkhzhz

iyi gunler
konuyu fazla bilmiyorum sadece yardimci olmak icin yazdim program in ikinci satirinda   include "KS0108.h" yaziyor
port ayarlari diger fonksiyonlar o dosyanin icinde olmasi lazim dosyayi acip degistirebilirsiniz
anlayamazsaniz  "KS0108.h"   dosya icerigini foruma tekrar ekleyin bir inceleyim  KS0108.h dosyasi program klasorunuzun icinde veya
derleyicinin kuruldugu klasorun icinde olur arattirip bulun


Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.