📄 jianpanxs.c
字号:
/*********led子程序**********/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void init8279();
void clear_led();
void display0( int k);
void display1( int k);
void display2( int k);
void msec(unsigned int x);
unsigned char keyin(void);
void chuli(unsigned char jianhao);
void displayf();
#include<absacc.h>
#define ctrl8279 XBYTE[0X4000] ///////////A001
#define data8279 XBYTE[0X0000] ////////////A000
sbit cflag=ACC^7;
sbit WR0832=0XB0;
unsigned char state0=0;
unsigned char state1=1;
int n00=0;
int n01=0;
unsigned int bvalue1=10;
unsigned int bvalue0=10;
bit bujin=0;
uchar code table[]={252,96,218,242,102,182,190,224,254,246}; //led 1 2 34
unsigned char jianma_[16]={193,206,201,203,199,192,194,207,200,202,198,195,197,205,196,204}; //jian ma
//***********1毫秒延时*********//
void msec(unsigned int x){
uchar j;
while(x--){
for(j=0;j<125;j++)
{;}
}
}
/**************************************/
/*
void wdat_8279(uchar d){
msec(1);
do
{ACC=ctrl8279;}
while (cflag==1);
data8279=d;
}
/*******************************************/
void wcom_8279(uchar c){
msec(1);
do
{ACC=ctrl8279;}
while (cflag==1);
ctrl8279=c;
}
/*************清显存*********************/
void clear_led(){
wcom_8279(0xd0);
}
/***************************************/
void display0( int k)
{
uint s=0,a=0,d=0, m=0,f=0,n=0;
if(k>=0&&k<=2000)
{
// ctrl8279=0x00;
s=k/1000;
wcom_8279(0x80);
data8279=table[s];
//
a=k%1000;
d=a/100;
wcom_8279(0x81);
data8279=table[d];
//
m=a%100;
f=m/10;
wcom_8279(0x82);
data8279=table[f];
//
n=m%10;
wcom_8279(0x83);
data8279=table[n];
//
}
else
displayf();
}
void display1( int k)
{
uint s=0,a=0,d=0, m=0,f=0,n=0;
if(k>=0&&k<=500)
{
// ctrl8279=0x00;
s=k/1000;
wcom_8279(0x80);
data8279=table[s];
//
a=k%1000;
d=a/100;
wcom_8279(0x81);
data8279=table[d];
//
m=a%100;
f=m/10;
wcom_8279(0x82);
data8279=table[f];
//
n=m%10;
wcom_8279(0x83);
data8279=table[n];
//
}
else
displayf();
}
void display2( int k)
{
uint s=0,a=0,d=0, m=0,f=0,n=0;
if(k>=0&&k<10000)
{
// ctrl8279=0x00;
s=k/1000;
wcom_8279(0x84);
data8279=table[s];
a=k%1000;
d=a/100;
wcom_8279(0x85);
data8279=table[d];
//
m=a%100;
f=m/10;
wcom_8279(0x86);
data8279=table[f];
//
n=m%10;
wcom_8279(0x87);
data8279=table[n];
//
}
}
void displayf()
{unsigned char i;
wcom_8279(0x90);
for(i=0;i<16;i++)
data8279=30;
}
/************************************************/
/*
uchar key_pressed(void) //判断FIFO有键按下函数
{uchar k;
k=ctrl8279;
return(k&0x0f); //非0,有键按下
}
uchar keyin(void)
{uchar i;
while(key_pressed()==0);
wcom_8279(0x40); //读FIFO RAM命令
i=data8279;
return(i);
}
*/
void init8279()
{unsigned char i;
ctrl8279=0x34; //biancheng minglin shizhong :ale 18 fenping 00110010
ctrl8279=0x10; //8zifuxianshi you ru kou ,bianma sao miao jianpan,shuang jian suo
ctrl8279=0xd1; //xianshi ram qing 0,quan zhi 1;
i=ctrl8279; //du zhuang tai zi
i=i&0X80; //qu gao wei
while(i==0x80)
{i=ctrl8279;
i=i&0x80;
}
}
//***********翻译键码********************//
yijianma(unsigned char jianma)
{unsigned char jianhao;
if(jianma==jianma_[0]) jianhao=0;
else if (jianma==jianma_[1]) jianhao=1;
else if (jianma==jianma_[2]) jianhao=2;
else if (jianma==jianma_[3]) jianhao=3;
else if (jianma==jianma_[4]) jianhao=4;
else if (jianma==jianma_[5]) jianhao=5;
else if (jianma==jianma_[6]) jianhao=6;
else if (jianma==jianma_[7]) jianhao=7;
else if (jianma==jianma_[8]) jianhao=8;
else if (jianma==jianma_[9]) jianhao=9;
else if (jianma==jianma_[10]) jianhao=10;
else if (jianma==jianma_[11]) jianhao=11;
else if (jianma==jianma_[12]) jianhao=12;
else if (jianma==jianma_[13]) jianhao=13;
else if (jianma==jianma_[14]) jianhao=14;
else if (jianma==jianma_[15]) jianhao=15;
return(jianhao);
}
main() {
init8279();
display0(0);
display2(5678);
IT0=1;
EA=1;
EX0=1;
//clear_led();
WR0832=1;
msec(500);
while(1){
//jianhao=yijianma(keyin());
//display1(jianhao);
//display1(ctrl8279);
//display1(keyin());
// msec(500);
//clear_led();
}
}
//**************键盘中断*************************//
void int0() interrupt 0 //键盘中断
{unsigned char jianma;
wcom_8279(0x40); //读FIFO RAM命令
jianma=data8279;
chuli(yijianma(jianma)); //键码对应键号 (keyin())
}
//**********************************************//
//**************键号处理************************//
void chuli(unsigned char jianhao)
{unsigned char dianya;
if(bujin==0)
{
switch(state0)
{
case 0: // 初始状态与CLR
{
if(jianhao<=9)
{n00=jianhao;
display0(n00);
state0=1;
}
else if(jianhao<=10) //按下CLR AND ENTER
{
}
else if(jianhao<=11)
{P1=0;
WR0832=0;
WR0832=1;
state0=2;
}
else if(jianhao<=12) //+
{n01=n00+bvalue1;
display0(n01);
n00=n01;
state0=2;
}
else if(jianhao<=13) //-
{
}
else if(jianhao<=14) //设定步进植
{bujin=1;
display1(bvalue1);
state1=2;
}
else if(jianhao<=15)
{}
} break;
case 1: //按数字后进入状态
{
if(jianhao<=9)
{n01=jianhao;
n01=n00*10+n01;
display0(n01);
n00=n01;
state0=1;
}
else if(jianhao<=10)
{n00=0;
n01=0;
display0(n01);
state0=0;
}
else if(jianhao<=11) //////////////
{dianya=n00*0.128;
if(n00==2000)
dianya=0xff;
P1=dianya;
WR0832=0;
WR0832=1;
state0=2;
}
else if(jianhao<=12)
{n01=n00+bvalue1;
display0(n01);
n00=n01;
state0=2;
}
else if(jianhao<=13)
{n01=n00-bvalue1;
display0(n01);
n00=n01;
state0=2;
}
else if(jianhao<=14)
{bujin=1;
display1(bvalue1);
state1=2;
}
} break;
case 2: //ENTER后
{ if(jianhao<=9)
{n01=jianhao;
display0(n01);
n00=n01;
state0=1;
}
else if(jianhao<=10)
{n00=0;
n01=0;
display0(n01);
state0=0;
}
else if(jianhao<=11)
{state0=2;
}
else if(jianhao<=12)
{n01=n00+bvalue1;
display0(n01);
n00=n01;
dianya=n00*0.128;
if(n00==2000)
dianya=0xff;
P1=dianya;
WR0832=0;
WR0832=1;
state0=2;
}
else if(jianhao<=13)
{n01=n00-bvalue1;
display0(n01);
n00=n01;
dianya=n00*0.128;
P1=dianya;
WR0832=0;
WR0832=1;
state0=2;
}
else if(jianhao<=14) //设定步进值
{bujin=1;
display1(bvalue1);
state1=2;
}
} break;
}
}
else if(bujin==1)
{ switch(state1)
{
case 0:
{ if(jianhao<=9)
{
bvalue1=jianhao;
display1(bvalue1);
bvalue0=bvalue1;
state1=1;
}
else if(jianhao<=10)
{
bvalue1=0;
bvalue0=0;
display1(bvalue1);
state1=0;
}
else if(jianhao<=11)
{state1=2;
}
else if(jianhao<=12)
{bvalue1=bvalue0+1;
display1(bvalue1);
bvalue0=bvalue1;
state1=2;
}
else if(jianhao<=13)
{bvalue1=bvalue0-1;
display0(bvalue1);
state1=2;
}
else if(jianhao<=14)
{}
else if(jianhao<=15)
{bujin=0;
display0(n00);
state0=2;
}
}break;
case 1:
{ if(jianhao<=9)
{
bvalue1=jianhao;
bvalue1=bvalue0*10+bvalue1;
display1(bvalue1);
bvalue0=bvalue1;
state1=1;
}
else if(jianhao<=10)
{bvalue1=0;
bvalue0=0;
display1(bvalue0);
state1=0;
}
else if(jianhao<=11)
{state1=2;
}
else if(jianhao<=12)
{bvalue1=bvalue0+1;
bvalue0=bvalue1;
display1(bvalue1);
}
else if(jianhao<=13)
{bvalue1=bvalue0-1;
display1(bvalue1);
bvalue0=bvalue1;
}
else if(jianhao<=14)
{}
else if(jianhao<=15)
{bujin=0;
display0(n00);
}
}break;
case 2:
{ if(jianhao<=9)
{bvalue1=jianhao;
display1(bvalue1);
bvalue0=bvalue1;
state1=1;
}
else if(jianhao<=10)
{bvalue0=0;
bvalue1=0;
display1(0);
state1=1;
}
else if(jianhao<=11)
{state1=2;
}
else if(jianhao<=12)
{bvalue1=bvalue0+1;
bvalue0=bvalue1;
display1(bvalue1);
}
else if(jianhao<=13)
{bvalue1=bvalue0-1;
display1(bvalue1);
bvalue0=bvalue1;
}
else if(jianhao<=14)
{}
else if(jianhao<=15)
{bujin=0;
display0(n00);
}
}break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -