📄 text2.c
字号:
/* P2.5接A1,P2.4接A0,P1接数码管段选
P3.0 P3.1 P3.4 P3.3分别接片选*/
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define ushort unsigned short
uchar inckeytemp; // 增1按键标志位
uchar deckeytemp; // 减1按键标志位
uchar temp; // DA转换输入数据位
int g;
int s;
int b;
int q;
uchar disp_data[]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f};
ushort disp_data1[]={1572,1862,1942,1802,1662,1792,1852,1782};
char disp_q; //显示数据千位
char disp_b; //显示数据百位
char disp_s; //显示数据十位
char disp_g; //显示数据个位
char Red_data;
char Yellow_data;
char Green_data;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_6=P3^6;
/* 初始化函数 */
void initial(void)
{
EA=1;
EX0=1;
IT0=1;
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
disp_q=0;
disp_b=0;
disp_s=0;
disp_g=0;
temp=0x03;
Red_data=0;
Yellow_data=0xff;
Green_data=0xff;
}
/* 延时函数 */
void delay(uchar t)
{
while(t--);
}
/* D/A转换函数 */
void DAconvertion(void)
{
P2_0=0;
P3_6=0;
P0=temp;
}
/* 波形选择函数 外中断0 */
void wchoose_int0(void) interrupt 0 using 0
{
if(0==P2_5)
{
if(1==P2_4)
{
P2_4=0; //方波
Yellow_data=Red_data=1;
Green_data=0;
delay(0x10);
}
else if(0==P2_4)
{
P2_5=1; //正弦波
Yellow_data=Green_data=1;
Red_data=0;
delay(0x10);
}
}
else if(1==P2_5)
{
P2_5=0;
P2_4=1; //三角波
Green_data=Red_data=1;
Yellow_data=0;
delay(0x10);
}
}
/* 显示数据处理函数 */
void display_data(void)
{
ushort temp_data; //
temp_data=disp_data1[temp];
g=temp_data%10;
s=(temp_data%100)/10;
b=(temp_data%1000)/100;
q=temp_data/1000;
disp_g=disp_data[g];
disp_s=disp_data[s];
disp_b=disp_data[b];
disp_q=disp_data[q];
}
/* 显示函数 */
void display(void)
{
char i=0xff;
while(i--)
{
P1=disp_g; //送个位显示数据
P3_0=0;
delay(0x20);
P3_0=1;
P1=disp_s; //十位
P3_1=0;
delay(0x20);
P3_1=1;
P1=disp_b; //百位
P3_4=0;
delay(0x20);
P3_4=1;
P1=disp_q; //千位
P3_3=0;
delay(0x20);
P3_3=1;
P2_1=Green_data;
P2_2=Yellow_data;
P2_3=Red_data;
}
}
/* 更新显示函数 */
void updata_disp(void)
{
display_data();
display();
}
/* 中心频率调节函数 */
void midfrequency(void)
{
if(1==inckeytemp)
{
temp++;
inckeytemp=0;
}
if(1==deckeytemp)
{
temp--;
deckeytemp=0;
}
}
/* 键盘扫描函数 */
void keyscan(void)
{
if(0==P2_7)
{
delay(0x10);
while(0==P2_7);
{
inckeytemp=1; //增加键按下标志位
midfrequency();
DAconvertion();
}
}
if(0==P2_6)
{
delay(0x10);
while(0==P2_6);
{
deckeytemp=1; //减键按下标志位
midfrequency();
DAconvertion();
}
}
updata_disp();
}
void main(void)
{
initial();
DAconvertion();
while(1)
{
keyscan();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -