📄 music.c
字号:
/**********************************************************************
公司名: 广州强智数码科技有限公司
文件名: FM100.c
设计者: 王健强
开始日: 2005-12-20 12:19
完成日: 2006-2-7 11:49
----------------------------------------------------------------------
MCU stc89c51
Crycle 12MHz
Audio input selector PT2314 ; FM PC MP
2CH Audio Processor PT2314 ; Volume & Tone & Loud
LCD Drive HT1621 ;
A/D LM324 ;
Template DS18B20 ;
Remote transmit HT6222
**********************************************************************/
#define X0_Seq 0
#define T0_Seq 1
#define X1_Seq 2
#define T1_Seq 3
#define T2_Seq 5
#include < reg51.h >
#include < intrins.h >
#include "b.h"
/*************************************************************
Data Define
*************************************************************/
#define uchar unsigned char
#define uint unsigned int
#define BYTE unsigned char
#define WORD unsigned int
#define nop _nop_()
#define True 1
#define False 0
#define High 1
#define Low 0
#define ON 1
#define OFF 0
#define Colck 12 // clock
#define Xtal 12 // mhz
#define Time_Base (Xtal/Colck)
#define TH_10MS (0xffff-10000*Time_Base/256) // 定时时间(US)/时基/256
#define TL_10MS (0xffff-10000*Time_Base)%256 // 定时时间(US)/时基%256
#define Lcd_On 0x8060
#define Lcd_Off 0x8040
#define Sys_En 0x8020
#define Bais_4 0x8520
#define F_Lcd_X1 0
#define F_Lcd_X2 1
#define F_Lcd_Bal 2
#define F_Lcd_FAD 3
#define F_Lcd_A 4
#define F_Lcd_MP 5
#define F_Lcd_X 6
#define F_Lcd_AM 7
#define F_Lcd_FM 8
#define F_Lcd_P1 9
#define F_Lcd_T 10
#define F_Lcd_X3 11
#define F_Lcd_X4 12
#define F_Lcd_MHZ 13
#define F_Lcd_KHZ 14
#define F_Lcd_AUX 15
#define F_Lcd_COL 16
#define F_Lcd_PC 17
#define LCD_0 0
#define LCD_1 1
#define LCD_2 2
#define LCD_3 3
#define LCD_4 4
#define LCD_5 5
#define LCD_6 6
#define LCD_7 7
#define LCD_8 8
#define LCD_9 9
#define LCD_A 10
#define LCD_B 11
#define LCD_C 12
#define LCD_d 13
#define LCD_E 14
#define LCD_F 15
#define LCD_Space 16
#define LCD_V 17
#define LCD_n 18
#define LCD_o 19
#define LCD_T 20
#define LCD_M 21
#define LCD_P 22
#define LCD_L 23
#define LCD_c 24
#define Dot_A 25
#define Dot_B 26
#define Dot_C 27
#define Dot_D 28
#define Dot_E 29
#define Dot_F 30
#define Dot_G 31
/*************************************************************
P0
*************************************************************/
sbit P_DO72130 = P0^0;
sbit P_CLK72130 = P0^1;
sbit P_DI72130 = P0^2;
sbit P_CE72130 = P0^3;
sbit P_SDA = P0^4;
sbit P_SCK = P0^5;
sbit P_AD_Ctrl = P0^6;
sbit P_LoudLed = P0^7;
/*************************************************************
P2
*************************************************************/
sbit P_RedLed = P2^7;
sbit P_GreenLed = P2^6;
sbit P_BlueLed = P2^5;
/*************************************************************
P1
*************************************************************/
sbit P_18B20 = P1^4;
/*************************************************************
P3
*************************************************************/
sbit P_ADIn = P3^2;
sbit P_Remote = P3^3;
sbit P_Cs1621 = P3^4;
sbit P_Clk1621 = P3^5;
sbit P_Dat1621 = P3^6;
sbit P_Buzz = P3^7;
/*************************************************************
bdata max16 bytes ( 20h-3fh )
*************************************************************/
/*************************************************************
data max24+80=104 bytes ( 08h-1fh & 30h-7fh )
*************************************************************/
uchar data Disp_Buf0[8] ;
uchar data Disp_Char_Buf[4];
uchar data Temp_Result[2] ;
uchar data Music10ms_Cnt ;
uchar data Pulse2WideTmp ;//节拍
uchar data Pulse1WideTmp ;//音符
uchar data EepLed_Mode ;
uchar code Char_Word_Tab[]=
{
/*BAegf_xxxx,Bdcba_xxXx,*/
B0101_0000,B1111_0000,//0 LCD_0 0
B0000_0000,B0110_0000,//1 LCD_1 1
B0110_0000,B1011_0000,//2 LCD_2 2
B0010_0000,B1111_0000,//3 LCD_3 3
B0011_0000,B0110_0000,//4 LCD_4 4
B0011_0000,B1101_0000,//5 LCD_5 5
B0111_0000,B1101_0000,//6 LCD_6 6
B0000_0000,B0111_0000,//7 LCD_7 7
B0111_0000,B1111_0000,//8 LCD_8 8
B0011_0000,B1111_0000,//9 LCD_9 9
B0111_0000,B0111_0000,//A LCD_A 10
B0010_0000,B1111_0010,//B LCD_B 11
B0101_0000,B1001_0000,//C LCD_C 12
B0110_0000,B1110_0000,//D LCD_D 13
B0111_0000,B1001_0000,//E LCD_E 14
B0111_0000,B0001_0000,//F LCD_F 15
/*BAegf_xxxx,Bdcba_xxXx,*/
B0000_0000,B0000_0000,//space LCD_Space 16
B0101_0000,B1110_0000,//U/V LCD_V 17
B0101_0000,B0111_0000,//- LCD_n 18
B0110_0000,B1100_0000,//o LCD_o 19
B0000_0000,B0001_0010,//T LCD_T 20
B0101_0000,B0111_0010,//M LCD_M 21
B0111_0000,B0011_0000,//P LCD_P 22
B0101_0000,B1000_0000,//L LCD_L 23
B0110_0000,B1000_0000,//c LCD_c 24
/*BAegf_xxxx,Bdcba_xxXx,*/
B0000_0000,B0001_0000,//- Dot_A 25
B0000_0000,B0010_0000,//- Dot_B 26
B0000_0000,B0100_0000,//- Dot_C 27
B0000_0000,B1000_0000,//- Dot_D 28
B0100_0000,B0000_0000,//- Dot_E 29
B0001_0000,B0000_0000,//- Dot_F 30
B0010_0000,B0000_0000,//- Dot_G 31
};
uchar code Char_Byte_Tab[]=
{
/*Bdcba_xegf*/
B1111_0101,//0 LCD_0 0
B0110_0000,//1 LCD_1 1
B1011_0110,//2 LCD_2 2
B1111_0010,//3 LCD_3 3
B0110_0011,//4 LCD_4 4
B1101_0011,//5 LCD_5 5
B1101_0111,//6 LCD_6 6
B0111_0000,//7 LCD_7 7
B1111_0111,//8 LCD_8 8
B1111_0011,//9 LCD_9 9
B0111_0111,//A LCD_A 10
B1100_0111,//b LCD_B 11
B1001_0101,//C LCD_C 12
B1110_0110,//d LCD_d 13
B1001_0111,//e LCD_E 14
B0001_0111,//f LCD_F 15
/*Bdcba_xegf*/
B0000_0000,//space LCD_Space 16
B1110_0101,//U/V LCD_V 17
B0111_0101,//- LCD_n 18
B1100_0110,//b LCD_b 19
B0000_0010,//- LCD_T 20
B0000_0010,//- LCD_M 21
B0011_0111,//P LCD_P 22
B1000_0101,//u LCD_L 23
B1000_0110,//c LCD_c 24
/*Bdcba_xegf*/
B0001_0000,//- Dot_A 25
B0010_0000,//- Dot_B 26
B0100_0000,//- Dot_C 27
B1000_0000,//- Dot_D 28
B0000_0100,//- Dot_E 29
B0000_0001,//- Dot_F 30
B0000_0010,//- Dot_G 31
};
uchar code Lcd_Flag_Tab[][2]=
{// Buf(n),dot
0, B0000_0001, // LCD_Flag_X1 0
0, B0000_0010, // LCD_Flag_X2 1
0, B0000_0100, // LCD_Flag_Bal 2
0, B0000_1000, // LCD_Flag_FAD 3
0, B1000_0000, // LCD_Flag_A 4
1, B0000_0001, // LCD_Flag_MP 5
1, B0000_0010, // LCD_Flag_X 6
1, B0000_0100, // LCD_Flag_AM 7
1, B0000_1000, // LCD_Flag_FM 8
3, B0000_1000, // LCD_Flag_P1 9
4, B0000_1000, // LCD_Flag_T 10
5, B0000_0001, // LCD_Flag_X3 11
5, B0000_0010, // LCD_Flag_X4 12
5, B0000_0100, // LCD_Flag_MHZ 13
5, B0000_1000, // LCD_Flag_KHZ 14
6, B0001_0000, // LCD_Flag_AUX 15
6, B0010_0000, // LCD_Flag_COL 16
6, B0100_0000, // LCD_Flag_PC 17
};
/************************************************
Ht1621驱动程序(24C128/PTC2323/Pt2314)
************************************************/
void Lcd_Command( uint Command )
{
uchar i;
P_Cs1621 = Low ;
for ( i=0; i<12; i++ )
{
P_Clk1621 = Low ;
if (Command&0x8000)
{
P_Dat1621 = High ;
}
else
{
P_Dat1621 = Low ;
}
P_Clk1621 = High ;
Command <<= 1;
}
P_Cs1621 = High ;
}
/************************************************/
void Lcd_Write_Head(void)
{
P_Dat1621 = High ;
nop ;
P_Clk1621 = Low ;
nop ;
P_Clk1621 = High ;
nop ;
P_Dat1621 = Low ;
nop ;
P_Clk1621 = Low ;
nop ;
P_Clk1621 = High ;
nop ;
P_Dat1621 = High ;
nop ;
P_Clk1621 = Low ;
nop ;
P_Clk1621 = High ;
}
/************************************************/
void WriteHt1621( uchar Addr_Tmp,uchar Data_Tmp )
{
uchar i ;
P_Cs1621 = Low ;
Lcd_Write_Head() ;
for (i=0;i<6;i++)
{ // set offset address
P_Clk1621 = Low ;
if (Addr_Tmp&0x20)
{
P_Dat1621 = High ;
}
else
{
P_Dat1621 = Low;
}
P_Clk1621 = High;
Addr_Tmp <<= 1 ;
}
for (i=0;i<8;i++)
{ // data output
P_Clk1621 = Low ;
if ( Data_Tmp&0x01 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -