湖南工业大学本科毕业设计(论文)
附 录
void CheckTouchpanel(void) {
// int DAT[3][2];
int DAT1[3][2]={11,30,309,220,150,120}; int x1,y1,x2,y2,x3,y3,xl1,yl1,xl2,yl2,xl3,yl3; float a,b,c,d,e,f,k; rINTMOD=0x00; rCLKCON|=0x01<<15; rADCDLY=50000;
rADCCON=(1<<14)+(ADCPRS<<6); rADCTSC=0xd3;
pISR_ADC = (int)AdcTsAuto;
rINTMSK=~BIT_ADC; //ADC Touch Screen Mask bit clear rINTSUBMSK=~(BIT_SUB_TC); rDSC0 = 0x2aa; rDSC1 = 0x2aaaaaaa;
lll:
Lcd_ClearScr(0x00);
GlibCursor(DAT1[checkcount][0],DAT1[checkcount][1],0xffff); while(checkcount<1); Lcd_ClearScr(0x00);
GlibCursor(DAT1[checkcount][0],DAT1[checkcount][1],0xffff); while(checkcount<2); Lcd_ClearScr(0x00);
GlibCursor(DAT1[checkcount][0],DAT1[checkcount][1],0xffff); while(checkcount<3); xl1=DAT1[0][0];
26
湖南工业大学本科毕业设计(论文)
xl2=DAT1[1][0]; xl3=DAT1[2][0]; yl1=DAT1[0][1]; yl2=DAT1[1][1]; yl3=DAT1[2][1]; x1=DAT[0][0]; x2=DAT[1][0]; x3=DAT[2][0]; y1=DAT[0][1]; y2=DAT[1][1]; y3=DAT[2][1];
k=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3); a=((xl1-xl3)*(y2-y3)-(xl2-xl3)*(y1-y3))/k; b=((x1-x3)*(xl2-xl3)-(xl1-xl3)*(x2-x3))/k;
c=(y1*(x3*xl2-x2*xl3)+y2*(x1*xl3-x3*xl1)+y3*(x2*xl1-x1*xl2))/k; d=((yl1-yl3)*(y2-y3)-(yl2-yl3)*(y1-y3))/k; e=((x1-x3)*(yl2-yl3)-(yl1-yl3)*(x2-x3))/k;
f=(y1*(x3*yl2-x2*yl3)+y2*(x1*yl3-x3*yl1)+y3*(x2*yl1-x1*yl2))/k; Lcd_ClearScr(0x00); GlibCursor(110,110,0xffff); while(checkcount<4);
x1=DAT[3][0]; y1=DAT[3][1]; xl1=a*x1+b*y1+c; yl1=d*x1+e*y1+f;
if((xl1>=100)&&(xl1<=120)&&(yl1>=100)&&(yl1<=120)) {
Uart_Printf(\k=-0.12345;
//
27
湖南工业大学本科毕业设计(论文)
}
Uart_Printf(\
Uart_Printf(\checkcount=0; goto lll;
else { } while(1);
Uart_Printf(\k=100.23546;
Uart_Printf(\
Uart_Printf(\checkcount=0; goto lll;
// }
void Main(void) {
char *mode; int i; U8 key;
U32 mpll_val = 0 ; //U32 divn_upll = 0 ; Port_Init(); Isr_Init();
i = 2 ; //don't use 100M! switch ( i ) { case 0: //200
key = 12;
28
湖南工业大学本科毕业设计(论文)
mpll_val = (92<<12)|(4<<4)|(1); break;
case 1: //300
key = 13;
mpll_val = (67<<12)|(1<<4)|(1); break;
case 2: //400
key = 14;
mpll_val = (92<<12)|(1<<4)|(1); break;
case 3: //440!!!
key = 14;
mpll_val = (102<<12)|(1<<4)|(1); break;
default: }
//init FCLK=400M, so change MPLL first
ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3); ChangeClockDivider(key, 12); cal_cpu_bus_clk();
consoleNum = 0; // Uart 1 select for debug. Uart_Init( 0,115200 ); Uart_Select( consoleNum ); Beep(2000, 100);
rMISCCR=rMISCCR&~(1<<3); // USBD is selected instead of USBH1 rMISCCR=rMISCCR&~(1<<13); // USB port 1 is enabled.
key = 14;
mpll_val = (92<<12)|(1<<4)|(1); break;
29
湖南工业大学本科毕业设计(论文)
rDSC0 = 0x2aa; rDSC1 = 0x2aaaaaaa;
//Enable NAND, USBD, PWM TImer, UART0,1 and GPIO clock, //the others must be enabled in OS!!! rCLKCON = 0xfffff0; MMU_Init(); //
pISR_SWI=(_ISR_STARTADDRESS+0xf0); //for pSOS Led_Display(0x66); mode=\Clk0_Disable(); Clk1_Disable(); mpll_val = rMPLLCON; Lcd_TFT_Init() ; SD_card_init();
download_run=1; //The default menu is the Download & Run mode.
// LCD initial
// Lcd_TFT_Init(); // FAT_Test(); }
FAT_Init();
PlayMusicFromSD(\忘记.wav\if(i=PlayMusicFromSD(\昨天.wav\
Uart_Printf(\播放失败,错误号:%d\\n\
Uart_Getch(); CheckTouchpanel();
30