📄 165lcd.c
字号:
/************************************************************
********** 任 意 波 形 的 单 片 机 控 制 部 分***************
********** 制作: 董文岳 单位:汕头大学 03 通信 **********
************************************************************/
#include <reg51.h>
#include <absacc.h>
#include <intrins.h>
#include"LCD1602.h"
#include"jianpan.h"
void keytask1();
void keytask2();
void keytask3();
void task1();
void task2();
void task3();
void task4();
void pinmo();
//void scankey();
void IntToStr(unsigned char t, unsigned char *str, unsigned char n);
void Delay1ms(unsigned int count);
unsigned char TempBuffer[10]={0,1,2,3,4,5,6,7,8,9};
sbit p1_0=P1^0;
sbit p1_1=P1^1;
sbit p1_2=P1^2;
sbit p1_3=P1^3;
sbit p1_4=P1^4;
sbit p1_5=P1^5;
sbit p1_6=P1^6;
sbit p1_7=P1^7;
sbit P2_7=P2^7;
/************************************
***** 定 义 外 部 变 量 ******
************************************/
unsigned int zhengxian_flag=0;
unsigned int fan_flag=0;
unsigned int sanjiao_flag=0;
unsigned int any_flag=0;//scankey_flag=0,keytask_flag=0;
unsigned int t,n=0,m=0,b=0,p=0,f=0,x=0,count=0,key1,key2;//字的控制:p频率字,f幅度字,x相位字(显示用)
/***********************************************************
******************* 主 函 数 *********************
***********************************************************/
void main()
{do{
pinmo();
jian();
}while(a[0]==1);
p1_0=1;
p1_5=0;
p1_5=1;//164的初始化
while(1)
{ jian();//键盘扫描
}
}/*
Delay1ms(700);
while(a[0]==0)// p频率控制字的 输入控制
{
jian(); //键盘扫描
LCD_Initial();
GotoXY(14,1);
Print("Hz");
task1();
}
while(a[1]==0)//相位字
{ jian(); //键盘扫描
LCD_Initial();
GotoXY(7,1);
Print("C");
task2();
}
while(a[2]==0)
{ jian(); //键盘扫描
LCD_Initial();
GotoXY(14,0);
Print("mV");
task3();
}
task4();//波形选择
if(a[9]==0)//a[9]存了键值,按下就变为0
{
keytask1();
}
if(a[10]==0)//a[9]存了键值,按下就变为0
{
keytask2();
}
if(a[11]==0)//a[9]存了键值,按下就变为0
{
keytask3();
}
}
}
//频率字控制
void task1()
{ jian();
if((a[3]==0)&&(p<257))
{ IntToStr(p++,&TempBuffer[0],3);
GotoXY(8,1);
Print(&TempBuffer[0]);
Delay1ms(700);
}
if((a[4]==0)&&(p<256))
{
IntToStr(p--,&TempBuffer[0],3);
GotoXY(8,1);
Print(&TempBuffer[0]);
Delay1ms(700);
}
if(a[5]==0)
{ GotoXY(13,1);
Print(" ");
p=p;;
}
if(a[6]==0)
{ GotoXY(13,1);
Print("K");
p=p<<10;
}
if(a[7]==0)
{ GotoXY(13,1);
Print("M");
p=p<<20;
}
if(a[8]==0)
{ LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//复位 频率字全部清零
p=0;p1_5=0;
Delay1ms(7000);
}n=p;
}
//相位字的控制
void task2()
{
jian();
if((a[3]==0)&&(x<257))
{ IntToStr(x++,&TempBuffer[0],3);
GotoXY(0,1);
Print(&TempBuffer[0]);
Delay1ms(700);
}
if((a[4]==0)&&(x<256))
{ IntToStr(x--,&TempBuffer[0],3);
GotoXY(0,1);
Print(&TempBuffer[0]);
Delay1ms(700);
}
if(a[8]==0)
{ LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//复位 相位字全部清零
Delay1ms(7000);p1_5=0;x=0;
}m=x;
}
//幅度字的控制
void task3()
{
jian(); //键盘扫描
if(a[5]==0)
{ GotoXY(15,0);
Print("V");
f=f<<10;
}
if((a[3]==0)&&(f<257))
{ IntToStr(f++,&TempBuffer[0],3);
GotoXY(9,0);
Print(&TempBuffer[0]);
Delay1ms(700);
}
if((a[4]==0)&&(f<256))
{ IntToStr(f--,&TempBuffer[0],3);
GotoXY(9,0);
Print(&TempBuffer[0]);
Delay1ms(700);
}
if(a[8]==0)
{ LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//复位 幅度字全部清零
Delay1ms(7000);
f=0;p1_5=0;
}b=f;
}
//波形选择控制
void task4()
{
jian(); //键盘扫描
LCD_Initial();
if(a[12]==0)
{ GotoXY(0,0);
Print("zhengxian");
zhengxian_flag=1;
}
if(a[13]==0)
{ GotoXY(0,0);
Print("sanjianbo");
sanjiao_flag=1;
}
if(a[14]==0)
{
GotoXY(0,0);
Print("fangbo ");
fan_flag=1;
}
if(a[15]==0)
{
GotoXY(0,0);
Print("renyibo ");
any_flag=1;
}
}
void keytask1()
{ // P2_7=0;
p1_0=1;
p1_5=0;
p1_5=1;
p1_4=0;
for(t=0;t<8;t++)
{
if(n&0x01==1)
{ p1_4=0;
p1_1=1;
Delay1ms(800);
p1_4=1;
}
else
{ p1_4=0;
p1_1=0;Delay1ms(800);
p1_4=1;
}
n=n>>1;
}
n=n<<8;
}
void keytask2()
{ // P2_7=0;
p1_0=1;
p1_5=0;
p1_5=1;
p1_4=0;
for(t=0;t<8;t++)
{
if(m&0x01==1)
{ p1_4=0;
p1_2=1;
Delay1ms(800);
p1_4=1;
}
else
{ p1_4=0;
p1_2=0;Delay1ms(800);
p1_4=1;
}
m=m>>1;
}
m=m<<8;
}
void keytask3()
{ // P2_7=0;
p1_0=1;
p1_5=0;
p1_5=1;
p1_4=0;
for(t=0;t<8;t++)
{
if(b&0x01==1)
{ p1_4=0;
p1_3=1;
Delay1ms(800);
p1_4=1;
}
else
{ p1_4=0;
p1_3=0;Delay1ms(800);
p1_4=1;
}
b=b>>1;
}
b=b<<8;
// p1_0=0;
}
void IntToStr(unsigned char t, unsigned char *str, unsigned char n)
{
unsigned char a[3]; char i, j;
//a[0]=(t/10000)%10; //取得整数值到数组
//a[1]=(t/1000)%10;
a[0]=(t/100)%10;
a[1]=(t/10)%10;
a[2]=(t/1)%10;
for(i=0; i<3; i++) //转成ASCII码
a[i]=a[i]+'0';
for(i=0; a[i]=='0' && i<=2; i++);
for(j=3-n; j<i; j++) //填充空格
{ *str=' '; str++; }
for(; i<3; i++)
{ *str=a[i]; str++; } //加入有效的数字
*str='\0';
}
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
} */
void pinmo()
{ unsigned int i;
for(i=0;i<16;i++)
{ LCD_Initial();
GotoXY(i+1,0);
Print("Welcome ^_^");
GotoXY(i+1,1);
Print("Make by 03TE");
GotoXY(i,0);
Print(" ");
GotoXY(i,1);
Print(" ");
Delay1ms(300);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -