📄 at6010n.c
字号:
IO1SET=A0;
write_byte(mwrite);
for(i=0;i<28800;i++)
{
IO1CLR=A0;
write_byte(0x00);
}
}
void second_scr()
{
uint16 i,j;
en_lcd();
sed1335_write(csrdir_right,null,1);
sed1335_write(csrw,cur_set_ini2,2);
IO1SET=A0;
write_byte(mwrite);
IO1CLR=A0;
for(i=0;i<240;i++)
{
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=0;j<10;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=10;j<20;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=20;j<30;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=30;j<40;j++)
write_byte(~Row[i].Xbyte[j]);
}
}
void full_scr()
{
uint16 i,j;
en_lcd();
sed1335_write(csrdir_right,null,1);
sed1335_write(csrw,cur_set_ini1,2);
IO1SET=A0;
write_byte(mwrite);
IO1CLR=A0;
for(i=0;i<240;i++)
{
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=0;j<10;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=10;j<20;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=20;j<30;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=30;j<40;j++)
write_byte(~Row[i].Xbyte[j]);
}
}
void clear_buf()
{
uint16 i,j;
for(i=0;i<240;i++)
{
for(j=0;j<40;j++)
Row[i].Xbyte[j]=0;
}
for(i=0;i<320;i++)
AD_Data[i]=0;
}
/*******************************************************************
* 显示系统初始化 *
********************************************************************/
void lcd_ini()
{
IO0CLR=LCDRST;
DelayNS(10);
IO0SET=LCDRST;
DelayNS(10);
sed1335_write(system_set,system_set_ini,8);
sed1335_write(scroll,scroll_ini,9);
sed1335_write(scrform,scrform_ini,2);
sed1335_write(hdot_scr,hdot_scr_ini,2);
sed1335_write(ovlay,ovlay_ini,1);
sed1335_write(csrw,cur_set_ini1,2);
sed1335_write(csrdir_right,null,1);
clr_scr();
sed1335_write(disp_on,disp_on_ini,1);
sed1335_write(csrw,cur_set_ini1,2);
// wr_any(6,60,an,29,4);
// wr_any(10,60,de,29,4);
// wr_any(14,60,li,29,4);
// wr_any(18,60,guang,29,4);
// wr_any(22,60,dian,29,4);
// wr_any(26,60,ke,29,4);
// wr_any(30,60,ji,29,4);
}
void reset()
{
buffadd=0; //SRAM缓冲区指针
csradd[0]=0; csradd[1]=0;
disp_mode=0;
lcd_ini();
X=0; Y=0;
}
void UART0_SendByte(uint8 dat)
{
U0THR=dat;
while((U0LSR&0x20)==0);
}
void Uart0_SendString(char *str)
{
while(1)
{
if(*str=='\0')break;
UART0_SendByte(*str++);
}
}
void Send_To_PC(void )
{
/* send A/D data to pc */
uint8 i;
AddrNo=1;SendNumb=0;
while((AddrNo*10)<count)
{
UART0_SendByte(0xFE);
UART0_SendByte(AddrNo);
for(i=0;i<9;i++)
{
sprintf(SendBuf,"%d",AD_Buf[SendNumb++]);
Uart0_SendString(SendBuf);
UART0_SendByte('|');
}
sprintf(SendBuf,"%d",AD_Buf[SendNumb++]);
Uart0_SendString(SendBuf);
UART0_SendByte(0xFF);
DelayNS(10);
AddrNo++;
}
}
void Uart0_Rx(void)
{
uint8 tmp;
tmp=U0RBR;
if(tmp==0xfe)
{
if(com1_on!=TRUE)
{
com1_on=TRUE;
p1Rx=0;
serial_on=TRUE;
}
else
{
comu_err=TRUE;
}
}
else if(tmp==0xff)
{
if(com1_on==TRUE)
{
com1_off=TRUE;
com1_on=FAULT;
}
else
{
comu_err=TRUE;
}
}
else
{
if(com1_on==TRUE)
Uart0_RxBuf[p1Rx++]=tmp;
if(p1Rx==128) p1Rx=0;
}
}
void __irq IRQ_UART0(void)
{
if( 0x04==(U0IIR&0x0F) )
{
Uart0_Rx();
}
VICVectAddr=0x00;
}
void UART1_SendByte(uint8 dat)
{
U1THR=dat;
while((U1LSR&0x20)==0);
}
void Uart1_Rx(void)
{
uint8 tmp;
tmp=U1RBR;
if(tmp==0xfe)
{
if(com2_on!=TRUE)
{
com2_on=TRUE;
p2Rx=0;
serial_on=TRUE;
}
else
{
comu_err=TRUE;
}
}
else if(tmp==0xff)
{ if(com2_on==TRUE)
{
com2_off=TRUE;
com2_on=FAULT;
}
else
{
comu_err=TRUE;
}
}
else
{
if(com2_on==TRUE)
Uart1_RxBuf[p2Rx++]=tmp;
if(p2Rx==128) p2Rx=0;
}
}
void Uart1_SendString(char *str)
{
while(1)
{
if(*str=='\0')break;
UART1_SendByte(*str++);
}
}
void Send_To_MCU()
{
Uart1_SendString("MCU<->OK");
}
void __irq IRQ_UART1(void)
{
if(0x04==(U1IIR&0x0f))
{
Uart1_Rx();
}
VICVectAddr=0x00;
}
void System_Ini(void)
{
UARTMODE uart0_set;
UARTMODE uart1_set;
PINSEL0=0x00050005; //使能UART0 和UART1 为零Modem
PINSEL1=0x00400000;
IO0DIR=WR|LCDCS|LCDRST|LED1CON;
IO1DIR=P1PORT|A0|RD;
uart0_set.datab=8;
uart0_set.stopb=1;
uart0_set.parity=0;
UART0_Ini(115200,uart0_set);
uart1_set.datab=8;
uart1_set.stopb=1;
uart1_set.parity=0;
UART1_Ini(115200,uart0_set);
VICIntSelect=0x00000000;
VICVectCntl0=0x26;
VICVectAddr0=(int)IRQ_UART0;
U1MCR=0x00;
VICVectCntl1=0x27;
VICVectAddr1=(int)IRQ_UART1;
VICIntEnable=0x000000c0;
com1_on=com1_off=com2_on=com2_off=FAULT;
}
void ENABLE_UART()
{
// VICIntEnable=0x000000c0;
}
void PC_Comu_ini()
{
serial_on=FAULT;
OneToPC=FAULT;
AutoToPC=FAULT;
}
void PC_Explan()
{
switch(Uart0_RxBuf[0])
{
case 0xE9:
case 0xEA:
case 0xEB:
case 0xEC:
case 0xED:
case 0xEE:
case 0xEF:
case 0xF0:
case 0xF1:
break;
case 0xF2:
OneToPC=TRUE;
break;
case 0xF3:
{
if(Uart0_RxBuf[1]=='1')
{
AutoToPC=TRUE;
}
else if(Uart0_RxBuf[1]=='0')
{
AutoToPC=FAULT;
}
else
{
comu_err=TRUE;
}
}
break;
default:
break;
}
}
/***************************************************************
* main program *
****************************************************************/
int main()
{
unsigned char i,av,max,min,min_flag;
uint16 j;
System_Ini();
lcd_ini();
// DelayNS(500);
// Send_To_MCU();
// ENABLE_UART();
// write_background();
PC_Comu_ini();
clear_buf();
Write_BackG();
second_scr();
clear_buf();
Write_Message();
full_scr();
// clear_buf();
full_scr();
ADCR=(1<<0) |
((Fpclk/4500000-1)<<8)|
(0<<16) |
(0<<17) |
(1<<21) |
(0<<22) |
(1<<24) |
(1<<27);
DelayNS(10);
ADC_Data=ADDR;
/*
sed1335_write(disp_off,disp_off_ini,1);
sed1335_write(disp_on,disp_on_ini,1);
sed1335_write(sleep_in,disp_off_ini,0);
sed1335_write(system_set,system_set_ini,8);
sed1335_write(disp_on,disp_on_ini,1);
*/
while(1)
{
ADC_Flag=FAULT;
tmp1=IO0SET;
if((tmp1&LED1CON)==0)
IO0SET=LED1CON;
else
IO0CLR=LED1CON;
do
{
if(com1_off==TRUE)
{
PC_Explan();
com1_off=FAULT;
serial_on=FAULT;
}
}while(serial_on==TRUE);
clear_buf();
count=0;
while((IO0PIN&ADCINT)==0);
while((IO0PIN&ADCINT)!=0);
tmp1=IO0SET;
numb=0;
do
{
ADCR=(ADCR&0xffffff00)|0x01|(1<<24);
while((ADDR&0x80000000)==0);
if((IO0PIN&ADCINT)!=0)break;
ADCR=ADCR|(1<<24);
while((ADDR&0x80000000)==0);
if(serial_on==TRUE) break;
if((IO0PIN&ADCINT)!=0)break;
ADC_Data=ADDR;
ADC_Data=(ADC_Data>>5)&0xfff;
ADC_Data/=5;
AD_Buf[count]=ADC_Data;
count++;
ADC_Flag=TRUE;
if((IO0PIN&ADCINT)!=0)break;
}while((IO0PIN&ADCINT)==0);
if(ADC_Flag==TRUE)
{
av=count/230;
min=240;
for(j=0;j<count-1;j++)
{
AD_Buf[j]=240-AD_Buf[j];
}
min_flag=0;
for(i=5;i<235;i++)
{
AD_tmp=0;
Row[AD_Data[i]].Xbyte[i/8]=(0x80>>(i%8));
min=240;max=0;
for(j=0;j<av;j++)
{
if(AD_Buf[i*av+j]>max) max=AD_Buf[i*av+j];
if(AD_Buf[i*av+j]<min) min=AD_Buf[i*av+j];
}
if(min<48)min=48;
for(j=min;j<max;j++) Row[j].Xbyte[i/8]+=(0x80>>(i%8));
}
full_scr();
if(OneToPC==TRUE)
{
Send_To_PC();
OneToPC=FAULT;
}
if(AutoToPC==TRUE)
{
Send_To_PC();
}
if(com2_off==TRUE)
{
Send_To_MCU();
com2_off=FAULT;
}
ADC_Flag=FAULT;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -