导航:首页 > 操作系统 > 单片机数码管显示从0到9

单片机数码管显示从0到9

发布时间:2022-09-05 06:03:40

单片机汇编语言让数码管显示0到9

小建议,釆用STC的51芯片替代AT的,釆用595替代164。

㈡ 51单片机c语言设计,按键控制数码管,依次按下显示0到9循环

假设你的是共阳极数码管,P0接数码。按键接P2^0;

#include<reg52.h>
typedef unsinged int uint;
sbit key=P2^0;
unsigned char tab[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void denay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--)

}

void main()
{
uchar a;

while(1)
{
P0=tab[a];

if (key1==0)
{delay(10);
if(key==0)
{
while(!key1);

a++;
if(a==10) a=0;

}

}

}

㈢ 单片机数码管显示0到9

#include<reg51.h>

sbitk1=P1^0;

#define uint16 unsigned int

#define uchar unsigned char

uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay(){

uint16 i=1000;

while(i--);}

void main()

{

uchar n ;

P2=0xfe;

P1=0xff;

while(1)

{

if(k1==0){

if(n>=9) n=0;

else n++;

P0=shuzu[n];

while(!k1);

delay();

while(!k1);

}

}

}

(3)单片机数码管显示从0到9扩展阅读:

51单片机的功能特性

1,可以仿真63K程序空间,接近64K 的16位地址空间;

2,可以仿真64Kxdata 空间,全部64K 的16位地址空间;

3,可以真实仿真全部32 条IO脚;

4,完全兼容keilC51 UV2 调试环境,可以通过UV2 环境进行单步,断点, 全速等操作;

5,可以使用C51语言或者ASM汇编语言进行调试 ;

6,可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某 变量上就会立即显示出它此的值;

7,可选 使用用户晶振,支持0-40MHZ晶振频率;

8,片上带有768字节的xdata,您可以在仿真时选 使用他们,进行xdata 的仿真;

9,可以仿真双DPTR 指针;

10,可以仿真去除ALE 信号输出. ;

11,自适应300-38400bps 的所有波特率通讯;

12,体积非常细小,非常方便插入到用户板中.插入时紧贴用户板,没有连接电缆,这样可以有效地减少运行中的干扰,避免仿真时出现莫名其妙的故障;

13,仿真插针采用优质镀金插针,可以有效地防止日久生锈,选择优质园脚IC插座,保护仿真插针,同时不会损坏目标板上的插座. ;

14,仿真时监控和用户代码分离,不可能产生不能仿真的软故障;

15,RS-232接口不计成本采用MAX202集成电路,串行通讯稳定可靠,绝非一般三极管的简易电路可比。

㈣ 单片机数码管显示0到999c语言程序怎么编

#include<reg51.h>

unsigned char xs_d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned int time=0,s,sz;delay(unsigned int k)
{

unsigned int i,j;

for(i=0;i<k;i++)

for(j=0;j<125;j++);

}INT_0()interrupt 0

{ delay(10);

if(INT0==0){sz++;<br> if(sz>2){sz=0;}

}
}

void T0_int()interrupt 1
{

TH0=(65535-50000)/256;//设置初值

TL0=(65535-50000)%256;

s++;
if(s>20){s=0;<br> if(sz==1)time++;<br> if(time>999){time=0;}

if(sz==0){time=0;//清零<br> }



(4)单片机数码管显示从0到9扩展阅读:

运算器由运算部件——算术逻辑单元(Arithmetic & Logical Unit,简称ALU)、累加器和寄存器等几部分组成。

ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器。

运算器有两个功能:

(1) 执行各种算术运算。

(2) 执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。

运算器所执行全部操作都是由控制器发出的控制信号来指挥的,并且,一个算术操作产生一个运算结果,一个逻辑操作产生一个判决。



㈤ 我想要实现单片机: 数码管每隔1s显示从0-9怎么实现 全部代码。

你要c语言的还是汇编的?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uchar x); //延时程序
void ds_50ms(void); //50ms定时,中断程序
void Ptime(uchar); //时间处理函数
void Js_Scan(void); //数码管扫描函数

sbit S1=P2^4; //置位P2.4为数码管1控制位

int num=0,m=0; //定义数据类型

//int code LED_Num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管扫描数组,共阴极
int code LED_Num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极

void main(void) //主函数
{
TMOD=0x01; //定义计时器工作类型
TH0=(65535-50000)/256; //定时器高4位初值
TL0=(65535-50000)%256; //定时器低4位初值
EA=1; //开中断
ET0=1; //开中断
while(1) //建立死循环
{
Js_Scan(); //调用数码管扫描函数
TRO=1;
}
}
void ds_50ms(void) interrupt 1 using 1 //50ms定时中断程序
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++; //执行累加,直到50ms
Ptime(num); //调用时间处理函数
}
void Ptime(uchar time) //时间处理函数
{
if(time==20) //判断是否到1000ms,即1秒
{
num=0; //num清零
m++; //m累加
}
if(m==9) //数码管显示9时,m清零,重新计数
{
m=0;
}
}
void Js_Scan() //数码管扫描函数
{
uchar j; //定义j数据类型
for(j=0;j<5;j++) //建立循环
{
S1=1;P0=LED_Num[m];delay(1);S1=0; //扫描显示位,稍作延时(对于单位数码管可直接置高置低,此为扫描的写法,单位不需要延时,不需要写for循环)
}
}
void delay(uchar x) //延时函数,防止数码管显示不稳定
{
uchar k;
while(x--)
for(k=0;k<125;k++);
}
这个是共阳极的,共阴极改变数组就行了。。。。 将前面的//删掉 将后面数组加上// S1=0;S1=1;就行了。

㈥ 51单片机 让数码管自动显示0至9的C程序。有没有比这个更简单的

可以通过代码优化的方式来简化代码。

一、设置延时函数

延时函数在单片机中有着让现实延时的能力,本程序中可以通过采用for循环方式进行延时,具体代码如下:

void delay()

uinti,j;

for(i=100;i>0;i--)

for(j=1000;j>0;j--);

二、设置数码管显示数组

数组定义简单,而且访问很方便。所有元素类型相同,在数码管显示程序中可以让程序代码减少。数组代码如下:

chara[10]={0xff,0x3,0x9f,0x25,0xd,0x99,0x49,0x41,0x1f,0x1,0x9};

三、设置数码管显示循环

数码管显示循环可以不用编写一次又一次的数码管显示代码,既方便又简洁。具体代码如下:

for(inti=0;i<10;i++)

P0=a[i];

delay();

(6)单片机数码管显示从0到9扩展阅读

单片机程序进行简化可以查看是否有反复出现的代码序列,整合成循环进行更改。同一类型且用法相同的变量可以整合成数组,方便对各个内容进行访问。有特定功能的代码段可以定义一个函数进行访问。

注意:用C51语言编辑的单片机程序与普通C语言不同,C51语言中的数据类型和标准c中的数据类型不同。

㈦ C51单片机:用数码管显示0到999的值。求c语言程序和原理图

#include<reg51.h>

#define uchar unsigned char

uchar temp;

int key1,key,disbuf;// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f

unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

unsigned char ledx[8];

bit s0,s1;

void delay(uchar z)

{

uchar i,j;

for(i=0;i<120;i++)

for(j=0;j<z;j++);

}

void scan() //要是按键了,扫描键盘编码值

{

P1=0xF0;

delay(1);

temp=P1;

switch(temp)

{

case 0xe0: key1=0;

break;

case 0xd0: key1=1;

break;

case 0xb0: key1=2;

break;

case 0x70: key1=3;

break;

}

P1=0x0f;

delay(1);

temp=P1;

switch(temp)

{

case 0x0E: key=key1+0;

break;

case 0x0D: key=key1+4;

break;

case 0x0B: key=key1+8;

break;

case 0x07: key=key1+12;

break;

default : key=-1;

}

if((key1+1)&&(key+1)) disbuf=key;

}

void ejjc() //判断是否按键

{

P1=0xF0;

if(P1!=0xF0) { scan();s0=1;}

else { s0=0; s1=1;}

}

void main()

{

uchar i;

while(1)

{

ejjc();

if(s0==1 && s1==1)

{

s0=0;s1=0;

for(i=0;i<8;i++)

{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }

}

P0=0xff;

P2=LED7Code[ledx[0]];

P0=0xfe;

delay(5);

P0=0xff;

P2=LED7Code[ledx[1]];

P0=0xfd;

delay(5);

P0=0xff;

P2=LED7Code[ledx[2]];

P0=0xfb;

delay(5);

P0=0xff;

P2=LED7Code[ledx[3]];

P0=0xf7;

delay(5);

P0=0xff;

P2=LED7Code[ledx[4]];

P0=0xef;

delay(5);

P0=0xff;

P2=LED7Code[ledx[5]];

P0=0xdf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[6]];

P0=0xbf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[7]];

P0=0x7f;

delay(5);

}

}

㈧ 求:用单片机C语言编一位数码管的数字显示 要求可以从0变化到9

//程序功能:000-999显示
//2012-
//作者:李超峰
//版本:VER:1.0
//=============================
#include
<reg51.h>
sbit
SEG=P1^5;
unsigned
char
SEGTAB[10]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
////////延时子函数////////////////////
void
delay(int
x)
{
int
i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
///////////主函数部分///////////////////
main(void)
{
while(1)
{
int
i;
for(i=0;i<9;i++)
{
SEG=0;
P0=SEGTAB[i];
delay(1000);
}
}
}

㈨ 51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序。

#include<reg51.h>

#defineucharunsignedchar
ucharcodeledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9
uchartime,scanled,tiao;
uchardisdat[6]="201803";
voiddelay(unsignedintx)
{
unsignedinti,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
voidt0isr()interrupt1 //秒计时
{
TH0=0x3c;
TL0=0xb0;
time++;
if(time==20)
{
time=0;
tiao++;
tiao%=10;
}
}

voidt1isr()interrupt3 //显示
{
TH1=0xec;
TL1=0x78;
P2=1<<scanled;
P0=~ledtab[tiao];
scanled++;
scanled%=4;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
while(1);
}

阅读全文

与单片机数码管显示从0到9相关的资料

热点内容
访问服务器公网地址 浏览:656
pdf打印底色去掉 浏览:443
java快递接口 浏览:395
哪个app可以教新爸爸 浏览:210
如何查看服务器系统版本信息 浏览:524
成都市土地出让金算法 浏览:702
钢筋加密标记 浏览:575
ps中扩展功能在文件夹的什么位置 浏览:903
双极压缩机为什么要先高压 浏览:527
苹果手机服务器填什么 浏览:832
android移动动画效果 浏览:691
电子和服务器是什么意思 浏览:691
phpurl中文乱码问题 浏览:893
程序员那么可爱大结局陆漓产子 浏览:538
java如何从云服务器读取本地文件 浏览:924
压缩空气软管制作方法 浏览:912
天河三号算法 浏览:924
php队列教程 浏览:632
洪水命令 浏览:530
安卓怎么弄成苹果在线 浏览:435