📄 cs5522.c
字号:
#include<reg52.h>
//***********************************
#define unch unsigned char
//***********************************
sbit cs=P2^1; //和cs5522有关的端口
sbit sdi=P2^2;
sbit sdo=P2^0;
sbit sclk=P2^3;
//************************************
extern unsigned char data t_d[8]; //当前显示数的BCD码。
void eight_dis(void);
//*************************************
extern unsigned char bdata main_temp; //全局缓冲变量
extern bit main_temp_7;
extern unsigned char dis_data[3]; //cs5522读出数据的暂时存放处
//***********************************
void eight_dis(void);
void bcd_change(void);
//***********************************
//向CS5522发送一个字节
void Se_Cs_W(unsigned char Cs_Word)
{
unsigned char data Cs_i=8;
main_temp=Cs_Word;
while(Cs_i)
{
sdi=main_temp_7;
sclk=1;
main_temp<<=1;
sclk=0;
Cs_i--;
}
}
//*****************************************
//***********************************
//向CS5522读一个字节。
unsigned char ReadW(void)
{
unsigned char Read_i;
main_temp=0;
Read_i=8;
while(Read_i)
{
main_temp>>=1;
main_temp_7=sdo;
sclk=1;
sclk=0;
Read_i--;
}
return(main_temp);
}
//***********************************
//写1字节读3字节。
void Sen_Rec(unsigned char Sen_Rec_tem)
{
cs=0;
Se_Cs_W(Sen_Rec_tem);
dis_data[2]=ReadW();
dis_data[1]=ReadW();
dis_data[0]=ReadW();
cs=1;
}
//************************************
//直接写4字节。
void F_Word(unch temp1,unch temp2,unch temp3,unch temp4)
{
cs=0;
Se_Cs_W(temp1);
Se_Cs_W(temp2);
Se_Cs_W(temp3);
Se_Cs_W(temp4);
cs=1;
}
//***********************************
//起动串口。
void initserial(void)
{
unsigned char data Init_Tem=15;
cs=0;
while(Init_Tem)
{
Se_Cs_W(0xff);
Init_Tem--;
}
Se_Cs_W(0xfe);
cs=1;
}
//***************************************************
//配置CS5522
void InitCs(void)
{
unsigned char i,j;
//===================设置配置寄存器=======================
//配置RS位寄存器写一
F_Word(0x03,0x00,0x00,0x80); //直接写4字节?
//读配置寄存器
//*************************************
//判断RV是否为“1若RV为1,向RS写0
/* do
{
// F_Word(0x03,0x00,0x00,0x80); //直接写4字节.
//读配置寄存器
Sen_Rec(0x0b); } //写1字节读3字节。
while(~dis_data[0]&0x40); */
//*************************************
i=0xff;
while(i)
{
j=0xff;
while(j)
{j--;}
i--;
}
Sen_Rec(0x0b);
bcd_change();
eight_dis();
while(1)
{}
/* i=0xff;
while(i)
{
j=0xff;
while(j)
{j--;}
i--;
}
Sen_Rec(0x0b); //写1字节读3字节?
bcd_change();
eight_dis();
while(1)
{} */
//**************************************
//写配置寄存器。
F_Word(0x03,0x00,0x14,0x00); //直接写4字节?
//****************************************
//设置通道寄存器
F_Word(0x05,0x08,0x90,0x89);
//****************************************
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -