导航:首页 > 操作系统 > 单片机按键数码管显示程序

单片机按键数码管显示程序

发布时间:2023-04-07 15:47:03

单片机用汇编写两个数码管显示0到99循环的程序

1、新建项目拆猜兄旅袭,做好准备。

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

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

如下参考:

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

⑶ 单片机四位数码管显示中间一行字母

51单片机(四位数码管芦袜的显示)程序基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管 上显示P ”个字符;2)等待按键,如按了任何一个键,则将这 4个字符清除, 改为显示0000”个字符(为数字的0)。E3最佳答案下面这个程序是4x4距阵键拍或盘丄ED数码管显示,一共可以到0-F显示,你可以稍微改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你!#i nclude<at89x52.h> un sig ned char codeDig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //gongyang 数码管 0-F 代码

un sig ned char k;//设置全局变量k为键盘的键值键盘延时函数

//延时函数
void key_delay(void) {int t;for(t=0;t<500;t++);}

键盘扫描函数******************************/
//键盘扫描函数
void keyscan(void)

{unsigned char a;P2 = 0xf0;if(P2!=0xf0){key_delay();if(P2!=0xf0){P2 = 0xfe; key_delay();a = P2;switch (a)
//键盘初始化//有键按下?//延时//确认真的有键按下?//使行线 P2.4 为低电平,其余行为高电平//a 作为缓存/陪贺激/开始执行行列扫描{case 0xee:k=15;break;case 0xde:k=11;break;case 0xbe:k=7;break;case 0x7e:k=3;break;default:P2 = 0xfd; //使行线 P2.5 为低电平,其余行为高电平a = P2;switch (a)
case 0xed:k=14;break;case 0xdd:k=10;break;case 0xbd:k=6;break;case 0x7d:k=2;break;default:P2 = 0xfb; //使行线 P2.6 为低电平,其余行为高电平a = P2;switch (a){case 0xeb:k=13;break;case 0xdb:k=9;break;case 0xbb:k=5;break;case 0x7b:k=1;break;default:P2 = 0xf7; //使行线P2.7为低电平,其余行为高电平a = P2;switch (a){case 0xe7:k=12;break;case 0xd7:k=8;break;case 0xb7:k=4;break;case 0x77:k=0;break;default:break;
}} break;}}}}

**************************** ***主函数 ***********************************
void main(void){while(1)
//调用键盘扫描函数//查找按键对应的数码管显示代码
{keyscan(); switch(k){case 0:P0=Dig[0];break;case 1:P0=Dig[1];break;case 2:P0=Dig[2];break;case 3:P0=Dig[3];break;case 4:P0=Dig[4];break;case 5:P0=Dig[5];break;
case 6:P0=Dig[6];break;case 7:P0=Dig[7];break;case 8:P0=Dig[8];break;case 9:P0=Dig[9];break;case 10:P0=Dig[10];break;case 11:P0=Dig[11];break;case 12:P0=Dig[12];break;case 13:P0=Dig[13];break;case 14:P0=Dig[14];break;case 15:P0=Dig[15];break; default:break; // 退出}}}

end
Welcome ToDownload !!!欢迎您的下载,资料仅供参考!

5.9
网络文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
51单片机(四位数码管的显示)程序[1]
51单片机(四位数码管的显示)程序
基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管 上显示P ”个字符;2)等待按键,如按了任何一个键,则将这 4个字符清除, 改为显示0000”个字符(为数字的0)。
E3最佳答案
下面这个程序是4x4距阵键盘丄ED数码管显示,一共可以到0-F显示,你可以稍微
改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你!

⑷ 单片机 按键(采用独立式按键)按下一次,让液晶第一位显示的数码加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 );

}

}

⑸ 单片机键盘程序数码管显示36

下面是单片机键盘程序数码管显示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=x;i>0;i--)
for(j=110;j>0;j--);
}

void DigDisplay()
{
uchar i;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):LSA=0;LSB=0;LSC=0;break; //选择第0位数码管
case(1):LSA=1;LSB=0;LSC=0;break; //选择第1位数码管
case(2):LSA=0;LSB=1;LSC=0;break; //选择第2位数码管
case(3):LSA=1;LSB=1;LSC=0;break; //选择第3位数码管
case(4):LSA=0;LSB=0;LSC=1;break; //选择第4位数码管
case(5):LSA=1;LSB=0;LSC=1;break; //选择第5位数码管
case(6):LSA=0;LSB=1;LSC=1;break; //选择第6位数码管
case(7):LSA=1;LSB=1;LSC=1;break; //选择第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。程序中使用了数码管的位选功能和键盘扫描功能,以及延迟和数码管编码表等知识。

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

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

⑺ 如何利用单片机让4位数码管显示

程序如下(用的是STC89C52芯片):

#include<reg52.h>//52系列单片机头文件

#defineucharunsignedchar

#defineuintunsignedint

uintx,y;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};//共阴极数码管编码

voiddisplay(uchar,uchar,uchar,uchar);//声明子函数斗谨

voiddelay(int);//声明子函数

voidmain()

{

while(1)

{

display(1,2,3,4);//主程序始终调用数码管显示子程序

}

}

voiddisplay(uchara,ucharb,ucharc,uchard)

{

P2=0xef;

P0=table[a];//给第一个数码管送"a"

delay(1);//延时1ms

P2=0xdf;

P0=table[b];//给第二个数码管送"b"

delay(1);//延时1ms

P2=0xbf;

P0=table[c];//给第三个数码管送"c"

delay(1);//延时1ms

P2=0x7f;空亩基

P0=table[d];//给第三个数码管送"d"

delay(1);//延时1ms

}

voiddelay(uintz)//延时子函数

{

uintx,y;

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

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

}

(7)单片机按键数码管显示程序扩展阅读

led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。

位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法耐昌不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。

⑻ 51单片机c语言设计,按键控制数码管,依次按下显示0到9循环

#include<reg51.h>

sbitk1=P1^0;

#define uint16 unsigned int

#define uchar unsigned char

uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay()
{

uint16 i=1000;

while(i--);
}

void main()

{

uchar n ;

P2=0xfe;

P1=0xff;

while(1)

{

if(k1==0)
{

if(n>=9) n=0;

else n++;

P0=shuzu[n];

while(!k1);

delay();

while(!k1);

}

}

}

(8)单片机按键数码管显示程序扩展阅读

51单片机的功能特性

1,可以仿真63K程序空间,接近64K 的16位地址空间;

2,可以仿真64Kxdata 空间,全部64K 的16位地址空间;

3,可以真实仿真全部32 条IO脚;

4,完全兼容keilC51 UV2 调试环境,可以通过UV2 环境进行单步,断点, 全速等操作;

5,可以使用C51语言或者ASM汇编语言进行调试 ;

6,可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某 变量上就会立即显示出它此的值;

7,可选 使用用户晶振,支持0-40MHZ晶振频率;

8,片上带有768字节的xdata,您可以在仿真时选 使用他们,进行xdata 的仿真;

9,可以仿真双DPTR 指针;

10,可以仿真敏则羡去除ALE 信号输出. ;

11,自适应300-38400bps 的所有波特率通讯;

12,体积非常细小,非常方便插入到用户板中.插入时紧贴用户板,没有桥拍连接电缆,这样可以有效地减少运行中的干扰,避免仿真时出现莫名其妙的故障;

13,仿真插针采用优质镀金插针,可以有效地防止日久生锈,选择优质园脚IC插座,保护仿真插针,同时不会损坏目标板上的插座. ;

14,仿真时监控和用户代码分离,不可能产生不能仿真的软故障;

15,RS-232接口不盯虚计成本采用MAX202集成电路,串行通讯稳定可靠,绝非一般三极管的简易电路可比。

⑼ 51单片机数码管显示的程序是什么

#include //52系列单片机头文件x0dx0a#define uchar unsigned char //宏定义x0dx0a#define uint unsigned intx0dx0asbit la=P2^6; //申明u1锁存器的锁存端x0dx0asbit wela=P2^7; // u2x0dx0auchar num1,num2;x0dx0auchar code table[]={ //数组定义x0dx0a 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,x0dx0a 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};x0dx0auchar code aable[]={ //位选数组定义x0dx0a 0xfe,0xfd,0xfb,0xf7,0xef,0xdf};x0dx0a void delays(uint); //子函数申明x0dx0ax0dx0a void main() x0dx0a{x0dx0a while(1)x0dx0a {x0dx0a for(num1=0;num1<48;num1++)//6个数循环显示x0dx0a {x0dx0a wela=1;//打开u2锁存端x0dx0a P0=aable[num1%6];//送入位选信号x0dx0a wela=0;//关闭u2锁存端x0dx0a //delays(1);x0dx0a la=1;//打开u1锁存端x0dx0a P0=table[num1%16];//送入段选信号x0dx0a la=0;//关闭u1锁存端x0dx0a delays(1);x0dx0a }x0dx0a }x0dx0a}x0dx0a/*---------主函数-----------------------------------------------*/x0dx0ax0dx0avoid delays(uint xs)x0dx0a{x0dx0a uint i,j,k;x0dx0a for(i=xs;i>0;i--)x0dx0a for(j=1000;j>0;j--)x0dx0a for(k=110;k>0;k--);x0dx0a}x0dx0a/*----------------延时程序-----------------------------------------------*/

⑽ 51单片机用4个按键,每个按键被按下都会使数码管显示一个数值

5. [问答题] [技能题画10配线图写出程序]按下按钮S1,数码管显示1;按下按钮S2,数码管显示2;按下按钮S3,数码管显示3;按下按钮S4,数码管显示4;能互相直接切换。按下停止按钮后,数码管熄灭。。

阅读全文

与单片机按键数码管显示程序相关的资料

热点内容
遵义联通服务器地址是什么 浏览:29
ansys约束命令流 浏览:814
解压软件电脑版如何下载 浏览:791
闪电匕首算法球 浏览:692
linuxredis停止命令 浏览:670
大麦账号怎么加密 浏览:113
穿越火线怎么找服务器 浏览:526
秘密加密社交软件app 浏览:256
c语言编译器怎么找文件 浏览:835
数学不好能编程吗 浏览:254
微云里的视频加密 浏览:41
3大加密货币交易平台 浏览:647
钣金激光切割机编程 浏览:496
vivo手机手电筒app在哪里 浏览:787
单片机晶振电路电容 浏览:887
穿越火线河南一区服务器云主机 浏览:41
文件夹与快捷方式显示一致 浏览:879
幻影服务器怎么看金钱 浏览:349
小米手机怎么用app减肥 浏览:893
本机如何与云服务器互通 浏览:652