#define uchar unsigned char
#define uinr unsigned int
#define DATA P2^0
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}
uchar idata temp[]={0xff,0xff,0xff}
sbit k1=P1^0
sbit k2=P1^1
sbit k3=P1^2
sbit k4=P1^3
sbit led1=P3^2
sbit led2=P3^3
sbit led3=P3^4
void delay(uint t)
{
uint a
while(t--)
{
for(a=0a<75a++)
{}
}
}
void timer()
{
TMOD=0X01
TH0=0XFC
TL0=0X18
TR0=1
ET0=1
EA=1
}
void display() interrupt 1
{
TH0=0XFC
TL0=0X18
led1=1led2=1led3=1
DATA=temp[0]
led1=0led2=1led3=1
DATA=temp[1]
led1=1led2=0led3=1
DATA=temp[2]&0x7f
led1=1led2=1led3=0
}
void main()
{
uchar number,ks
timer()
while(1)
{
temp[0]=table[number%10]
temp[0]=table[number%100/10]
temp[0]=table[number%1000/100]
if(k1==0)ks=0
if(k2==0)ks=1
switch(ks)
{
case 0:
{
if(k2==0)
{
while(k2==1){}
number++
if(number==3)number=2
}
if(k3==0)
{
while(k2==1){}
if(number==0)number=1
number--
}
}break
case 1:
{
if(k2==0)
{
while(k2==1){}
number++
if(number==19)number=18
}
if(k3==0)
{
while(k2==1){}
if(number==0)number=1
number--
}
}break
}
}
}
/*呼,花了我十五分钟,好久没打程序了,注是就不打了,应该看得懂把,不懂再问我拉,我q:745748376加点分贝,嘿嘿*/
下面是单片机键盘程序数码管显示36的简单代码示例(以STC89C52单片机为例,具体单片机型号的代码可能会有所不同):```
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2
sbit LSB=P2^3
sbit LSC=P2^4
uchar code table[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0x00}
// 数码管0~F的编码
uchar keyCode// 按键值
uchar num = 0// 显示的数字
void delay(uint x)
{
uint i,j
for(i=xi>0i--)
for(j=110j>0j--)
}
void DigDisplay()
{
uchar i
for(i=0i<8i++)
{
switch(i)
{
case(0):LSA=0LSB=0LSC=0break //选择第0位数码管
case(1):LSA=1LSB=0LSC=0break //选择第1位数码管
case(2):LSA=0LSB=1LSC=0break //选择第2位数码管
case(3):LSA=1LSB=1LSC=0break //选择第3位数码管
case(4):LSA=0LSB=0LSC=1break //选择第4位数码管
case(5):LSA=1LSB=0LSC=1break //选择第5位数码管
case(6):LSA=0LSB=1LSC=1break //选择第6位数码管
case(7):LSA=1LSB=1LSC=1break //选择第7位数码管
}
P0 = table[num]
delay(1) // 延迟一段时间
P0 = 0x00// 清空P0,关闭所有数码管,以便制造闪烁效果
}
}
void KeyDown()
{
if(keyCode==0x0D) // 判断是否按下键盘数字3
{
num = 3 // 显示数字3
}
}
void main()
{
while(1)
{
keyCode=P1 // 读取键盘按键值
if(keyCode!=0xff) // 如果不是按下任何键,则不响应
{
KeyDown() // 判断用户按下哪个键
DigDisplay() // 7段数码管显示
}
}
}
```
上面的代码实现了一个简单的程序,实现了单片机键盘按键输入数字3,然后在7段数码管上显示数字3。程序中使用了数码管的位选功能和键盘扫描功能,以及延迟和数码管编码表等知识。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)