独立按键控制数码管位移
代码:
#include #define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff
};
uchar code DSY_Index[]=
{
0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
};
uchar Display_Buffer[]=
{
0,10,10,10,10,10,10,10
};
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=0;t<120;t++);
}
}
void Show_Count_ON_DSY()
{
uchar i;
for(i=0;i<8;i++)
{
P2 = DSY_Index[i];
P0 = DSY_CODE[Display_Buffer[i]];
DelayMS(2);
}
}
void main()
{
uchar i;
uchar Key_NO,Key_Counts=0;
P0 = 0xff;
P1 = 0xff;
P2 = 0x00;
while(1)
{
Show_Count_ON_DSY();
P1 = 0xff;
Key_NO = P1;
switch(Key_NO)
{
case 0xfe: Key_Counts++;
if(Key_Counts>8)
Key_Counts = 8;
Display_Buffer[Key_Counts-1] = Key_Counts;
break;
case 0xfd: if(Key_Counts>0)
Display_Buffer[--Key_Counts] = 10;
if(Key_Counts==0)
Display_Buffer[0] = 0;
break;
case 0xfb: Display_Buffer[0]=0;
for(i=1;i<8;i++)
Display_Buffer[i] = 10;
Key_Counts = 0;
}
while(P1 != 0xff)
Show_Count_ON_DSY();
}
}
硬件连接
关键字:独立按键控制 数码管 位移
引用地址:
独立按键控制数码管位移
推荐阅读最新更新时间:2024-11-13 01:33
合泰单片机数码管显示控制程序
;4位共阴数码管显示0123 ;数码管段码接法A-PD0,B-PD1....G-PD6,H-PD7 ;数码管位码接法OM0-PC0...COM4-PC3 ;目的: ;1.查表 ;2.间接寻址 include HT66F50.inc ORG0000H JMPA1 ORG0020H Q1: DC03FH; 0 DC006H; 1 DC05BH; 2 DC04FH; 3 DC066H; 4 DC06DH; 5 DC07DH; 6 DC007H; 7 DC07FH; 8 DC06FH; 9 DC077H; A DC07CH; B DC039H; C DC05EH; D DC079H; E
[单片机]
BASCOM-AVR 驱动数码管简洁代码
'''''''''''''''''''''' BASCOM-AVR 驱动一个数码管显示数字 0-9 下载附件查看原理图 代码 实物照片 ''''''''''''''''''''''''''''''''
[单片机]
51单片机实习-数码管动态显示4399(模块化编程)
#include reg52.h sbit wei0=P1^0; sbit wei1=P1^1; sbit wei2=P1^2; sbit wei3=P1^3; int zxm ={0x98,0x98,0xb0,0x99}; void delay(int i) { while(i--) { int j=0; for(;j 115;j++); } } void display() { int i; for( i=0;i 4;i++) { switch(i) { case 0: wei0=0,wei1=1,wei2=1,wei3=1;break; case
[单片机]
单片机中 LED 数码管的介绍
LED 小灯是一种简单的 LED,只能通过亮和灭来表达简单的信息。而这节课我们要来学习一种能表达更复杂信息的器件——LED 数码管。 先给大家提供一张原理图看一下,如图5-3所示。 图5-3 数码管原理图 这是比较常见的数码管的原理图,我们板子上一共有6个数码管。前边有了 LED 小灯的学习,数码管学习就会轻松的多了。从图5-3可以看出来,数码管共有 a、b、c、d、e、f、g、dp 这么8个段,而实际上,这8个段每一段都是一个 LED 小灯,所以一个数码管就是由8个 LED 小灯组成的。我们看一下数码管内部结构的示意图,如图5-4。 图5-4 数码管结构示意图 数码管分为共阳和共阴两种,共阴数码管就是8只 LED 小灯的
[单片机]
数码管计时器程序
这是一个51hei网友测试通过的计时器程序、电路很简单就不画了数码管的段选是P0口位选是P1口 #include reg52.h typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; code uint8 number ={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83, 0xa7,0xa1,0x86,0x8e}; //数字0到F uint16 counter = 0; /
[单片机]
两片74HC595级联动态驱动8位数码管 51单片机
功能 : 用2片74HC595驱动8位数码管, 级联的最低1片595控制位选,那么第一片控制段选 时间 : 2013-3-28 21:11:59 作者 : Stone 版本 : REV1 平台 : STC89C52 11.0592MHz 现象 : 8位数码管从第一位开始从0计数,满10进位 版本说明 : 第0版本没有使用定时器中断,同时定义了一个 unsigned long int 变量计数 再把这个数的每位分离出来显示,所以导致有点闪屏,此版本使用定时器中断, 而且没有用 unsigned long int 之类的变量,而是用数组 Val 来计数,
[单片机]
51单片机计数器计数数码管显示
#include reg52.h #define uint unsigned int #define uchar unsigned char uchar code smg_tab ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//{0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,0x30,0x25,0xa9,0x26,0xa1,0Xb1}; uchar code bit_tab ={0x7f,0xbf}; uchar Counts=0; uchar Display_Buffer ={0,0}; void _del
[单片机]
51单片机实验5:动态数码管
开发板数码管模块电路图如下: 由于74ls138译码器的特点,即只能是一个数码管的阴极电平为0,显然不能使多个数码管同时工作,若想要得到多个数码管同时工作的效果,只能采用动态扫描显示的方式。所谓动态扫描显示,就是利用发光管的余辉和人眼视觉暂留作用,使人感觉好像多个数码管在同时工作。 程序中digdisplay函数利用for循环和switch语句,不断扫描8个数码管,完成位选工作,并对P0口赋值实现段选功能。从而在8个数码管依次输出1~8,并利用延时函数控制输出间隔时间,实现动态输出的功能。 细节: (1)在每位数码管显示之后设置一定时间的延时。 (2)P0口置0(P0=0x00),完成“消影”目的。 #incl
[单片机]