|
這個51單片機的proteus仿真實現無符號浮點數的顯示。
具體說,顯示個位和小數點后三位
數碼管的顯示一定要注意消隱的問題,每次顯示數字之前要先關一次數碼管。否則會出現顯示混亂。
仿真電路圖如下:
led.JPG (33 KB, 下載次數: 97)
下載附件
2016-9-8 22:57 上傳
C程序如下:
- #include<reg52.h>
- #include<intrins.h>
- sbit duan=P3^0;
- sbit wei=P3^1;
- unsigned char code table[] = {
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71 };
- void delay(void)
- {
- unsigned char i,j;
- for(i=0;i<10;i++)
- for(j=0;j<110;j++);
- }
- void show6led(float num)
- {
- unsigned char i;
-
- i=num;
- duan=1;
- P2=table[i]+0x80; //顯示個位和小數點
- duan=0;
- P2=0xff; //先關閉led
- wei=1;
- P2=0xfb; //段選3
- wei=0;
- delay();
-
-
- P2=0xff;
- P3=0xff; //這兩句非常重要,主要是清屏消隱
- num=num-i;
- num=num*10;
- i=num;
- duan=1;
- P2=table[i];
- duan=0;
- P2=0xff;
- wei=1;
- P2=0xf7; //段選4,十分位
- wei=0;
- delay();
-
- P2=0xff;
- P3=0xff;
- num=num-i;
- num=num*10;
- i=num;
- duan=1;
- P2=table[i];
- duan=0;
- P2=0xff;
- wei=1;
- P2=0xef; //段選5,百分位
- wei=0;
- delay();
-
-
- P2=0xff;
- P3=0xff;
- num=num-i;
- num=num*10;
- i=num;
- duan=1;
- P2=table[i];
- duan=0;
- P2=0xff;
- wei=1;
- P2=0xdf; //段選6,千分位
- wei=0;
- delay();
- P2=0xff;
- P3=0xff;
-
- }
- main()
- {
- float number;
- number=3.718;
-
- while(1)
- {
- show6led(number);
-
- }
- }
復制代碼
|
|