proteus 雙色點陣顯示
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit ds2 =P3^5;
- sbit ds1 =P3^4;
- sbit e =P3^3;
- sbit st_cp=P2^7;
- sbit sh_cp=P2^6;
- sbit k_y =P3^2;
- sbit k_dw =P3^7;
- sbit k_up =P3^6;
- uint g,h,i,j,k,l,m;
- uint code display[]={
- 0x00,0x00,0x00,0x10,0x80,0x08,0x20,0x05,0x20,0x07,0xD0,0x0D,0x30,0x00,0x00,0x08,
- 0x80,0x08,0x20,0x05,0x10,0x07,0xF0,0x0C,0x10,0x18,0x00,0x10,0x00,0x10,0x00,0x00,/*"雙",0*/
- /* (16 X 16 , 楷體 ) */
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x90,0x24,0x88,0x24,0xCE,0x43,0x6A,0x42,
- 0x58,0x42,0xC8,0x41,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x38,0x00,0x00,0x00,0x00,/*"色",1*/
- /* (16 X 16 , 楷體 ) */
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x80,0x00,0x80,0x07,0x80,0x34,0xFC,0x04,
- 0x94,0x04,0x90,0x34,0x90,0x03,0x88,0x00,0x00,0x18,0x00,0x30,0x00,0x20,0x00,0x00,/*"點",2*/
- /* (16 X 16 , 楷體 ) */
- 0x00,0x00,0x00,0x00,0xF8,0x3F,0x08,0x00,0xF8,0x00,0x8C,0x00,0x10,0x05,0xD0,0x05,
- 0x30,0x05,0xDC,0x7F,0x90,0x04,0x88,0x04,0x88,0x04,0x00,0x04,0x00,0x00,0x00,0x00,/*"陣",3*/
- /* (16 X 16 , 楷體 ) */
- 0x00,0x00,0x80,0x00,0xC0,0x12,0xA0,0x13,0x98,0x0A,0x60,0x0A,0x00,0x02,0x20,0x01,
- 0x50,0x11,0xCC,0x34,0xF0,0x64,0x90,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,/*"終",4*/
- /* (16 X 16 , 楷體 ) */
- 0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x88,0x00,0x88,0x20,0x88,0x40,0xB8,0x60,
- 0xD8,0x3F,0x48,0x00,0x44,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,/*"于",5*/
- /* (16 X 16 , 楷體 ) */
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x10,0xC0,0x0F,0x40,0x02,0x40,0x12,0x42,0x3D,0x3E,0x02,
- 0xE0,0x10,0x20,0x0B,0x04,0x0C,0x80,0x13,0x00,0x20,0x00,0x40,0x00,0x70,0x00,0x00,/*"成",6*/
- /* (16 X 16 , 楷體 ) */
- 0x00,0x00,0x00,0x04,0x20,0x04,0x20,0x04,0xE0,0x03,0x20,0x22,0x10,0x12,0x40,0x09,
- 0x40,0x04,0xC0,0x03,0x7C,0x30,0x40,0x30,0x20,0x1E,0xE0,0x01,0x00,0x00,0x00,0x00,/*"功",7*/
- /* (16 X 16 , 楷體 ) */
- };
- void delay(uint d)
- {
- while(d--);
- }
- void hc_595(uchar dat1,uchar dat2)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- ds1=dat1&0x80;
- ds2=dat2&0x80;
- sh_cp=0;
- sh_cp=1;
- dat1<<=1;
- dat2<<=1;
- }
- }
- void ps() interrupt 1
- {
- }
- main()
- {
- IE=0x8a;TMOD=0x11;
- m=sizeof(display)/2-128;
- while(1)
- {
- j=0;h=0;
- for(l=0;l<142;l++)
- {
- for(k=0;k<10;k++)
- for(i=0;i<32;i+=2)
- {
- g=i/2%2&&l%2;
- hc_595(display[97+i+j+h]+0x80-0x80*g,0x80*g);
- hc_595(display[96+i+j+h]+0x01-g,g);
- hc_595(display[65+i+j+h]+0x80-0x80*g,0x80*g);
- hc_595(display[64+i+j+h]+0x01-g,g);
- hc_595(0x80-0x80*g,display[97+i-j+h]+0x80*g);
- hc_595(0x01-g,display[96+i-j+h]+g);
- hc_595(0x80-0x80*g,display[65+i-j+h]+0x80*g);
- hc_595(0x01-g,display[64+i-j+h]+g);
- st_cp=0;e=1;
- st_cp=1;
- P1=i/2;
- e=0;
- }
- if (l<32) j+=2;
- else if (l>37&&l<70) j-=2; //0+31+5=36
- else if (l==70) h=192;
- else if (l>70&&l<103) j+=2;
- else if (l>108) j-=2; //71+31+5=107
- }
-
- }
- }
復制代碼
|