void LED_ShowProcess(void) { INT8U i, j; for(i=0;i<1;i++) { for(j=0; j<4; j++) { switch(falsebitLEDGroup[i][j]) { case 0x00: //灭 LEDBuffer[i/2] &=~(1<<(j+(i%2)*4));//第一,二,三,四个灯灭的状态 0xfe =1<<i break; case 0x01: //亮 LEDBuffer[i/2] |=1<<(j+(i%2)*4);//第一,二,三,四个灯亮的状态 break; case 0x02: //闪烁 if(LEDflash_Cnt<LEDFLASHTIME)//闪烁周期1000MS { LEDBuffer[i/2] &=~(1<<(j+(i%2)*4)); } else//如果此时灭状态则亮 { LEDBuffer[i/2] |=1<<(j+(i%2)*4); } break; default: break;
时间: 2024-02-15 18:27:46 浏览: 13
这段代码是用来控制 LED 灯的显示的,其中使用了一个 LEDBuffer 数组来存储 LED 灯的状态。通过 for 循环和 switch 语句,可以根据 falsebitLEDGroup 数组中的值来控制每个 LED 灯的亮、灭、闪烁状态。如果 falsebitLEDGroup[i][j] 的值为 0,则表示该 LED 灯应该灭掉;如果值为 1,则表示该 LED 灯应该亮起;如果值为 2,则表示该 LED 灯应该闪烁。在闪烁状态下,根据 LEDflash_Cnt 的值来判断当前 LED 灯应该处于亮还是灭状态。
相关问题
void LED_Scan(void) // { ((LEDBrightTemp++)>=LEDBright)?(LEDStatus =0):(LEDStatus =1); LEDBrightTemp &=0X0F; switch(LEDStatus) { case 0://灭 GPIOC->BRR=0x0007; break; case 1://显示 DISP_LED(LEDBuffer); break; default:break; } } void LED_ShowProcess(void) { INT8U i, j; for(i=0;i<1;i++) { for(j=0; j<4; j++) { switch(falsebitLEDGroup[i][j]) { case 0x00: //灭 LEDBuffer[i/2] &=~(1<<(j+(i%2)*4));//第一,二,三,四个灯灭的状态 0xfe =1<<i break; case 0x01: //亮 LEDBuffer[i/2] |=1<<(j+(i%2)*4);//第一,二,三,四个灯亮的状态 break; case 0x02: //闪烁 if(LEDflash_Cnt<LEDFLASHTIME)//闪烁周期1000MS { LEDBuffer[i/2] &=~(1<<(j+(i%2)*4)); } else//如果此时灭状态则亮 { LEDBuffer[i/2] |=1<<(j+(i%2)*4); } break; default: break; } } } }
这是一个控制LED灯闪烁的函数。具体实现如下:
void LED_Scan(void)
该函数用于控制LED灯的扫描和显示状态。
((LEDBrightTemp++)>=LEDBright)?(LEDStatus =0):(LEDStatus =1);
该语句用于控制LED的亮度,当亮度达到最大值时,LED状态设置为0(灭),否则设置为1(显示)。
LEDBrightTemp &=0X0F;
该语句用于控制LED的亮度,将LEDBrightTemp与0X0F进行与操作,得到的结果为LED亮度的范围。
switch(LEDStatus)
该语句用于对LED的状态进行判断,根据不同的状态,执行不同的操作。
case 0://灭
当LED状态为0(灭)时,关闭GPIOC的前三个引脚,即灯不亮。
case 1://显示
当LED状态为1(显示)时,调用DISP_LED函数,根据LEDBuffer数组中存储的数据,控制LED的亮灭。
void LED_ShowProcess(void)
该函数用于显示LED灯的状态。
for(i=0;i<1;i++)
{
for(j=0; j<4; j++)
{
switch(falsebitLEDGroup[i][j])
{
case 0x00: //灭
LEDBuffer[i/2] &=~(1<<(j+(i%2)*4));//第一,二,三,四个灯灭的状态 0xfe =1<<i
break;
case 0x01: //亮
LEDBuffer[i/2] |=1<<(j+(i%2)*4);//第一,二,三,四个灯亮的状态
break;
case 0x02: //闪烁
if(LEDflash_Cnt<LEDFLASHTIME)//闪烁周期1000MS
{
LEDBuffer[i/2] &=~(1<<(j+(i%2)*4));
}
else//如果此时灭状态则亮
{
LEDBuffer[i/2] |=1<<(j+(i%2)*4);
}
break;
default:
break;
}
}
}
该函数使用嵌套循环,遍历falsebitLEDGroup数组,根据数组中存储的数据,控制LED的亮灭。当灯需要闪烁时,根据LEDFLASHTIME和LEDflash_Cnt的值进行判断,如果在闪烁周期内,则灯灭,否则灯亮。
void MainWindow::on_pushButton_clicked() { mlabel mlabel1; //读取raw FILE* fp = fopen("E:\\QTprogram\\ImageProcess001\\Rad Image1.raw","rb");//读取图片 unsigned int size = width * hight; ushort* raw_data = (unsigned short*)calloc(size,sizeof (unsigned short)); fread(raw_data,sizeof (unsigned short),size,fp);//读取图像内部数据 free(fp); QImage img(width,hight,QImage::Format_Grayscale16);//转换图像 // for(int i=0;i<width;i++) // { // for(int j=0;j<hight;j++) // { // uint pixelval = raw_data[i+j*width]; // QRgb color = qRgb(pixelval, pixelval, pixelval); // img.setPixel(i,j, color); // } // } uint P1= 0,P2= 0,P3= 0,P4= 0,Pc= 0,P5= 0,P6= 0,P7= 0,P8 = 0; // uint Dh1= 0,Dh2= 0,Dh3= 0; // uint Dv1= 0,Dv2= 0,Dv3= 0; // uint D45_1= 0,D45_2= 0,D45_3= 0; // uint D135_1= 0,D135_2= 0,D135_3= 0; // uint Ary[]={}; QVector<QVector<uint>>Raw_Pixelval; QVector<QVector<uint>>Prc_Pixelval; // int &pRPixelval; for (int i=0;i<width;i++)//获取原始像素灰度值 { for(int j=0;j<hight;j++) { uint pixelval = raw_data[i+j*width]; Raw_Pixelval[i][j] = pixelval; } } for (int i=0;i<width;i++) { for(int j=0;j<hight;j++) { P1 = Raw_Pixelval[i-1][j-1]; P2 = Raw_Pixelval[i-1][j]; P3 = Raw_Pixelval[i-1][j+1]; P4 = Raw_Pixelval[i][j-1]; Pc = Raw_Pixelval[i][j]; P5 = Raw_Pixelval[i][j+1]; P6 = Raw_Pixelval[i+1][j-1]; P7 = Raw_Pixelval[i+1][j]; P8 = Raw_Pixelval[i+1][j+1]; uint Radio_c9[9]={P1,P2,P3,P4,Pc,P5,P6,P7,P8}; uint median_Dh = mlabel1.median(Radio_c9,3); Prc_Pixelval[i][j] = median_Dh; // uint MaxRadio_c9 = mlabel1.MAX(Radio_c9); // uint MinRadio_c9 = mlabel1.MIN(Radio_c9); } } for (int i=0;i<width;i++) { for(int j=0;j<hight;j++) { uint pixelval = Prc_Pixelval[i][j]; QRgb color = qRgb(pixelval, pixelval, pixelval); img.setPixel(i,j, color); } } QPixmap px = QPixmap::fromImage(img); free(raw_data); label->setPixmap(px); label->show(); }
这段代码是用来读取一张RAW格式的图像,然后进行中值滤波去噪,并显示处理后的图像。具体来说,它先打开一个RAW图像文件,然后将图像数据读入一个内存块中。接着,它将原始像素灰度值存储到一个二维的QVector中,然后对每个像素进行中值滤波处理,将处理后的像素值存储到另一个二维的QVector中。最后,它将处理后的图像显示在一个QLabel控件中。
阅读全文