那個老師知道。或者那個大佬明白給我講解一下謝謝。為什么數碼管輸入5678顯示6785;5還有鬼影。
- #include <reg52.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define AT24C02_ADDR 0xa0
- #define PCF8591_ADDR 0X90
- #define MAIN_Fosc 11.0592
- sbit we = P2^7;
- sbit du = P2^6;
- sbit SDA = P2^0;
- sbit SCL = P2^1;
- void delay_5us()
- {
- _nop_();
- }
- void delay(uint ms)
- {
- uchar i;
- do
- {
- i = MAIN_Fosc / 9600;
- while(--i);
- }
- while(--ms);
- }
- unsigned char leddata[]={
- 0x3F, //"0"
- 0x06, //"1"
- 0x5B, //"2"
- 0x4F, //"3"
- 0x66, //"4"
- 0x6D, //"5"
- 0x7D, //"6"
- 0x07, //"7"
- 0x7F, //"8"
- 0x6F, //"9"
- 0x77, //"A"
- 0x7C, //"B"
- 0x39, //"C"
- 0x5E, //"D"
- 0x79, //"E"
- 0x71, //"F"
- 0x76, //"H"
- 0x38, //"L"
- 0x37, //"n"
- 0x3E, //"u"
- 0x73, //"P"
- 0x5C, //"o"
- 0x40, //"-"
- 0x80, //??
- 0x00 //???
- };
- unsigned char ledbit[]={
- 0xfe, //w1
- 0xfd, //w2
- 0xfb, //w3
- 0xf7, //w4
- 0xef, //w5
- 0xdf, //w6
- 0xbf, //w7
- 0x7f, //w8
- };
- void display(uint i)
- {
- uint b,s,g,q;
- q = i/1000;
- b = i%1000/100;
- s = i%100/10;
- g = i%10;
-
- du = 1;
- P0 = leddata[q];
- du = 0;
- delay(10);
- we = 1;
- P0 = 0xfe;
- we = 0;
- P0 = 0xff;
-
- du = 1;
- P0 = leddata[b] ;
- du = 0;
- delay(5);
- we = 1;
- P0 = 0xfd
- we = 0;
- P0 = 0xff;
- du = 1;
- P0 = leddata[s];
- du = 0;
- delay(5);
- we = 1;
- P0 = 0xfb;
- we = 0;
- P0 = 0xff;
- du = 1;
- P0 = leddata[g];
- du = 0;
- delay(5);
- we = 1;
- P0 = 0xf7;
- we = 0;
- P0 = 0xff;
- }
- void main()
- {
- while (1)
- {
- display(5678);
- }
- }
復制代碼
|