Linglong之AVR程例5 数码管4位显示
时间:11-22
来源:互联网
点击:
现在我们让4位数码管显示4位数字,这里用的动态扫描法。
#include avr/io.h> //IO口头文件调用
#include
#define uchar unsigned char //申明
#define uint unsigned int
uchar reg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //8位数码管字型编码表
int main(void)
{
DDRB = 0xff; //这两行表示设制IO寄存器为输出
DDRC = 0xff;
while(1)
{
PORTC = reg[0]; //送数据到第一位数码管
PORTB = 0xfe; //打开第一位数码管位选端
_delay_ms(5); //延时5MS
PORTB = 0xff; //关闭第一位数码管位选端
PORTC = reg[5];
PORTB = 0xfd;
_delay_ms(5);
PORTB = 0xff;
PORTC = reg[1];
PORTB = 0xfb;
_delay_ms(5);
PORTB = 0xff;
PORTC = reg[0];
PORTB = 0xf7;
_delay_ms(5);
PORTB = 0xff;
}
}
这里说一个这个写这个程序要注意的地方:
1
2
关键是理解动态扫描的思想:我们先点亮第一位数码管,亮5ms.再点亮第二位数码管,亮5ms.这时第一位是不亮的,如此循环下去。因为人眼5ms反映不过来,看上去就是4位数码管都是亮的。
#include avr/io.h>
#include
#define uchar unsigned char
#define uint unsigned int
uchar reg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
int main(void)
{
AVR程例数码管4位显 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)