建材秒知道
登录
建材号 > 设计 > 正文

如何做数码管显示0-9数字的毕业设计

默默的柚子
火星上的鸵鸟
2023-02-27 18:23:10

如何做数码管显示0-9数字的毕业设计

最佳答案
潇洒的棒球
文静的学姐
2025-07-20 13:56:11

这个也能做毕业设计

#include <AT89X51.H>

unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}

unsigned char dispcount

void delay02s(void)

void main(void)

{

P1_0=0//选通第一位数码管的阳极位选端,即给数码管的共阳极供电

while(1)

{

for(dispcount=0dispcount<10dispcount++)

{

P0=table[dispcount]

delay02s()

}

}

}

void delay02s(void)

{

unsigned char i,j,k

for(i=20i>0i--)

for(j=30j>0j--)

for(k=248k>0k--)

}

最新回答
动人的太阳
标致的跳跳糖
2025-07-20 13:56:11

#include

#define

uchar

unsigned

char

uchar

distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}

uchar

times,num

void

t0isr()

interrupt

1

{

TH0=(65536-50000)/256

//重置初值

TL0=(65536-50000)%256

times++

if(times>=20)

//1秒是否到

{

times=0

num--

//1秒到后,计数值减1

P0=distab[num]

//显示

if(num==0)num=9

//到0后再赋值为9

}

}

main()

{

TMOD=0x01

//定时器0为16为定时

TH0=(65536-50000)/256

//50毫米中断一次

TL0=(65536-50000)%256

ET0=1

EA=1

num=9

times=0

TR0=1

while(1)

}

有魅力的小伙
无心的故事
2025-07-20 13:56:11

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit we1=P2^7        //数码管位

sbit s1=P2^6           //轻触开关

sbit s2=P2^5

uint a=0               //显示数值

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,    //共阳数码管数值0-9

0x80,0x90

}

void delay(uint z)

{

uint x,y

for(x=zx>0x--)

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

}

void xianshi()         //数码管显示

{

we1=1    //共阴为0 共阳为1

P0=table[a]

delay(8)

}

void key()

{

if(s1==0)

{

delay(5)

if(s1==0)

{

a++

if(a==10)

a=0

while(!s1)    //等待松开

 }

 }

if(s2==0)

{

delay(5)

if(s2==0)

{

a--

if(a==-1)

a=9

while(!s2)    //等待松开

 }

 }

}

void main()

{

while(1)

{   

xianshi()

key()

}

}

大胆的水池
快乐的雪糕
2025-07-20 13:56:11
#define uint unsigned int#define uchar unsigned char#include <reg52.h>uint iuchar code TAB[]=[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}void main(void){TMOD=0x22 TH0 =6//赋T0的预置值6,溢出4000次就是1秒钟TL0 =6ET0=1 //打开定时器0中断EA=1//打开总中断TR0=1 //启动定时器while(1) //程序循环{P3=TAB[(i)]//p3送数}}//定时器0中断void timer0(void) interrupt 1 using 1{static uint t //注意t的范围,这里涉及到C51变量取值范围这个知识点t++if(t==4000) //T0的预置值6,溢出4000次就是1秒钟,晶振12MHz{t=0i++i=i%10}}

健康的雪糕
认真的啤酒
2025-07-20 13:56:11
单片机不同,电路也是不同的,不过原理相同,想学单片机其实和简单,而学习要从基础开始,

而你的问题不是一句两句就能说明白的,即使说明白了 你也不一定能听明白,即使听懂了,也不代表你以后不会遇到问题,不过理解你,因为你真是不懂

我简单说一下单片机也好,计算机(电脑)也好,它们都有两个能耐,计算和储存,而运行的都是两进制。就是1和0 我们可以吧1定位开,0定位关, 开就是一个 高电位,而关就是一个低电位,连续的1010101010 我就就得到一组方波脉冲

也就是说连续的方波脉冲就可以理解为信息,当然在实际电路工作中不是这么简单,比如位数了,速率了等等

而数码显示管可以看做用发光二极管组成的显示灯,用不同的灯的显示完成组合就成了数字了

欣喜的盼望
陶醉的大树
2025-07-20 13:56:11
10个数码管显示0~9,正好也是10个数字,一个数码管显示一个数,正好啊,为啥还要滚动显示,那不是重复显示了吗?

要滚动显示,就得用单片机啦。是要仿真实现吗?还是真要做实物?

暴躁的棒棒糖
欢呼的银耳汤
2025-07-20 13:56:11
ORG 0000H 

LJMP MAIN 

ORG 000BH 

LJMP T0ISR 

ORG 0030H 

MAIN: 

     MOV TMOD,#01H

     MOV TH0,#HIGH(65536-50000)

     MOV TL0,#LOW((65536-50000)  

     SETB TR0

     SETB ET0 

     SETB EA

     MOV R0,#0

     MOV R2,#0

     SJMP $

T0ISR:

     CLR TR0 

     MOV TH0,#HIGH(65536-50000)

     MOV TL0,#LOW((65536-50000)  

     SETB TR0 

     INC R0 

     CJNE R0,#20,T0E

     INC R2

     CJNE R2,#10,T001

     MOV R2,#0

T001: 

     MOV A,R2

     MOV DPTR,#TABLE

     MOV A,@A+DPTR 

     MOV P0,A

T0E: 

     RETI

TABLE:       共阴极数码管显示代码表

          DB    3FH,06H,5BH,4FH,66H 01234

          DB    6DH,7DH,07H,7FH,6fh 56789

END

#include<reg51.h>

#define uchar unsigned char

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}

uchar num,dat

void t0isr() interrupt 1

{

TH0=(65536-50000)/256

TL0=(65536-50000)%256

num++

if(num>=20)

{

num=0

dat++

dat%=10

P0=table[dat]

}

}

main()

{

TMOD=0x01

TH0=(65536-50000)/256

TL0=(65536-50000)%256

TR0=1

ET0=1

EA=1

num=0

dat=0

while(1)

}

外向的学姐
独特的便当
2025-07-20 13:56:11

#include<reg51.h>

#define uchar unsigned char

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}

uchar click=0,sec=0

void t0isr() interrupt 1

{

TH0=(65536-50000)/256

TL0=(65536-50000)%256

click++

if(click>=20)

{

click=0

sec++

sec%=10

P0=table[sec]

}

}

main()

{

TMOD=0x01

TH0=(65536-50000)/256

TL0=(65536-50000)%256

TR0=1

ET0=1

EA=1

while(1)

}