Professional Documents
Culture Documents
h>
#include "edutech.h"
#include "config.h"
#define PLL_MULTIPLIER 4
unsigned i;
void toggle_en(void)
delay(DELAY_TINY);
IOSET0|=0x1000; // EN=1
delay(DELAY_TINY);
IOCLR0|=0x1000; // EN=0
delay(DELAY_TINY);
}
void lcd_cmd1(unsigned nybble)
IOSET0 =chunk;
delay(DELAY_250US);
IOCLR0 =0x3F00^chunk;
toggle_en();
IOSET0 = chunk;
delay(DELAY_250US);
IOCLR0 = 0x3F00^chunk;
toggle_en();
lcd_cmd1(cmd>>4);
delay(DELAY_250US);
delay(DELAY_250US);
lcd_cmd(0x80);
delay(DELAY_15MS);
while(*str) {
lcd_dat(*str);
str++;
delay(DELAY_15MS);
lcd_cmd(0xC0);
delay(DELAY_15MS);
while(*str) {
lcd_dat(*str);
str++;
delay(DELAY_15MS);
void lcd_init(void)
{
PINSEL0 |= 0x000;
// PINSEL0=z>>12;
IODIR0 |= 0x3F00;
// clear them
IOCLR0|=0x3F00;
delay(DELAY_15MS);
lcd_cmd1(0x01);
delay(DELAY_15MS);
lcd_cmd1(0x03);
delay(DELAY_6MS);
lcd_cmd1(0x03);
delay(DELAY_250US);
lcd_cmd1(0x03);
delay(DELAY_250US);
lcd_cmd1(0x02);
delay(DELAY_250US);
lcd_cmd(0x28);
delay(DELAY_250US);
lcd_cmd(0x08);
delay(DELAY_250US);
lcd_cmd(0x0C);
delay(DELAY_250US);
lcd_cmd(0x06);
delay(DELAY_250US);
//lcd_cmd(0x02);
//delay(DELAY_250US);
while(ms)
while(ms)
--ms;
int all_key_open(void)
int a;
a=IOPIN0;
if((a & 0x0000001f)==0x1f)
return(1);
else
return(0);
int key_pressed(void)
int b;
b=IOPIN0;
delay_ms(21250);
return(1);
else
return(0);
void key_init(void)
VPBDIV=0X01;
PINSEL0|=0X0000;
PINSEL1|=0X0000;
int key_detect(void)
IOCLR0=0XC0E0;
row = find_row();
col = find_column();
data= col+(row*10);
return(data);
int find_column(void)
long int d;
d=IOPIN0 ;
switch (d)
case 0X0000001e:
return(0);
break;
case 0x0000001d:
return(1);
break;
case 0x0000001b:
return(2);
break;
case 0x00000017:
return(3);
break;
case 0x0000000f:
return(4);
break;
default:
return(5);
int find_row(void)
int i;
for(i=0;i<5;i++)
IOSET0|=0XC0E0;
switch (i)
case 0: IOCLR0|=SET(5);
break;
case 1:IOCLR0|=SET(6);
break;
case 2: IOCLR0|=SET(7);
break;
case 3: IOCLR0|=SET(14);
break;
case 4: IOCLR0|=SET(15);
break;
IOCLR0=0XC0E0;
return(i);
}return(5);
void glcd_init(void)
VPBDIV=0X01;
PINSEL2=0x0000;
IODIR1=0xFFFFFFFF;
IOSET1=0X240000;
//System Set
glcd_cmd(0x40);
glcd_dat(0x30);
glcd_dat(0x87);
glcd_dat(0x07);
glcd_dat(0x27);
glcd_dat(0x2f);
glcd_dat(0xef);
glcd_dat(0x28);
glcd_dat(0x00);
//Scroll
glcd_cmd(0x44);
glcd_dat(0x00);
glcd_dat(0x00);
glcd_dat(0xf0);
glcd_dat(0xb0);
glcd_dat(0x04);
glcd_dat(0xf0);
glcd_dat(0x00);
glcd_dat(0x00);
glcd_dat(0x00);
glcd_dat(0x00);
glcd_cmd(0x5d);
glcd_dat(0x07);
glcd_dat(0x07);
glcd_cmd(0x4c);
glcd_cmd(0x5a);
glcd_dat(0x00);
glcd_cmd(0x5b);
glcd_dat(0x00);
glcd_cmd(0x58);
glcd_dat(0x16);
glcd_clr();
IOPIN1|=cmd;
IOPIN1&=0xfff70000; //clr cs
IOPIN1&=0xfffb0000; //cle wr
delay_ms10(10);
IOPIN1|=SET(2+16); //set wr
IOPIN1|=SET(3+16); //set cs
delay_ms10(10);
{
IOPIN1&=0x000f0000; //a0 Low
IOPIN1|=dat;
IOPIN1&=0xffF70000; //clr cs
IOPIN1&=0xfffb0000; //clr wr
delay_ms10(10);
IOPIN1|=SET(2+16); //set wr
IOPIN1|=SET(3+16); //set cs
delay_ms10(10);
void glcd_clr(void)
int j;
glcd_cmd(0x46);
glcd_dat(0x00);
glcd_dat(0x00);
glcd_cmd(0x42);
for(j=0;j<1200;j++)
glcd_dat(0x20);
glcd_cmd(0x46);
glcd_dat(0xb0);
glcd_dat(0x04);
glcd_cmd(0x42);
for(j=0;j<9600;j++)
glcd_dat(0x00);
delay_ms10(1);
glcd_cmd(0x59);
int i =5;
while(i)
--i;
glcd_cmd(0x46);
glcd_dat(addrl);
glcd_dat(addrh);
{
glcd_cmd(0x42);
while(*str)
glcd_dat(*str);
str++;
} }
int a,b;
glcd_cmd(0x4f);
for(a=0;a<col;a++)
setaddr(low,high);
glcd_cmd(0x42);
for(b=0;b<row;b++)
glcd_dat(data[a][b]);
low++;
}*/
void pllint(void)
PLLCFG= MSEL|(1<<PSEL1)|(0<<PSEL0);
PLLCON= (1<<PLLE);
PLLFEED= PLL_FEED1;
PLLFEED= PLL_FEED2;
PLLCON= SET(PLLE)|SET(PLLC);
PLLFEED= PLL_FEED1;
PLLFEED= PLL_FEED2;
MAMCR=0;
MAMTIM=3;
MAMCR=2;
VPBDIV=0x01;
VPBDIV=0X01;
T0CTCR=0x0000;
T0PR=0x01;
T0MR0=count;
T0MCR=matchcontrol;
T0EMR=(1<<4)|(1<<5);
T0TCR=0X01;
void pwmint()
PWMMCR=0x02;
PWMPCR=(1<<10)|CLR(2);
PWMPR=0x2EDF;
PWMMR0=0x4B0;
PWMMR2=0X250;
PWMTCR=SET(0)|SET(3);
PWMLER=(1<<1);
PWMMR1=new_value;
PWMLER=(1<<1);