sTC15w4k58s4,4*4按鍵矩陣,按鍵出數1-16
所有資料51hei提供下載:
數碼管.zip
(74.8 KB, 下載次數: 11)
2017-7-7 17:00 上傳
點擊文件名下載附件
代碼 下載積分: 黑幣 -5
單片機源程序如下:
- #include "reg51.h"
- #include "spi.h"
- #define ADC_POWER 0x80
- #define ADC_FLAG 0x10
- #define ADC_START 0x08
- #define ADC_SPEEDLL 0x00
- #define ADC_SPEEDL 0x20
- #define ADC_SPEEDH 0x40
- #define ADC_SPEEDHH 0x60
- sfr ADC_CONTR =0xBC;
- sfr ADC_RES =0xBD;
- sfr ADC_RESL =0xBE;
- sfr P1ASF =0x9D;
- unsigned char ch=4;
- unsigned char datah=0,datal=0;
- unsigned int tmp=0;
- unsigned char code t_display[16]={0x3F,0x06,0x5B,0x4F,
- 0x66,0x6D,0x7D,0x07,
- 0x7F,0x6F,0x77,0x7C,
- 0x39,0x5E,0x79,0x71};
- unsigned char code T_COM[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
- bit flag=0;
- unsigned m=0;
- void SPI_SendByte(unsigned char dat)
- {
- SPSTAT=SPIF+WCOL;
- SPDAT=dat;
- while((SPSTAT & SPIF)==0);
- SPSTAT=SPIF+WCOL;
- }
- void seg7scan(unsigned char index1,unsigned char index2)
- {
- SPI_SendByte(~T_COM[index1]);
- SPI_SendByte(t_display[index2]);
- HC595_RCLK=1;
- HC595_RCLK=0;
- }
- void timer_0() interrupt 1
- {
- flag=1;
- }
- void adc_int() interrupt 5
- {
- unsigned char i=0;
- ADC_CONTR &=!ADC_FLAG;
- tmp=(ADC_RES*4+ADC_RESL);
- // switch(tmp)//不可以
- // {
- // case 1023:datah=1;datal=6;break;
- // case 960:datah=1;datal=5;break;
- // case 896:datah=1;datal=4;break;
- // case 832:datah=1;datal=3;break;
- // case 768:datah=1;datal=2;break;
- // case 704:datah=1;datal=1;break;
- // case 640:datah=1;datal=0;break;
- // case 576:datah=0;datal=9;break;
- // case 512:datah=0;datal=8;break;
- // case 448:datah=0;datal=7;break;
- // case 384:datah=0;datal=6;break;
- // case 320:datah=0;datal=5;break;
- // case 256:datah=0;datal=4;break;
- // case 192:datah=0;datal=3;break;
- // case 128:datah=0;datal=2;break;
- // case 64:datah=0;datal=1;break;
- // default:datah=0;datal=0;
- // }
- // ADC_CONTR=ADC_POWER |ADC_SPEEDLL | ADC_START | ch;
- //}
- if(tmp>=1010&&tmp<=1023)
- {
- datah=1;datal=6;
- }
- else if(tmp>=950&&tmp<=970)
- {
- datah=1;datal=5;
- }
- else if(tmp>=886&&tmp<=906)
- {
- datah=1;datal=4;
- }
- else if(tmp>=822&&tmp<=842)
- {
- datah=1;datal=3;
- }
- else if(tmp>=758&&tmp<=778)
- {
- datah=1;datal=2;
- }
- else if(tmp>=694&&tmp<=714)
- {
- datah=1;datal=1;
- }
- else if(tmp>=630&&tmp<=650)
- {
- datah=1;datal=0;
- }
- else if(tmp>=566&&tmp<=586)
- {
- datah=0;datal=9;
- }
- else if(tmp>=502&&tmp<=522)
- {
- datah=0;datal=8;
- }
- else if(tmp>=438&&tmp<=458)
- {
- datah=0;datal=7;
- }
- else if(tmp>=374&&tmp<=394)
- {
- datah=0;datal=6;
- }
- else if(tmp>=310&&tmp<=330)
- {
- datah=0;datal=5;
- }
- else if(tmp>=246&&tmp<=266)
- {
- datah=0;datal=4;
- }
- else if(tmp>=182&&tmp<=202)
- {
- datah=0;datal=3;
- }
- else if(tmp>=118&&tmp<=138)
- {
- datah=0;datal=2;
- }
- else if(tmp>=54&&tmp<=74)
- {
- datah=0;datal=1;
- }
- else
- {
- datah=0;datal=0;
- }
-
- ADC_CONTR=ADC_POWER |ADC_SPEEDLL | ADC_START | ch;
- }
- void main()
- {
- unsigned char i;//管號
- unsigned int j=0;//延時
- SPCTL=(SSIG<<7)+(SPEN<<6)+(DORD<<5)+(MSTR<<4)
- +(CPOL<<3)+(CPHA<<2)+SPEED_4;
- CLK_DIV=0x03;
- TL0=TIMS;
- TH0=TIMS>>8;
- AUXR&=0x3F;
- AUXR1=0X08;
- TMOD=0x00;
- TR0=1;
- ET0=1;
- P1ASF=0x10;
- ADC_RES=0;
- ADC_CONTR=ADC_POWER|ADC_SPEEDLL | ADC_START | ch;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
|