当前位置:首页 » 编程语言 » 单片机数码管c语言程序

单片机数码管c语言程序

发布时间: 2022-08-18 08:04:59

‘壹’ 单片机数码管显示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> }



(1)单片机数码管c语言程序扩展阅读:

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

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

运算器有两个功能:

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

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

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



‘贰’ 单片机8位数码管依次显示0到7,要求用c语言实现

假设8个数码管公共端均接地,同时显示0-7
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff
};
void DelayMS(uint x)
{
uchar t;
while(x--)
for(t=120;t>0;t--);
}
void main()
{
uchar i=0;
P0=0x00;
while(1)
{
P0=~DSY_CODE[i];
i=(i+1)%10;/*显示0-9*/
DelayMS(200);
}
}
下面程序从左到右显示
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};

void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=200;i>0;i--);
}
}

void main()
{
uchar i,k=0x80;
while(1)
{
for(i=8;i>0;i--)
{
P2=0xff;
k=_crol_(k,1);
P0=DSY_CODE[8-i];
P2=k;
DelayMS(3);
}
}
}

‘叁’ 谁能告诉我51单片机简单的led数码管时钟程序 24小时制的(c语言版的)

#include "reg52.h"
#define uint unsigned int
#define uchar unsigned char
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar shi,fen,miao;
uchar time;
void delay(uint x)
{
uint y;
for(;x>0;x--)
{
for(y=0;y<124;y++);
}
}
void display(uchar shi,uchar fen,uchar miao)
{
P2=0; //位码
P0=(tab[shi/10]); //段码
delay(2);
P2=1;
P0=(tab[shi%10]);
delay(2);
P2=2; //位码
P0=0x40; //段码
delay(2);
P2=3; //位码
P0=(tab[fen/10]); //段码
delay(2);
P2=4;
P0=(tab[fen%10]);
delay(2);
P2=5; //位码
P0=0x40; //段码
delay(2);
P2=6; //位码
P0=(tab[miao/10]); //段码
delay(2);
P2=7;
P0=(tab[miao%10]);
delay(2);

}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{

if(time==20)
{
time=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}

}

}
display(shi,fen,miao);
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
}

/*还有什么不明白继续追加*/

‘肆’ 80C51单片机数码管的显示 C语言

用10个8段数码管动态扫描显示的:
#include
unsigned
char
const
dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
显示段码值0123456789
unsigned
char
code
seg[]={0,1,2,3,4,5,6,7,8,9};//分别对应相应的数码管点亮,即位码
/*------------------------------------------------
延时子程序
------------------------------------------------*/
void
delay(unsigned
int
cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
unsigned
char
i;
while(1)
{
P0=dofly[i];//取显示数据,段码
P2=seg[i];
//取位码
delay(20000);
//扫描间隙延时,时间太长会闪烁,太短会造成重影,自己调试
i++;
if(10==i)
//检测10位扫描完全?
i=0;
}
}

‘伍’ 求C语言实现一个51单片机的数码管程序!!!(看似简单实际不好整!你测测!)

你这个太简单了。。不过前提是你2个单片机驱动的数码管是同样规格的和同样的接法,比如P1.0接LED的a P1.1接LED的b。。。。
先吧一个单片机A编写好数码管的显示代码,另一个只是读取就是了比如你这个图说实在的看不清。。。我就按左边这组是P0,右边从上往下分别是P1,P2,P3口吧。
B单片机的P1口始终读取A单片机P1口的显示段码数据。读过来就直接传送给P0,你读位码的那2个应该是PX.2和PX.3(我是按上句说的从上往下排他应该是P3.2,P3.3)这样同时把位码读取过来其实直接赋值给你的B单片机显示位控制也可以好像是P2.0~P2.3不过你说的就2位,那么就按P2.0,P2.1就可以了
用你说的中断方式也行,直接轮询也行 按中断说吧:先开外部中断设定成低电平触发,打开2个外部中断,中断0里代码为
{
P2^0=1;
P2^1=1;
P0=P1;
P2^0=0;
}
中断1和0基本一样
{
P2^0=1;
P2^1=1;
P0=P1;
P2^1=0;
}
主程序里写好初始化,即开外部中断,把各IO全初始化为1,即P0=0XFF;P1=0XFF;....

‘陆’ 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)单片机数码管c语言程序扩展阅读

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

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

热点内容
sql语句等于怎么写 发布:2024-05-07 18:05:46 浏览:815
我的世界电脑版第三方服务器大全 发布:2024-05-07 18:00:46 浏览:626
主服务器的ip地址 发布:2024-05-07 17:58:50 浏览:545
组服务器打电脑游戏 发布:2024-05-07 17:46:19 浏览:865
java的文件路径 发布:2024-05-07 16:55:29 浏览:293
云表服务器安装导致电脑崩溃 发布:2024-05-07 15:58:35 浏览:524
ftp是什么检测器 发布:2024-05-07 15:37:59 浏览:403
重庆电信服务器租用教学云主机 发布:2024-05-07 15:28:05 浏览:73
python声明对象 发布:2024-05-07 15:28:03 浏览:128
存储过程的应用场景 发布:2024-05-07 15:12:16 浏览:613