?? 070.txt
字號:
#pragma db code
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
/////////////////////////////////////////////
//根據液晶segment,common值改變。
#define picture1
#define interface_16_bit
#define common 68
#define segment 96
#define PORTL P0
#define PORTH P2
//control bus
sbit CS_MAIN=P3^0; //chip select signal
sbit RES=P3^7; //reset signal
sbit SCL=P3^1; //data/command control signal
sbit SDA=P3^2; //write strobe signal
sbit READ=P3^3;
//shift key
sbit KEY5=P1^0; //waitkey
sbit KEY1=P1^1;
//define tsc2046 interface
sbit DCLK = P1^2;
sbit CS_TP = P1^3;
sbit DIN = P1^4;
sbit BUSY = P1^5;
sbit DOUT = P1^6;
sbit PIN = P1^7;
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
/****************************************************************************
** 函數聲明
*****************************************************************************/
void LCD_write_c(uint com);
void LCD_write_d(uint dat);
void cpu_initial(void);
void init_lcd(void);
void MainLcdFill(uint A);
void picture_display(unsigned char *pi);
void Delay(uint adj);
void LCD_reset(void);
void cpu_initial(void);
void waitkey(void);
void lcd_clr( void );
void show_word(void);
void MainLcdcross_1();
void MainLcdcross();
/****************************************************************************
** 主程序
*****************************************************************************/
//////////////////////////////////////
//test the touch panel
/////////////////////////////////////
int main(void)
{
cpu_initial();
LCD_reset();
init_lcd();
MainLcdFill(0xffff);
Delay(50);
waitkey();
MainLcdFill(0x00aa);
Delay(50);
waitkey();
MainLcdcross_1();
Delay(500);
waitkey();
MainLcdcross();
Delay(500);
waitkey();
MainLcdFill(0x0000);
Delay(50);
waitkey();
show_word();
Delay(500);
waitkey();
}
/*===========================================================================
** 函數名稱: cpu_initial()
** 功能描述: GPIO口PIN腳設置
============================================================================*/
void cpu_initial(void)
{
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
}
/*===========================================================================
** 函數名稱: LCD_write_d()
** 功能描述: 輸出數據,并行,軟件模擬8080,
** 功能描述: 8bit,通過P0.10-P0.17傳送數據
** 入口參數:dat: 輸出數據
** 出口參數: 無
============================================================================*/
#ifdef interface_8_bit
void LCD_write_d(uint dat)
{
CS_MAIN=0;
DC=1;
READ=1;
//WRITE=0;
PORTL=(dat>>8);
WRITE=0;
//WRITE=0;
WRITE=1;
//WRITE=0;
PORTL=(dat&0x00ff);
WRITE=0;
//WRITE=0;
WRITE=1;
}
/*===========================================================================
** 函數名稱: LCD_write_c()
** 功能描述: 輸出指令,并行,軟件模擬8080
** 功能描述: 8 bit,通過P0.10-P0.17 傳送數據
** 入口參數:com: 指令碼
** 出口參數:無
============================================================================*/
void LCD_write_c(uint com)
{
CS_MAIN=0;
DC=0;
//WRITE=0;
PORTL=(com>>8);
WRITE=0;
WRITE=1;
//WRITE=0;
PORTL=(com&0x00ff);
WRITE=0;
WRITE=1;
}
#endif
/*===========================================================================
** 函數名稱: LCD_write_d()
** 功能描述: 輸出數據,并行,軟件模擬8080,
** 功能描述: 16bit,通過P0-P2傳送數據
** 入口參數:dat: 輸出數據
** 出口參數: 無
============================================================================*/
#ifdef interface_16_bit
void LCD_write_d(uint dat)
{
uchar i;
CS_MAIN=0;
SCL=0;
SDA=1;
SCL=1;
for(i=0;i<8;i++)
{
SCL=0;
if(dat&0x80)
SDA=1;
else
SDA=0;
SCL=1;
dat<<=1;
}
CS_MAIN=1;
}
/*===========================================================================
** 函數名稱: LCD_write_c()
** 功能描述: 輸出指令,并行,軟件模擬8080
** 功能描述: 16 bit,通過P0 ,p2 傳送數據
** 入口參數:com: 指令碼
** 出口參數:無
============================================================================*/
void LCD_write_c(uint com)
{
uchar i;
CS_MAIN=0;
SCL=0;
SDA=0;
SCL=1;
for(i=0;i<8;i++)
{
SCL=0;
if(com&0x80)
SDA=1;
else
SDA=0;
SCL=1;
com<<=1;
}
CS_MAIN=1;
}
#endif
/*===========================================================================
** 函數名稱: init_lcd
** 功能描述: 輸出顯示數據,并行,軟件模擬8080
** 功能描述: 對LCD進行初始化
** 功能描述: 顯示圖片數據8bit
============================================================================*/
void init_lcd(void)
{
Delay(50);
LCD_write_c(0xe2);//
LCD_write_c(0x2f);
LCD_write_c(0x7a);
LCD_write_c(0xa4);
LCD_write_c(0xaf);
lcd_clr();
}
/*===========================================================================
** 函數名稱: show_standard()
** 功能描述: 顯示
** 入口參數: A : 16位顯示數據/象素
============================================================================*/
void MainLcdFill(uint A )
{
uint t,l;
for(l=0;l<common;l++)
{
for(t=0;t<segment;t++)
{
LCD_write_d(A);
}
// waitkey();
}
}
///////cross///////
void MainLcdcross()
{
uint t,l;
for(l=0;l<9;l++)
{
for(t=0;t<24;t++)
{
LCD_write_d(0xcc);
LCD_write_d(0xcc);
LCD_write_d(0x33);
LCD_write_d(0x33);
}
// waitkey();
}
}
///////cross1///////
void MainLcdcross_1()
{
uint t,l;
for(l=0;l<9;l++)
{
for(t=0;t<48;t++)
{
LCD_write_d(0xff);
LCD_write_d(0x00);
}
// waitkey();
}
}
/*===========================================================================
** 函數名稱: LCD_reset()
** 功能描述: 復位LCD,注意,有時需調整前后兩個delay()的輸入值大小
============================================================================*/
void LCD_reset(void)
{
Delay(1);
RES=0;
Delay(2);
RES=1;
Delay(20);
}
/*===========================================================================
** 函數名稱: waitkey
** 功能描述:
** 功能描述:
============================================================================*/
void waitkey(void)
{
while(1)
{
while(KEY5!= 0);
Delay(1);
if (KEY5 == 0) break;
}
}
/*===========================================================================
** 函數名稱: Delay
** 功能描述: 1ms
** 功能描述:
============================================================================*/
void Delay(uint adj)
{
uint i;
for(;adj>0;adj--)
{
for(i=0;i<250;i++);
}
}
/************清屏***********/
void lcd_clr( void )
{
unsigned char i,j,page;
for( i = 0; i < 8; i++ )
{
page = i;
page |= 0xb8;
LCD_write_d( page );
LCD_write_d( 0x40 );
for( j = 0; j < 68; j++ )
LCD_write_d( 0 );
LCD_write_d( page );
LCD_write_d( 0x40 );
for( j = 0; j < 68; j++ )
LCD_write_d( 0);
for( i = 0; i < 8; i++ )
{
page = i;
page |= 0xb8;
LCD_write_c( page );
LCD_write_c( 0x40 );
for( j = 0; j < 68; j++ )
LCD_write_d( 0 );
LCD_write_d( page );
LCD_write_d( 0x40 );
for( j = 0; j < 68; j++ )
LCD_write_d( 0 );
}
}
}
/*===========================================================================
** 函數名稱: void show_word()
** 功能描述: 顯示文字
============================================================================*/
void show_word(void)
{
LCD_write_c(0xb3); //寄存器
LCD_write_c(0x10);
LCD_write_c(0x10);
LCD_write_c(0xa1); //刷屏方式
LCD_write_c(0xc0);
LCD_write_d(0x00);//SP
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x46);//S
LCD_write_d(0x49);
LCD_write_d(0x49);
LCD_write_d(0x49);
LCD_write_d(0x31);
LCD_write_d(0x00);//SP
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x3C);//U
LCD_write_d(0x40);
LCD_write_d(0x40);
LCD_write_d(0x20);
LCD_write_d(0x7C);
LCD_write_d(0x00);//SP
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x7C);//N
LCD_write_d(0x08);
LCD_write_d(0x04);
LCD_write_d(0x04);
LCD_write_d(0x78);
LCD_write_d(0x00);//SP
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x00);
LCD_write_d(0x00);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -