📄 main.c
字号:
#include "reg52.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
sbit ADC0809_CS=P3^5;
sbit ADC0809_EOC=P3^3;
sbit SMG_EN1=P1^3;
sbit SMG_EN2=P1^2;
sbit SMG_EN3=P1^1;
sbit SMG_EN4=P1^0;
#define SMG_DATA P0
// 字形表, 为0亮
// a_
// f|_|b
// e|_|c .p
// d
// 00001101
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
unsigned char code SMG_TABLE[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
/* Function */
void Delay_10us(WORD n);
void SMG_Display(BYTE SMGNum, BYTE tdata);
/**********************************************************************
* main()
/*********************************************************************/
void main(void)
{
BYTE rdata=0,i=0;
BYTE BCD_H=0,BCD_M=0,BCD_L=0;
BYTE xdata * ptr;
float result=0;
int temp;
while(1)
{
ADC0809_CS=0;
*ptr=0xff;
i=200;
while(ADC0809_EOC && (i>0))i--;
rdata=*ptr;
ADC0809_CS=1;
/* BCD_H=(rdata>>4)&0x0f; //get the high half BYTE
BCD_L=rdata&0x0f; //get the low half BYTE
SMG_Display(1,BCD_H);
SMG_Display(2,BCD_L);
*/
// 显示十进制数据
result=5*rdata/256.0;
temp=(int)(100*result+0.5);
BCD_H=temp/100;
BCD_M=(temp/10)%10;
BCD_L=temp%10;
SMG_Display(2,BCD_H);
SMG_Display(3,BCD_M);
SMG_Display(4,BCD_L);
}
}
// write the tdata to the SMGNum
void SMG_Display(BYTE SMGNum, BYTE tdata)
{
switch(SMGNum)
{
case 1:SMG_EN1=0;break;
case 2:SMG_EN2=0;break;
case 3:SMG_EN3=0;break;
case 4:SMG_EN4=0;break;
default:break;
}
if(SMGNum==2)
SMG_DATA=SMG_TABLE[tdata]&0x7f;
else
SMG_DATA=SMG_TABLE[tdata];
Delay_10us(100);
SMG_EN1=1;SMG_EN2=1;SMG_EN3=1;SMG_EN4=1;
}
// delay_ms(WORD n), default use 12M XTAL,others should be modifed.
void Delay_10us(WORD n)
{
BYTE i=0;
for(;n>0;n--)
for(i=0;i<10;i++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -