?? st7787-37pin.c
字號:
#include <reg51.H>
#include <stdio.H>
#include <intrins.H>
#include "board.c"
#include "readrom.c"
#include "page_sel.c"
#include "Trans_romdat.c"
#include "init_ILI9320.c"
#define CHANNEL_X 0x90
#define CHANNEL_Y 0xd0
#define ID 0xe0
sbit DCLK = P3^4;
sbit tpCS = P3^5;
sbit DIN = P3^6;
sbit BUSY = P1^7;
sbit DOUT = P1^5;
sbit PENIRQ = P1^4;
void Pause()
{
while(!(P3&0x08));
}
void set_x(unsigned int x_star,unsigned x_end)
{
Trans_Com_16(0x0050);
Trans_Dat_16(x_star);
Trans_Com_16(0x0051);
Trans_Dat_16(x_end);
}
void set_y(unsigned int y_star,unsigned y_end )
{
Trans_Com_16(0x0052);
Trans_Dat_16(y_star);
Trans_Com_16(0x0053);
Trans_Dat_16(y_end);
}
void Display(unsigned int c1,unsigned char x,unsigned int y)
{
unsigned int i,j;
set_x(0x0000,0x00ef);
set_y(0x0000,0x013f);
Trans_Com_16(0x0022);
for(i=0;i<y;i++)
{
for(j=0;j<x;j++)
{
Trans_Dat_16(c1);
}
}
}
void Display101(unsigned int c1)
{
int i,j,k,l,a=0;
set_x(0x0000,0x00ef);
set_y(0x0000,0x013f);
Trans_Com_16(0x0022);
for(i=0;i<40;i++)
{
for(l=0;l<120;l++)
{for(j=0;j<8;j++)
Trans_Dat_16( c1); // Red.
for(k=0;k<8;k++)
Trans_Dat_16(~c1);
}
c1=~c1;
}
}
void Disp_rom(unsigned char page,unsigned int addr,unsigned char x,unsigned int y)
{
unsigned int j,k;
unsigned char high8,low8;
set_x(0x0000,0x00ef);
set_y(0x0000,0x013f);
page_se(page);
Trans_Com_16(0x0022);
for(j=0;j<y;j++)
{
for(k=0;k<x;k++)
{
high8=read_rom(addr++);
low8=read_rom(addr++);
Trans_romdat(high8,low8);
while (addr==0x0000)
{page_se(++page);break;}
}
}
}
void SPI_WriteCharTo7643(unsigned char cmd) // SPI寫數據
{
unsigned char i;
for(i=0; i<8; i++)
{
DIN=cmd&0x80;
//DIN = CY;
DCLK = 0; // DCLK 上升沿 將DIN 數據發送出去 ...
_nop_();_nop_();_nop_();
DCLK = 1;
_nop_();_nop_();_nop_();
cmd <<= 1;
}
DCLK = 0;
_nop_();_nop_();_nop_();
}
unsigned int SPI_ReadACharFrom7643(void) // SPI 讀數據
{
unsigned char i;
unsigned int value=0;
for(i=0; i<12; i++)
{
DOUT = 1;
value <<= 1;
DCLK = 1; // 下降沿有效
_nop_();_nop_();_nop_();
DCLK = 0;
_nop_();_nop_();_nop_();
if(DOUT){
value++;
}
}
return value;
}
void IdleClock(void)
{
unsigned char i;
for(i=0;i<4;i++)
{
DCLK = 1;
_nop_();_nop_();_nop_();
DCLK = 0;
_nop_();_nop_();_nop_();
}
}
unsigned int ReadADC(unsigned char cmd)
{
unsigned int value;
tpCS = 0;
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
SPI_WriteCharTo7643(cmd); // 8 clocks
while(BUSY==0);
value = SPI_ReadACharFrom7643(); // 12 clock
IdleClock(); // 4 clocks
tpCS = 1;
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
return value;
}
void Init_7643(void)
{
DCLK = 0;
tpCS = 1;
DIN = 1;
BUSY = 1;
DOUT = 1;
PENIRQ = 1;
ReadADC(CHANNEL_X); // Enable PENIRQ
}
void main(void)
{
while(1)
{
init_LCD();
Init_7643();
while(PENIRQ)
{;}
ReadADC(ID);
Display(0xF800,240,320);
Pause();
//Display(0x07E0,240,320);
//Pause();
//Display(0x001F,240,320);
//Pause();
//Display(0x0000,240,320);
//Pause();
//Display(0xFFFF,240,320);
//Pause();
//Display101(0xFFFF);
//Pause();
//Disp_rom(0x02,0x5d00,240,320);
//Pause();
//Disp_rom(0x04,0xb500,240,320);
//Pause();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -