1. 我用的是51单片机。要求设计一个按键显示的程序。
晕,这么简单的东西
大概跟你说下吧..
P1口做8个按键,P2口接数码管,P3口接数码管共阴极,分时复用,让各数码管分别显示就行,再有就是蜂鸣器随便加哪都行,检测有按键按下就叫一声...哦啦》。。
2. 给写个89c52C语言程序 按键键位操作显示设计 要求: 单片机上6个按键顺序为1~6; 按键1-
求写程序!我的是89C52单片机,想用两个按键和一个LED来实现,按下按键1点亮LED,按下按键2熄灭LED,两个按键另一端是接5V,LED另一端也是接5V。最好配上原理图。感激不尽
提醒一下:两个按键另一端接5V地!!!!!
#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. 跪求用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扩展,具体的要自己去看去学。