?? dso.c
字號(hào):
if (KeyCode > 0)
{
/* 有鍵按下 */
switch (KeyCode)
{
case KEY_DOWN_JOY_LEFT: /* 搖桿LEFT鍵按下 */
case KEY_DOWN_JOY_RIGHT: /* 搖桿RIGHT鍵按下 */
case KEY_DOWN_WAKEUP:
case KEY_DOWN_USER:
case KEY_DOWN_JOY_OK: /* 搖桿OK鍵 */
/* 退出,進(jìn)入全速運(yùn)行狀態(tài) */
*pMainStatus = S_RUN;
break;
case KEY_DOWN_JOY_UP: /* 搖桿UP鍵按下 */
bright += BRIGHT_STEP;
if (bright > BRIGHT_MAX)
{
bright = BRIGHT_MAX;
}
SetBackLight(bright);
break;
case KEY_DOWN_JOY_DOWN: /* 搖桿DOWN鍵按下 */
if (bright < BRIGHT_STEP)
{
bright = 0;
}
else
{
bright -= BRIGHT_STEP;
}
SetBackLight(bright);
break;
default:
break;
}
}
}
}
/*******************************************************************************
* 函數(shù)名: DispFrame
* 輸 入: 無(wú)
* 輸 出: 無(wú)
* 功 能:顯示波形窗口的邊框和刻度線(xiàn)
*/
static void DispFrame(void)
{
uint16_t x, y;
LCD_SetTextColor(White); /* 選擇白色 */
/* 繪制一個(gè)實(shí)線(xiàn)矩形框 x, y, h, w */
LCD_DrawRect(9, 19, 202, 302);
/* 繪制垂直刻度點(diǎn) */
for (x = 0; x < 13; x++)
{
for (y = 0; y < 41; y++)
{
LCD_PutPixel(10 + (x * 25), 20 + (y * 5), White);
}
}
/* 繪制水平刻度點(diǎn) */
for (y = 0; y < 9; y++)
{
for (x = 0; x < 61; x++)
{
LCD_PutPixel(10 + (x * 5), 20 + (y * 25), White);
}
}
/* 繪制垂直中心刻度點(diǎn) */
for (y = 0; y < 41; y++)
{
LCD_PutPixel(9 + (6 * 25), 20 + (y * 5), White);
LCD_PutPixel(11 + (6 * 25), 20 + (y * 5), White);
}
/* 繪制水平中心刻度點(diǎn) */
for (x = 0; x < 61; x++)
{
LCD_PutPixel(10 + (x * 5), 19 + (4 * 25), White);
LCD_PutPixel(10 + (x * 5), 21 + (4 * 25), White);
}
}
/*******************************************************************************
* 函數(shù)名: DispButton
* 輸 入: 無(wú)
* 輸 出: 無(wú)
* 功 能:顯示波形窗口右邊的功能按鈕(待擴(kuò)展)
*/
static void DispButton(void)
{
LCD_SetTextColor(White); /* 選擇白色 */
/* 繪制一個(gè)實(shí)線(xiàn)矩形框 x, y, h, w */
LCD_DrawRect(320, 19, 25, 70);
LCD_DisplayString(323, 24, "擴(kuò)展按鈕");
LCD_DrawRect(320, 55, 25, 70);
LCD_DisplayString(323, 60, "擴(kuò)展按鈕");
}
/*******************************************************************************
* 函數(shù)名: DispCh1Wave
* 輸 入: 無(wú)
* 輸 出: 無(wú)
* 功 能:顯示通道1波形
*/
static void DispCh1Wave(void)
{
int16_t i; /* 有符號(hào)數(shù) */
//uint16_t pos;
uint16_t *px;
uint16_t *py;
int16_t iTemp;
static uint8_t s_DispFirst = 0; /* 用于第一次調(diào)用時(shí)刷屏 */
/* 顯示通道1電平標(biāo)記 */
{
static uint16_t y = 70;
LCD_SetTextColor(Blue); /* 選擇藍(lán)色 */
LCD_DrawLine(1, y, 6, Horizontal);
y = g_DSO.Ch1VOffset;
if (y < 20)
{
y = 20;
}
else if (y > 220)
{
y = 220;
}
LCD_SetTextColor(Yellow); /* 選擇白色 */
LCD_DrawLine(1, y, 6, Horizontal);
}
if (s_DispFirst == 0)
{
s_DispFirst = 1;
LCD_Clear(Blue); /* 清屏,背景藍(lán)色 */
}
if (g_DSO.BufUsed == 0)
{
g_DSO.BufUsed = 1;
}
else
{
g_DSO.BufUsed = 0;
}
if (g_DSO.BufUsed == 0)
{
px = g_DSO.xCh1Buf1;
py = g_DSO.yCh1Buf1;
}
else
{
px = g_DSO.xCh1Buf2;
py = g_DSO.yCh1Buf2;
}
/* 計(jì)算當(dāng)前最新的數(shù)據(jù)位置,向前遞減400個(gè)樣本 */
//pos = SAMPLE_COUNT - DMA_GetCurrDataCounter(DMA1_Channel1);
//pos = 0;
/* CH1通道, 輸入0V時(shí),ADC采樣值 = 1872 */
for (i = 0; i < 300; i++)
{
px[i] = 10 + i;
iTemp = g_DSO.Ch1VOffset + (int16_t)((1872 - g_DSO.Ch1Buf[i + 1]) * 10) / g_DSO.Ch1Attenuation;
if (iTemp > 220)
{
iTemp = 220;
}
else if (iTemp < 20)
{
iTemp = 20;
}
py[i] = iTemp;
}
/* 清除上幀波形 */
if (g_DSO.BufUsed == 0)
{
LCD_DrawPoints(g_DSO.xCh1Buf2, g_DSO.yCh1Buf2, 300, Blue);
}
else
{
LCD_DrawPoints(g_DSO.xCh1Buf1, g_DSO.yCh1Buf1, 300, Blue);
}
/* 顯示更新的波形 */
LCD_DrawPoints((uint16_t *)px, (uint16_t *)py, 300, Yellow);
}
/*******************************************************************************
* 函數(shù)名: DispCh2Wave
* 輸 入: 無(wú)
* 輸 出: 無(wú)
* 功 能:顯示通道2波形
*/
static void DispCh2Wave(void)
{
int16_t i; /* 有符號(hào)數(shù) */
//uint16_t pos;
uint16_t *px;
uint16_t *py;
int16_t iTemp;
/* 顯示通道2電平標(biāo)記 */
{
static uint16_t y = 170;
LCD_SetTextColor(Blue); /* 選擇藍(lán)色 */
LCD_DrawLine(1, y, 6, Horizontal);
y = g_DSO.Ch2VOffset;
if (y < 20)
{
y = 20;
}
else if (y > 220)
{
y = 220;
}
LCD_SetTextColor(Green); /* 選擇白色 */
LCD_DrawLine(1, y, 6, Horizontal);
}
if (g_DSO.BufUsed == 0)
{
px = g_DSO.xCh2Buf1;
py = g_DSO.yCh2Buf1;
}
else
{
px = g_DSO.xCh2Buf2;
py = g_DSO.yCh2Buf2;
}
/* 計(jì)算當(dāng)前最新的數(shù)據(jù)位置,向前遞減400個(gè)樣本 */
//pos = SAMPLE_COUNT - DMA_GetCurrDataCounter(DMA2_Channel5);
//pos = 0;
for (i = 0; i < 300; i++)
{
px[i] = 10 + i;
iTemp = g_DSO.Ch2VOffset + (int16_t)((1872 - g_DSO.Ch2Buf[i + 1]) * 10) / g_DSO.Ch2Attenuation;
if (iTemp > 220)
{
iTemp = 220;
}
else if (iTemp < 20)
{
iTemp = 20;
}
py[i] = iTemp;
}
/* 清除上幀波形 */
if (g_DSO.BufUsed == 0)
{
LCD_DrawPoints(g_DSO.xCh2Buf2, g_DSO.yCh2Buf2, 300, Blue);
}
else
{
LCD_DrawPoints(g_DSO.xCh2Buf1, g_DSO.yCh2Buf1, 300, Blue);
}
/* 顯示更新的波形 */
LCD_DrawPoints((uint16_t *)px, (uint16_t *)py, 300, Green);
}
/*******************************************************************************
* 函數(shù)名: DispChInfo
* 輸 入: 無(wú)
* 輸 出: 無(wú)
* 功 能:顯示通道信息
*/
static void DispChInfo(void)
{
char buf[32]; /* 字符顯示緩沖區(qū) */
/* 顯示示波器程序版本 */
LCD_SetTextColor(White); /* 白字 */
LCD_SetBackColor(Blue); /* 藍(lán)底 */
LCD_DisplayString(10, 2, DSO_VER);
/* 顯示通道1信息 */
if (g_DSO.Ch1DC == 1)
{
strcpy(buf, "CH1 DC ");
}
else
{
strcpy(buf, "CH1 AC ");
}
if (g_DSO.Ch1VScale >= 1000)
{
sprintf(&buf[7], "%d.00V", g_DSO.Ch1VScale / 1000);
}
else
{
sprintf(&buf[7], "%dmV", g_DSO.Ch1VScale);
}
if (g_DSO.ActiveCH == 1)
{
LCD_SetTextColor(Yellow); /* 白字 */
LCD_SetBackColor(Magenta); /* 藍(lán)底 */
}
else
{
LCD_SetTextColor(Yellow); /* 黃字 */
LCD_SetBackColor(Blue); /* 藍(lán)底 */
}
LCD_DisplayString(10, 224, (uint8_t *)buf);
/* 顯示通道2信息 */
LCD_SetTextColor(Red); /* CH2 紅色 */
if (g_DSO.Ch2DC == 1)
{
strcpy(buf, "CH2 DC ");
}
else
{
strcpy(buf, "CH2 AC ");
}
if (g_DSO.Ch2VScale >= 1000)
{
sprintf(&buf[7], "%d.00V", g_DSO.Ch2VScale / 1000);
}
else
{
sprintf(&buf[7], "%dmV", g_DSO.Ch2VScale);
}
if (g_DSO.ActiveCH == 2)
{
LCD_SetTextColor(Green); /* 紅字 */
LCD_SetBackColor(Magenta); /* 藍(lán)底 */
}
else
{
LCD_SetTextColor(Green); /* 紅字 */
LCD_SetBackColor(Blue); /* 藍(lán)底 */
}
LCD_DisplayString(120, 224, (uint8_t *)buf);
/* 顯示時(shí)基 */
LCD_SetTextColor(White); /* 時(shí)基白色 */
LCD_SetBackColor(Blue); /* 藍(lán)底 */
if (g_DSO.TimeBase < 1000)
{
sprintf(buf, "Time %3dus", g_DSO.TimeBase);
}
else if (g_DSO.TimeBase < 1000000)
{
sprintf(buf, "Time %3dms", g_DSO.TimeBase / 1000);
}
else
{
sprintf(buf, "Time %3ds ", g_DSO.TimeBase / 1000000);
}
LCD_DisplayString(230, 224, (uint8_t *)buf);
/* 顯示調(diào)節(jié)模式 */
LCD_SetTextColor(White); /* 白字 */
LCD_SetBackColor(Blue); /* 藍(lán)底 */
if (g_DSO.AdjustMode == 1)
{
LCD_DisplayString(245, 2, (uint8_t *)"調(diào)節(jié)位置");
}
else
{
LCD_DisplayString(245, 2, (uint8_t *)"調(diào)節(jié)幅度");
}
sprintf(buf, "采樣頻率:%7dHz", g_DSO.SampleFreq);
LCD_DisplayString(75, 2, (uint8_t *)buf);
}
/*******************************************************************************
* 函數(shù)名: DispDSO
* 輸 入: 無(wú)
* 輸 出: 無(wú)
* 功 能:刷新整個(gè)窗口
*/
static void DispDSO(void)
{
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -