?? ad9850.c
字號:
Ypos = ysite;
WriteChar(Data);
}
/*--------------------------------------------------
函數名稱:
函數功能:
傳遞參數:
----------------------------------------------------*/
void Update_disp(uchar *Databuf)
{
Lcd_Any_Disp(15,1,*Databuf);
Databuf++;
Lcd_Any_Disp(16,1,*Databuf);
Databuf++;
Lcd_Any_Disp(17,1,*Databuf);
Databuf++;
Lcd_Any_Disp(18,1,*Databuf);
Databuf++;
Lcd_Any_Disp(19,1,*Databuf);
Databuf++;
Lcd_Any_Disp(20,1,*Databuf);
Databuf++;
Lcd_Any_Disp(21,1,*Databuf);
Databuf++;
Lcd_Any_Disp(22,1,*Databuf);
}
/*--------------------------------------------------
函數名稱:
函數功能:
傳遞參數:
----------------------------------------------------*/
void Number_Disp_Convert(uchar Which_Buffer,uchar Disp_DataBuffer)
{
switch (Disp_DataBuffer)
{
case 0:
Freq_Disp_Buf[Which_Buffer] = Zero;
break;
case 1:
Freq_Disp_Buf[Which_Buffer] = One;
break;
case 2:
Freq_Disp_Buf[Which_Buffer] = Two;
break;
case 3:
Freq_Disp_Buf[Which_Buffer] = Three;
break;
case 4:
Freq_Disp_Buf[Which_Buffer] = Four;
break;
case 5:
Freq_Disp_Buf[Which_Buffer] = Five;
break;
case 6:
Freq_Disp_Buf[Which_Buffer] = Six;
break;
case 7:
Freq_Disp_Buf[Which_Buffer] = Seven;
break;
case 8:
Freq_Disp_Buf[Which_Buffer] = Eight;
break;
case 9:
Freq_Disp_Buf[Which_Buffer] = Nine;
break;
}
}
/*--------------------------------------------------
函數名稱:
函數功能:
傳遞參數:
----------------------------------------------------*/
void Convert_Freq_Disp(long DispData)
{
Freq_Disp_Buf[7] = (uchar)(DispData%10);
Number_Disp_Convert(7,Freq_Disp_Buf[7]);
Freq_Disp_Buf[6] = (uchar)(DispData/10%10);
Number_Disp_Convert(6,Freq_Disp_Buf[6]);
Freq_Disp_Buf[5] = (uchar)(DispData/100%10);
Number_Disp_Convert(5,Freq_Disp_Buf[5]);
Freq_Disp_Buf[4] = (uchar)(DispData/1000%10);
Number_Disp_Convert(4,Freq_Disp_Buf[4]);
Freq_Disp_Buf[3] = (uchar)(DispData/10000%10);
Number_Disp_Convert(3,Freq_Disp_Buf[3]);
Freq_Disp_Buf[2] = (uchar)(DispData/100000%10);
Number_Disp_Convert(2,Freq_Disp_Buf[2]);
Freq_Disp_Buf[0] = (uchar)(DispData/1000000%10);
Number_Disp_Convert(0,Freq_Disp_Buf[0]);
Update_disp(Freq_Disp_Buf); //顯示輸出頻率
}
/*--------------------------------------------------
函數名稱:
函數功能:鍵盤程序開始
傳遞參數:
----------------------------------------------------*/
/*--------------------------------------------
函數名稱:HD7279_LongDelay(void)
函數說明 >500ms
--------------------------------------------*/
void HD7279_LongDelay(void)
{
uchar i;
for (i=0;i<6;i++);
}
/*--------------------------------------------
函數名稱:HD7279_ShortDelay(void)
函數說明:=500ms
--------------------------------------------*/
void HD7279_ShortDelay(void)
{;}
/*--------------------------------------------
函數名稱: Delay10ms(uchar time)
函數說明: 11.0592M晶振
--------------------------------------------*/
void Delay1ms(uchar time)
{
uchar i;
uchar j;
for(i=0;i<time;i++)
{
for(j=0;j<113;j++)
{;}
}
}
/*--------------------------------------------
函數名稱:HD7279_SendByte( uchar Out_byte)
函數說明:送指令
--------------------------------------------*/
void HD7279_SendByte( uchar Out_byte)
{
uchar i;
HD7279_CS = 0;
HD7279_LongDelay();
for(i=0;i<8;i++)
{
if (Out_byte&0x80)
{ HD7279_DATA = 1; }
else
{ HD7279_DATA = 0; }
HD7279_CLK = 1;
HD7279_ShortDelay();
HD7279_CLK = 0;
HD7279_ShortDelay();
Out_byte = Out_byte<<1;
}
HD7279_DATA=0;
}
/*--------------------------------------------
函數名稱:Write7279(uchar command, uchar dta)
函數說明:寫函數
--------------------------------------------*/
/*
void Write7279(uchar Command, uchar Data)
{
HD7279_SendByte( Command );
HD7279_SendByte( Data );
}
*/
/*--------------------------------------------
函數名稱:HD7279_ReceiveByte(void)
函數說明:接受一個BYTE函數
--------------------------------------------*/
uchar HD7279_ReceiveByte(void)
{
uchar i, In_byte;
HD7279_DATA = 1;
HD7279_LongDelay();
for(i=0;i<8;i++)
{
HD7279_CLK = 1;
HD7279_ShortDelay();
In_byte=In_byte<<1;
if(HD7279_DATA)
{
In_byte=In_byte|0x01;
}
HD7279_CLK = 0;
HD7279_ShortDelay();
}
HD7279_DATA = 0;
return (In_byte);
}
/*--------------------------------------------
函數名稱:Read7279(uchar command)
函數說明:讀函數
--------------------------------------------*/
uchar Read7279(uchar command)
{
HD7279_SendByte(command);
return(HD7279_ReceiveByte());
}
/*--------------------------------------------------
函數名稱:
函數功能:
傳遞參數:
----------------------------------------------------*/
void KeyBoard_Serve_Sub()
{
uchar Input_Data[8];
uchar i,j;
long Fout_Buffer1 = 1;
long Fout_Buffer2 = 0;
switch (Key)
{
case Key_0 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 0;
Lcd_Any_Disp((Input_Data_Count+14),1,Zero);
}
break;
case Key_1 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 1;
Lcd_Any_Disp((Input_Data_Count+14),1,One);
}
break;
case Key_2 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 2;
Lcd_Any_Disp((Input_Data_Count+14),1,Two);
}
break;
case Key_3 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 3;
Lcd_Any_Disp((Input_Data_Count+14),1,Three);
}
break;
case Key_4 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 4;
Lcd_Any_Disp((Input_Data_Count+14),1,Four);
}
break;
case Key_5 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 5;
Lcd_Any_Disp((Input_Data_Count+14),1,Five);
}
break;
case Key_6 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 6;
Lcd_Any_Disp((Input_Data_Count+14),1,Six);
}
break;
case Key_7 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 7;
Lcd_Any_Disp((Input_Data_Count+14),1,Seven);
}
break;
case Key_8 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 8;
Lcd_Any_Disp((Input_Data_Count+14),1,Eight);
}
break;
case Key_9 :
Input_Data_Count++;
if(Input_Data_Count > 8)
{
Input_Data_Count = 0;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
}
else
{
Input_Data[(Input_Data_Count - 1)] = 9;
Lcd_Any_Disp((Input_Data_Count+14),1,Nine);
}
break;
case Set_Freq :
LCD_Display(10,1,blank_disp); //將顯示部分清除
Set_Key = 1; //設置設定鍵按下標志
break;
case Freq_Step_Up:
Freq_Step_Increase();
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
Convert_Freq_Disp(Fout); //將輸出的頻率顯
break;
case Freq_Step_Down:
Freq_Step_Decrease();
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
Convert_Freq_Disp(Fout); //將輸出的頻率顯
break;
case Key_Sure :
for(i = 0;i < Input_Data_Count;i++)
{
//Fout = Input_Data[i]*(pow(10,(Input_Data_Count - i -1)));
for(j = i;j < (Input_Data_Count - 1);j++)
{
Fout = Fout_Buffer1*10;
Fout_Buffer1 = Fout;
}
Fout = Fout_Buffer1 * Input_Data[i];
Fout_Buffer2 = Fout_Buffer2 + Fout;
Fout_Buffer1 = 1;
}
Input_Data_Count = 0;
Fout = Fout_Buffer2;
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
Convert_Freq_Disp(Fout); //將輸出的頻率? Lcd_Any_Disp(23,1,0x4d);
Lcd_Any_Disp(24,1,0x68);
Lcd_Any_Disp(25,1,0x7a);
break;
default:
break;
}
}
/*--------------------------------------------------
函數名稱:
函數功能:
傳遞參數:
----------------------------------------------------*/
void Mcu_Init()
{
Delay1ms(25); //上電延時
IT0 = 1;
EX0 = 1;
EA = 1;
HD7279_SendByte(HD7279_RESET);//復位
}
/*--------------------------------------------
函數名稱:main()
函數說明:例函數
--------------------------------------------*/
main()
{
Mcu_Init();
RstLcd(); //復位LCD
ClrLcd();
SetCur(CurFlash); //光標顯示且閃爍
Update_disp(Freq_Disp_Buf);
Lcd_Any_Disp(23,1,0x4d);
Lcd_Any_Disp(24,1,0x68);
Lcd_Any_Disp(25,1,0x7a);
Frequancy_Control_Convert(Fout);//將要輸出的頻率裝換成配子字寫如!
Write_Data_Ad9850(5,Frequancy_Command);//產生輸出波形
Convert_Freq_Disp(Fout); //將輸出的頻率顯
while(1)
{
if(Key_Interupt_Flag)
{
Key_Interupt_Flag = 0;
KeyBoard_Serve_Sub();
}
}
}
void Key_Board_Interrupt(void) interrupt 0
{
Key = Read7279(HD7279_READ);
Key_Interupt_Flag = 1;
if(Error_Flag)
{
Error_Flag = 0;
LCD_Display(0,0,blank_disp);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -