久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
ATmega16的lcd12864顯示程序及proteus仿真工程文件
[打印本頁]
作者:
51黑ff
時間:
2016-9-8 20:48
標題:
ATmega16的lcd12864顯示程序及proteus仿真工程文件
分享一些ATmega16的基本的lcd12864顯示函數,可能對大家的學習有用.仿真文件可以從本帖附件下載
0.png
(234.79 KB, 下載次數: 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數據口,置為輸出
PORTC=0xFF;
en_out; //置EN輸出
rw_out; //置rw輸出
rs_out; //置rs輸出
cs1_out;//置cs1輸出
cs2_out;//置cs2輸出
}
/***
******12864寫命令函數
***/
void lcd_write_com(uchar com)
{
rw_clr; //寫操作
delay_us(3);
rs_clr; //寫數據
PORTC=com;
en_set;
delay_us(3);
en_clr;
}
/***
******12864寫數據函數
***/
void lcd_write_date(uchar date)
{
rw_clr; //寫操作
delay_us(3);
rs_set; //寫數據
PORTC=date;
en_set;
delay_us(3);
en_clr;
}
/***
******12864確定位置數據函數
******頁地址:x范圍0-7
******列地址:y范圍0-63
***/
void lcd_setxy(uchar x,uchar y)
{
lcd_write_com(0xb8+x);
lcd_write_com(0x40+y);
}
/***
******12864寫一個字母或數字函數
******頁地址: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的整數倍
for(j=0;j<8;j++)
{
lcd_write_date(ch[i*8+j]) ; //一共16個字節
delay_us(1);
}
}
cs1_clr; // CS1=0;
cs2_clr; // CS2=0;
}
/***
******12864寫一個漢字函數
******頁地址: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的倍數列
for(j=0;j<16;j++)
{
lcd_write_date(dat[i*16+j]) ; //一共16個字節
delay_us(3);
}
}
cs1_clr; //CS1=0;
cs2_clr; //CS2=0;
}
/***
******12864寫一行字符函數
******頁地址:x范圍0-3
******列地址:y范圍0-15
******字符數: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寫一行漢字函數
******頁地址:x范圍0-3
******列地址:y范圍0-7
******字符數: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:指的是數組指向下 i*32個數組
y++;
delay_us(3);
}
}
/***
******12864寫一個字母或數字反白函數
******頁地址: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個字節
delay_us(3);
}
}
}
cs1_clr; //CS1=0;
cs2_clr; //CS2=0;
}
/***
******12864寫一行字母或數字反白函數
******頁地址: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寫一個漢字反白顯示函數
******頁地址:x范圍0-3
******列地址:y范圍0-7
******字符數: 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個字節
delay_us(3);
}
}
cs1_clr; //CS1=0;
cs2_clr; //CS2=0;
}
/***
******12864寫一行漢字反白顯示函數
******頁地址:x范圍0-3
******列地址:y范圍0-7
******字符數: 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初始化函數
***/
void lcd_init(void)
{
lcd_write_com(0x3f); //開顯示開關
lcd_write_com(0xc0); //LCD行初始地址,共64行
lcd_write_com(0xb8); //LCD頁初始地址 共8頁
lcd_write_com(0x40); //LCD列初始地址,共64列
}
/***
******12864清屏函數
***/
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清除一行顯示函數
**** 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);
}
}
}
復制代碼
0.png
(71.47 KB, 下載次數: 104)
下載附件
2016-9-8 20:47 上傳
所有資料下載:
12864顯示avr單片機.rar
(68.2 KB, 下載次數: 117)
2016-9-8 20:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
tlhbgxy
時間:
2018-6-4 16:32
不錯
好資料,51黑有你更精彩!!!
作者:
j182010
時間:
2018-10-8 20:47
正好可以參考
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
av在线播放不卡
|
中文字幕在线免费观看视频
|
国产精品手机在线观看
|
黄色影院在线观看
|
2014天堂网
|
欧美亚洲国产精品
|
免费一级黄色录像
|
亚洲日本久久
|
亚洲激情在线观看
|
日皮视频在线观看
|
看毛片的网站
|
国产日韩精品在线
|
国产午夜精品一区二区三区视频
|
女人一级一片30分
|
欧美精品乱码视频一二专区
|
日韩成人片
|
国产在线成人
|
中文字幕在线免费看线人
|
午夜精品久久久久
|
91网在线
|
一区二区不卡视频
|
成人福利网
|
www.第四色
|
成人黄色免费视频
|
国产精品久久久久久久久久久久午夜片
|
黄色av免费
|
波多野吉衣一二三区乱码
|
日本中文字幕在线观看
|
久久久不卡
|
久久久久久久久久久久久久久久久久久
|
中文字幕偷拍
|
国产一级二级视频
|
日韩一区二区中文字幕
|
欧美视频在线观看免费
|
在线观看中文字幕
|
久久久久久九九九九
|
99精品国产一区二区
|
欧美视频在线一区
|
国产午夜在线观看
|
久久艹av
|
欧美视频免费看
|