51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示
/*-----------------------------------------------名称:单个共阳数码管动态显示变化数字内容:通过循环检测P1口按键输入值,然后用数码管输出,没有按键按下时原值不变------------------------------------------------*/#include//包
SBUF=dispcode[num0];//第1位 while(!TI); TI=0; led0=0; delay(2); led0=1; SBUF=dispcode[num1];//第2位 while(!TI); TI=0; led1=0; delay(2); led1=1; SBUF=dispcode[num2];//第3位 while(!TI); TI=0; led2=0; delay(2); led2=1;
1、首先,要把代码写好,点亮数码管。
2、代码写完后,要确认原先写好的代码是不是正确的。
3、确认代码无误后,进入下一步,就是在这一行代码(箭头所指)的地方,将这四个字删去。
4、然后如图所示,四个字已经删去,只要改成数字相应的代码即可。
5、这里改成的是代表数字0的代码,如图所示。
6、最后写好代码后,将生成的hex文件写进单片机,数码管显示的数字就变成0了。
用P0口控制共阴数码管,具体程序如下:
#include"stc15.h"
sbit y1=P4^4;
sbit y2=P4^5;
sbit k1=P3^3;
sbit k2=P3^2;
char LED7CodeRight[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void delay(int x)
{int i,j;
for(i=x;i>01;i--)
{for(j=255;j>0;j--);}}
void main()
{ int n=0;
P2=0xfe; // 初始显示0
P4MO=1<<4 | 1<<5;//强推
P4M1=0x00;
while(1)
{ if(k1==0) //如果第一个按键按下
{delay(30)}; //延时去抖
if(k1==0) //再判断是否按下
{ ++n}; //N加1
if(n==10) //如果N等于10,N为0
{n=0;}}
while(k1==0); //等待按键松开
{ if(k2==0)
{ delay(30); } //延时去抖
if(k2==0) //再判断是否按下
{ --n; //N减1}
if(n<0) //如果N小于0,N为9
{n=9;}}
while(k2==0); //等待按键松开 } }
y2=1;y1=1;
P2=LED7CodeRight[n]; //将段码送P0口
y2=0;y1=0;}}
扩展资料:
led数码管的分类:
1、按控制方式分:分为内控方式(内部有单片机,通电自动变色)和外控方式(需要外接控制器才能变色)。
2、按变化方式分:分为固定色彩的和七彩、全彩的;固定色彩的是用来勾轮廓的,全彩的可以勾轮廓,也可以组成管屏显示文字、视频等。
3、按尺寸分:有D50的、D30的,这是直径;长度基本上1米的(可以定制);这个需要根据实际需要进行选择就行了。
4、按内部可控性分:有1米6段的,有1米8段的和1米12段、1米16段、1米32段的。也就是1米的管子内有几段可以独立受控; 1米段数越多,做视频的效果越好。如果密度低,或者做些追逐效果,做1米6段也就可以了。
5、按led数量分:有1米96颗灯的,有1米144颗灯的;灯越多效果越好。一般做全彩的都是用1米144颗灯的。
6、按供电分:分为高压供电(直接220V供电)和低压供电(12v供电,220v电源需要加开关电源转换);一般选择低压供电的,比较可靠稳定,高压供电的容易烧毁。
/*-----------------------------------------------
名称:单个共阳数码管动态显示变化数字
内容:通过循环检测P1口按键输入值,然后用数码管输出,
没有按键按下时原值不变
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,
//头文件包含特殊功能寄存器的定义
unsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,};
// 显示数值表0-9
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
while (1) //主循环
{
switch(P1) //P1口作为独立按键输入端,检测端口电平并做如下判断
{
case 0xfe:P1=table[1];break;//0xfe = 1111 1110,
//说明连接在P1.0端口的按键被按下,显示对应的数字然后跳出循环
case 0xfd:P1=table[2];break;
case 0xfb:P1=table[3];break;
case 0xf7:P1=table[4];break;
case 0xef:P1=table[5];break;
case 0xdf:P1=table[6];break;
case 0xbf:P1=table[7];break;
case 0x7f:P1=table[8];break;
default:break; //如果都没按下,直接跳出
}
}
}
有问题回复我哦
单片机按键控制数码管显示
1、按键子程序:实现按第一个键使键值keyvalue=1,第二个键使键值keyvalue=2,第三个键使键值keyvalue=3 2、显示子程序 定义3个字节的显示缓存,如dispbuf1,dispbuf2,dispbuf3 使dispbuf1的数字显示在第一个数码管上,dispbuf2的数字显示在第2个数码管上,dispbuf3的数字显示在第3个数码管上 3...
单片机控制数码管1 按键控制开始、数码管循环显示0-F.时间间隔为1s的程...
P1口外接共阳极的8段数码显示器。P3.2外接一个按键,按下后,接地,用来起动.ORG 0000H JB P3.2,MOV R2, #0 LOOP:INC R2 MOV A, R2 ANL A, #0FH MOV DPTR, #TAB MOVC A, @A+DPTR MOV P1, A LCALL DL500MS LCALL DL500MS SJMP LOOP TAB:D...
51单片机怎样用键盘控制数码管显示
51单片机怎样用键盘控制数码管显示的方法。如下参考:1.首先,编写代码并点亮数码管。2.在编写源代码之后,确保原始代码是正确的。3.确认代码正确后,进入下一步,就是在这一行代码(箭头所指)中,删除这四个单词。4.然后如图所示,四个单词已被删除,只要修改相应的代码编号即可。5.表示数字0的代码在...
怎样用单片机编程:独立按键两个键控制一个数码管的加减 一个键加 一...
这个很容易嘛,你先设置一个寄存器,然后一直扫描两个按键(假设K1按下为加,K2按下为减),假设检测到K1被按下,寄存器就加1,如果检测到K2被按下,寄存器就减1;然后再调用显示函数就OK了。、
单片机按键控制数码管原理
通过按键控制单片机的I口电平变化,从而控制数码管的显示。根据查询CSDN博客显示,当按键按下时,单片机的I口电平发生变化,从而驱动数码管显示相应的数字或字符,在单片机程序中,需要编写相应的按键处理程序,用于检测按键是否按下,以及按键按下后数码管应该显示的内容,单片机按键控制数码管原理是通过按键...
利用51单片机开发板独立键盘的一个键位来控制数码管的前两位。目的是...
利用51单片机开发板独立键盘的一个键位来控制数码管的前两位。目的是每按下一次,数码加一。即有两位数码管是处于亮的状态。一开始显示“00”,可是每次按下独立键盘是数码管的前一位... 利用51单片机开发板独立键盘的一个键位来控制数码管的前两位。目的是每按下一次,数码加一。即有两位数码管是处于亮的状态。一...
用一个按钮控制一个数码管,实现按一下键数码管加一,从0到9依次循环...
设计电路和代码,用数码管显示按键按下次数。要求用一个按键和一个数码管。数码管显示从0到F。再循环。
编个单片机程序,按键控制动态数码管显示00-32,位码是P1-6,P1-7,段码...
在51单片机上编写一个程序,实现按键控制数码管显示00到32,位码使用P1-6和P1-7,段码使用P0口。程序中定义了数码管显示和按键控制的函数。程序包含主函数main和两个子函数YS和XS。主函数中通过while循环不断检查按键状态,若按键被按下则调用YS函数去抖动后更新显示值,若数值超过99则置为0,若数值...
51单片机控制数码管显示时钟,独立按键怎么弄
独立按键的处理相对简单,通常通过IO口单独控制。主要步骤包括消抖和检测按键的按下与抬起状态。例如,可以这样实现:sbit key = P1^0;if(key == 0) { delay(10);if(key == 0) { keyval = 1;while(key == 0);} } 这里,首先定义了一个按键sbit key = P1^0;然后,通过if(key == 0...
51单片机按键控制数码管?
include <reg52.h> \/\/ 可以参考一下 define uchar unsigned char include <stdio.h> unsigned char* c;sbit k0=P3^2;sbit k1=P3^3;sbit k2=P3^4;sbit k3=P3^5;sbit k4=P3^7;sbit led1=P1^7;uchar k;bit y0,y1,y2,y3,y4,y5;bit t,s,ld;uchar table[]=...