📄 12232.c
字号:
/*******************************************************************
Module: 122x32 dots
Controller: SED1520
Address 0x0379 (Status Port) - Read Only Port, Not used
B7 B6 B5 B4 B3 B2 B1 B0
Busy Ack Paper End On Line Error
25 Pin: 11 10 12 13 15
36 Pin: 11 10 12 13 32
Address 0x037A (Control Port) - Write Only Port, set PC
PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
Output Enable IRQ Enable /Select Init /AutoFd /Strobe
25 Pin: - No Pin Connection- 17 16 14 1
Pin Assignment for this program :
Gnd Vdd V0 A0 R/W E1 DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 E2 RES
25 Pin: 18 +5V 16 14 1 2 3 4 5 6 7 8 9 17 14
********************************************************************/
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <bios.h>
#include <stdlib.h>
#include <math.h>
#include "1520.fon"
#include "bmpa.ptr";
#include "12032.ptr"
#define pb 0x0378
#define pc 0x037a
//control signal
#define com_write 0x02
#define data_write 0x06
//commands
const
disp_off =0xae,
disp_on =0xaf,
start_line =0xc0,
page_0 =0xb8,
page_1 =0xb9,
page_2 =0xba,
page_3 =0xbb,
col_addr =0x00,
duty =0xa9;
#define chip_A 0x01
#define chip_B 0x08
void comm_out(unsigned char, unsigned char,unsigned char);
void check_busy(void);
void init_lcd(unsigned char);
unsigned char G_Memory[4][128];
void comm_out(unsigned char set_c, unsigned char set_db, unsigned char IC)
{
outportb(pc,set_c|IC);
delay(0);
outportb(pb,set_db);
delay(0);
outportb(pc,set_c);
delay(0);
outportb(pc,set_c|IC);
}
void check_busy(void)
{
delay(0);
}
void init_lcd(unsigned char IC)
{
check_busy();
comm_out(com_write,disp_off,IC);
check_busy();
comm_out(com_write,disp_on,IC);
check_busy();
comm_out(com_write,start_line,IC);
check_busy();
comm_out(com_write,page_0,IC);
check_busy();
comm_out(com_write,col_addr,IC);
check_busy();
comm_out(com_write,duty,IC);
}
void Disp(int section)
{
int i,page;
init_lcd(chip_A);
for(page=0;page<4;page++)
{
check_busy();
comm_out(com_write,0xb8+page,chip_A);
check_busy();
comm_out(com_write,col_addr,chip_A);
for (i=0;i<section;i++)
{
check_busy();
comm_out(data_write,G_Memory[page][i],chip_A);
}
}
init_lcd(chip_B);
for(page=0;page<4;page++)
{
check_busy();
comm_out(com_write,0xb8+page,chip_B);
for (i=section;i<section*2; i++)
{
check_busy();
comm_out(com_write,col_addr+i-section,chip_B);
check_busy();
comm_out(data_write,G_Memory[page][i],chip_B);
}
}
}
void read_in(unsigned char *ptr)
{
int row,col;
unsigned char temp;
for(row=0;row<5;row++)
for(col=0;col<122;col++)
{
temp=*ptr++;
G_Memory[row][col]=temp;
}
}
void write_alt_1(void)
{
int row,col;
for(row=0;row<4;row++)
for(col=0;col<122;col++)
{ if(col%2==0) G_Memory[row][col]=0x55;
else G_Memory[row][col]=0xaa;
}
Disp(61);
clrscr();
printf("\nChecker Board Pattern 1");
}
void write_alt_2(void)
{
int row,col;
for(row=0;row<4;row++)
for(col=0;col<122;col++)
{ if(col%2==0) G_Memory[row][col]=0xaa;
else G_Memory[row][col]=0x55;
}
Disp(61);
clrscr();
printf("\nChecker Board Pattern 2");
}
void clear(void)
{
int row,col;
for(row=0;row<4;row++)
for(col=0;col<122;col++)
G_Memory[row][col]=0x00;
Disp(61);
clrscr();
printf("\nAll OFF");
}
void write_all(void)
{
int row,col;
for(row=0;row<4;row++)
for(col=0;col<122;col++)
G_Memory[row][col]=0xff;
Disp(61);
clrscr();
printf("\nALL On");
}
void write_bmp(unsigned char *ptr,int start)
{
int row,col,h,i,page;
unsigned char ch_temp;
clear();
clrscr();
for(page=0;page<4;page++)
for(row=0;row<8;row++)
for (col=0;col<16;col++)
{ ch_temp = ptr[start+col+row*16+page*128];
ch_temp = ch_temp ^0xff;
G_Memory[page][col*8]=G_Memory[page][col*8] +(ch_temp& 0x80)/128*pow(2,row);
G_Memory[page][col*8+1]=G_Memory[page][col*8+1] + (ch_temp&0x40)/64*pow(2,row);
G_Memory[page][col*8+2]=G_Memory[page][col*8+2] + (ch_temp&0x20)/32*pow(2,row);
G_Memory[page][col*8+3]=G_Memory[page][col*8+3] + (ch_temp&0x10)/16*pow(2,row);
G_Memory[page][col*8+4]=G_Memory[page][col*8+4] + (ch_temp&0x08)/8*pow(2,row);
G_Memory[page][col*8+5]=G_Memory[page][col*8+5] + (ch_temp&0x04)/4*pow(2,row);
G_Memory[page][col*8+6]=G_Memory[page][col*8+6] + (ch_temp&0x02)/2*pow(2,row);
G_Memory[page][col*8+7]=G_Memory[page][col*8+7] + (ch_temp&0x01)*pow(2,row);
}
Disp(61);
clrscr();
printf("\nVL Logo BMP");
}
void write_character(int row,int col,unsigned char *ptr)
{
int i,count;
unsigned char temp;
count=col/20;
count=(col%20)*6+count ;
for (i=0;i<5;i++)
{ temp=*ptr++;
G_Memory[row][col/20+col%20*6+i]=temp;
}
}
void write_frame(void)
{ int row,col;
clear();
for(row=0;row<4;row++)
for(col=0;col<122;col++)
{
if(col==0) G_Memory[row][col]=0xff;
else if(col==121) G_Memory[row][col]=0xff;
else if(col==47) G_Memory[row][col]=0xff;
else if(col==51) G_Memory[row][col]=0xff;
else if(row==0) G_Memory[row][col]=0x01;
else if(row==3) G_Memory[row][col]=0x80;
}
Disp(61);
clrscr();
printf("\nConstruction Frame");
}
void write_text(void)
{
clear();
//1st row
write_character(0,0,font_5x8['A'-65]);
write_character(0,1,font_5x8['B'-65]);
write_character(0,2,font_5x8['C'-65]);
write_character(0,3,font_5x8['D'-65]);
write_character(0,4,font_5x8['E'-65]);
write_character(0,5,font_5x8['F'-65]);
write_character(0,6,font_5x8['G'-65]);
write_character(0,7,font_5x8['H'-65]);
write_character(0,8,font_5x8['I'-65]);
write_character(0,9,font_5x8['J'-65]);
write_character(0,10,font_5x8['K'-65]);
write_character(0,11,font_5x8['L'-65]);
write_character(0,12,font_5x8['I'-65]);
write_character(0,13,font_5x8['M'-65]);
write_character(0,14,font_5x8['N'-65]);
write_character(0,15,font_5x8['O'-65]);
write_character(0,16,font_5x8['P'-65]);
// 2nd row
write_character(1,0,font_5x8['Q'-65]);
write_character(1,1,font_5x8['R'-65]);
write_character(1,2,font_5x8['S'-65]);
write_character(1,3,font_5x8['T'-65]);
write_character(1,4,font_5x8['U'-65]);
write_character(1,5,font_5x8['V'-65]);
write_character(1,6,font_5x8['W'-65]);
write_character(1,7,font_5x8['X'-65]);
write_character(1,8,font_5x8['Y'-65]);
write_character(1,9,font_5x8['Z'-65]);
write_character(1,10,font_5x8['A'-65]);
write_character(1,11,font_5x8['B'-65]);
write_character(1,12,font_5x8['C'-65]);
write_character(1,13,font_5x8['D'-65]);
write_character(1,14,font_5x8['E'-65]);
write_character(1,15,font_5x8['F'-65]);
write_character(1,16,font_5x8['G'-65]);
//3rd row
write_character(2,0,font_5x8['H'-65]);
write_character(2,1,font_5x8['I'-65]);
write_character(2,2,font_5x8['J'-65]);
write_character(2,3,font_5x8['K'-65]);
write_character(2,4,font_5x8['L'-65]);
write_character(2,5,font_5x8['M'-65]);
write_character(2,6,font_5x8['O'-65]);
write_character(2,7,font_5x8['P'-65]);
write_character(2,8,font_5x8['Q'-65]);
write_character(2,9,font_5x8['R'-65]);
write_character(2,10,font_5x8['S'-65]);
write_character(2,11,font_5x8['T'-65]);
write_character(2,12,font_5x8['U'-65]);
write_character(2,13,font_5x8['V'-65]);
write_character(2,14,font_5x8['W'-65]);
write_character(2,15,font_5x8['X'-65]);
write_character(2,16,font_5x8['Y'-65]);
//4th row
write_character(3,0,font_5x8['Z'-65]);
write_character(3,1,font_5x8['A'-65]);
write_character(3,2,font_5x8['B'-65]);
write_character(3,3,font_5x8['C'-65]);
write_character(3,4,font_5x8['D'-65]);
write_character(3,5,font_5x8['E'-65]);
write_character(3,6,font_5x8['F'-65]);
write_character(3,7,font_5x8['G'-65]);
write_character(3,8,font_5x8['H'-65]);
write_character(3,9,font_5x8['I'-65]);
write_character(3,10,font_5x8['J'-65]);
write_character(3,11,font_5x8['H'-65]);
write_character(3,12,font_5x8['I'-65]);
write_character(3,13,font_5x8['J'-65]);
write_character(3,14,font_5x8['K'-65]);
write_character(3,15,font_5x8['L'-65]);
write_character(3,16,font_5x8['M'-65]);
Disp(61);
clrscr();
printf("\nText Pattern 1");
}
int keypress(void)
{
int j;
j = getch();
if (j == 27)
return(1);
else
return(0);
}
void main (void)
{
int i=0;
delay(100);
do{
init_lcd(chip_A);
init_lcd(chip_B);
write_frame();
if (keypress() ==1) break;
init_lcd(chip_A);
init_lcd(chip_B);
write_text();
if (keypress() ==1) break;
init_lcd(chip_A);
init_lcd(chip_B);
write_alt_1();
if (keypress() ==1) break;
init_lcd(chip_A);
init_lcd(chip_B);
write_alt_2();
if (keypress() ==1) break;
init_lcd(chip_A);
init_lcd(chip_B);
write_all();
if (keypress() ==1) break;
init_lcd(chip_A);
init_lcd(chip_B);
clear();
if (keypress() ==1) break;
/*
init_lcd(chip_A);
init_lcd(chip_B);
write_bmp((unsigned char *) &bmp12032[0],62+i);
Disp(61);
if (keypress() ==1) break;
/* clear();
write_bmp((unsigned char *) &BMPA[0],92);
Disp(61);
if (keypress() ==1) break;
*/
}while (bioskey(1) != 283);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -