📄 pt6964.c
字号:
//---------------------------------------------------------------------------
// YuXiang Inc. Company Confidential Strictly Private
// main.c
// $Archive: PT6964.c $
// $Revision: 0.1 $
// $Author: YuCheng $
// $Date: 2005/08/19 16:15:51 $
//
// --------------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------------
// Copyright 2005(c) YuXiang Inc.
// This is an unpublished work.
// --------------------------------------------------------------------------
#include <intrins.h>
#include "includes.h"
#include "serial.h"
#include "PT6964.h"
#include "PCF8563.h"
//---------------------------------------------------------------------------
//指令和数据操作
//---------------------------------------------------------------------------
//--------------------------------------------------------------------------
// Write Command to LCM
//--------------------------------------------------------------------------
INT8U Disp_Tab[18] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0x73,0x78};
bit LED_Dip_enable;
//--------------------------------------------------------------------------
// WriteData
//--------------------------------------------------------------------------
void WriteData(INT8U Value)
{
INT8U i;
for(i=0;i<8;i++)
{
if(Value & 0x01)
PT6964_DIN_H;
else
PT6964_DIN_L;
PT6964_CLK_L;
PT6964_CLK_H;
Value >>= 1;
}
}
//--------------------------------------------------------------------------
// Write_Adr_Data to LCM
//--------------------------------------------------------------------------
void Write_Adr_Data(INT8U addr, INT8U value) reentrant
{
PT6964_STB_L;
WriteData(0x44);
PT6964_STB_H;
PT6964_STB_L;
WriteData(addr|0xc0);
WriteData(value);
PT6964_STB_H;
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
// Clear6961RAM
//--------------------------------------------------------------------------
void Clear6964RAM(void)
{
char i;
PT6964_STB_L;
WriteData(0x40); //Command 1, increment address
PT6964_STB_H;
PT6964_STB_L;
WriteData(0xc0); //Command 2, RAM address = 0
for(i=0;i<=0x0D;i++) //22 bytes
WriteData(0x00);
PT6964_STB_H;
}
//--------------------------------------------------------------------------
// PT6964_Init
//--------------------------------------------------------------------------
void PT6964_Init(void)
{
PT6964_STB_H; //Initial state
PT6964_CLK_H; //Intial state
Clear6964RAM();
PT6964_STB_L;
WriteData(0x03); //7 digit
PT6964_STB_H;
PT6964_STB_L;
WriteData(0x8a); //Command 3, Display ON
PT6964_STB_H;
}
//--------------------------------------------------------------------------
// Write Command to LCM
//--------------------------------------------------------------------------
void LED_DISP(INT8U Led_value,INT8U Led_bit) reentrant
{INT8U temp;
if(Led_value<18)
{ temp=Led_value&0x1f;
PT6964_STB_L;
WriteData(0x44); //
PT6964_STB_H;
switch(Led_bit)
{case 1:Write_Adr_Data(0x00, Disp_Tab[temp]);break;
case 2:Write_Adr_Data(0x02, Disp_Tab[temp]);break;
case 3:Write_Adr_Data(0x04, Disp_Tab[temp]);break;
case 4:Write_Adr_Data(0x06, Disp_Tab[temp]);break;
case 5:Write_Adr_Data(0x08, Disp_Tab[temp]);break;
case 6:Write_Adr_Data(0x0a, Disp_Tab[temp]);break;
default: break;
}
Write_Adr_Data(0x0c, 0x8a);
}
}
void LED_PT6964(void) reentrant
{
INT8U temp1,temp2;
temp2=T_Hour&0x0f;
temp1=T_Hour>>4& 0x03;
LED_DISP(temp1,1);
LED_DISP(temp2,2);
temp2=T_Minute&0x0f;
temp1=(T_Minute>>4)&0x07;
LED_DISP(temp1,3);
LED_DISP(temp2,4);
temp2=T_Second&0x0f;
temp1=(T_Second>>4)&0x07;
LED_DISP(temp1,5);
LED_DISP(temp2,6);
}
void LED_Dip_Event(void) reentrant
{
LED_PT6964();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -