如何做数码管显示0-9数字的毕业设计
这个也能做毕业设计
#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--)
}
#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)
}
#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()
}
}
而你的问题不是一句两句就能说明白的,即使说明白了 你也不一定能听明白,即使听懂了,也不代表你以后不会遇到问题,不过理解你,因为你真是不懂
我简单说一下单片机也好,计算机(电脑)也好,它们都有两个能耐,计算和储存,而运行的都是两进制。就是1和0 我们可以吧1定位开,0定位关, 开就是一个 高电位,而关就是一个低电位,连续的1010101010 我就就得到一组方波脉冲
也就是说连续的方波脉冲就可以理解为信息,当然在实际电路工作中不是这么简单,比如位数了,速率了等等
而数码显示管可以看做用发光二极管组成的显示灯,用不同的灯的显示完成组合就成了数字了
要滚动显示,就得用单片机啦。是要仿真实现吗?还是真要做实物?
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)
}
#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)
}