📄 osd.c
字号:
#include "indash.h"
extern char Current_Status;
void OSD_Clk()
{
/* clock period > 4uS */
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 1;
OSD_SCL = 0;
OSD_SCL = 0;
}
void OSD_Transmit_Byte(unsigned char value) reentrant
{
static char cnt = 0;
cnt++;
if (cnt < 8)
OSD_Transmit_Byte(value / 2);
else
cnt = 0;
OSD_SDA = value % 2;
OSD_Clk();
}
void OSD_Ack_Bit()
{
OSD_SDA = 1;
OSD_Clk();
}
void OSD_Init(void)
{
/*
unsigned int i,j;
*/
OSD_Set( 0x129, 0x3158);
OSD_Set( 0x120, 0x0580);
OSD_Set( 0x121, 0x2c2b);
OSD_Set( 0x122, 0x0bf);
OSD_Set( 0x123, 0x180);//Horizontal display start location
OSD_Set( 0x124, 0x20); //Vertical display start location
OSD_Set( 0x125, 0);
OSD_Set( 0x126, 0x0);
OSD_Set( 0x127, 0x0);
OSD_Set( 0x128, 0x2824);
/*
for (i = 0; i < 250; i++)
{
j++;
if (j > 7)
j = 0;
OSD_Set( i, 0x6000 | (j << 8) | i);
}
OSD_Set( 0x129, 0x1d40);
Delay(1000);
*/
}
void OSD_Set(unsigned int addr, unsigned int value)
{
/* start bit */
OSD_SDA = 0;
OSD_SCL = 0;
/* control byte */
OSD_Transmit_Byte(0x7c);
OSD_Ack_Bit();
/* address byte */
OSD_Transmit_Byte(addr % 256);
OSD_Ack_Bit();
/* address byte */
OSD_Transmit_Byte(addr / 256);
OSD_Ack_Bit();
/* data byte */
OSD_Transmit_Byte(value % 256);
OSD_Ack_Bit();
/* data byte */
OSD_Transmit_Byte(value / 256);
OSD_Ack_Bit();
/* stop bit */
OSD_SDA = 0;
/* very important */
OSD_SCL = 1;
OSD_SDA = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -