请大家帮忙看一看,哪里有问题,不能用proteus仿真
#include <libm.h>
#include <reg52.h>
#include <intrins.h>
#include <absacc.h>
void system_initial(void);
void select_channel(unsigned char channel_number);
unsigned char ad_converter(unsigned char channel_number);
unsigned char dat_deal(unsigned char dat);
unsigned char converter_data[8]={0};
unsigned char display_buffer[4];
unsigned char channel=0x1f;
sbit start_converter=P3^1;
sbit output_enable=P3^2;
sbit converter_over=P3^0;
void main(void)
{
system_initial();
TMOD=0x01;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
unsigned char i=0;
converter_data=ad_converter(0); //readding converter data;
display_buffer[1]=cathode_led_code[converter_data/100];
display_buffer[0]=cathode_led_code[converter_data%100];
display_buffer[2]=cathode_led_code[display_buffer[0]/10];
display_buffer[3]=cathode_led_code[display_buffer[0]%10];
display_buffer[0]=cathode_led_code;
}
}
void t0(void) interrupt 1 using 0
{
static unsigned char led_segment=0xe0;
static unsigned char led_index=0;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
P0=display_buffer[led_index];
P2=led_segment;
led_segment++;
if (++led_index > 3)
{
led_index = 0;
led_segment = 0xe0;
}
}
void system_initial(void)
{
start_converter=0;
output_enable=0;
converter_over=1;
P3= P3 | channel;
}
void select_channel(unsigned char channel_number)
{
channel_number <<= 5; //將通道數移到高3位。
P3=channel_number | 0x1f; //output channel
}
unsigned char ad_converter(unsigned char channel_number)
{
unsigned char converter_data=0;
select_channel(channel_number);
start_converter=0;
start_converter=1;
_nop_();
_nop_();
start_converter=0;
while (converter_over == 0);
output_enable=1;
converter_data=P1; //readding converter data;
output_enable=0;
return converter_data;
}
图片为接线图
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |