#pragma num_alias_table_entries 14
#pragma enable_multiple_baud
#include
IO_0 output bitshift numbits(8) clockedge(+) io_com_data;
IO_2 output bit en;
IO_5 input bit up;
IO_6 input bit down;
IO_7 input bit enter;
IO_8 input bit esc;
int cur_pos = 1;
char display[20];
char menu1_1[20], menu1_2[20], menu1_3[20], menu1_4[20], menu1_5[20];
void writecmd(int cmd)
{
io_out(en, 1);
io_out(io_com_data, 0b00000000UL);
io_out(io_com_data, cmd);
io_out(en, 0);
delay(0);
}
void writechr(char dis_chr)
{
io_out(en, 1);
io_out(io_com_data, 0b10000000UL);
io_out(io_com_data, dis_chr);
io_out(en, 0);
delay(0);
}
void writestr(char dis_str[20])
{
int chr_num;
for(chr_num = 0; dis_str[chr_num] != '~'; chr_num = chr_num + 1)
{
writechr(dis_str[chr_num]);
}
}
void cur_posit(int x)
{
switch(x)
{
case 1:
writecmd(0b10000000UL);
break;
case 2:
writecmd(0b11000000UL);
break;
case 3:
writecmd(0b10010100UL);
break;
case 4:
writecmd(0b11010100UL);
break;
}
}
void menu1_display(int a)
{
if(a == 1)
{
cur_posit(1);
strcpy(display, menu1_1);
writestr(display);
cur_posit(2);
strcpy(display, menu1_2);
writestr(display);
cur_posit(3);
strcpy(display, menu1_3);
writestr(display);
cur_posit(4);
strcpy(display, menu1_4);
writestr(display);
}
else if(a == 2)
{
cur_posit(1);
strcpy(display, menu1_2);
writestr(display);
cur_posit(2);
strcpy(display, menu1_3);
writestr(display);
cur_posit(3);
strcpy(display, menu1_4);
writestr(display);
cur_posit(4);
strcpy(display, menu1_5);
writestr(display);
}
}
when(reset)
{
strcpy(menu1_1, " Lighting~");
strcpy(menu1_2, " Air Condition~");
strcpy(menu1_3, " Menu 3~");
strcpy(menu1_4, " Menu 4~");
strcpy(menu1_5, " Menu 5~");
delay(600); //delay 15ms
writecmd(0b00111000UL); //datainterface 1
delay(160); //delay 4.1ms
writecmd(0b00111000UL); //datainterface 2
delay(2); //delay 100us
writecmd(0b00111000UL); //datainterface 3
delay(160); //delay 4.1ms
writecmd(0b00111000UL); //datainterface 4
writecmd(0b00001000UL); //displayoff
writecmd(0b00000001UL); //clear
delay(63); //delay 1650us
writecmd(0b00001100UL); //displayon
writecmd(0b00000110UL); //autoforward
writecmd(0b11000110UL); //cursor go to central of line 2
strcpy(display, "71301-3D~");
writestr(display); //display 71301-3D
writecmd(0b10010101UL); //cursor go to central of line 3
strcpy(display, "Final Year Project~");
writestr(display); //display Final Year Project
delay(33333);
writecmd(0b00000001UL); //clear
//Menu page
menu1_display(1); //display menu
cur_posit(1); //cursor to bit 1 at line 1
writechr(0b01111110UL); //display cursor
}
when(io_changes(up)to 0)
{
if(cur_pos == 4)
{
cur_pos = cur_pos - 1;
writecmd(0b11010100UL); //point to bit 1 at line 4
writechr(' ');
writecmd(0b10010100UL); //point to bit 1 at line 3
writechr(0b01111110UL); //display cursor
}
else if(cur_pos == 3)
{
cur_pos = cur_pos - 1;
writecmd(0b10010100UL); //point to bit 1 at line 3
writechr(' ');
writecmd(0b11000000UL); //point to bit 1 at line 2
writechr(0b01111110UL); //display cursor
}
else if(cur_pos == 2)
{
cur_pos = cur_pos - 1;
writecmd(0b11000000UL); //point to bit 1 at line 2
writechr(' ');
writecmd(0b10000000UL); //point to bit 1 at line 1
writechr(0b01111110UL); //display cursor
}
else if(cur_pos == 1)
{
writecmd(0b00000001UL);
menu1_display(1);
cur_posit(1);
writechr(0b01111110UL); //display cursor
}
}
when(io_changes(down)to 0)
{
if(cur_pos == 1)
{
cur_pos = cur_pos + 1;
writecmd(0b10000000UL); //point to bit 1 at line 1
writechr(' ');
writecmd(0b11000000UL); //point to bit 1 at line 2
writechr(0b01111110UL); //display cursor
}
else if(cur_pos == 2)
{
cur_pos = cur_pos + 1;
writecmd(0b11000000UL); //point to bit 1 at line 2
writechr(' ');
writecmd(0b10010100UL); //point to bit 1 at line 3
writechr(0b01111110UL); //display cursor
}
else if(cur_pos == 3)
{
cur_pos = cur_pos + 1;
writecmd(0b10010100UL); //point to bit 1 at line 3
writechr(' ');
writecmd(0b11010100UL); //point to bit 1 at line 4
writechr(0b01111110UL); //display cursor
}
else if(cur_pos == 4)
{
writecmd(0b00000001UL);
menu1_display(2);
cur_posit(4);
writechr(0b01111110UL); //display cursor
}
}
               (
geocities.com/hk/cloud_fan_school/Program/LCD)                   (
geocities.com/hk/cloud_fan_school/Program)                   (
geocities.com/hk/cloud_fan_school)                   (
geocities.com/hk)