
- 帖子
- 41
- 主题
- 10
- 精华
- 0
- 积分
- 21
- 在线时间
- 20 小时
- 注册时间
- 2010-10-6
|
49楼
发表于 2010-11-1 20:47
| 只看该作者
本帖最后由 panfeng881112 于 2010-11-1 20:55 编辑
这两个是调用上面的SET_led()函数实现控制16位数码管(同时)显示字符的方法。
这里是利用了人的视觉反应时间来实现的“同时”,并不是真正的同时。(未调试)
void SET_up(char a1,char a2,char a3,char a4,char a5,char a6,char a7,char a8,u8 p) // 在数码管上排显示一串字符
{ // 对于SER_up()里的参数p
// p有8位 0000 0000 每一位的值确定相
SET_led(1,a1,p&0X80); // 对应的一个数码管小数点是否点亮
Delay(10); // 为0时点亮对应的小数点
SET_led(2,a2,p&0X40); // 为1时熄灭对应的小数点
Delay(10); //
SET_led(3,a3,p&0X20); //
Delay(10); //
SET_led(4,a4,p&0X10); //
Delay(10); //
SET_led(5,a5,p&0X08); //
Delay(10); //
SET_led(6,a6,p&0X04); //
Delay(10); //
SET_led(7,a7,p&0X02); //
Delay(10); //
SET_led(8,a8,p&0X01); //
Delay(10);
}
void SET_down(char a1,char a2,char a3,char a4,char a5,char a6,char a7,char a8,u8 p) // 在数码管下排显示一串字符
{
SET_led(9,a1,p&0X80);
Delay(10);
SET_led(10,a2,p&0X40);
Delay(10);
SET_led(11,a3,p&0X20);
Delay(10);
SET_led(12,a4,p&0X10);
Delay(10);
SET_led(13,a5,p&0X08);
Delay(10);
SET_led(14,a6,p&0X04);
Delay(10);
SET_led(15,a7,p&0X02);
Delay(10);
SET_led(16,a8,p&0X01);
Delay(10);
}
在调用这两个函数来实现16位数码管显示时,需要增加它们的实现次数。
例如:
while(1)
{
SET_up(*******);
SET_down(******);
}
或者:
for(i=0;i<100;i++)
{
SET_up(*******);
SET_down(******);
}
否则显示次数太少会看不到效果 |
|