📄 adcuart.c
字号:
#include <stdio.h>
#include <ADuC848.h>
//#include <myMB.c>
#include <Tab.c>
#include <math.h>
#include <seril.c>
#include <seril.h>
//sbit LED = 0x0B4;
int flag;
xdata unsigned char send_buf[5];
//code unsigned int send_buf[5];
//void Send2ByteTo595(unsigned int);
void dis_buf(void);
void DelayNS(int);
/*
float ShowTM_k(float x) //0.000-20.644mv 如果要处理其他热偶的数据,皆可按照这个函数。
{
float u0, u1,u2,u3,u4,u5,u6,u7,u8,u9;
//float x;
u0=-1.052755E-08;
u1=u0*x+1.057734E-06 ;
u2=u1*x-4.413030E-05;
u3=u2*x+9.804036E-04;
u4=u3*x-1.228034E-02;
u5=u4*x+8.315270E-02;
u6=u5*x-2.503131E-01;
u7=u6*x+7.860106E-02;
u8=u7*x+2.508355E+01;
u9=u8*x+0;
return u9;
}
*/
int Read2ByteFlash(unsigned char addr)
{
idata int MemByte;
EA = 0;
EADRH = 0;
EADRL = addr;
ECON = 1;
MemByte = EDATA1;//EDATA2;
//MemByte = MemByte << 8;
//MemByte = ( (unsigned int)(EDATA1) ) | MemByte;
EA = 1;
return MemByte;
}
void Write2ByteFlash(unsigned char addr , unsigned char MemByte)
{
EA = 0;
// TR530SetPoints[addr] = MemByte;
EADRH = 0;
EADRL = addr;
ECON = 1;
EDATA1 = (unsigned char)MemByte;//(unsigned char)(MemByte & 0x00FF);
//MemByte = MemByte >> 8;
//EDATA2 = (unsigned char)(MemByte);
ECON = 5;
ECON = 2;
EA = 1;
}
int ConvertHexChar(char ch)
{
if((ch>=0)&&(ch<=9))
return (int)ch;//-0x30;
else if (ch==0xA)
return 10;
else if (ch==0xB)
return 11;
else if (ch==0xC)
return 12;
else if (ch==0xD)
return 13;
else if (ch==0xE)
return 14;
else if (ch==0xF)
return 15;
}
/*
void change(long value)
{ //char send_buf[5];
char qian,bai,shi,ge;
qian=value/1000;
bai=(value-=qian*1000)/100;
shi=(value-=bai*100)/10;
ge=(value-=shi*10);
send_buf[3]=qian;
send_buf[2]=bai;
send_buf[1]=shi;
send_buf[0]=ge;
dis_buf();
}
*/
void BINtoBCD(int BINNumber)
{
send_buf[4] = (unsigned char)(BINNumber /10000);
send_buf[3] = (unsigned char)(BINNumber % 10000/1000);
send_buf[2] = (unsigned char)(BINNumber % 1000/100);
send_buf[1] = (unsigned char)(BINNumber %100/10);
send_buf[0] = (unsigned char)(BINNumber%10); dis_buf();
return;
}
void dis_buf(void)
{ //Send2ByteTo595(0x0000);
unsigned int qian1,bai1,shi1,ge1,i;
if(send_buf[2]==0)
{ bai1=(0xf5df); }
switch (send_buf[2])
{
case 9: bai1=0xd7df;break;
case 8: bai1=0xf7df;break;
case 7: bai1=(0x45df);break;
case 6: bai1=(0xf6df);break;
case 5: bai1=(0xd6df);break;
case 4: bai1=(0x87df);break;
case 3: bai1=(0x57df);break;
case 2: bai1=(0x73df);break;
case 1: bai1=(0x05df);break;
}
//
if(send_buf[1]==0)
{ shi1=(0xf5bf); }
switch (send_buf[1])
{ case 9: shi1=(0xd7bf);break;
case 8: shi1=(0xf7bf);break;
case 7: shi1=(0x45bf);break;
case 6: shi1=(0xf6bf);break;
case 5: shi1=(0xd6bf);break;
case 4: shi1=(0x87bf);break;
case 3: shi1=(0x57bf);break;
case 2: shi1=(0x73bf);break;
case 1: shi1=(0x05bf);break;
}
//
if(send_buf[0]==0)
{ ge1=(0xf5ef); }
switch (send_buf[0])
{ case 9: ge1=(0xd7ef);break;
case 8: ge1=(0xf7ef);break;
case 7: ge1=(0x45ef);break;
case 6: ge1=(0xf6ef);break;
case 5: ge1=(0xd6ef);break;
case 4: ge1=(0x87ef);break;
case 3: ge1=(0x57ef);break;
case 2: ge1=(0x73ef);break;
case 1: ge1=(0x05ef);break;}
//
if((send_buf[0]>=0)&&(send_buf[1]>=0)&&(send_buf[2]>=0)&&(send_buf[3]))
{ for(i=0;i<30;i++){
Send2ByteTo595(ge1);
Send2ByteTo595(shi1);
Send2ByteTo595(bai1);
Send2ByteTo595(qian1);} }
if((send_buf[0]>=0)&&(send_buf[1]>=0)&&(send_buf[2]))
{for(i=0;i<30;i++){
Send2ByteTo595(ge1);
Send2ByteTo595(shi1);
Send2ByteTo595(bai1);
} }
if((send_buf[0]>=0)&&(send_buf[1]))
{ for(i=0;i<7500;i++){
Send2ByteTo595(ge1);
Send2ByteTo595(shi1);
}
}
if(send_buf[0]>=0)
{for(i=0;i<30;i++){
Send2ByteTo595(ge1);
} }
}
void UART0_SendByte(unsigned char data1)
{
SBUF = data1; // 发送数据
while(!TI ); // 等待数据发送完毕
TI = 0;
}
void PC_DispChar(unsigned char x, unsigned char y, unsigned char chr, unsigned char color)
{ UART0_SendByte(0xff); // 发送起始字节
UART0_SendByte(x); // 发送字符显示坐标(x,y)
UART0_SendByte(y);
UART0_SendByte(chr); // 发送显示字符
UART0_SendByte(color);
}
void ISendStr(unsigned char x, unsigned char y, unsigned char color, unsigned char *str)
{ while(1)
{ if(*str=='\0') break; // 若为'\0',则退出
PC_DispChar(x++, y, *str++, color); // 发送显示数据
if(x>=80)
{ x = 0;
y++;
}
}
}
void DelayNS(int dly)
{int i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);
}
int check_temp(int Data)
{ int a;
int i,j;
if((Data<=4020)&&(Data>=254))
{
for(i=0;i<6;i++)
{
for(j=0;j<12;j++)
{
if(temp_tab_L_1[i][j]==Data)
{ a=temp_tab_L_1[i][0]+temp_tab_L_1[0][j];
BINtoBCD(a);
goto done;
}
}
}
}
if(Data>4020)
{
for(i=0;i<6;i++)
{
for(j=0;j<12;j++)
{
if(temp_tab_L_2[i][j]==Data)
{ a=temp_tab_L_2[i][0]+temp_tab_L_2[0][j];
BINtoBCD(a);
goto done;
}
}
}
}
if(Data<254)
{
for(i=0;i<6;i++)
{
for(j=0;j<12;j++)
{
if(temp_tab_L_3[i][j]==Data)
{ a=temp_tab_L_3[i][0]+temp_tab_L_3[0][j];
BINtoBCD(a);
//break;
goto done;
}
}
}
}
done: return 0;
}
unsigned long Read_Adc()
{
unsigned char B1,B2;
unsigned int res;
// if (adc_data_fresh){
EADC = 0;
B1 = ADC0H; //耱疱扈蝈朦睇
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -