c语言1668数字显示

1.首先你要有几个函数来显示每个数码管号。

void led 1 show(char dat);

void led 2 show(char dat);

void led 3 show(char dat);

void led 4 show(char dat);

Dat是您想要显示的字符。函数是否可以重用取决于您的代码。

2.写一个统一的显示函数。

Void ledShow(int dat)//dat是要显示的数字。

{

led 1 show(dat/1000);

led 2 show(dat % 1000/100);

led 3 show(dat % 100/10);

led4Show(日期% 10);

}

3.调用你的主函数。

int dat = 123

while(1)

{

led show(dat);

dat

如果(dat 9012)

dat = 123

delay _ ms(500);//加个延迟,不然刷新太快。

}

数码管动态显示的c语言程序 记得给分!

我的程序在编译器ICCVC FOR AVR中编译成功。

//ICC-AVR应用程序生成器:2010-3-15 11:14:29

//目标:M8

//晶体:4.0000Mhz

#包含iom8v.h

#包含宏. h

无符号charconst seg _ tablet语言数码管显示 Wei=_crol_(wei,1);改成wei=wei1就行了。。

我也有一个节目,你可以参考一下。。

#包含reg51.h

sbit p2 _ 0 = p2^0;

sbit p2 _ 1 = p2^1;

sbit p2 _ 2 = p2^2;

sbit p2 _ 3 = p2^3;

sbit p2 _ 4 = p2^4;

sbit p2 _ 5 = p2^5;

sbit p2 _ 6 = p2^6;

sbit p2 _ 7 = p2^7;

/***********************************************************************************************/

const unsigned char led _ code[20]= { 0xc 0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XD8,0X80,0X90,

0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X58,0X00,0x 10 };

//定义0~9为带小数点的显示码。

unsigned char led_reg[8]={1,9,10,11,12,13,14,15 };//定义显示数字缓冲区。

/************************************************************************************************

* *函数:延迟(无符号字符I)

* *工作和能量:延迟程序

************************************************************************************************/

无效延迟(无符号字符I)

{无符号字符j,k;

for(k = 0;ki;k)

{ for(j = 0;j255j);

}

}

/************************************************************************************************

* *功能:led_show()

* *工作能量:显示功能

************************************************************************************************/

void led_show()

{静态无符号字符led _ shift = 0x00//定义静态变量

P2 = 0x ff;//关闭数码管控制端口。

P0 = led _ code[led _ reg[led _ shift]];//将字符码发送到P0端口。

switch(led _ shift)//选择数码管控制位。

{案例0:P2 _ 0 = 0;打破;//控制左1位数码管

情况一:P2 _ 1 = 0;打破;//控制左边2个数码管

情况二:P2 _ 2 = 0;打破;//控制左边3个数码管

情况三:P2 _ 3 = 0;打破;//控制左边4个数码管

情况四:P2 _ 4 = 0;打破;//控制左边5个数码管

情况五:P2 _ 5 = 0;打破;//控制左6位数码管

案例六:P2 _ 6 = 0;打破;//控制左7位数码管

案例7:P2 _ 7 = 0;打破;//控制左8位数码管

默认:break

}

led _ shift//数码管控制变量自加

if(led _ shift = = 0x 08)//确定是否扫描一轮。

led _ shift = 0x00//下一次扫描归零。

}

/************************************************************************************************

勉()

************************************************************************************************/

void main()

{ P0 = 0X00//P0端口输出低电平。

P2 = 0x ff;//P2端口输出高电平。

while(1)

{ led _ show();//调用显示函数

延迟(10);//调用延迟函数

}

}

相关文章

发表新评论