📄 max262main.c
字号:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define CH451_SYSOFF 0x0402 //设定系统参数,开显示,关键盘
#define CH451_RESET 0X0201 //设定复位
#define CH451_KEY 0x07ff //读取键码
sbit dout=P1^3;
sbit dclk=P1^0;
sbit din=P1^1;
sbit load=P1^2;
sbit sdata = P1^0 ;
sbit sclk = P1^1 ;
sbit sload = P1^2 ;
sbit max_wr = P1^3 ;
uchar keycode,num; //定义存放采样数据的寄存器
void write(uint order);
void ch451_read();
void write_max262(uchar dat);
unsigned code M0M1[18]={0x00,0x00,0x00,0x40,0x40,0x40,
0x40,0x40,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80};
unsigned code f0f1[18]={0x21,0x21,0x21,0x61,0x61,0x61,
0x71,0x61,0x91,0xa1,0xb1,0xa1,
0xa1,0xa1,0xa1,0xb1,0x81,0xa1};
unsigned code f2f3[18]={0x12,0x02,0x12,0x52,0x62,0x42,
0x62,0x52,0xb2,0xb3,0xb2,0xa2,
0x92,0x82,0xb2,0xa2,0xa2,0x92};
unsigned code f4f5[18]={0x33,0x23,0x13,0x73,0x63,0x63,
0x53,0x53,0xb3,0xb3,0xa3,0xa3,
0xa3,0xa3,0x93,0x93,0x93,0x93}; //3K--20K
unsigned code q0q1[18]={0x24,0x24,0x24,0x64,0x64,0x64,
0x64,0x64,0xa4,0xa4,0xa4,0xa4,
0xa4,0xa4,0xa4,0xa4,0xa4,0xa4};
unsigned code q2q3[18]={0x15,0x15,0x15,0x55,0x55,0x55,
0x55,0x55,0x95,0x95,0x95,0x95,
0x95,0x95,0x95,0x95,0x95,0x95};
unsigned code q4q5[18]={0x26,0x26,0x26,0x66,0x66,0x66,
0x66,0x66,0xa6,0xa6,0xa6,0xa6,
0xa6,0xa6,0xa6,0xa6,0xa6,0xa6};
unsigned code q6[18]={0x07,0x07,0x07,0x47,0x47,0x47,
0x47,0x47,0x87,0x87,0x87,0x87,
0x87,0x87,0x87,0x87,0x87,0x87};
main()
{ din=1; //通知CH451使能四个串行口
din=0;
din=1;
num=0;
write(CH451_RESET); //设定复位
write(CH451_SYSOFF); //设定系统参数
while(1)
{ ch451_read();
if(keycode==0x40)
{ num++;
keycode=0xff;
}
write_max262(M0M1[num]) ; //选择低通,方式1
write_max262(f0f1[num]) ; //f0,f1参数的设置
write_max262(f2f3[num]) ; //f2,f3参数的设置
write_max262(f4f5[num]) ; //f4,f5参数的设置
write_max262(q0q1[num]) ; //q0,q1参数的设置
write_max262(q2q3[num]) ; //q2,q3参数的设置
write_max262(q4q5[num]) ; //q4,q5参数的设置
write_max262(q6[num]) ; //q6,参数的设置
}
}
void write_max262(uchar dat)
{
uchar k ;
sload = 0 ;
for(k=0;k<8;k++)
{
sclk = 0 ;
dat = dat << 1 ;
sdata = CY ;
sclk = 1 ;
}
max_wr = 0 ;
sload = 1 ;
max_wr = 1 ;
}
void write(uint order) //数据输入到CH451子程序
{
uint i;
load=1;
for(i=0;i<12;i++)
{
din=order&1;
dclk=0;
order=order>>1;
dclk=1;
}
load=0;
load=1;
}
void ch451_read()
{ uint i;
load=1;
while(dout==1); //查询标志位,有按键DOUT为0
write(CH451_KEY);
load=1;
load=0;
load=1;
keycode=0x00;
for(i=0;i<6;i++)
{
keycode=keycode|(unsigned char)dout;
keycode=keycode<<1;
dclk=1;
dclk=0;
}
keycode=keycode|(unsigned char)dout; //读得键码
for(i=0;i<42500;i++);
din=1;
din=0;
din=1;
dout=1;
write(CH451_RESET);
write(CH451_SYSOFF);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -