欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
ATmega16的lcd12864顯示程序及proteus仿真工程文件
[打印本頁]
作者:
51黑ff
時間:
2016-9-8 20:48
標題:
ATmega16的lcd12864顯示程序及proteus仿真工程文件
分享一些ATmega16的基本的lcd12864顯示函數(shù),可能對大家的學習有用.仿真文件可以從本帖附件下載
0.png
(234.79 KB, 下載次數(shù): 107)
下載附件
2016-9-8 20:47 上傳
#include<iom16v.h>
#include<macros.h>
#include"12864.h"
#include"main.h"
void port_init(void)
{
DDRC=0xFF; //12864數(shù)據(jù)口,置為輸出
PORTC=0xFF;
en_out; //置EN輸出
rw_out; //置rw輸出
rs_out; //置rs輸出
cs1_out;//置cs1輸出
cs2_out;//置cs2輸出
}
/***
******12864寫命令函數(shù)
***/
void lcd_write_com(uchar com)
{
rw_clr; //寫操作
delay_us(3);
rs_clr; //寫數(shù)據(jù)
PORTC=com;
en_set;
delay_us(3);
en_clr;
}
/***
******12864寫數(shù)據(jù)函數(shù)
***/
void lcd_write_date(uchar date)
{
rw_clr; //寫操作
delay_us(3);
rs_set; //寫數(shù)據(jù)
PORTC=date;
en_set;
delay_us(3);
en_clr;
}
/***
******12864確定位置數(shù)據(jù)函數(shù)
******頁地址:x范圍0-7
******列地址:y范圍0-63
***/
void lcd_setxy(uchar x,uchar y)
{
lcd_write_com(0xb8+x);
lcd_write_com(0x40+y);
}
/***
******12864寫一個字母或數(shù)字函數(shù)
******頁地址:x范圍0-3
******列地址:y范圍0-15
***/
void lcd_write_ch(uchar x,uchar y,const uchar *ch)
{
uchar i,j;
if(y<8) //判斷列地址,如果小于8列,顯示在左屏
{
cs1_clr; // CS1=0;
cs2_set; // CS2=1;
}
else //判斷列地址,如果大于8列,顯示在右屏
{
cs1_set; // CS1=1;
cs2_clr; // CS2=0;
y=y-8;
}
for(i=0;i<2;i++)
{
lcd_setxy(x*2+i,y*8); // x*2+i的意思是每個字符占用兩頁,一共可以顯示4行(一共8頁)
// y*8 的意思是每次寫入的列都是8的整數(shù)倍
for(j=0;j<8;j++)
{
lcd_write_date(ch[i*8+j]) ; //一共16個字節(jié)
delay_us(1);
}
}
cs1_clr; // CS1=0;
cs2_clr; // CS2=0;
}
/***
******12864寫一個漢字函數(shù)
******頁地址:x范圍0-3
******列地址:y范圍0-7
***/
void lcd_write_hanzi(uchar x,uchar y,const uchar *dat)
{
uchar i,j;
if(y<4)
{
cs1_clr; //CS1=0;
cs2_set; //CS2=1;
}
else
{
cs1_set; //CS1=1;
cs2_clr; //CS2=0;
y-=4;
}
for(i=0;i<2;i++)
{
lcd_setxy(x*2+i,y*16); // x*2+i的意思是每個漢字占用兩頁,一共可以顯示4行(一共8頁)
delay_us(1); //每次寫入都是16的倍數(shù)列
for(j=0;j<16;j++)
{
lcd_write_date(dat[i*16+j]) ; //一共16個字節(jié)
delay_us(3);
}
}
cs1_clr; //CS1=0;
cs2_clr; //CS2=0;
}
/***
******12864寫一行字符函數(shù)
******頁地址:x范圍0-3
******列地址:y范圍0-15
******字符數(shù):0-15
***/
void lcd_write_str_hang(uchar x,uchar y,const uchar *ch,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
lcd_write_ch(x,y,ch+16*i); //指針相加
y++;
delay_us(3);
}
}
/***
******12864寫一行漢字函數(shù)
******頁地址:x范圍0-3
******列地址:y范圍0-7
******字符數(shù):0-7
***/
void lcd_write_hanzi_hanzi_hang(uchar x,uchar y,const uchar *date,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
lcd_write_hanzi(x,y,date+i*32);
//注意理解ch+i*32:指的是數(shù)組指向下 i*32個數(shù)組
y++;
delay_us(3);
}
}
/***
******12864寫一個字母或數(shù)字反白函數(shù)
******頁地址:x范圍0-3
******列地址:y范圍0-15
***/
void lcd_write_ch_fb(uchar x,uchar y,const uchar *ch)
{
uchar i,j;
if(y<8)
{
cs1_clr; //CS1=0;
cs2_set; //CS2=1;
}
else
{
cs1_set; //CS1=1;
cs2_clr; //CS2=0;
y-=8;
}
for(i=0;i<2;i++)
{
lcd_setxy(x*2+i,y*8);
{
for(j=0;j<8;j++)
{
lcd_write_date(255-ch[i*8+j]) ; //一共16個字節(jié)
delay_us(3);
}
}
}
cs1_clr; //CS1=0;
cs2_clr; //CS2=0;
}
/***
******12864寫一行字母或數(shù)字反白函數(shù)
******頁地址:x范圍0-3
******列地址:y范圍0-15
***/
void lcd_write_str_fb(uchar x,uchar y,const uchar *ch,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
lcd_write_ch_fb(x,y,ch+i*16);
y++;
delay_us(3);
}
}
/***
******12864寫一個漢字反白顯示函數(shù)
******頁地址:x范圍0-3
******列地址:y范圍0-7
******字符數(shù): n范圍0-7
***/
void lcd_write_hanzi_fb(uchar x,uchar y,const uchar *date)
{
uchar i,j;
if(y<4)
{
cs1_clr; //CS1=0;
cs2_set; //CS2=1;
}
else
{
cs1_set; //CS1=1;
cs2_clr; //CS2=0;
y-=4;
}
for(i=0;i<2;i++)
{
lcd_setxy(x*2+i,y*16);
for(j=0;j<16;j++)
{
lcd_write_date(255-date[i*16+j]) ; //一共16個字節(jié)
delay_us(3);
}
}
cs1_clr; //CS1=0;
cs2_clr; //CS2=0;
}
/***
******12864寫一行漢字反白顯示函數(shù)
******頁地址:x范圍0-3
******列地址:y范圍0-7
******字符數(shù): n范圍0-7
***/
void lcd_write_hanzi_hang_fb(uchar x,uchar y,const uchar *date,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
lcd_write_hanzi_fb(x,y,date+i*32);
y++;
delay_us(3);
}
}
/***
******12864初始化函數(shù)
***/
void lcd_init(void)
{
lcd_write_com(0x3f); //開顯示開關(guān)
lcd_write_com(0xc0); //LCD行初始地址,共64行
lcd_write_com(0xb8); //LCD頁初始地址 共8頁
lcd_write_com(0x40); //LCD列初始地址,共64列
}
/***
******12864清屏函數(shù)
***/
void lcd_clear_csr(void)
{
uchar i,j;
// CS1=0;
cs1_clr;
// CS2=1;
cs2_set;
for(i=0;i<8;i++) //清除左屏
{
lcd_setxy(i,0);
for(j=0;j<64;j++)
{
lcd_write_date(0) ;
delay_us(1);
}
lcd_setxy(0,0);
}
//CS1=1;
cs1_set; //清除右屏
//CS2=0;
cs2_clr;
for(i=0;i<8;i++)
{
lcd_setxy(i,0);
for(j=0;j<64;j++)
{
lcd_write_date(0) ;
delay_us(1);
}
lcd_setxy(0,0);
}
}
/***
******12864清除一行顯示函數(shù)
**** x :0-3
***/
void lcd_clear_hang(uchar x)
{
uchar i,j;
cs1_clr; //CS1=0; //左屏
cs2_set; //CS2=1;
for(i=0;i<2;i++)
{
lcd_setxy(x*2+i,0);
delay_us(2);
for(j=0;j<64;j++)
{
lcd_write_date(0);
delay_us(2);
}
}
cs1_set; //CS1=1; 右屏
cs2_clr; //CS2=0;
for(i=0;i<2;i++)
{
lcd_setxy(x*2+i,0);
delay_us(2);
for(j=0;j<64;j++)
{
lcd_write_date(0);
delay_us(2);
}
}
}
復(fù)制代碼
0.png
(71.47 KB, 下載次數(shù): 104)
下載附件
2016-9-8 20:47 上傳
所有資料下載:
12864顯示avr單片機.rar
(68.2 KB, 下載次數(shù): 117)
2016-9-8 20:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
tlhbgxy
時間:
2018-6-4 16:32
不錯
好資料,51黑有你更精彩!!!
作者:
j182010
時間:
2018-10-8 20:47
正好可以參考
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1