📄 demo.c
字号:
#include "E:\produce\ht271\c51\8803_bus\Demo.h"
//==============================================================================
//Subroutine: Test Display/Inverse/Blink/Cursor
//Function:
//==============================================================================
data unsigned char OFFSET_SX;
data unsigned char OFFSET_SY;
data unsigned int OFFSET_NO;
data unsigned int OFFSET_AR;
void timer0(void) interrupt 1 using 1 /*5ms interrupt*/
{
TH0 = 0xEE; /*EE-(4608/256);*/
TL0 = 0x11; /*11-(4608%256); frequency=11.05926*/
}
extern void lcd_pr(unsigned char *pr);
void Test_Touch(void)
{
uchar temp, X1, X2, Y1, Y2;
uint Timeout;
ADC_On();
LCD_GotoXY(0, 210);
for(temp=0 ; temp<22 ; temp++)
{ LCD_DataWrite(sRAiO5[temp]);
}
Timeout=0;
while(1)
{
temp = ADC_Touch();
if(temp==0x01)
{
Timeout=0;
X1 = ADC_X();
Y1 = ADC_Y();
Delay_1ms(2);
temp = ADC_Touch();
if(temp==0x01)
{
X2 = ADC_X();
Y2 = ADC_Y();
Delay_1ms(2);
LCD_GotoXY(0, 210);
if((X1==X2) && (Y1==Y2))
{
LCD_Bold();
for(temp=0 ; temp<11 ; temp++)
{ LCD_DataWrite(sRAiO7[temp]);
}
Delay_1ms(10);
LCD_GotoXY(13, 210);
Print_Hex(Y1);
LCD_GotoXY(21, 210);
Print_Hex(X1);
LCD_NoBold();
}
}
}
else
{
LCD_GotoXY(0, 210);
for(temp=0 ; temp<11 ; temp++)
{ LCD_DataWrite(sRAiO6[temp]);
}
Timeout++;
if(Timeout==0x08FF) break;
}
}
}
/******************************************************************************/
/*Main program area */
/******************************************************************************/
void main(void)
{
data uchar i,state;
i=1;
IP = 0x02; /* 优先级为定时器0,外部中断,串行口*/
TH1 = 0xf4;
TL1 = 0xf4; /*4800*/
SCON = 0xd0; /*方式3*/
PCON = 0x80;
TH0 = 0xee; /*-(4608/256);*/
TL0 = 0x10; /*-(4608%256); 晶振 11.05926*/
TCON = 0x50; /* 开时间T1 T0中断 无外部中断*/
TMOD = 0x21; /* T1为方式2的自动重装;T0为方式1的定时方式*/
IE = 0x82; /* 串行口中断允许,ET1允许,INT1,ET0允许,INT0*/
// AUXR = 0xff; //Enable MOVX for external interface
// LCD_Reset();
LCD_Initial();
i=LCD_CmdRead(LCCR);
state = 0;
// LCD_CmdWrite(LCCR, 0x14);Delay_1ms(200);
Test_Font();
LCD_Graphic();
OFFSET_SX=5; OFFSET_SY=60; OFFSET_NO=2;
lcd_pr("呆板");
OFFSET_SX=10; OFFSET_SY=60; OFFSET_NO=2;
lcd_pr("板");
while(1)
_nop_();
while(i)
{
switch(state)
{
case 0:
Test_Font();
break;
case 1:
Test_Pattern();
break;
case 2:
Test_Font();
Test_Touch();
break;
}
state++;
if(state==3) state=0;
}
{
uchar code st[]="大家可是SUN艰苦";
LCD_Clear (); //清屏
LCD_GotoXY(3,64);
LCD_DataWrite(st[0]); LCD_DataWrite(st[1]);
LCD_DataWrite(st[2]); LCD_DataWrite(st[3]);
LCD_DataWrite(st[4]); LCD_DataWrite(st[5]);
LCD_DataWrite(st[6]); LCD_DataWrite(st[7]);
LCD_DataWrite(st[8]); LCD_DataWrite(st[9]);
LCD_DataWrite(st[10]);
LCD_Bold(); //粗体字体
LCD_NoBold (); //正常
LCD_Inv (); //反白字体
LCD_NoInv (); //正常
LCD_GInv (); //整屏反白字体
LCD_NoGInv (); //正常
LCD_Blk (); //整屏闪烁字体
LCD_NoBlk (); //正常
LCD_CurBlk (); //光标闪烁
LCD_NoCurBlk (); //光标不闪烁
LCD_BlkTim (8); //闪烁时间
LCD_Cur (); //光标显示
LCD_NoCur (); //光标不显示
LCD_CurHei (2); //设定光标高度
LCD_LineDis (2); //设定行间距
LCD_AlignOn (); //全角
LCD_AlignOff (); //半角
LCD_FontSize (0x00); //水平1,2,3,4 垂直1,2,3,4
LCD_FontSize (0x05); //水平1,2,3,4 垂直1,2,3,4
LCD_FontSize (0x0a); //水平1,2,3,4 垂直1,2,3,4
LCD_FontSize (0x0f); //水平1,2,3,4 垂直1,2,3,4
_nop_();
}
}
/******************************************************************************/
/*Sub program area */
/******************************************************************************/
//==============================================================================
//Subroutine: Test_Pattern
//Function:
//==============================================================================
void Test_Pattern(void)
{
uchar x, y,a,b;
uchar pat, temp1, temp2,k;
LCD_ON();
LCD_Graphic();
LCD_CmdWrite(MAMR, 0xb2);
for(pat=0; pat<10; pat++)
{
switch(pat)
{
case 0: temp1 = 0xff; temp2 = 0xff; break;
case 1: temp1 = 0x00; temp2 = 0xff; break;
case 2: temp1 = 0x55; temp2 = 0xaa; break;
case 3: temp1 = 0xaa; temp2 = 0x55; break;
case 4: temp1 = 0xcc; temp2 = 0x33; break;
case 5: temp1 = 0x33; temp2 = 0xcc; break;
case 6: temp1 = 0xF0; temp2 = 0x0f; break;
case 7: temp1 = 0x0F; temp2 = 0xF0; break;
case 8: temp1 = 0xff; temp2 = 0x00; break;
case 9: temp1 = 0x00; temp2 = 0x00; break;
}
a=0;b=0;
LCD_GotoXY(0, 0);
LCD_GotoXY(a, b);
for(y=0 ; y<cYSize ; y++)
{
for(x=0 ; x<cXSize/2 ; x++)
{
k=(y/8)%2;
if(k==0) {LCD_DataWrite(temp1);LCD_DataWrite(temp2);}
else {LCD_DataWrite(temp2);LCD_DataWrite(temp1);}
}
}
//Delay100ms(10);
}
}
//==============================================================================
//Subroutine: Test_Font, 8x18, 8x16m 16x16, Bold
//Function:
//==============================================================================
void Test_Font(void)
{
uchar temp;
LCD_ON();
LCD_Clear();
LCD_Text();
LCD_AlignOff();
LCD_GotoXY(0, 0);
LCD_PrintStr(sRAiO1, cXSize);
Delay_1ms(20);
LCD_PrintStr(sRAiO2, cXSize);
Delay_1ms(20);
LCD_Inv();
LCD_PrintStr(sRAiO3, cXSize);
Delay_1ms(20);
LCD_NoInv();
LCD_GotoXY(10, 75);
LCD_FontSize(0x05);
for(temp=0 ; temp<11 ; temp++)
{ LCD_DataWrite(sRAiO4[temp]);
Delay_1ms(1);
}
Delay_1ms(20);
LCD_FontSize(0x00);
LCD_GotoXY(0, 120);
for(temp=0x30 ; temp<=0x7F ; temp++)
{ LCD_DataWrite(temp);
}
Delay_1ms(20);
LCD_GotoXY(0, 160);
LCD_Bold();
for(temp=0x30 ; temp<=0x7F ; temp++)
{ LCD_DataWrite(temp);
}
LCD_NoBold();
Delay_1ms(250);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -