SD2403与TM1640显示时钟程序(国外英文资料).doc
文本预览下载声明
SD2403与TM1640显示时钟程序(国外英文资料)
# include reg52.h
# include stdio . h
# include intrins.h
#定义uchar unsigned char
#定义使用uint unsigned int
/ * * * * * * TM1640端口的定义* * * * * * /
sbit sci = P2 ^ 0;
sbit sda = P2 ^ 1;/ /串行通讯口
/ * * * * * * SD2403端口的定义* * * * * * /
sbit SCL1 = P0 ^ 7;
sbit SDA1 = P0 ^ 6;
uchar data1、data2 data3 data4;
uchar日期[7];/ /日期数组
/ /日期[6]=,日期[5]=月,日期[4]=天,日期[3]=一周,
/ /日期[2]=小时,日期[1]=分钟,日期[0]=第二
#定义真正的1
#定义错误0
/ * * * * * * TM1640函数名* * * * * * /
空白开始();
无效停止();
空写(uchar日期);
空白init_tm1640(uchar i,j);
空白send_z(uchar地址、日期);
无效发送(uchar地址、日期);
/ * * * * * * TM1640开始* * * * * * /
无效的start()
{
sda = 1;
sci = 1;
_nop_();
_nop_();
sda = 0;
_nop_();
_nop_();
sci = 0;
_nop_();
_nop_();
}
/ * * * * * * TM1640结束* * * * * * /
无效停止()
{
sda = 0;
sci = 1;
_nop_();
_nop_();
sda = 1;
_nop_();
_nop_();
sci = 0;
_nop_();
_nop_();
}
/ * * * * * *写字节* * * * * * /
空写(uchar日期)
{
uchar我,aa;
aa =日期;
sda = 0;
sci = 0;
(我= 0; 8;我+ +)
{
sci = 0;
如果(aa0x01)
{
sda = 1;
_nop_();
_nop_();
}
其他的
{
sda = 0;
_nop_();
_nop_();
}
sci = 1;
aa aa = 1;
}
sci = 0;
sda = 0;
}
/ * * * * * *向TM1640发送显示数据* * * * * * /
/ * * * * * *初始化TM1640 * * * * * * /
空白init_tm1640(uchar i,j)
{
sda = 1;
sci = 1;
开始();
写(我);/ /设置数据,0 x40 0 x44分别对应地址自动加一和固定地址模式
停止();
开始();
写(j);/ /控制显示,开显示,0 x88 0 x89 0 x8a 0 x8b 0 x8c 0 x8d 0 x8e,0 x8f分别对应脉冲宽度为:
/ / - - - - - - - - - - - - - - - - - - 1/16,2/16,4/16,10/16,11/16,12/16,13/16,13/16
/ / 0 x80关显示
停止();
}
/ * * * * * *自动加一模式* * * * * * /
空白send_z(uchar地址、日期)
{
uchar我;
开始();
写(地址);/ /设置起始地址
(我= 0; 16,我+ +)
{
写(日期);
}
停止();
}
/ * * * * * *固定地址模式* * * * * * /
无效发送(uchar地址、日期)
{
开始();
写(地址);/ /传显示数据对应的地址
写(日期);/ /传1字节显示数据
停止();
}
/ * * * * * * SD2400函数名* * * * * * /
空白I2CWait(无效);
位I2CStart(无效);
空白I2CStop(无效);
空白I2CAck(无效);
空白I2CNoAck(无效);
位I2CWaitAck(无效);
Void I2CSendByte (uchar demand);
Uchar I2CReceiveByte (void);
Bit I2CReadDate (void);
Void I2CWriteStatus (void);
Void Delay (uint nn);
Bit I2CWriteDate (void);
Bit WriteTimeOn (void);
Bit WriteTimeOff (void);
(2
显示全部