void Gui_box(u16 x, u16 y, u16 w, u16 h,u16 bc) { Gui_DrawLine(x,y,x+w,y,0xEF7D); Gui_DrawLine(x+w-1,y+1,x+w-1,y+1+h,0x2965); Gui_DrawLine(x,y+h,x+w,y+h,0x2965); Gui_DrawLine(x,y,x,y+h,0xEF7D); Gui_DrawLine(x+1,y+1,x+1+w-2,y+1+h-2,bc); }
/** * @brief Gui box. * @param x,y,x1,w,h,bc. * @retval None */ void Gui_box(uint16_t x, uint16_t y, uint16_t w, uint16_t h,uint16_t bc) { LCD_CS_CLR; Gui_DrawLine(x,y,x+w,y,0xEF7D); Gui_DrawLine(x+w-1,y+1,x+w-1,y+1+h,0x2965); Gui_DrawLine(x,y+h,x+w,y+h,0x2965); Gui_DrawLine(x,y,x,y+h,0xEF7D); Gui_DrawLine(x+1,y+1,x+1+w-2,y+1+h-2,bc); LCD_CS_SET; }
// Digital Compass int main(void) { uint8_t Res; int16_t Com_Data[3]; uint16_t x0, y0; unsigned long angle = 0; double radian; /* Setup the microcontroller system. Initialize the Embedded Flash Interface, initialize the PLL and update the SystemFrequency variable. */ xSysCtlClockSet(72000000, xSYSCTL_OSC_MAIN | xSYSCTL_XTAL_8MHZ); xSysCtlDelay(10000); delay_init(72); Lcd_Init(); HMC5883L_Init(); HMC5883L_Cfg(MODE_SIG | GAIN_1090 | SAMPLE_8 | DATA_RATE_15); Lcd_Clear(GRAY0); // Gui_Circle(64, 80, 50, BLUE); Gui_DrawFont_GBK16(64,14,BLUE,GRAY0,"N"); Gui_DrawFont_GBK16(64,132,BLUE,GRAY0,"S"); Gui_DrawFont_GBK16(5,80,BLUE,GRAY0,"W"); Gui_DrawFont_GBK16(116,80,BLUE,GRAY0,"E"); while(1){ Res = HMC5883L_DataGet(&Com_Data[0], &Com_Data[1], &Com_Data[2]); if(Res) break; angle = (unsigned long) (atan2((double)Com_Data[0],(double)Com_Data[1])*(180/3.14159265)+180); //angle = rand()%360; radian = angle * 3.1415926 / 180; if(angle <= 180){ x0 = 64 + (int16_t)(40 * sin(radian)); y0 = 80 - (int16_t)(40 * cos(radian)); } else { x0 = 64 + (int16_t)(40 * sin(radian)); y0 = 80 - (int16_t)(40 * cos(radian)); } Gui_DrawLine(64, 80, x0, y0, BLUE); delay_ms(500); Gui_DrawLine(64, 80, x0, y0, GRAY0); } return 0; }
/************************************************************************************** 功能描述: 在屏幕显示一凸起的按钮框 输 入: u16 x1,y1,x2,y2 按钮框左上角和右下角坐标 输 出: 无 **************************************************************************************/ void DisplayButtonDown(u16 x1,u16 y1,u16 x2,u16 y2) { Gui_DrawLine(x1, y1, x2,y1, GRAY2); //H Gui_DrawLine(x1+1,y1+1,x2,y1+1, GRAY1); //H Gui_DrawLine(x1, y1, x1,y2, GRAY2); //V Gui_DrawLine(x1+1,y1+1,x1+1,y2, GRAY1); //V Gui_DrawLine(x1, y2, x2,y2, WHITE); //H Gui_DrawLine(x2, y1, x2,y2, WHITE); //V }
/** * @brief Display button down. * @param x1,y1,x2,y2. * @retval None */ void DisplayButtonDown(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { LCD_CS_CLR; Gui_DrawLine(x1, y1, x2,y1, GRAY2); Gui_DrawLine(x1+1,y1+1,x2,y1+1, GRAY1); Gui_DrawLine(x1, y1, x1,y2, GRAY2); Gui_DrawLine(x1+1,y1+1,x1+1,y2, GRAY1); Gui_DrawLine(x1, y2, x2,y2, WHITE); Gui_DrawLine(x2, y1, x2,y2, WHITE); LCD_CS_SET; }
/** * @brief Gui box2. * @param x,y,x1,w,h,mode. * @retval None */ void Gui_box2(uint16_t x,uint16_t y,uint16_t w,uint16_t h, uint8_t mode) { LCD_CS_CLR; if(mode==0) { Gui_DrawLine(x,y,x+w,y,0xEF7D); Gui_DrawLine(x+w-1,y+1,x+w-1,y+1+h,0x2965); Gui_DrawLine(x,y+h,x+w,y+h,0x2965); Gui_DrawLine(x,y,x,y+h,0xEF7D); } if(mode==1) { Gui_DrawLine(x,y,x+w,y,0x2965); Gui_DrawLine(x+w-1,y+1,x+w-1,y+1+h,0xEF7D); Gui_DrawLine(x,y+h,x+w,y+h,0xEF7D); Gui_DrawLine(x,y,x,y+h,0x2965); } if(mode==2) { Gui_DrawLine(x,y,x+w,y,0xffff); Gui_DrawLine(x+w-1,y+1,x+w-1,y+1+h,0xffff); Gui_DrawLine(x,y+h,x+w,y+h,0xffff); Gui_DrawLine(x,y,x,y+h,0xffff); } LCD_CS_SET; }
/* ********************************************************************************************************* * 函 数 名: DispCh1Wave * 功能说明: 显示通道1波形 * 形 参:无 * 返 回 值: 无 最小值在上方,输出的波要反转 屏幕如下 0,0----------------- 320 | | | | 240 ********************************************************************************************************* */ static void Ch1WaveDisp(void) { uint16_t i=0,j=0; uint16_t *px,*pxcl; uint16_t *py,*pycl; int16_t iTemp; if (g_DsoA.BufUsed == 0) { g_DsoA.BufUsed = 1; } else { g_DsoA.BufUsed = 0; } if (g_DsoA.BufUsed == 0) { px = g_DsoA.xCh1Buf1; py = g_DsoA.yCh1Buf1; pxcl = g_DsoA.xCh1Buf2; pycl = g_DsoA.yCh1Buf2; } else { px = g_DsoA.xCh1Buf2; py = g_DsoA.yCh1Buf2; pxcl = g_DsoA.xCh1Buf1; pycl = g_DsoA.yCh1Buf1; } /* CH1通道, 输入0V时,ADC采样值 = 1872 ,这是根据多个开发板求到的平均值 */ j = g_DsoA.ADCTrigCnt; for (i=0; i < 300; i++) { px[i] = 10 + i; iTemp = ((u32)g_DsoA.DMA_ADCBuf[j]*100)>>12; if (iTemp > 100) { iTemp = 100; } py[i] = 220 - iTemp; j++; } /* 下面的代码采取清除上帧波形,然后再重新描绘新波形,避免整屏刷新的闪烁感 */ /* 清除上帧波形 */ // if (g_DsoA.BufUsed == 0) // { // LCD_DrawPoints(g_DsoA.xCh1Buf2, g_DsoA.yCh1Buf2, 300, CL_BLUE); // } // else // { // LCD_DrawPoints(g_DsoA.xCh1Buf1, g_DsoA.yCh1Buf1, 300, CL_BLUE); // } // // /* 显示更新的波形 */ FrameDisp(); ChInfoDisp(); // LCD_DrawPoints((uint16_t *)px, (uint16_t *)py, 300, CL_YELLOW); // DMA_SetCurrDataCounter(DMA1_Channel4,10); // DMA1_Channel4->CNDTR = 10; // DMA1_Channel4->CMAR = (uint32_t)&px[0]; // DMA_Cmd(DMA1_Channel4,ENABLE); for (i=0; i<199; i++) { Gui_DrawLine(pxcl[i], pycl[i], pxcl[i + 1], pycl[i + 1], CL_BLUE); Gui_DrawLine(px[i], py[i], px[i + 1], py[i + 1], CL_YELLOW); } }
void Gui_box2(u16 x,u16 y,u16 w,u16 h, u8 mode) { if (mode==0) { Gui_DrawLine(x,y,x+w,y,0xEF7D); Gui_DrawLine(x+w-1,y+1,x+w-1,y+1+h,0x2965); Gui_DrawLine(x,y+h,x+w,y+h,0x2965); Gui_DrawLine(x,y,x,y+h,0xEF7D); } if (mode==1) { Gui_DrawLine(x,y,x+w,y,0x2965); Gui_DrawLine(x+w-1,y+1,x+w-1,y+1+h,0xEF7D); Gui_DrawLine(x,y+h,x+w,y+h,0xEF7D); Gui_DrawLine(x,y,x,y+h,0x2965); } if (mode==2) { Gui_DrawLine(x,y,x+w,y,0xffff); Gui_DrawLine(x+w-1,y+1,x+w-1,y+1+h,0xffff); Gui_DrawLine(x,y+h,x+w,y+h,0xffff); Gui_DrawLine(x,y,x,y+h,0xffff); } }