要点:
1、 认识 共阴和 共阳
2、共阴极数码管0-9 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
共阳极数码管0-9 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90
3、注意 proteus 里面共阳极 和 共阴极 数码管的 选择 CC共阴 CA共阳
4、 proteus 里面排阻是 Rx8
实验一: 轮流显示 偶数 和 奇数 0 2 4 6 8 和 1 3 5 7 9
电路图: 共阳数码管 7seg-MPX1-CA
参考程序:
#include<reg52.h> #include<intrins.h> #define uchar8 unsigned char #define uint16 unsigned int #define out P0 uchar8 code seg[]={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 }; // 共阳数码管 /*****************************/ // 函数名称: DelayMS( ) // 函数功能: 延时 // 入口函数: 延时毫秒 // 出口函数: 无 /************************* *******************/ void DelayMs(uint16 val) { uint16 i,j; for( i=0;i<val;i++) for(j=0;j<113;j++); } void main() { int i; while(1) { for(i=0;i<10;i++,i++) { out=seg[i]; DelayMs(1000); } for(i=1;i<10;i++,i++) { out=seg[i]; DelayMs(1000); } } }
实验二: 控制LED 数码管滚动 显示 数字 1到8
仿真图: 这个很重要,要记得 排阻 Rx8 还有总线 ,还有三极管具体作用 NPN 怎么使用,需要补充理论知识
参考程序:
#include<reg52.h> #include<intrins.h> #define uchar8 unsigned char #define uint16 unsigned int uchar8 code seg[]={ 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80}; // 共阳数码管 /*****************************/ // 函数名称: DelayMS( ) // 函数功能: 延时 // 入口函数: 延时毫秒 // 出口函数: 无 /************************* *******************/ void DelayMs(uint16 val) { uint16 i,j; for( i=0;i<val;i++) for(j=0;j<113;j++); } void main() { uchar8 j=0x80; int i; while(1) { for(i=0;i<8;i++) { j=_crol_(j,1); // 0x01 即 0000 0001 左移,向高位移动 P0=seg[i]; // P0口 输出段码 P2=j; // P2 输出位选码 DelayMs(1000); // 这里最好用 1000 ,用100或更小时间会有视觉暂留 } } }