📄 saa1064t.c
字号:
/*******************************************************************
* 使用器件实例 SAA1064T
* 使用LPC932的硬件I2C对SAA1064T进行操作,先读取PCF8574上的值,然
* 后输出SAA1064进行显示。
*******************************************************************/
#include <Reg51.h>
#include "HI2C_C51.H"
#define uchar unsigned char
/* 定义LPC932的I2C相关寄存器的定义 */
sfr I2ADR = 0xDB;
sfr I2DAT = 0xDA;
sfr I2CON = 0xD8;
sfr I2STAT = 0xD9;
sfr I2SCLH = 0xDD;
sfr I2SCLL = 0xDC;
sbit STA = I2CON^5;
sbit SI = I2CON^3;
/* 定义LPC932的部分特殊寄存器 */
sfr TRIM = 0x96;
sfr DIVM = 0x95; /* CPU分频设置寄存器 */
sfr P1M1 = 0x91;
sfr P1M2 = 0x92;
sbit LEDCON = P1^6;
/* 定义器件地址 */
#define SAA1064T 0x70
#define PCF8574 0x40
/*******************************************************************
* 长延时函数
* 软件延时
* 入口参数:no 延时长度设置
*******************************************************************/
void Delays(uchar no)
{ int i,j;
for(; no>0; no--)
{ for(i=0; i<500; i++)
for(j=0; j<500; j++);
}
}
/*******************************************************************
* 主函数
* 对SAA1064进行设置--动态显示,电流等级3,接着显示good字样,延时一
* 定时间后读取PCF8574上的数值,转换后输出SAA1064显示出来。
*******************************************************************/
void main(void)
{ uchar code DISP_TAB[16]={ 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };
uchar disp_buf[5]; /* 定义显示缓冲区 */
uchar in_dat;
uchar i;
/* 由于使用内部7.373MHz振荡器时,软件包使用的I2C速度为123K,但SAA1064只能
支持100K的速度,所以要进行时钟的分频,以降低总线速度。 */
DIVM = 2;
for(i=0; i<255; i++);
/* 由于上电复位时所用IO口设置为高阻态,所以要进行IO设置 */
P1M1 = 0x2C;
P1M2 = 0x0C;
LEDCON = 0;
disp_buf[0] = 0x47; /* 设置SAA1064工作模式 */
disp_buf[1] = 0x6f; /* 数字位1显示'g' */
disp_buf[2] = 0x5c; /* 数字位2显示'o' */
disp_buf[3] = 0x5c; /* 数字位3显示'o' */
disp_buf[4] = 0x5e; /* 数字位4显示'd' */
ISendStr(SAA1064T, 0, disp_buf, 5);
Delays(2); /* 延时操作 */
disp_buf[1] = 0x40; /* 数字位1显示'-' */
disp_buf[2] = 0x40; /* 数字位2显示'-' */
while(1)
{ if( IRcvByte(PCF8574, &in_dat)==0 )
{ LEDCON = ~LEDCON;
}
i = in_dat>>4;
disp_buf[3] = DISP_TAB[i];
i = in_dat&0x0f;
disp_buf[4] = DISP_TAB[i];
ISendStr(SAA1064T, 1, &disp_buf[1], 4);
for(i=0; i<255; i++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -