首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[原创]

[原创]

请大家帮忙看一看,哪里有问题,不能用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;
}

图片为接线图

返回列表