51机数码管动态显示

51机数码管动态显示,第1张

只改主程序就行了。

void main()//主程序

{

bit die;//移动方向标志位,0=向左,1=向右

uchar n,x;

while(1)

{

display(x);

n++;

if(n>40)

{

n=0;

if(die==0)//向左

{

x++;

if(x>7)

die=1;//改变方向

}

else//向右

{

x--;

if(x==0)

die=0;//改变方向

}

}

}

}

请采纳。

百度知道

51单片机数码管动态显示从右往左展开

lycdl

高粉答主

醉心答题,欢迎关注

关注

成为第7101位粉丝

这是四位数码管从右从左流动显示,像滚动字幕一样的。用不着矩阵按键哪。

其实程序很简单,没那么复杂。程序如下

#include<reg51h>

#define uchar unsigned char

#define uint  unsigned int

uchar wxxxcode-style tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共阴段码码,0x00为灭

void delay()//延时子程序

{

uint y;

for(y=400;y>0;y--);

}

void main()

{

uchar n,x;

while(1)

{

n++;

if(n>50)//n为显示一屏显示次数,n大小可调节流动速度

{

n=0;

x++;//从下一个位置开始显示

if(x>8)x=0;

}

}

}

仿真结果

#include<reg52h>

unsigned char code shu[]={0x08,0x5e,0x82,0x42,0x54,0x41,0x01,0x5a,0x00,0x40};//0-9

unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7,0xef}; 

unsigned int x,y,z;

unsigned char con;

unsigned char dis[5];

//

void init(void)

{

TMOD = 0x16;//T1定时器方式1 T0计数器自动装载

TH0 = 256-1; 

TL0 = 256-1;

TH1 = (65536-5000)/256;

TL1 = (65536-5000)%256;//5mc

TR0=1;

TR1=1;

ET0=1;

ET1=1;

EA=1;

}

//

void time0()interrupt 1

{

x++;

if(x==1) z=x(60000/y);

x=0;

y=0;

dis[0]=z/10000;

dis[1]=(z%10000)/1000;

dis[2]=(z%1000)/100;

dis[3]=(z%100)/10;

dis[4]=z%10;

}

//

void time1()interrupt 3

{

y++;

TH1 = (65536-5000)/256;

TL1 = (65536-5000)%256;//5mc

con++;

P2=wei[con];

P0=shu[con];

}

void main(void)

{

x=0;

y=0;

init();

while(1);

}

#include <reg51h>

#include"18b20c"

sbit DQ =P1^0; //定义通信端口

unsigned char tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //0, 1, 2 3 4 5 6 7 8 9

void delay(unsigned int i);//延时函数

Init_DS18B20(void); //初始化函数

ReadOneChar(void); //读一个字节

WriteOneChar(unsigned char dat); //写一个字节

ReadTemperature(void); //读取温度

void display(unsigned char i); //温度显示函数

unsigned char c=0,x=0;

//主程序温度显示函数

void display(unsigned char i){

P0=tab[i/10];

P2=0x04;

delay(100);

P0=tab[i%10];

P2=0x02;

delay(100);

P0=tab[x];

P2=0x01;

delay(100);

}

void main(void){

unsigned char temp;

while(1){ //主循环

temp=ReadTemperature();

display(temp);

}

}

以上就是关于51机数码管动态显示全部的内容,包括:51机数码管动态显示、51单片机数码管显示数据向左字、51单片机数码管显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9273185.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存