利用数码管显示三位数是利用了单片机数码管的动态扫描,但此方法又有不同点,我们不再需要位选table,实现的具体思路是,先将要显示的3位数进行百位,十位,个位进行分离,然后再利用动态扫描将其显示即可.
源代码如下,产生的效果是:可以显示任一个小于255的整数
#include#define uint unsigned int #define uchar unsigned char sbit sda=P1^0; sbit clk=P1^1; sbit dig1=P1^2; sbit dig2=P1^3; sbit dig3=P1^4; sbit dig4=P1^5; uchar code table_num[]={0x7e,0x0c,0xb6,0x9e,0xcc,0xda,0xfa,0x0e,0xfe,0xde}; void display(uchar); void delay(uint); void write164(uchar); void main() { while(1) { display(255); } } /** 显示函数(仅能显示3位整数) **/ void display(uchar temp) { /** 分离百位,十位,个位 **/ uchar bai,shi,ge; bai = temp/100; shi = temp%100/10; ge = temp%10; dig1=1; /* 显示百位 */ dig2=0; write164(table_num[bai]); delay(10); dig2=1; /* 显示十位 */ dig3=0; write164(table_num[shi]); delay(10); dig3=1; /* 显示个位 */ dig4=0; write164(table_num[ge]); delay(10); dig4=1; } /** 向锁存器写入一个字节 **/ void write164(uchar b) { uchar temp = b; uint i; for(i=0;i<8;i++) { clk=1; sda = temp & 0x80; clk=0; temp = temp <0;x--) for(y=101;y>0;y--); }
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』