找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

请求单片机程序问题

[复制链接]
admin 发表于 2012-9-2 17:24:31 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
uint count;
uchar code show[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code disp[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar data disdata[8];
void delayms(uint i)
{
uint a,b;
for(a=0;a<i;a++)
for(b=0;b<120;b++);
}
void diplay()
{
uint i;
extern uint count;
disdata[0]=0x80;
disdata[1]=0xf8;
disdata[2]=0x82;
disdata[3]=0x92;
disdata[4]=0x99;
disdata[5]=0xb0;
disdata[6]=0xa4;
disdata[7]=0xf9;
for(i=0;i<count;i++)
{
P0=show[disdata];
P2=disp;
delayms(2);
}
}
void keyscan()
{
extern uint count;
if(K1==0)
{
delayms(10);
if(K1==0)
{
while (K1==0)
{
count++ ;
if(count>=8)
count=8;
}
}
else
count=count;
}
if(K2==0)
{
delayms(10);
if(K2==0)
{
while(K2==0)
{
count=count-1;
if(count<=0)
count=0;
}
}
else
count=count;
}
if(K3==0)
{
delayms(10);
if(K3==0)
{
while(K3==0)
{
count=0;
P0=0xc0;
P2=disp[0];
}
count=count;
}
else
count=count;
}
}
void main ()
{
while (1)
{
keyscan();
display();
}
}
这是我的程序 请工人帮忙看一下,我的目的是通过按键K1,K2,K3控制数码管。
按K1一次 为 1
按两次 为 21
一次类推 按8次 则为 87654321
K2按键 没按一次 在原有的基础上 少掉前一位
按K3则能清零 按一下则可以显示一位零
这个问题我做了很久 希望得到大家的帮助。谢谢!!
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-29 02:33 , Processed in 0.053738 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表