當前位置:編程學習大全網 - 編程語言 - 找壹個8255的C語言編程的例子(希望有程序)

找壹個8255的C語言編程的例子(希望有程序)

/*在本實驗中,P0端口是時分復用的,IO端口用8255擴展,低8位地址用74hc53鎖存。

8255的Wr和rd直接與單片機的wr和rd相連,作為外部存儲器,8255。

的PA端口連接到LCD1602的數據端口。這個程序的功能是在LCD上顯示字符串和自己。

已成功實現定義的圖形(板自行焊接)*/

/* * * * * * * * * * * * * * * * * *包含頭文件* * * * * * * * * * * * * * * * * * * *

# include & ltREGX51。H & gt

# include & ltabsacc.h & gt

#定義清晰屏幕LCD_write_command(0x01)

#定義uint無符號整數

#定義uchar無符號字符

/* * * * * * * * * * * *定義接口* * * * * * * * * * * * * * * * * * * *

#定義LCDIO P0

#定義PA XBYTE[0xFF00]

#定義PB XBYTE[0xFF01]

#定義PC XBYTE[0xFF02]

#定義COM XBYTE[0xFF03]

sbit lcd1602_rs=p1^0;

sbit lcd1602_rw=p1^1;

sbit lcd1602_en=p1^2;

無符號字符表1[]={ 0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,

0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,

0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,

0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,

0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,

0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,

0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,

0x1c,0x18,0x10,0x00,0x00,0x00,0x 00 };//心形圖案

/* * * * * * * * * * * *定義函數* * * * * * * * * * * * * * * * * *

void LCD_write_command(無符號字符命令);//寫命令功能

void LCD_write_dat(無符號字符dat);//寫數據功能

void LCD_set_xy(無符號char x,無符號char y);//設置顯示位置功能

void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat);//顯示字符函數

void LCD _ DSP _ string(unsigned char X,unsigned char Y,unsigned char * s);//顯示字符串函數

void LCD _ init(void);//初始化函數

void delay _ NMS(unsigned int n);//延遲功能

void delay();

void init _ 8255();

void write _ 8255 pa(uchar ch);

/* * * * * * * * * * * * * * 8255初始化* * * * * * * * * * * * * * * * * * * * * * * *

void init_8255()

{

COM = 0x80

}

/* * * * * * * * * * * *將數據寫入PA * * * * * * * * * * * * * * * * * * * * * * * * * * * *

void write_8255PA(uchar ch)

{

PA = ch

}

/* * * * * * * * * *初始化函數* * * * * * * * * * * *

void LCD_init(void)

{

清晰屏幕;//清除屏幕

LCD _ write _ command(0x 38);//設置8位數據傳輸模式

LCD _ write _ command(0x0d);//打開顯示(啟用lcd顯示)

LCD _ write _ command(0x 80);//設置lcd第壹個顯示地址

清晰屏幕;//清除屏幕

}

/* * * * * * * * * * * * * *寫指令功能* * * * * * * * * * * * * * * * * * * * * * * *

void LCD_write_command(無符號字符命令)

{

write_8255PA(命令);

delay _ NMS(100);

LCD 1602 _ RS = 0;

LCD 1602 _ RW = 0;

LCD 1602 _ EN = 0;

LCD 1602 _ EN = 1;

delay _ NMS(10);

}

/***************************************************/

/* * * * * * * * * * * *寫數據功能* * * * * * * * * * * * * * * * * * * *

void LCD_write_dat(無符號字符數據)

{

write _ 8255 pa(dat);

delay _ NMS(100);

LCD 1602 _ RS = 1;

LCD 1602 _ RW = 0;

LCD 1602 _ EN = 0;

delay _ NMS(1);

LCD 1602 _ EN = 1;

}

/****************************************************/

/* * * * * * * * * * * * * * * *設置顯示位置* * * * * * * * * * * * * * * *

void LCD_set_xy(無符號字符x,無符號字符y)

{

無符號字符地址;

if (y == 1)

地址= 0x 80+x;

其他

地址= 0xc 0+x;

LCD_write_command(地址);

}

/***************************************************/

/* * * * * * * * * * * * * *顯示字符* * * * * * * * * * * * * * * * * *

void LCD_dsp_char(無符號x,無符號char y,無符號char dat)

{

LCD_set_xy( x,y);

LCD _ write _ dat(dat);

}

/**********************************************/

/* * * * * * * * * * * *顯示字符串函數* * * * * * * * * *

void LCD_dsp_string(無符號字符X,無符號字符Y,無符號字符*s)

{

LCD_set_xy( X,Y);

while (*s)

{

LCD _ write _ dat(* s);

s++;

}

}

/***********************************************/

* * * * * * * * *延遲* * * * * * * * * * * * * * * *

void delay_nms(無符號整數n)

{

無符號int i=0,j = 0;

for(I = n;我& gt0;我-)

for(j = 0;j & lt10;j++);

}

/**************************************/

無效延遲()

{ int I;

for(I = 0;我& lt50;i++)

delay _ NMS(100);}

* * * * * * * * * *主要功能* * * * * * * * * * * *

無效總管(無效)

{

無符號char i,j,k,tmp

init _ 8255();

LCD _ init();

delay _ NMS(100);

tmp = 0x40//設置CGRAM地址的格式字。

k = 0;

for(j = 0;j & lt8;j++)

{

for(I = 0;我& lt8;i++)

{

LCD _ write _ command(tmp+I);//設置自定義字符的CGRAM地址。

delay _ NMS(2);

LCD _ write _ dat(table 1[k]);//將自定義字符表的數據寫入CGRAM。

k++;

delay _ NMS(2);

}

tmp = tmp+8;

}

LCD_dsp_string(1,1,“LCD測試”);//在第壹行第壹列顯示“LCD測試”。

LCD_dsp_string(1,2,“成功”);//在第二行第壹列顯示“成功”。

for(I = 0;我& lt4;i++)

{

LCD_dsp_char( 12+i,1,I);//在第壹行第12列顯示心形圖案的上半部分。

delay _ NMS(1);

}

for(I = 4;我& lt8;i++)

{

LCD_dsp_char(12+i-4,2,I);//在第二行第12列顯示心形圖案的下半部分。

delay _ NMS(1);

}

{

LCD _ write _ command(0x 08);

delay();

LCD _ write _ command(0x0c);

delay();

} while(1);

}

  • 上一篇:音樂專業面試3分鐘自我介紹
  • 下一篇:onvif協議是什麽
  • copyright 2024編程學習大全網