#include "reg52.h"
#include "main.h"
#include "lcd1602.h"
#include "key.h"
//#include "UART.h"
#define M 5.12
//#define N 360
//u8 A=0;
u8 G;
u8 Fre=0;
u8 n;
u8 n1;
u8 Pha;
u8 k=0;
u8 i;
u8 j;
unsigned int a[16]={0};
unsigned int b[16]={0};
u8 Frequency1[2] = "F:";
u8 Frequency[]="";
u8 Phase1[2] = "P:";
u8 Phase[] = "";
u8 line = 0; // μ±Ç°ËùÔúDD 0->μúò»DD 1->μú¶tDD
u8 freNum = 2, phaNum=2;
// Ñóê± x oáÃë
void delay_ms(u16 xms)
{
u16 x, y;
for (x=0; x<xms; x++)
for(y=0; y<123; y++);
}
void addNum(u8 num)
{
if (line == 0)
{
write_com(0x80+freNum); // μúò»DD
Frequency[freNum++] = num;
Frequency[freNum] = 0;
}
else
{
write_com(0x80+0x40+phaNum); // μú¶tDD
Phase[phaNum++] = num;
Phase[phaNum] = 0;
}
write_data(num);
}
//void jinzhi()
//{
// u8 i=0;
// n=sizeof(Frequency);
// for(i=1;i<n;i++)
// {
// Fre=Fre+Frequency[i]*10^(n-i);
// }
// n1=sizeof(Phase);
// for(i=1;i<n;i++)
// {
// Pha=Pha+Phase[i]*10^(n-i);
// }
//
// A=(1000000/(Fre*M))-1;
// //A=(int)A;
// G=Pha/360*256;
// //G=(int)G;
//}
//void shiliu(Fre)
//{
// unsigned int a[16]={0};
// unsigned int b[16]={0};
// unsigned int j=0;
// while(Fre!=0)
// {
// a[j]=Fre%2;
// Fre/=2;
// j++;
// }
// for(j=15;j>=0;j--)
// {
// b[15-j]=a[j];
// }
// return b[16];
// }
// u8 a[];
// u8 i = 0;
// //int j=0;
// //int k=0;
// while (Fre != 0)
// {
// a[i] = Fre % 2;
// Fre /= 2;
// i++;
// }
// for(i = 15; i >= 0; i--)
// {
// a[i];
// }
//}
unsigned int A;
int main()
{
u8 key = 0;
Init_LCD(); // 3õê¼»ˉLCD1602
//InitUART(); // 3õê¼»ˉ′®¿ú
write_com(0x80+0x40); // μú¶tDD
Puts_to_LCD1602(Phase1);
write_com(0x80); // μúò»DD
Puts_to_LCD1602(Frequency1);
while(1)
{
//u8 i;
key = KeyScan();
switch(key)
{
//μúò»DD¼üÖμÂë
case 0x77:// 1
addNum('1');
break;
case 0x7b:// 2
addNum('2');
break;
case 0x7d:// 3
addNum('3');
break;
case 0x7e:// è·¶¨
//n=sizeof(Frequency);
//Frequency=1000000/(Frequency*M)-1;
//Puts_to_SerialPort(Frequency);
//Putc_to_SerialPort(' ');
//Puts_to_SerialPort(Phase);
//Puts_to_SerialPort("\r\n");
//Fre=0;
//for(i=3;i<n;i++)
//{
//Fre=Fre+Frequency[i]*10^(n-i);
//}
//A=(1000000/Fre/M)-1;
//P0=(int)A;
//G=Phase/N;
//P0=(int)G;
//P3=(int)A;
//jinzhi();
//shiliu();
//u8 k=0;
//unsigned int A=0;
n=sizeof(Frequency);
//u8 i;
for(i=1;i<n;i++)
{
Fre=Fre+Frequency[i]*10^(n-i);
}
// n1=sizeof(Phase);
// for(i=1;i<n;i++)
// {
// Pha=Pha+Phase[i]*10^(n-i);
// }
//
A=((1000000/(Fre*M))-1);
//A=(int)A;
//G=Pha/360*256;
//G=(int)G;
//unsigned int a[16]={0};
//unsigned int b[16]={0};
while(A!=0)
{
a[j]=A%2;
A/=2;
j++;
}
for(j=15;j>=0;j--)
{
b[15-j]=a[j];
}
for(k=0;k<8;k++)
{
P3=b[k];
}
key = KeyScan();
while(key==0x7e)
{
for(k=8;k<16;k++)
{
P3=b[k];
}
}
break;
//μú¶tDD¼üÖμÂë
case 0xb7:// 4
addNum('4');
break;
case 0xbb:// 5
addNum('5');
break;
case 0xbd:// 6
addNum('6');
break;
case 0xbe:// Çå3y
if (line == 0)
{
if (freNum > 2)
{
freNum--;
write_com(0x80+freNum); // μúò»DD
write_data(' ');
write_com(0x10); // 1a±ê×óòÆò»Î»
Frequency[freNum] = 0;
}
}
else
{
if (phaNum > 2)
{
phaNum--;
write_com(0x80+0x40+phaNum); // μúò»DD
write_data(' ');
write_com(0x10); // 1a±ê×óòÆò»Î»
Phase[phaNum] = 0;
}
}
break;
//μúèyDD¼üÖμÂë
case 0xd7:// 7
addNum('7');
break;
case 0xdb:// 8
addNum('8');
break;
case 0xdd:// 9
addNum('9');
break;
case 0xde:// éÏ
line = 1-line;
if (line == 0)
{
write_com(0x80+freNum); // μúò»DD
Puts_to_LCD1602(Frequency+freNum);
}
else
{
write_com(0x80+0x40+phaNum); // μú¶tDD
Puts_to_LCD1602(Phase+phaNum);
}
break;
//μúËÄDD¼üÖμÂë
case 0xe7:// .
n1=sizeof(Phase);
for(i=1;i<n;i++)
{
Pha=Pha+Phase[i]*10^(n-i);
}
G=Pha*256/360;
P3=(int)G;
break;
case 0xeb:// 0
addNum('0');
break;
case 0xed://
break;
case 0xee:// ÏÂ
line = 1-line;
if (line == 0)
{
write_com(0x80+freNum); // μúò»DD
Puts_to_LCD1602(Frequency+freNum);
}
else
{
write_com(0x80+0x40+phaNum); // μú¶tDD
Puts_to_LCD1602(Phase+phaNum);
}
break;
case 0:
break;
}
}
}
main.c代碼是這個 |