📄 stcad.c
字号:
#include <reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
#define nop() _nop_();_nop_();
sbit CLK = P2^1;
sbit DAT = P2^2;
sbit RCLK = P2^0;
sbit P27 = P2^7;
sfr P1M0 = 0X91;
sfr P1M1 = 0X92;
sfr ADC_CONTR = 0XC5;
sfr ADC_DATA = 0XC6;
sfr ADC_LOW2 = 0XB1;
#define CHS0 0
#define CHS1 1
#define CHS2 2
#define ADC_START 3
#define SPEED0 5
#define SPEED1 6
#define ACD_POWER 7
ulong a;
unsigned char adl,adh,Temp;
unsigned int ad;
void delay_1ms(void);
void delay_nms(unsigned int n);
void sendbyte(uchar byte);
void out595(void);
void Display(unsigned long dat,unsigned char DotPosition,bit ClearZeroFlag);
void delay_1ms(void);
//---------------8位2进制段代码对应数码管笔段 hcdb afge----------------//
uchar code displaycode[] = {0x82,0xaf,0xc4,0x85,0xa9,0x91,0x90,0xa7,0x80,0x81,
0xa0,0x98,0xd2,0x8c,0xd0,0xf0,0xfd,0xff};//0-9,A-F,-,全灭
//0x82,0xaf,0xc4,0x85,0xa9,0x91,0x90,0xa7,0x80,0x81,
//0xa0,0x98,0xd2,0x8c,0xd0,0xf0,0xfd,0xff
uchar PortCode[8] = {0,0,0,0,0,0,0,0};
main()
{
P1M0 = 0X80;
P1M1 = 0X80;
while(1)
{
//----------初始化ADC_CONTR--------
ADC_CONTR= (1<<ACD_POWER)|(1<<SPEED1)|(1<<SPEED0)|(1<<ADC_START)|(1<<CHS2)|(1<<CHS1)|(1<<CHS0);
//---------等待AD转换结果----------
while(!(ADC_CONTR&0X10));
ADC_CONTR = ADC_CONTR&0Xef;
P27 = ~P27;
adh = ADC_DATA;
adl = ADC_LOW2;
ad = adh<<2 + adl;
Display(ad,0,1);
}
}
void delay_1ms(void)
{
unsigned int i;
for (i=0;i<550;i++);
}
void delay_nms(unsigned int n)
{
unsigned int c=0;
for (c=0;c<n;c++)
delay_1ms();
}
void Display(unsigned long dat,unsigned char DotPosition,bit ClearZeroFlag)
{
unsigned char i;
for(i = 0; i != 8; i++)
{
if(i == DotPosition)/// 小数点处理
{
PortCode[i] = (displaycode[(dat%10)]&0x7f);
}
else
PortCode[i] = displaycode[dat%10];
if(ClearZeroFlag&&(!dat)&&(i>DotPosition)) PortCode[i]=0xff;
dat /= 10;
}
sendbyte(PortCode[0]);
sendbyte(PortCode[1]);
sendbyte(PortCode[2]);
sendbyte(PortCode[3]);
sendbyte(PortCode[4]);
sendbyte(PortCode[5]);
sendbyte(PortCode[6]);
sendbyte(PortCode[7]);
out595();
}
void sendbyte(uchar byte)
{
uchar c;
for(c=0;c<8;c++)
{
CLK=0;
DAT=byte&0x80;
byte=byte<<1;
CLK=1;
}
}
void out595(void)
{
RCLK=0;
nop();
RCLK=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -