金牌会员
- 积分
- 2257
- 威望
- 614
- 贡献
- 1505
- 兑换币
- 18
- 注册时间
- 2011-9-20
- 在线时间
- 69 小时
|
#define uint unsigned int
#define uchar unsigned char
#define image_X_limit 84 //pilxe
#define image_Y_limit 48
#define VolPoint 70
//unsigned char tab[]={"0x00;0x03;0x05;0x11;0x33;0xde;0xfe;0xad;0xdd;0x00"};
uint image_X=0; //AD
uint image_Y=0;
uint Y_FLAG=0;
uint temp = 0;
uchar image[image_Y_limit][image_X_limit]=0;
uchar line_temp[image_X_limit];
void line_get_AD(void)
{
PORTE_PE2=1; //AD使能
for(image_X=0;image_X<image_X_limit;image_X++)
{
line_temp[image_X]=PORTA;
image[image_Y][image_X]= line_temp[image_X];
}
image_Y++;
}
void transmit(uchar transmit_data) //SCI 发送
{
while(SCI0SR1_TC==0);
SCI0DRL=transmit_data;
}
void transmit_image(void) //发送图像到串口
{
//uint i,j;
for(image_Y=0;image_Y<=image_Y_limit;image_Y++)
{
for(image_X=0;image_X<=image_X_limit;image_X++)
{
if(image[image_Y][image_X]>VolPoint)
image[image_Y][image_X]=0x00;
else image[image_Y][image_X]=0x11;
transmit(image[image_Y][image_X]);
}
}
}
void main(void) {
uint i,j;
EnableInterrupts;
MCUInit();
for(;;) {
if(temp == 1){
//if(1){
transmit_image();
#if LCD_DEBUG
LCDClear();
for(j = 0 ; j < image_X_limit; j++){ //48
for(i = 0; i < image_Y_limit; i++){ //84
if(image[i][j]>VolPoint){
LCDPixel(i, j, PIXEL_OFF); //该点不显示
}else{
LCDPixel(i, j, PIXEL_ON); //显示该点
}
}
}
LCDUpdate();
#endif
}
EnableInterrupts; //允许中断
}
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED //ָʾ¸Ã³ÌÐòÔÚ²»·ÖÒ³Çø 行中断采集
void interrupt 24 V_ISR(void)
{
PIFJ_PIFJ0=1; // 清楚标志位
Y_FLAG++;
if((20<Y_FLAG<310)&&Y_FLAG%6) //各六行采集
line_get_AD();
// else temp = 1;
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED //场中断处理
void interrupt 6 H_ISR(void)
{
DisableInterrupts;
Y_FLAG = 0;
temp = 1;
image_Y=0;
image_X=0;
//LCDPlay();
}
能采集到数据 发到串口显示 不是设置的00 11 显示的还是乱七八糟的 显示到5110也没有 什么效果要么黑一片 要么不显 是不是我的采集方法不对
求解决!! |
|