微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC驱动JM240128液晶

PIC驱动JM240128液晶

时间:11-09 来源:互联网 点击:

void str_disp(const uchar *str,uchar x,uchar y)
{
uint temp1 ;
uchar temp,temp2,j,i ;
//wr_cmd0(0x9F) ;
//wr_cmd0(0x81) ;
//add_xy(1,x,y) ;
//while(*str!=/0)
//{
//temp=*(str++)-0x20 ;
//wr_cmd1(temp,0xC0) ;//address auto add 1
//}
//wr_cmd0(jm.disp_mode)
i=x ;
y=y*16 ;
while(*str!=/0)
{
add_xy(i++,y) ;
temp1=(*(str++)-0x20)*16 ;
for(j=0;j<16;j++)
{
temp2=ascii0816[temp1+j];
wr_cmd1(temp2,0xC4) ;
add_add(30) ;
}
}
}
//here as long as we understand how lcd scan screen,we can
//implement what function we want
//this lcd scan in horizon mode
void show_char( uchar dat ,uchar x,uchar y)
{
uint temp1 ;
uchar i ,j ,temp2;
y=y*16 ;
add_xy(x,y) ;
temp1=(dat-0x20)*16 ;
//for one char is composed of 16*8 dots ,so we need scan 16 times in horizontal way
for(j=0;j<16;j++)
{
temp2=ascii0816[temp1+j];
//one times we write in 8 dots
wr_cmd1(temp2,0xC4) ;
add_add(30) ;
}
}
void show_chn(const uchar *chn,uchar x,uchar y)
{
uchar i ;
//x=x*8;
y=y*16 ;
add_xy(x,y) ;
for(i=0;i<16;i++)
{
wr_cmd1(*chn++,0xC4) ;
add_add(1) ;
wr_cmd1(*chn++,0xC4) ;
add_add(29) ;
}
}
void chns_disp(const uchar *chn,uchar x,uchar y,uchar count)
{
uchar i,j ;
for(i=0;i{

add_xy(x+i*2,y) ;
for(j=0;j<16;j++)
{
wr_cmd1(*chn++,0xC4) ;
add_add(1) ;
wr_cmd1(*chn++,0xC4) ;
add_add(29) ;
}
//y=y+16 ;
}
}
void show_img(uchar x,uchar y,uchar width,uchar height,const uchar *img)
{
uchar i ,j,temp1,temp2 ;
//set_add(jm.cur_page) ;
//temp1=(x1-x)/8 ;
//temp2=(y1-y) ;
add_xy(0,y) ;
add_add(x) ;
for(i=0;i{
for(j=0;j{
wr_cmd1(*img++,0xC4) ;
add_add(1) ;
}
add_add(30-width) ;
}
}
void clr_lcd(uchar x,uchar y,uchar width,uchar height)
{
uchar i,j;
width=width/8 ;
//add_xy(0,x,y) ;
for(i=0;i{
add_xy(0,y+i) ;//move to the position where you want to clear
add_add(x) ;
enable_autowr(1) ;
for(j=0;j{
auto_wr(0x00) ;
}
enable_autowr(0) ;
}

}
void clr_ram()
{
uint i ;
set_add(jm.cur_page) ;
enable_autowr(1) ;
for(i=0;i<0xFFFE;i++)
{
auto_wr(0x00) ;
}
enable_autowr(0) ;
set_add(jm.cur_page) ;
}
//this function has some problems
void wr_img(uchar x,uchar y,uchar width,uchar height,const uchar *img)
{
uchar i,j,flag ;
if(jm.offset<0xF00)
flag=0 ;
else
flag=1 ;
width=width/8 ;
for(i=0;i{
add_xy(x,y+i) ;//move to the position where you want to clear
enable_autowr(1) ;
for(j=0;j{
auto_wr(*img++) ;
}
enable_autowr(0) ;
}
}
//draw picture
void draw_vline(uchar x,uchar y,uchar height)
{
uchar i ;
add_xy(x,y) ;
for(i=0;i{
wr_cmd0(0xF8) ;
add_add(30) ;
}

}

void draw_hline(uchar x,uchar y,uchar width)
{
uchar i;
add_xy(x,y) ;
width=width/8 ;
enable_autowr(1) ;
for(i=0;iauto_wr(0xff) ;
enable_autowr(0) ;
}
void draw_frame(uchar x,uchar y,uchar width,uchar height)
{
uchar i,j ;
width=width/8 ;
//draw two horizon line
add_xy(x,y) ;
enable_autowr(1) ;
for(i=0;iauto_wr(0xFF) ;
enable_autowr(0) ;
add_xy(x,y+height) ;
enable_autowr(1) ;
for(i=0;iauto_wr(0xFF) ;
enable_autowr(0) ;
//draw two vertical line
add_xy(x,y) ;
for(i=0;i{
wr_cmd0(0xFF) ;
add_add(29) ;
wr_cmd0(0xF8) ;
add_add(1) ;
}
}
void draw_point(uchar x,uchar y)
{
uchar temp ;
temp=x%8 ;
x=x/8 ;
add_xy(0,y) ;
add_add(x) ;
temp=7-temp+0xF8 ;
wr_cmd0(temp) ;
}
void draw_page(uchar num)
{
uint temp=jm.cur_page ;
set_add(add[num]) ;
clr_lcd(0,0,239,127) ;
draw_frame(0,0,240,126) ;
draw_hline(1,105,220) ;
draw_vline(1,20,90) ;
//chns_disp(str,8,3,6) ;
//chns_disp(str1,205,102,2) ;
//show_chn(str2,0,2) ;
//show_chn(str2+32,0,3) ;
draw_point(12,3) ;
set_add(temp) ;
}

测试程序
#include
#include

#include "main.h"
#include "jm240.h"

void interrupt main_int()
{
;
}
void init_all()
{
init_jm240() ;
}

const uchar str[]={

/*---------------实----------------*/
0x01,0x00,0x00,0x80,0x3F,0xFE,0x28,0x04,0x46,0x88,0x04,0x80,0x08,0x80,0x06,0x80,
0x04,0x80,0x7F,0xFE,0x00,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x18,0x18,0x60,0x10,

/*---------------时----------------*/
0x00,0x10,0x00,0x10,0x7C,0x10,0x44,0x10,0x47,0xFE,0x44,0x10,0x7C,0x10,0x45,0x10,
0x44,0x90,0x44,0x90,0x7C,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x50,0x00,0x20,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top