这里给出一种基于Arduino平台的单片机数字0到9显示的程序代码,可供参考:
c++
Copy code
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; //定义LED引脚
int numPins[][7] = { //定义数字0~9的LED点阵图形
{1, 1, 1, 1, 1, 1, 0}, //0
{0, 1, 1, 0, 0, 0, 0}, //1
{1, 1, 0, 1, 1, 0, 1}, //2
{1, 1, 1, 1, 0, 0, 1}, //3
{0, 1, 1, 0, 0, 1, 1}, //4
{1, 0, 1, 1, 0, 1, 1}, //5
{1, 0, 1, 1, 1, 1, 1}, //6
{1, 1, 1, 0, 0, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1}, //8
{1, 1, 1, 1, 0, 1, 1} //9
};
void setup() {
for (int i = 0; i < 10; i++) { //初始化LED引脚为输出模式
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
for (int num = 9; num >= 0; num--) { //从数字9到0循环
for (int i = 0; i < 7; i++) { //依次点亮数字的7个LED
digitalWrite(ledPins[i], numPins[num][i]); //控制LED引脚输出高低电平
}
delay(1000); //延时1秒
}
}
该程序利用数组存储数字09的LED点阵图形,并通过循环依次点亮每个数字的7个LED,从而实现数字09的循环显示。可以根据需要对延时时间进行调整,以达到合适的显示效果。
#include<reg52h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
uchar
count;
uint
disnum;
sbit
dula=P2^6;
sbit
wela=P2^7;
uchar
code
tabledu[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
display(uchar,uchar,uchar);
delay(uchar);
void
main()
{
EA=1;
ET1=1;
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
while(1)
{
if(count==20)
{
count=0;
//
if(disnum==1000)
//
disnum=0;
disnum++;
}
display(disnum/100,disnum%100/10,disnum%100%10);
}
}
void
tim1()
interrupt
3
using
3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
}
display(uchar
bai,uchar
shi,uchar
ge)
{
P0=tabledu[bai];
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
delay(1);
P0=tabledu[shi];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(1);
P0=tabledu[ge];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(1);
}
delay(uchar
x)
{
uchar
a,b;
for(a=x;a>0;a--)
for(b=255;b>0;b--);
}
//你自己看一下,有不对的就改点别忘了给分啊
调试的步骤很麻烦:1、台式电脑要求独立显卡,笔记本要求有HDMI或者DVI输出;
2、线路链接正常(1、显示屏接收卡与发送卡连接正常有信号,一般表现为红灯常亮绿灯常闪;2、发送端与电脑连接正常;3有视频处理器或者拼接器的要确定处理器或者拼接器跟发送卡是否连接正常)
3、电脑设置为复制模式或者扩展模式;
4、安装调试软件;
5、设置播放窗口大小(一般是屏体分辨率大小或者电脑桌面大小)
6、进入软件调试界面,在接收卡设置区域加载程序或者智能设置;
7、程序设置完毕后,设置连接图。
以上为基本的调试方式,复杂或差异化、异形屏类软件设置和连接图设置均不一样,建议请教专业人士。
#include<reg51h>
#define uchar unsigned char
uchar code ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳级数码管码表0-9
uchar time,dat;
bit flag=1;
sbit dula=; //段和位控制位需要你自己填写。
sbit wela=;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if(time>=20)
{
dat++;
dat%=10;
flag=1;
}
}
main()
{
TMOD0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(flag)
{
flag=0;
dula=1;
P0=0xff;
dula=0;
wela=1;
P0=0x01;
wela=0;
dula=1;
P0=ledtab[dat];
dula=0;
}
}
}
#include<reg52h>
#include<intrinsh>
sbit wei=P1^0;
sbit duan=P1^1;
int w[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
int i,tt;
int temp;
void main()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
tt=0;
i=0;
temp=0xfe;
duan=1;
P0=0xfe;
duan=0;
wei=1;
P0=0x06;
wei=0;
while(1)
{if(tt==20)
{ tt=0;
i++;
if(i==8)
i=0;
wei=1;
P0=w[i];
wei=0;
duan=1;
temp=_crol_(temp,1);
P0=temp;
duan=0;
}
}
}
void timer() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
这是我的protues电路图,你可以看看,由于可简化,我没画晶振和复位电路哈
LED显示器是指类似数字式电子表或计算器的显示方式。每个数字位的显示如右图,每位数字位由7个标签控件构成,通过控制这些控件的背景颜色,使得显示不同的数字。例如显示数字“1”,将2号标签和3号标签的背景颜色设置为与窗体背景颜色不同,其他标签的背景颜色设置为与窗体背景颜色相同,就可以显示出数字“1”。以上是1个数字位的显示方法。构造8个数据位,就可以显示8为数字。
由文本输入框输入数字,单击显示按钮在LED显示器上显示相应的数字。
四、主要技术问题的描述:
1、 动态数组的建立
利用load 控件数组名(下标)语句 建立控件数组。并为每个控件数组元素设置大小、位置(参考附录生成象棋棋盘的程序)。
2、 数字的显示
依据存储的EI数组对相应的控件的背景颜色属性进行设置。
#include<reg52h>
#define uchar unsigned char//宏定义
#define uint unsigned int
uchar count;
uint disnum;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code tabledu[]={//段码表
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar,uchar,uchar);
void delay(uchar);
void main()
{
EA=1;//开总中断
ET1=1;//开定时器T1中断
TMOD=0x10;//设置定时器T1为工作方式1
TH1=(65536-50000)/256;//定时50ms
TL1=(65536-50000)%256;
TR1=1;//启动定时器T1
while(1)
{
if(count==20)//定时1s
{
count=0;
if(disnum==1000)
disnum=0;
disnum++;//disnum值自加1
}
display(disnum/100,disnum%100/10,disnum%100%10);//显示disnum的值,从0显示到1000,时间间隔为1s
}
}
void tim1() interrupt 3 using 3
{
TH1=(65536-50000)/256;//重置定时参数
TL1=(65536-50000)%256;
count++;
}
void display(uchar bai,uchar shi,uchar ge)//显示子程序
{P0=tabledu[bai];//显示百位
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
delay(1);
P0=tabledu[shi];//显示十位
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(1);
P0=tabledu[ge];//显示个位
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(1);
}
void delay(uchar x)//延时子程序
{
uchar a,b;
for(a=x;a>0;a--)
for(b=255;b>0;b--);
}
假设P0 P2口接数码管 程序如下
include<reg52h>
#define uchar unsigned char
#define uint unsigned int
uchar num=0;
//共阴数码管七段码
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1ms(uint i) //1ms延时程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void main(void )//主程序
{
while(1)
{
delay_ms(1000);
num++;
if(num==100)num=0;
P0=table[num/10];
P2=table[num%10];
以上就是关于单片机数字9到0显示程序代码全部的内容,包括:单片机数字9到0显示程序代码、运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序、led显示屏怎么 *** 作方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)