樓主的硬件電路和軟件的設計都有問題,按樓主的意圖修改如下:
無標題.jpg (283.78 KB, 下載次數: 58)
下載附件
2021-3-22 05:51 上傳
- #include <AT89X52.H>
- #include <intrins.h>
- #include <absacc.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define Lcd_com P0
- //#define Lcd_com0 XBYTE[0xfff8]
- //#define Lcd_com1 XBYTE[0xfff9]
- //#define Lcd_com2 XBYTE[0xfffA]
- //#define Lcd_com3 XBYTE[0xfffB]
- //#define Lcd_com4 XBYTE[0xfffC]
- //#define Lcd_com5 XBYTE[0xfffD]
- //#define Lcd_com6 XBYTE[0xfffE]
- //#define Lcd_com7 XBYTE[0xfffF]
- sbit led =P1^0;
- sbit wela=P1^1; //位
- sbit dula=P1^2; //段
- bit flag_2ms;
- uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void T0int(void)
- {
- TMOD=0X01;
- TH0=(65536-2000)/256;
- TL0=(65536-2000)%256;
- EA=ET0=TR0=1;
- }
- void T0sev(void) interrupt 1
- {
- TH0=(65536-2000)/256;
- TL0=(65536-2000)%256;
- flag_2ms=1;
- }
- void display(void)
- {
- static uchar k;
- wela=0;
- Lcd_com=DSY_CODE[k];
- dula=1;
- dula=0;
- Lcd_com=k;
- wela=1;
- k=++k%8;
- }
- void main(void)
- {
- uint cnt;
- T0int();
- while(1)
- {
- if(flag_2ms)
- {
- flag_2ms=0;
- display();
- if(++cnt>200)
- {
- led=!led;
- cnt=0;
- }
- }
- }
- }
復制代碼
|