4位7段数码管显示123.4的程序怎么写求大神帮助!!急!!

4位7段数码管显示123.4的程序怎么写求大神帮助!!急!!,第1张

/显示子程序/

void display(unsigned char bai,unsigned char shi,unsigned char ge,unsigned char xs)

{

P3=dispbitcode[0]; P0=dispcode[bai]; //显示佰位

delay(5);

P3=dispbitcode[1]; P0=dispcode[shi]; //显示十位

delay(5);

P3=dispbitcode[2]; P0=dispcode[ge] + 128; //显示个位时加上小数点

delay(5);

P3=dispbitcode[3]; P0=dispcode[xs]; //显示小数位

delay(5);

}

我这里有个上学时候的51程序,选了几行有用的你回去改一下。

int i[10]={0x3f,0x06,0x05b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/数码字模/

void display(int k)

{int b,d[4]={0,0,0,0}; 四个位拆开 暂存缓冲

d[3]=k%10;

d[2]=k/10%10;

d[1]=k/100%10;

d[0]=k/1000; 提取四个位的数

for(b=0;b<4;b++) 疯狂扫描

{P1=0xff;

P2=~i[d[b]];

P1=~(1<<b);

delaya(); 这个延时可能要改,它决定显示的对比度

P1=0xff; 关显示

}

}

void delaya(void) 延时函数,没啥说的。

{int i,j;

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

{for(j=0;j<10;j++);

}

}

int main(void) 主程序,你往里面加点你自己的东西就行了。

{

display(k);

}

这个就是从0000-9999的。

/四个数码管的动态显示/

#include<reg52h>

#define uint unsigned int

#define uchar unsigned char

sbit du = P2^6;

sbit we = P2^7;

uchar code table[] = {

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uint a;

//---------------------------------------------

void delayms(uint xms)

{

uint i, j;

for(i=xms;i>0;i--) for(j=110;j>0;j--);

}

//---------------------------------------------

void disp()

{

we = 1; P0 = 0xf7; we = 0; //锁存开启 个位 锁存关闭

P0 = table[a % 256 % 16]; delayms(5); //输出个位数

we = 1; P0 = 0xff; we = 0; //锁存开启 消隐 锁存关闭

we = 1; P0 = 0xfb; we = 0; //锁存开启 十位 锁存关闭

P0 = table[a % 256 / 16]; delayms(5); //输出十位数

we = 1; P0 = 0xff; we = 0; //锁存开启 消隐 锁存关闭

we = 1; P0 = 0xfd; we = 0; //锁存开启 百位 锁存关闭

P0 = table[a / 256 % 16]; delayms(5); //输出百位数

we = 1; P0 = 0xff; we = 0; //锁存开启 消隐 锁存关闭

we = 1; P0 = 0xfe; we = 0; //锁存开启 千位 锁存关闭

P0 = table[a / 256 / 16]; delayms(5); //输出千位数

we = 1; P0 = 0xff; we = 0; //锁存开启 消隐 锁存关闭

}

//---------------------------------------------

void main()

{

char i;

a = 0;

while(1) {

for (i = 0; i < 20; i++) disp();

a++;

}

}

//---------------------------------------------

上述的《千百十个》四个位,实际上,显示的是16进制数。

程序,是借用了楼主的《单个显示程序》,但是,和楼主的电路,并不配套。

楼主的电路,并没有锁存器。

而程序中,却是使用锁存器的编程思路。

未必好用,试试看吧。

程序如下,看不懂的话,追问一下就好了。

#include<reg52h>

//unsigned char code liushideng[]=(0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f); /led灯共阳型 /

unsigned char shumaguan[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; /共阳型数码管 /

unsigned char i=0;

sbit p20=P2^0; //数码管位控制端

sbit p21=P2^1; //数码管位控制端

sbit p22=P2^2; //数码管位控制端

sbit p23=P2^3; //数码管位控制端

void yanshi() //延时函数

{

unsigned int x,y;

for(x=0;x<10;x++)

for(y=0;y<20;y++) ;

}

void smgxs(void) //数码管显示函数

{ p20=1; //开通位1

P0=shumaguan[1]; //赋值

yanshi(); //延时

p20=0; //关闭位1

p21=1; //开通位2

P0=shumaguan[2]; //赋值

yanshi(); //延时

p21=0; //关闭位2

p22=1; //开通位3

P0=shumaguan[3]; //赋值

yanshi(); //延时

p22=0; //开通位3

p23=1; //开通位4

P0=shumaguan[4]; //赋值

yanshi(); //延时

P2=0XF0; //关闭所有位

}

void main() /主函数/

{

while(1) //防止程序跑飞

{

smgxs(); //数码管显示

}

}

动态显示的是有固定格式的,赋值,开显示,延时,关显示,假设p0口接数据显示位,p2口低4位接片选,

p2=tab[1];

//赋值

p3_0=0;

//开第一位显示

for(i=0;i<200:i++);//延时

p3_0=1;

//关第一位显示

p2=tab[2];

p3_1=0;

//开第二位显示

for(i=0;i<200:i++);

p3_1=1;

这个程序就是让两个数码管分别显示1和2,注意程序开头包含头文件regx52h,如果是包含reg52h编译不了的

以上就是关于4位7段数码管显示123.4的程序怎么写求大神帮助!!急!!全部的内容,包括:4位7段数码管显示123.4的程序怎么写求大神帮助!!急!!、跪求~四位数码管计数显示程序~~急用~~!!!、单片机实现4位一体数码管显示0000—FFFF的16进制(C语言编程)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存