📄 control.c
字号:
//////////////////////////////////////////////////////////////////////////////
//_________________________________//
// 0 1 2 3 4 5 6 7 8 9 a b c d e f //
/////////////////////////////////////
// O u t : 1 2 3 4 5 6 7 8 H z // disp_buf0[16]
// I n : 8 7 6 5 4 3 2 1 H z // disp_buf1[16]
/////////////////////////////////////
extern unsigned char disp_buf0[16];
extern unsigned char disp_buf1[16];
extern unsigned char code disp_error[16];
extern unsigned char code disp_init[16];
extern unsigned char word_buf[5];
extern unsigned char code disp_max[16];
extern unsigned char check_key(void);
extern void ad9851_init(void);
extern void send_word(unsigned char *fq_word);
extern void lcd_init(void);
extern void write_lcd(unsigned char select,unsigned char dat);
extern void display_line(unsigned char y, unsigned char *dat);
unsigned long code word_table[8] = {24,238,2386,23860,238609,2386092,23860929,238609294};//频率表
void delay_ms(unsigned char time) //长延时函数
{
unsigned char cnt;
while(time--)
for (cnt=17;cnt>0;--cnt);
}
void delay_s(unsigned int time) //短延时函数
{
unsigned int cnt;
while(time--)
for (cnt=1000;cnt>0;--cnt);
}
main()
{
char nbit = 0;
unsigned char key;
unsigned char frequent[8]; //用来查表的纯频率数组
unsigned char i;
unsigned long temp;
ad9851_init(); //各部件的初始化
lcd_init();
send_word(word_buf); //初始化频率
display_line(0,disp_buf0);
display_line(1,disp_init);
delay_s(200);
display_line(1,disp_buf1);// 液晶默认显示
while(1)
{
key = check_key();
if(key == 10) //退格键
{
nbit--;
if (nbit < 0) // 记得加 上如果开机状态 输退格处理
nbit = 0;
frequent[nbit] = 0;
disp_buf1[5 + nbit] = ' ';
display_line(1,disp_buf1);
}
if(key == 11) //确认键
{
temp = 0;
for(i=0;i<nbit;i++) // 查表,读频率
{
temp += (word_table[nbit-i-1]*frequent[i]);
}
for(i=0;i<4;i++)
{
word_buf[4-i] = (unsigned char)(temp>>(8*i));
}
send_word(word_buf); //更新频率
if(nbit != 0)
for(i=0;i<8;i++)
disp_buf0[5+i] = ' '; //去掉上次显示
for(i=0;i<nbit;i++) //更新频率显示
{
disp_buf0[13-nbit+i] = frequent[i] + 0x30;
}
display_line(0,disp_buf0);
for (i=0;i<8;i++)
{
disp_buf1[5+i] = ' '; //清输入显示
frequent[i] = 0;
}
display_line(1,disp_buf1);
nbit = 0;
}
if(key <= 9 && key >= 0) //数字键
{
if(nbit > 7 || ((nbit == 7) && (frequent[0] > 7))) //超出最大范围
{
display_line(1,disp_error);
display_line(0,disp_max); //显示超范围错误
delay_s(200);
display_line(0,disp_buf0);
for(i=0;i<8;i++) //清屏幕
{
nbit = 0;
disp_buf1[5 + i] = ' ';
frequent[i] = 0;
}
display_line(1,disp_buf1);
}
else //数字键处理过程
{
frequent[nbit] = key;
disp_buf1[5 + nbit] = key + 0x30;
display_line(1,disp_buf1);
nbit++;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -