硬件实物与电路图:
MAX6675代码:
#include "ram.h"
//交流QQ:2368813349
//淘宝实物购买地址:https://item.taobao.com/item.htm?spm=a1z10.1-c.w1004-2919821342.7.52dc22feSgvS9I&id=745510870986
u16 max6675(void)
{
u16 r_data=0;
u8 data_len;
csm1;
som0;
P2PH=0x80; //P27上拉
sckm1;
sck=0;
_nop_();
_nop_();
cs=0;
_nop_();
_nop_();
for(data_len=0;data_len<16;data_len++)
{
sck=1;
r_data=r_data<<1;
if(so==1) r_data=r_data|0x01;
sck=0;
_nop_();
_nop_();
_nop_();
_nop_();
}
cs=1;
// if(r_data & 0x01) r_status++;
// else
{
if(r_status >=1) r_status--;
else b_status=0;
}
// if(r_status >=10)
{
r_status=10;
b_status=1;
r_data=r_data>>3;
}
// else r_data=0;
return r_data;
}
TM1650代码:
#include "ram.h"
#include <stdio.h>
//交流QQ:2368813349
//淘宝实物购买地址:https://item.taobao.com/item.htm?spm=a1z10.1-c.w1004-2919821342.7.52dc22feSgvS9I&id=745510870986
/*code uchar table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
*/
code u8 table[]={DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7, DATA8, DATA9};
union {
float fx;
u8 r_tx[4];
}float_u32;
void usar_tx(void)
{
u8 i;
//{"T1":12.3,"T2":15.6,"T3":-26,"T4":23}
//{"T1":9,"T2":0,"T3":0,"T4":0}
sprintf((char*)str,"{\"T1\":%.2f", float_u32.fx);
P1CON &= 0XFB;
P1PH |= 0X0C; //TX输出/RX为带上拉输入
SCON = 0X40; //方式1,不允许接收数据
PCON |= 0X80; //1/4系统时钟下运行 24/4=8MHZ 1/8 *FN/ 2*(256-TH1) //40左右
//TL1 = 217;
//TH1 = 217; //UART 波特率24M情况下=38400; 12M下是19200
TL1 = 243;
TH1 = 243; //UART 波特率24M情况下=115200
TR1 = 1; //启动Timer0
/*
TI = 0;
SBUF = float_u32.r_tx[3];
while(TI==0);
TI = 0;
SBUF =float_u32.r_tx[2];
while(TI==0);
TI = 0;
SBUF = float_u32.r_tx[1];
while(TI==0);
TI = 0;
SBUF = float_u32.r_tx[0];
while(TI==0);
*/
/*
TI = 0;
SBUF ='{';
while(TI==0);
TI = 0;
SBUF ='"';
while(TI==0);
TI = 0;
SBUF ='T';
while(TI==0);
TI = 0;
SBUF ='1';
while(TI==0);
TI = 0;
SBUF ='"';
while(TI==0);
TI = 0;
SBUF =':';
while(TI==0);
*/
for(i=0;i<30;i++)
{
if(str[i]=='\0') break;
TI = 0;
SBUF =str[i];
while(TI==0);
}
sprintf((char*)str,",\"T2\":0,\"T3\":0,\"T4\":0\}");
for(i=0;i<30;i++)
{
if(str[i]=='\0') break;
TI = 0;
SBUF =str[i];
while(TI==0);
}
}
void disp_change(void)
{
//r_sum1++;
float_u32.fx=r_sum*0.25;
r_sum=(u32)float_u32.fx;
float_u32.fx=float_u32.fx/10;
// r_sum=r_sum1;
if(r_sum>(u32)9999)// 100度以上不显示小数点
{
r_sum=(u32)9999;
}
r_byte3= r_sum/1000;
r_byte2= r_sum/100%10;
r_byte1= r_sum/10%10;
r_byte0= r_sum%10;
r_byte0=table[r_byte0];
r_byte1=table[r_byte1]+DP;
r_byte2=table[r_byte2];
r_byte3=table[r_byte3];
}
void IIC_SENT_ACK(void )
{
sdam1;
sclm1;
scl=1;
_nop_();
_nop_();
scl=0;
_nop_();
_nop_();
}
void IIC_START(void)
{
sdam1;
sclm1;
_nop_();
sda=1;
_nop_();
scl=1;
_nop_();
sda=0;
_nop_();
scl=0;
}
void IIC_STOP(void)
{
sdam1;
sclm1;
sda=0;
_nop_();
scl=1;
_nop_();
sda=1;
_nop_();
scl=0;
}
void IIC_WRITE(u8 Data)
{
unsigned char BitCounter=8;
do
{
// temp=Data;
scl=0;
_nop_();
_nop_();
if((Data&0x80)==0x80)
sda=1;
else
sda=0;
scl=1;
Data=Data<<1;
//Data=temp;
BitCounter--;
}
while(BitCounter);
scl=0;
IIC_SENT_ACK();
}
u8 IIC_READ(void)
{
unsigned char temp=0;
unsigned char temp1=0;
unsigned char BitCounter=8;
sdam0;
_nop_();
_nop_();
do
{
scl=0;
_nop_();
_nop_();
scl=1;
_nop_();
_nop_();
if(sda)
temp=temp|0x01;
else
temp=temp&0xfe;
if(BitCounter-1)
{
temp1=temp<<1;
temp=temp1;
}
BitCounter--;
}
while(BitCounter);
return(temp);
}
void tm1650(void)
{
IIC_START();
IIC_WRITE(0x48); //设置
IIC_WRITE(0x31); //1级亮度,显示屏显示
IIC_STOP();
disp_change();
IIC_START();
IIC_WRITE(0x68); //第一个位地址
IIC_WRITE(r_byte0); //第一位数据
IIC_STOP();
IIC_START();
IIC_WRITE(0x6A);
IIC_WRITE(r_byte1); //第二位数据
IIC_STOP();
IIC_START();
IIC_WRITE(0x6C);
IIC_WRITE(r_byte2); //第三位数据
IIC_STOP();
IIC_START();
IIC_WRITE(0x6E);
IIC_WRITE(r_byte3); //第四位数据
IIC_STOP();
}