求单片机c语言程序

求单片机c语言程序
利用at89s52矩阵键盘和lcd1602实现可以输入任意一个数,并且有两个键可以实现自加自减 急!!!
有没有不用中断的,p0连1602,p3连键盘
#include //不知道你的单片机开发板是不是和我的定义一样 要是不锋耐顷一样 你就自
#define uint unsigned int //己 修 改一下
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit rs=P3^5;
sbit lcden=P3^4;
sbit wr=P3^6;
sbit aj1=P3^0;//矩阵按键1 控制哪一位
sbit aj2=P3^1;// 按键亩戚2 控制每位数字加
sbit aj3=P3^2;// 按键3控制每位数字减
sbit aj4=P3^3;
sbit rd=P3^7;

uchar code table[]=" HELLO";//银陆定义两个数组 也可以一个 为了有趣我加了一个 要不空一行
uchar code table1[]=" 000";//
uchar aa,g,s,b,aj1num;
void delay(uint z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void xie_mingling(uchar com)//写命令函数
{
rs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void xie_shuju(uchar date) //写数据
{
rs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
uchar num;
dula=0;
wela=0;
lcden=0;
rd=0;
wr=0;
xie_mingling(0x38);
xie_mingling(0x0c);
xie_mingling(0x06);
xie_mingling(0x01);
xie_mingling(0x80);
for(num=0;num<7;num++)
{
xie_shuju(table[num]);
delay(2);
}
xie_mingling(0x80+0x40);
for(num=0;num<7;num++)
{
xie_shuju(table1[num]);
delay(2);
}
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)/256;
EA=1;
ET0=1;
TR0=1;
}
void xie_sfm(uchar com,uchar date)
{
uchar ge;
ge=date/10;
ge=date%10;

xie_mingling(0x80+0x40+com);
// xie_shuju(0x30+shi);
xie_shuju(0x30+ge);
}
void anjian()
{
rd=0;
if(aj1==0)
{
delay(5);
if(aj1==0)
{
aj1num++;
delay(5);
while(!aj1);
delay(5);

if(aj1num==1)
{
TR0=0;

xie_mingling(0x80+0x40+7);
xie_mingling(0x0f);

}
if(aj1num==2)
{
xie_mingling(0x80+0x40+6);
}
if(aj1num==3)
{
xie_mingling(0x80+0x40+5);
}
if(aj1num==4)
{
aj1num=0;
xie_mingling(0x0c);
TR0=1;
}
}
}
if(aj1num!=0)
{
if(aj2==0)
{
delay(5);
if(aj2==0)
{
delay(5);
while(!aj2);
delay(5);
if(aj1num==1)
{
g++;
if(g==60)
g=0;
xie_sfm(7,g);
xie_mingling(0x80+0x40+7);
}
if(aj1num==2)
{
s++;
if(s==60)
s=0;
xie_sfm(6,s);
xie_mingling(0x80+0x40+6);

}
if(aj1num==3)
{
b++;
if(b==24)
b=0;
xie_sfm(5,b);
xie_mingling(0x80+0x40+5);
}
}
}
if(aj3==0)
{
delay(5);
if(aj3==0)
{
delay(5);
while(!aj3);
if(aj1num==1)
{

g--;
if(g==-1)
g=9;
xie_sfm(7,g);
xie_mingling(0x80+0x40+7);
}
if(aj1num==2)
{
s--;
if(s==-1)
s=9;
xie_sfm(6,s);
xie_mingling(0x80+0x40+6);
}
if(aj1num==3)
{
b--;
if(b==-1)
b=9;
xie_sfm(5,b);
xie_mingling(0x80+0x40+5);
}
}
}
}
}
void main()
{
init();
while(1)
{
anjian();
}
}
void dingshiqi0() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)/256;
aa++;
if(aa==20)
{
aa=0;
g++;
if(g==10)
{
g=0;
s++;
if(s==10)
{
s=0;
b++;
if(b==10)
{
b=0;
}
xie_sfm(5,b);
}
xie_sfm(6,s);
}
xie_sfm(7,g);
}
}
整个程序都让人帮写,不厚道。自己写差不多,有不懂的地方再问了。
← 上一篇: 下一篇: →