标题:
单片机数码管按键出数程序
[打印本页]
作者:
槿木子
时间:
2017-7-7 17:00
标题:
单片机数码管按键出数程序
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黑下载附件…………
复制代码
作者:
892871098
时间:
2018-10-7 10:48
求仿真文件
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1