找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2903|回复: 5
收起左侧

输入2个模拟信号,并对比大小 然后单片机处理

[复制链接]
ID:342352 发表于 2018-5-31 21:34 | 显示全部楼层 |阅读模式
12黑币
程序接线如图输入2个模拟信号,要求对比2个信号的大小。如果信号大小一致,则不显示。若信号大小不一致,则开始计时,并送入八段数码管显示小时和分钟,同时LED灯亮。八段数码管共阴极,要求用c语言汇编。(主要是自己编写的程序有问题)感谢各位的帮助

QQ图片20180531175639.png
回复

使用道具 举报

ID:191165 发表于 2018-5-31 22:10 | 显示全部楼层
把你的程序放上面看看
回复

使用道具 举报

ID:342352 发表于 2018-6-1 08:55 | 显示全部楼层
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define IN0 XBYTE[0x7ff8]
sbit ad_busy=P3^3;
sbit led=P2^4;//LED端口定义
sbit Axs=P2^0; sbit Bxs=P2^1; sbit Cxs=P2^2;sbit Dxs=P2^3;//数码管位选端口
char table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管显示编码
unsigned int h,m,s,t,n,a;
void change(uchar idata*x)
{
uchar i;
uchar xdata*ad_adr;
ad_adr=&IN0;
for(i=0;i<2;i++)
{
*ad_adr=0;
i=i;
i=i;
while(ad_busy!=0);
x[i]=*ad_adr;
ad_adr++;
}
}
void YS(char hs)//延时函数
{
char hk;for(;hs>0;hs--)
{for(hk=200;hk>0;hk--);}
}
void DS(int xh,int xm) //显示子函数
{
char d1,d2,d3,d4;
d1=(xh/1)%10; d2=(xh/10)%10;//分离小时
d3=(xm/1)%10; d4=(xm/10)%10;//分离分钟
P1=table[d1];Cxs=0;YS(10);Cxs=1;//小时个位
P1=table[d2];Dxs=0;YS(10);Dxs=1;//小时十位
P1=table[d3];Axs=0;YS(10);Axs=1;//分钟个位
P1=table[d4];Bxs=0;YS(10);Bxs=1;//分钟十位
P1=0x80; P2=0x01; YS(10); P2=0x00;//小数点
}
void main(void)
{static uchar idata ad[10];
change(ad);

TH0=(65536-100)/256; TL0=(65536-100)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//定时器初始化
a=ad[1]-ad[0];
while(1)
{
if(a==0){YS(10);if(a==0){h++;if(h>23){h=0;}}while(!a){DS(h,m);}}
if(a==0){YS(10);if(a==0){m++;if(m>59){m=0;}}while(!a){DS(h,m);}}
DS(h,m);//调用数码管显示函数
led=~led;
}
}

void int1() interrupt 1 //定时器中断
{
TH0=(65536-100)/256; TL0=(65536-100)%256; n++;
if(n>1000){n=0;s++;}//如果达到一秒,秒加一
if(s>59){s=0;m++;}//如果达到一分,分加一
if(m>59){m=0;h++;}//如果达到一小时,小时加一
if(h>23){h=0;}//如果达到24小时,小时清零



这是我再网上半抄半写的,A/D转换采用的是查询方式,数码管同的是动态显示
回复

使用道具 举报

ID:296837 发表于 2018-6-1 09:32 | 显示全部楼层
占楼,表示你这个有点逻辑混乱啊,看不懂,你能不能把逻辑理顺了
回复

使用道具 举报

ID:303383 发表于 2018-6-1 10:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:342352 发表于 2018-6-1 11:08 | 显示全部楼层
hk0506 发表于 2018-6-1 09:32
占楼,表示你这个有点逻辑混乱啊,看不懂,你能不能把逻辑理顺了

主要逻辑是判断输入2个信号的大小是否相同,判断大小不相同时,计时器开始计时并送到八段数码管显示计时时间。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表