仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
鏃
單片機源程序如下:
- #include <reg51.h>
- #include <intrins.h>
- #include <stdio.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit RCK_Pin = P3^2;
- sbit k1 = P1^1;
- sbit k2 = P1^3;
- uchar flag=1;
- uchar code DSY_CONTENT_8x8_0[]=
- {
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,
- 0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,
- 0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天"*/
- 0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天"*/
- 0xFF,0xC0,0xB7,0xD3,0xD3,0xDF,0xC0,0xFF,/*"向"*/
- 0xFF,0xFD,0xFD,0x81,0xED,0xED,0xFD,0xFF,/*"上"*/
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- };
- uchar code DSY_CONTENT_8x8_1[]=
- {
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,
- 0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,
- 0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天",0*/
- 0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天",1*/
- 0xFF,0xC0,0xDF,0xD3,0xD3,0xB7,0xC0,0xFF,/*"向",2*/
- 0xFF,0xFD,0xED,0xED,0x81,0xFD,0xFD,0xFF,/*"上",3*/
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- };
- uchar Scan_BIT = 0x01;
- uchar Scan_BIT1 = 0x80;
- uchar Offset,Data_Index = 0;
- uchar Offset1,Data_Index1 = 0;
- void Delay(uint t)
- {
- uchar i;
- while(t--) for(i=0;i<120;i++);
- }
- void T0_Led_Display_Control() interrupt 1
- {
- TH0 = (65536-1000)/256;
- TL0 = (65536-1000)%256;
- if(flag==0)
- {
- Scan_BIT1=0x80;
- Data_Index1 = 0;
- Scan_BIT = _cror_(Scan_BIT,1);
- putchar(Scan_BIT);
- while(TI == 0);
- putchar( DSY_CONTENT_8x8_0[Offset + Data_Index + 8]);
- while (TI==0);
- putchar( DSY_CONTENT_8x8_0[Offset + Data_Index ]);
- while(TI == 0);
- Data_Index = (Data_Index + 1) % 8;
- RCK_Pin = 1;
- RCK_Pin = 0;
- }
- if(flag==1)
- {
- Scan_BIT=0x01;
- Data_Index = 0;
- Scan_BIT1 = _crol_(Scan_BIT1,1);
- putchar(Scan_BIT1);
- while(TI == 0);
- putchar( DSY_CONTENT_8x8_1[Offset1 + Data_Index1]);
- while (TI==0);
- putchar( DSY_CONTENT_8x8_1[Offset1 + Data_Index1 + 8 ]);
- while(TI == 0);
- Data_Index1 = (Data_Index1 + 1) % 8;
- RCK_Pin = 1;
- RCK_Pin = 0;
- }
- }
- void main()
- {
- uchar i;
- TMOD = 0x01;
- TH0 = (65536-1000) / 256;
- TL0 = (65536-1000) % 256;
- IE = 0x82;
- TCON =0x00;
- TI = 1;
- while(1)
- {
-
- for(i=0;i<64;i++)
- {
- if(k1==0) { flag=1; }
- if(k2==0) { flag=0; }
- Offset = i; Offset1 = i;
- TR0 = 1;
- Delay(50);
- TR0 = 0;
- }
- }
- }
復制代碼
所有資料51hei提供下載:
11-2點陣顯示屏.zip
(70.8 KB, 下載次數: 36)
2020-6-6 02:20 上傳
點擊文件名下載附件
|