📄 12232.c
字号:
#include <iom16v.h>
#include <macros.h>
#include<12232.h>
#include<main.h>
#include<fat16.h>
uint16 zikustart;
extern BPB_SecPerClus;
extern BUFFER[512];
void delay_1ms(void)
{
unsigned int i;
for(i=0;i<1142;i++);
}
void delay_10us(void)
{
unsigned char i;
for(i=0;i<10;i++);
}
void delay(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)delay_1ms();
}
void OUTMD(unsigned char i)
{
delay_10us();
lcd_control_port = 0xff;
lcd_control_port &= ~RW;
delay_10us();
lcd_control_port |= A0;
delay_10us();
DATA=i;
delay_10us();
lcd_control_port &= ~E1;
}
void OUTMI(unsigned char i)
{
delay_10us();
lcd_control_port = 0xff;
lcd_control_port &= ~RW;
delay_10us();
lcd_control_port &= ~A0;
delay_10us();
DATA=i;
delay_10us();
lcd_control_port &= ~E1;
}
void OUTSD(unsigned char i)
{
delay_10us();
lcd_control_port = 0xff;
lcd_control_port &= ~RW;
delay_10us();
lcd_control_port |= A0;
delay_10us();
DATA=i;
delay_10us();
lcd_control_port &=~E2;
}
void OUTSI(unsigned char i)
{
delay_10us();
lcd_control_port = 0xff;
lcd_control_port &= ~RW;
delay_10us();
lcd_control_port &= ~A0;
delay_10us();
DATA=i;
delay_10us();
lcd_control_port &=~E2;
}
void lcdini(void)
{
DATA=0xff;
lcd_data_ddr|=0xff;
lcd_control_port|=0xff;
lcd_control_ddr=0x0f;
lcd_light_ddr|=0x02;
OUTMI(0XAE);
OUTMI(0XC0);
OUTMI(0XA0);
OUTMI(0XA4);
OUTMI(0XA9);
OUTMI(0XAF);
OUTSI(0XAE);
OUTSI(0XC0);
OUTSI(0XA0);
OUTSI(0XA4);
OUTSI(0XA9);
OUTSI(0XAF);
}
void SetPage(uint8 page0,uint8 page1)
{
OUTMI(0xB8|page0);
OUTSI(0xB8|page1);
}
void SetAddress(uint8 address0,uint8 address1)
{
OUTMI(address0);
OUTSI(address1);
}
void PutCharR(uint8 ch)
{
OUTSD(ch);
}
void PutCharL(uint8 ch)
{
OUTMD(ch);
}
void clrscr(void)
{
uint8 i;
uint8 page;
for (page=0;page<4;page++)
{
SetPage(page,page);
for (i=0;i<61;i++)
{
SetAddress(i,i);
PutCharL(0x00);
PutCharR(0x00);
}
}
}
void lcd_init(void)
{
lcdini(); //reset
clrscr(); //clr
clrscr();
}
uint16 get_location(uint8 data1,uint8 data2)
{
uint8 i;
uint16 temp1,temp2;
uint32 location;
uint32 start;
data1-=0xa1,data2-=0xa1;
temp1=data1*94;
location=temp1+data2;
location=location<<5;
temp1=location>>9;
temp2=location%512;
start=ClusConvLBA(zikustart);
start=start+temp1;
ReadBlock(start);
return temp2;
}
void show_chin(uint8 *chin,uint8 adress1,uint8 lenth,uint8 loc)
{
uint8 i,j=0,p,window=0,loca;
loca=0;
p=adress1;
if(loc) loca=2;
while(lenth)
{
for(i=0;i<32;i++)
{
if(p>76) window=1,p=p%61;
if(i<16)
{
SetPage(loca,loca);
SetAddress(p,p);
if(window) PutCharR(chin[j]);
else PutCharL(chin[j]);
}
else
{
SetPage(loca+1,loca+1);
SetAddress(p-16,p-16);
if(window) PutCharR(chin[j]);
else PutCharL(chin[j]);
}
p++;
j++;
}
p-=16;
lenth--;
}
}
uint16 show_filename(uint8 *chinese1,uint8 adress1)
{
uint16 start;
start=get_location(chinese1[0],chinese1[1]);
return start;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -