//PROGRAM TO DISPLAY "WELCOME TO" ON LINE1 ,ROTATE LEFT TO RIGHT CONTINOUSLY.AND DISPLAY "ETALVIS" ON LINE2,ROTATE RIGHT TO LEFT CONTINOUSLY.
//d0-d7 on port f and e and rs on portk
volatile uint8_t *outf,*outk;
volatile uint8_t arr[] ={0x20,0x45,0x54,0x41,0x4C,0x56,0x49,0x53,0x20,0x45,0x54,0x41,0x4C,0x56,0x49,0x53};
volatile uint8_t array1[] ={0x6F,0x6D,0x65,0x20,0x54,0x6F,0x57,0x65,0x6C,0x63,0x6F,0x6D,0x65,0x20,0x54,0x6F};
volatile uint8_t array2[] = {0x54,0x6F,0x57,0x65,0x6C,0x63,0x6F,0x6D,0x65,0x20,0x54,0x6F,0x57,0x65,0x6C,0x63};
volatile uint8_t array3[] = {0x6C,0x63,0x6F,0x6D,0x65,0x20,0x54,0x6F,0x57,0x65,0x6C,0x63,0x6F,0x6D,0x65,0x20};
volatile uint8_t array4[]= {0x65,0x20,0x54,0x6F,0x57,0x65,0x6C,0x63,0x6F,0x6D,0x65,0x20,0x54,0x6F,0x57,0x65};
volatile uint8_t array5[] = {0x57,0x65,0x6C,0x63,0x6F,0x6D,0x65,0x20,0x54,0x6F,0x57,0x65,0x6C,0x63,0x6F,0x6D};
volatile uint8_t address;
volatile uint8_t j,i,p=9;
volatile int t=0,y=0,q=15,z=15;
volatile uint32_t k;
void setup() {
// put your setup code here, to run once:
volatile uint8_t *dirf,*dirk;
dirf=0x30,dirk=0x107;
*dirf=0xff;*dirk=0x03;
}
void loop() {
// put your main code here, to run repeatedly:
outf=0x31;outk=0x108;
initialize();
for(i=0;i<16;i++){
//LINE2
address=0xcf-i;
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[t];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[t+j];
pulse_enable_data();
}
}
//LINE1
address=0x80+i;
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array1[z];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array1[z-j];
pulse_enable_data();
}
}
for(k=0;k<100000;k++);
}
while(1){
y=0;t=0,q=15,z=15;
for(i=0;i<16;i++){
//LINE2
address=0xc0;
y++;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[y];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[y+j];
pulse_enable_data();
}
}
address=0xcf-i;//array2 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[t];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[t+j];
pulse_enable_data();
}
}
//LINE1
address=0x8f;
q--;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array1[q];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array1[q-j];
pulse_enable_data();
}
}
address=0x80+i;//array2 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array2[z];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array2[z-j];
pulse_enable_data();
}
}
for(k=0;k<100000;k++);
}
y=0;t=0,q=15,z=15;
for(i=0;i<16;i++){
//LINE2
address=0xc0;
y++;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[y];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[y+j];
pulse_enable_data();
}
}
address=0xcf-i;//array2 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[t];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[t+j];
pulse_enable_data();
}
}
address=0x8f;
q--;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array2[q];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array2[q-j];
pulse_enable_data();
}
}
address=0x80+i;//array3 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array3[z];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array3[z-j];
pulse_enable_data();
}
}
for(k=0;k<100000;k++);
}
//THIRDD
y=0;t=0,q=15,z=15;
for(i=0;i<16;i++){
//LINE2
address=0xc0;
y++;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[y];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[y+j];
pulse_enable_data();
}
}
address=0xcf-i;//array2 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[t];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[t+j];
pulse_enable_data();
}
}
address=0x8f;
q--;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array3[q];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array3[q-j];
pulse_enable_data();
}
}
address=0x80+i;//array4 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array4[z];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array4[z-j];
pulse_enable_data();
}
}
for(k=0;k<100000;k++);
}
//FORUTH
y=0;t=0,q=15,z=15;
for(i=0;i<16;i++){
//LINE2
address=0xc0;
y++;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[y];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[y+j];
pulse_enable_data();
}
}
address=0xcf-i;//array2 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[t];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[t+j];
pulse_enable_data();
}
}
address=0x8f;
q--;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array4[q];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array4[q-j];
pulse_enable_data();
}
}
address=0x80+i;//array5 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array5[z];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array5[z-j];
pulse_enable_data();
}
}
for(k=0;k<100000;k++);
}
//FIFTH
y=0;t=0,q=15,z=15;
for(i=0;i<16;i++){
//LINE2
address=0xc0;
y++;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[y];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[y+j];
pulse_enable_data();
}
}
address=0xcf-i;//array2 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address+j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=arr[t];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=arr[t+j];
pulse_enable_data();
}
}
address=0x8f;
q--;
for(j=0;j<=14-i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array5[q];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array5[q-j];
pulse_enable_data();
}
}
address=0x80+i;//array1 entering
for(j=0;j<=i;j++){
*outk=0x00;
*outf=address-j;
pulse_enable_command();
if(j==0){//left to right entering
*outk=0x02;
*outf=array1[z];
pulse_enable_data();
}
else{
*outk=0x02;
*outf=array1[z-j];
pulse_enable_data();
}
}
for(k=0;k<100000;k++);
}
}
}
void initialize(){
for(k=0;k<10000;k++);//15ms wait
//function set 2lines and 8 columns
*outk=0x00;// using lcd in command mode
*outf=0x38;//putting data
pulse_enable_command();
//turning the display ON
*outk=0x00;// using lcd in command mode
*outf=0x0c;//putting data
pulse_enable_command();
//clearing display
clear_display();
}
void pulse_enable_data(){
*outk=0x03;//pulsing e
for(k=0;k<100;k++);
*outk=0x02;
}
void pulse_enable_command(){
*outk=0x01;//pulsing e
for(k=0;k<100;k++);
*outk=0x00;
}
void clear_display(){
*outk=0x00;// using lcd in command mode
*outf=0x01;//putting data
pulse_enable_command();
}