导航:首页 > 操作系统 > 单片机按键程序与显示设计

单片机按键程序与显示设计

发布时间:2022-08-02 03:44:30

1. 我用的是51单片机。要求设计一个按键显示的程序。

晕,这么简单的东西
大概跟你说下吧..
P1口做8个按键,P2口接数码管,P3口接数码管共阴极,分时复用,让各数码管分别显示就行,再有就是蜂鸣器随便加哪都行,检测有按键按下就叫一声...哦啦》。。

2. 给写个89c52C语言程序 按键键位操作显示设计 要求: 单片机上6个按键顺序为1~6; 按键1-

求写程序!我的是89C52单片机,想用两个按键和一个LED来实现,按下按键1点亮LED,按下按键2熄灭LED,两个按键另一端是接5V,LED另一端也是接5V。最好配上原理图。感激不尽
提醒一下:两个按键另一端接5V地!!!!!


  1. 电路参考如下:

  2. 代码参考如下:



#include<reg52.h>

sbit LED = P2^7;

#define ON 0

#define OFF 1


void main()
{
unsigned char keyVal;
while(1)
{
keyVal=P3^0xFF;
if(keyVal)
{
if(keyVal==0x02) LED=ON;
else if(keyVal == 0x20) LED=OFF;
}
}
}



3.说明一下,此按钮不需要去抖动,原因在于每个按钮只负责灯的一种状态,
如果一个按钮要负责两个状态的切换,就需要去抖。
希望能帮上你!!!!!!!

3. 跪求用51单片机编按键显示程序

楼主先要确定电路,然后才能编写程序。

4. 51单片机键盘输入及显示程序

你的邮箱?发给你

5. 关于51单片机的按键和显示的程序问题

#include <reg51.h>
#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=0;a<75;a++)
{;}
}
}
void timer()
{
TMOD=0X01;
TH0=0XFC;
TL0=0X18;
TR0=1;
ET0=1;
EA=1;
}

void display() interrupt 1
{
TH0=0XFC;
TL0=0X18;
led1=1;led2=1;led3=1;
DATA=temp[0];
led1=0;led2=1;led3=1;
DATA=temp[1];
led1=1;led2=0;led3=1;
DATA=temp[2]&0x7f;
led1=1;led2=1;led3=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 加点分贝,嘿嘿*/

6. 用51单片机设计一个由3个按键显示两位的程序分别是15,25,35。

sbit p1=p1^0;
sbit p2=p1^0;
void main()
{

aa=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //开总中断
ET0=1; //开启T0中断
TR0=1; //启动T0定时器 , 以上是用定时器0.
if(aa==216000) //10800*50=3个小时

TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //开总中断
ET1=1; //开启T1中断
TR1=1; //启动T2定时器
if (aa==72000) //1800*50=半小时
//以上是用定时器1.

}

void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}

void timer0() interrupt 3
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
兄弟程序太大了,,我写了 主函数。其他外围你自己填写就可以了。
另外:得用外接的“时间芯片”:1302。开机后,必须对1302进行初始化,然后等待操作者,对1302进行时间设定,然后等待2009-09-24 22:33时刻的到来。然后输出要求的波形。输出波形,也要用1302的时间进行控制
( 我只会前面。 1302 是网上一个朋友说的,我也写出来了,希望对你有帮助。)

7. 设计一个单片机输入显示系统,要求每按一下按键数码管显示数据加1(数码管初始值为0,9加1 后显示0)。

程序清单如下:

#include < reg51.h >// 51单片机头文件

#define uchar unsigned char // 宏定义,用uchar替代无符号字符型

#define uint unsigned int // 宏定义,用uint 替代无符号整数型

sbit Key = P2 ^ 7;

uchar Count = 0;

uchar code DataChar[10] = // 定义数码管的段码 '0'~'9'、'-'、' ' 'P'

{

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

};//延时N毫秒

void DelayNms( uint N ) // 利用x、y作简单的自减运算,消耗单片机指令周期,达到延时的目的

{

uint x,y;

for( x=N; x>0; x-- )

for( y=110; y>0; y-- );

}

//数码管显示 // 显示方式为动态扫描,视觉暂留原理

void Display( uchar Num ) // *p指向Main函数中的数组ShowNum的首地址

{

P0 = DataChar[ Num ]; // 向P0赋段码值

DelayNms(2); // 短暂的延时

P0 = 0x00; // 让数码管熄灭,否则会造成数字重叠

}

void main( void )

{

while(1)

{

if( Key == 0 )

{

DelayNms(30);

if( Key == 0 )

{

Count += 1;

Count = (Count>9)? 0 : Count;

}

while( !Key );

}

Display( Count );

}

}

(7)单片机按键程序与显示设计扩展阅读

8051单片机具有如下功能:

8位CPU·4kbytes程序存储器(ROM) (52为8K)

128bytes的数据存储器(RAM) (52有256bytes的RAM)

32条I/O口线·111条指令,大部分为单字节指令

21个专用寄存器

2个可编程定时/计数器·5个中断源,2个优先级(52有6个)

一个全双工串行通信口

外部数据存储器寻址空间为64kB

外部程序存储器寻址空间为64kB

逻辑操作位寻址功能·双列直插40PinDIP封装

单一+5V电源供电

CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;

RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;

ROM:用以存放程序、一些原始数据和表格;

I/O口:四个8位并行I/O口,既可用作输入,也可用作输出

T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;

五个中断源的中断控制系统;

一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;

片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。

8. 51单片机 c语言 按键和数码管显示

#include<reg51.h>
unsignedcharled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voidled_display(unsignedcharnum);
unsignedcharkey_scan();
sbitled1=P2^0;
sbitled2=P2^1;
voidmain()
{
unsignedcharled_key;
P1=0;
while(1)
{
led_key=key_scan();
led_display(led_key);
}
}
voidled_display(unsignedcharnum)
{
unsignedcharten,single;
intdelay;
ten=num/10;
single=num%10;
delay=100;
for(delay=200;delay>0;delay--)
{
P0=led[ten];
led1=0;
led1=1;
P0=led[single];
led2=0;
led2=1;
}
}
/////////////////////////////////////////
unsignedcharkey_scan(void)
{
unsignedchartemp,key;
P1=0xfe;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=1;
break;
case0xd0:key=2;
break;
case0xb0:key=3;
break;
case0x70:key=4;
}
returnkey;
}
P1=0xfd;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=5;
break;
case0xd0:key=6;
break;
case0xb0:key=7;
break;
case0x70:key=8;
}
returnkey;
}

P1=0xfb;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=9;
break;
case0xd0:key=10;
break;
case0xb0:key=11;
break;
case0x70:key=12;
}
returnkey;
}
P1=0xf7;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=13;
break;
case0xd0:key=14;
break;
case0xb0:key=15;
break;
case0x70:key=16;
}
returnkey;
}
}

你好!很高兴为您解答!我有欢迎采纳!!以上传附件!!

9. 求关于单片机按键的程序

void _Key(void)
{
if(!Key) //有按键按下
{
Delay(500); 延时
if(!Key) //还是按下状态,即长击
{
Disp("2");
}
else //否则就是短击
{
Disp("1");
}
}
else //没有按键按下
{
Disp("3");
}
}
大概思路是这样,延迟函数自己掌握,一般还要加消抖(也就是较短的延时后再判断一次按键状态)

10. 单片机键盘显示电路设计的程序要求输入64个按键,8个LED显示

一种是采用8行8列组成的按键就可以了,实际上是16个开关,但可以实现64个按键。具体的看看网上的4*4键盘是什么原理。基础要自己想。
第二种是采用8255或8155扩展,具体的要自己去看去学。

阅读全文

与单片机按键程序与显示设计相关的资料

热点内容
linuxf77编译器安装教程 浏览:947
android本地录音权限 浏览:442
加密u盘内容怎么拷贝 浏览:281
安卓手机为什么看不到iso文件 浏览:578
用图片做文件夹图标 浏览:693
java正则表达式语法 浏览:865
美图秀在线压缩图片 浏览:184
苹果自带控制app是什么 浏览:906
孩子学编程怎么样 浏览:589
网络编程经典书籍 浏览:612
曲靖创建网站java程序员 浏览:690
256位加密中是什么意思 浏览:97
php多维数组去重 浏览:308
做程序员这一行储备人才怎么看 浏览:460
参加密逃文 浏览:327
苹果编程语言ios 浏览:763
求解病态系统常用的算法 浏览:994
驾校用的app叫什么 浏览:219
数控编程线的缠绕方法 浏览:972
安卓线性布局怎么设计计算器布局 浏览:24