当前位置:首页 » 编程软件 » 单片机编程数码管

单片机编程数码管

发布时间: 2022-07-19 03:21:47

❶ C51单片机数码管程序设计,

#include
#define
uchar
unsigned
char
uchar
code
table[11]
=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
//共阴
void
delay(uint
i)//延时时间约为
10ms
*
x
{
uchar
x;
for(x=0;x<=1827;x++);
}
void
main(void)
{
uchar
i
=
0;
for(i=0;i<11;i++)
{
p0
=
table[i];
//
i
值的
个位数
if(i==10)
p2=0x01;
//点亮最后一个数码管
p2
=
0x0f;
//点亮四个数码管
delay(100);
//
延时1s
}
}
说明:若接法不一样,则赋值也不一样。

❷ 51单片机数码管如何依次点亮

51单片机数码管依次点亮:选择数码管操作称为位选,根据自己的开发板原理图找到位选对应的管脚,以共阴极为例。要在编程时执行选中操作,只要给对应管脚低电平即可。段选同样。如果每个单独连接占用管脚太多,很浪费硬件资源,所以采用多位串联控制。

数码管通常有两种不同的接法,共阴极和共阳极,共阴极顾名思义就是讲八个二极管的阴极连接在一起,这样根据二极管导通原理,通过控制不同二极管阳极电平就可以控制数码管显示不同的数字。单个数码管是由八个发光二极管连接而成,通过控制不同led点亮,可以使之显示不同的数字。

注意区分两个概念即段选和位选;位选指数码管对应的位,例如图共有八个数码管,位选就是选中哪一个数码管操作,段选则是控制数码管显示什么数字。静态显示为了缩短代码长度,一般都是采用总线式编程,显示数字共阴共阳互为反。

❸ 在单片机编程过程中,针对共阴极数码管0和1的字形码为什么

00111111b。单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。在单片机编程共阴极数码管的字型编码应为:00111111b。

❹ 单片机连接共阴极六位数码管,显示23.3458....类似这样的数,选择显示前四位。怎么编程编程啊

首先会分离十位,百位 十分位 百分位,扫描显示时,对于不需要显示的位,可以直接跳过,也可以送暗码0xFF或0x00,对于带小数点的那一位,可以在没有小数点的七段码前加0x80。

❺ 51单片机四位一体共阳极数码管显示编程

不清楚你的电路构成如何,因此先按下面的假设执行段码及位码的输出;
其中,延时值可根据实验效果予以调整;
设 P0 为输出七段码(共阳极数据);
四位数码管有4个阳极,设位码分别与P2.4--P2.7对应,并且=1时表示可点亮数码管;
sbit wma1=b2^4; //对应左起第1个数码管的阳极

sbit wma2=b2^5; //对应左起第2个数码管的阳极
sbit wma3=b2^6;
sbit wma4=b2^7;
void main()
{
wma1=0; wma2=0; wma3=0; wma4=0;
while(1)
{
P0=table[0]; wma1=1; delay(10); wma1=0;
P0=table[1]; wma1=2; delay(10); wma2=0; P0=table[2]; wma1=3; delay(10); wma3=0; P0=table[3]; wma1=4; delay(10); wma4=0; P0=table[4]; wma1=1; delay(10); wma1=0; P0=table[5]; wma1=2; delay(10); wma2=0; P0=table[6]; wma1=3; delay(10); wma3=0; P0=table[7]; wma1=4; delay(10); wma4=0;
}
}

❻ 单片机中如何通过编程来获取LED数码管的段码

一般是在程序中附加一节段码表,然后在程序中根据要显示的字符用查表的方法查得段码,然后送到LED数码管的段选端。

❼ 单片机数码管编程 汇编语言,急

U16INC	MACRO	U16,;;16位无符号型变量加1
LOCALZZ
INC U16+1
MOV A,U16+1
JNZ ZZ
MOV U16+1,#0
INC U16
ZZ:
ENDM

U16MOV MACRO U16,VAL;;16位无符号型变量赋值
MOV U16+1,#LOW(VAL)
MOV U16,#HIGH(VAL)
ENDM

U16DAYV MACRO U16,VAL,;;16位无符号型变量判断大小,最后根据Cy判断
MOV A,U16+1
CLR C
SUBB A,#LOW(VAL)
MOV A,U16
SUBB A,#HIGH(VAL)
ENDM

WX1 EQU P2.0
WX2 EQU P2.1
WX3 EQU P2.2
WX4 EQU P2.3

S4 EQU P1.3
S5 EQU P1.4

LED1 EQU P1.6;;两个LED
LED2 EQU P1.7

JDQ EQU P1.5;;继电器

SMGBZ1 EQU 0X30
DS1 EQU 0X31

ZT EQU DS1+4
JSBZ1 EQU ZT+1;0-39的计数
JSBZ2 EQU ZT+2;计时标志,用于闪烁和计时
JSBZ3 EQU JSBZ2+2;;继电器通断两次的计时和计数

ORG 0
JMP MAIN
ORG 0XB
JMP TimeInterupt

MAIN:
MOV SP,#0X70
MOV R0,#0x70
CLR A
MA1: MOV @R0,A ;数据全清0
DJNZ R0,MA1
CALL JDQLC_STOP
CALL Time0Init

;主循环
LOOP: CALL AJPD
CALL RUN
JMP lOOP

;主运行函数
RUN: MOV A,ZT
CJNE A,#1,RR1
JMP RUN1
RR1: CJNE A,#2,RR2
JMP RUN2
RR2: RET

;;0-39循环
RUN1:
MOV DS1+0,#0X10
MOV DS1+1,#0X10
MOV A,JSBZ1
MOV B,#10
DIV AB
MOV DS1+2,A
MOV DS1+3,B

U16DAYV JSBZ2,1000
JC RUN1_1
U16MOV JSBZ2,0
INC JSBZ1
MOV A,JSBZ1
CJNE A,#39+1,RUN1_1
MOVJSBZ1,#0
RUN1_1:
RET

;;FFFF闪烁
RUN2: U16DAYV JSBZ2,500
JC RUN2_1
MOV DS1+0,#0X10
MOV DS1+1,#0X10
MOV DS1+2,#0X10
MOV DS1+3,#0X10
SETB LED1
SETB LED2
U16DAYV JSBZ2,1000
JC RUN2_2
U16MOV JSBZ2,0
JMP RUN2_2
RUN2_1:
MOV DS1+0,#0X0F
MOV DS1+1,#0X0F
MOV DS1+2,#0X0F
MOV DS1+3,#0X0F
CLR LED1
CLR LED2
RUN2_2:
CALL JDQLC

RET

;按键判断
AJPD:
JNB S4,AJ1
JNB S5,AJ2
RET
AJ1: JNB S4,$
MOV ZT,#2
CALL JDQLC_START
RET
AJ2: CALL JDQLC_STOP
SETB LED1
SETB LED2
JNB S5,$
MOV ZT,#1
MOV JSBZ1,#0
U16MOV JSBZ2,0
RET

JDQLC_START:
U16MOV JSBZ3,0
RET
JDQLC_STOP:
U16MOV JSBZ3,30000
SETB JDQ
RET
;继电器通断两次
JDQLC:
U16DAYV JSBZ3,1000
JNC JDQ_1
CLR JDQ;通1s
RET
JDQ_1: U16DAYV JSBZ3,1500
JNC JDQ_2
SETB JDQ;断0.5s
RET
JDQ_2: U16DAYV JSBZ3,1500+1000
JNC JDQ_3
CLR JDQ;通1s
RET
JDQ_3: U16DAYV JSBZ3,3000
JNC JDQ_4
SETB JDQ;断
JDQ_4: RET


;;定时器初始化
Time0Init:
MOV TMOD,#0X01
MOV TH0,#HIGH(65536-1000)
MOV TL0,#LOW(65536-1000)
SETB TR0
SETB ET0
SETB EA
RET

;;数码显示
SMXS:
INC SMGBZ1
MOV A,SMGBZ1
SUBB A,#4
JC SMXS1
MOV SMGBZ1,#0

SMXS1:
MOV P2,#0XF0
MOV A,SMGBZ1
ADD A,#DS1
MOV R0,A
MOV A,@R0
MOV DPTR,#TABD
MOVC A,@A+DPTR
MOV P0,A
MOV DPTR,#TABW
MOV A,SMGBZ1
MOVC A,@A+DPTR
MOV P2,A
RET

TABD:;段码
DB0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
DB0X88,0X83,0XC6,0XA1,0X86,0X8E,0XFF,0XBF
TABW:;位码
DB0xF1,0xF2,0xF4,0xF8


;;定时器0中断
TimeInterupt:
PUSH PSW
PUSH ACC

MOV TH0,#HIGH(65536-1000)
MOV TL0,#LOW(65536-1000)
CALL SMXS
U16INC JSBZ2
U16DAYV JSBZ3,30000
JNC TimeOut
U16INC JSBZ3


TimeOut:
POP ACC
POP PSW
RETI

END

热点内容
nsftp速度 发布:2025-02-07 10:30:58 浏览:430
存储过程ifor 发布:2025-02-07 10:25:28 浏览:432
命令行执行oracle脚本文件命令行 发布:2025-02-07 10:14:49 浏览:95
ibook安卓怎么下 发布:2025-02-07 10:12:13 浏览:692
银行卡没有密码怎么办啊 发布:2025-02-07 10:08:13 浏览:30
游戏库源码 发布:2025-02-07 09:49:15 浏览:53
享宇钱包上传不了照片 发布:2025-02-07 09:48:32 浏览:632
模拟器怎么开安卓版本 发布:2025-02-07 09:42:35 浏览:771
c程序设计语言源码 发布:2025-02-07 09:22:41 浏览:624
数据库域的概念 发布:2025-02-07 09:22:40 浏览:640