导航:首页 > 操作系统 > 单片机按下1控制数码管显示1

单片机按下1控制数码管显示1

发布时间:2022-11-16 12:06:57

单片机按键控制数码管显示

你有原理图没?
设置三个标志位,全局变量,需要在倒计时中断里改变状态的。
程序流程是:
主程序流程:
上电初始化(设置LED状态,设置定时器相关寄存器参数,设置三个标志位状态)--->
死循环(判断标志位是否容许按键有效,然后判断是否有按键按下,转入响应的子程序处理段)
定时器中断任务:
判断是否到15秒,到了就置位标志位。

Ⅱ 51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示

1、首先,要把代码写好,点亮数码管。

Ⅲ 能帮我编一个单片机第1个按键控制数码管显示1,第2个按键控制数码管显

参考一下这个仿真实例,16个按键,按键1 显示1,---按键9显示9,等等

下载 附件 仿真试试。

Ⅳ 汇编语言51单片机怎么实现用KEY 1控制数码管上显示的数字加1 KEY2控制数码管上显示数字减1

原有key1为P3.4,添加个key2键为P3.5;

1、按你显示程序的逻辑,对TAB修改如下:

TAB:DB 00H,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H

即数据的首尾为0(这是个标记而已),中间才是七段码 0--F 的显示数据;

2、对CK1、CK2键盘按下及松开程序做了修改;

3、显示程序也进行了修改,唯独延时程序不用修改;

代码如下:

MAIN:

MOV DPTR,#TAB

MOV R4,#00H

MOV R5,#01H

CLR A

LCALL DISPLAY

LOOP:

LCALL KEYDOWN

LCALL DISPLAY

SJMP LOOP


KEYDOWN:

JB P3.4,CK11 ;key1没有按下则转到key2

LCALL DS1MS ;P3.4=0表示Key1按下

JB P3.4,CK11 ;key1还不能松开

MOV R5,#01H

INC R4;key1按下为加

RET

CK11:

JB P3.5,KEYDOWN ;key2没有按下则转到key1

LCALL DS1MS ;P3.5=0表示Key2按下

JB P3.4,KEYDOWN ;key2还不能松开

MOV R5,#10H

DEC R4;key2按下为减

RET


D1::

MOV R4,R5

DISPLAY:

MOV A,R4

MOVC A,@A+DPTR

JZ D1 //累加器(A)=0转

MOV P0,A

SETB P2.6

CLR P2.6

MOV P0,#0FEH

SETB P2.7

CLR P2.7

LCALL DS1MS ;延时

LCALL KEYUP

RET


KEYUP:

JNB P3.4,KEYUP ;P3.4=0转

JNB P3.5,KEYUP ;等待松开按键

LCALL DS1MS

JNB P3.4,KEYUP

JNB P3.5,KEYUP

RET


TAB:DB 00H,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H


Ⅳ 51单片机怎样用键盘控制数码管显示

51单片机怎样用键盘控制数码管显示的方法。

如下参考:

1.首先,编写代码并点亮数码管。

Ⅵ 单片机按键控制数码管显示

实现方法有挺多种的,下面介绍一种:
1、按键子程序:
实现按第一个键使键值keyvalue=1,第二个键使键值keyvalue=2,第三个键使键值keyvalue=3
2、显示子程序
定义3个字节的显示缓存,如dispbuf1,dispbuf2,dispbuf3
使dispbuf1的数字显示在第一个数码管上,dispbuf2的数字显示在第2个数码管上,dispbuf3的数字显示在第3个数码管上
3、主程序:
初始化按键次数keycount为0
检测按键,任意一个键(比如说是第2个键)被按后,keycount
加1,并将keyvalue值(2)送给dispbuf1(则第一个数码管将会显示2),再有任意一个按键按下后,keycount
加1,并将keyvalue值送给dispbuf2,再有任意一个按键按下后,keycount
加1,并将keyvalue值送给dispbuf3

Ⅶ 单片机 按键(采用独立式按键)按下一次,让液晶第一位显示的数码加1,显示范围0~9

程序清单如下:

#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 );

}

}

Ⅷ 求救:c51单片机按键每按一次同时数码管显示数字加一

-
建立一个数组,用于存放 0-9的段码。
int Shuzu[]={---------};
如果会用指针
int *P;
P=Shuzu; //指针指向数组!
用外部中断,
每中断一次,中断服务程序将数组元素加一P0=Shuzu[ax++](或指针加一:P0=*P++)
以上假设P0口驱动数码管!
至于数码管使用的是共阳还是共阴,就把相对的数值存在数组中!
-
外部中断0的中断程序入口
void TI_0() interrupt 0
{
--------
}
都提示到这里了,下面自己该会吧?
如果是新手的新手---想要我帮你写全部程序--
那至少你得把你单片机芯片型号说给我才能帮你!
还有数码管是用单片机哪个IO口!
数码管是怎么连接的?(串/并)

Ⅸ 设计一个单片机输入显示系统,要求每按一下按键数码管显示数据加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 );

}

}

(9)单片机按下1控制数码管显示1扩展阅读

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。

Ⅹ 求51单片机的C程序,就是键盘控制这个一位七段数码管,按键按1按下数码管上能够显示1,按2就能从1变到2。

51单片机的C程序,4*4键盘控制这个八位七段数码管。可以参考一下

#include<reg51.h>

#define uchar unsigned char

uchar temp;

int key1,key,disbuf;// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f

unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

unsigned char ledx[8];

bit s0,s1;

void delay(uchar z)

{

uchar i,j;

for(i=0;i<120;i++)

for(j=0;j<z;j++);

}

void scan() //要是按键了,扫描键盘编码值

{

P1=0xF0;

delay(1);

temp=P1;

switch(temp)

{

case 0xe0: key1=0;

break;

case 0xd0: key1=1;

break;

case 0xb0: key1=2;

break;

case 0x70: key1=3;

break;

}

P1=0x0f;

delay(1);

temp=P1;

switch(temp)

{

case 0x0E: key=key1+0;

break;

case 0x0D: key=key1+4;

break;

case 0x0B: key=key1+8;

break;

case 0x07: key=key1+12;

break;

default : key=-1;

}

if((key1+1)&&(key+1)) disbuf=key;

}

void ejjc() //判断是否按键

{

P1=0xF0;

if(P1!=0xF0) { scan();s0=1;}

else { s0=0; s1=1;}

}

void main()

{

uchar i;

while(1)

{

ejjc();

if(s0==1 && s1==1)

{

s0=0;s1=0;

for(i=0;i<8;i++)

{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }

}

P0=0xff;

P2=LED7Code[ledx[0]];

P0=0xfe;

delay(5);

P0=0xff;

P2=LED7Code[ledx[1]];

P0=0xfd;

delay(5);

P0=0xff;

P2=LED7Code[ledx[2]];

P0=0xfb;

delay(5);

P0=0xff;

P2=LED7Code[ledx[3]];

P0=0xf7;

delay(5);

P0=0xff;

P2=LED7Code[ledx[4]];

P0=0xef;

delay(5);

P0=0xff;

P2=LED7Code[ledx[5]];

P0=0xdf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[6]];

P0=0xbf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[7]];

P0=0x7f;

delay(5);

}

}

阅读全文

与单片机按下1控制数码管显示1相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:382
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362
数据查询网站源码 浏览:151
伊克塞尔文档怎么进行加密 浏览:893
app转账是什么 浏览:163