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);//调用延迟函数
}
}
最后更新于 2023-10-13 06:59:52 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章