📄 adc0804.c
字号:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//sbit CS = P3^3;
//sbit WR1 = P3^5;
sbit CS=P3^3;//chip select,low level enable
sbit RD1=P3^4;//impedence when set high,outputing data when set low,when transfer completly set low
sbit WR1=P3^5;//cs=0,wr set low clear ,cs=0,wr set high impulse start convert
sbit dispbit1 = P2^7;//tube selecting
sbit dispbit2 = P2^6;
sbit dispbit3 = P2^5;
uint RData;
uchar code table[] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(uchar t)
{
uchar i,j;
for(i=t;i>0;i--)
for(j=200;j>0;j--);
}
uint AD_Initial(void )
{
//RD1 = 1;//high impedence
//WR1 = 1;//start convert
CS = 0;//chip selecting
_nop_();
WR1 = 0;//start from low level to high level
_nop_();
WR1 = 1;
_nop_();
CS = 1;
P1 = 0xff;//clear display when power on
CS = 0;
RD1 = 0;//enable data data transfer when convert stop and wait P1 transfer data
_nop_();
_nop_();
RData = P1;
RD1 = 1;//hold data
CS = 1;//chip disable
return(RData);
}
void display(uint temp )//dynamic display
{
dispbit3 = 1;
dispbit2 = 1;
delay(2);
P0 = table[temp/100];
dispbit1 = 0;
delay(2);
dispbit1 = 1;
dispbit3 = 1;
P0 = table[temp%100/10];
dispbit2 = 0;
delay(2);
dispbit2 = 1;
dispbit1 = 1;
P0 = table[temp%10];
dispbit3 = 0;
delay(2);
dispbit3 = 1;
}
void main(void )
{
while(1)
{
display(AD_Initial());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -