| 查看: 1784 | 回复: 4 | ||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||
1993kimberly新虫 (初入文坛)
|
[求助]
输入模拟0-5V,通过AD转换将数字信号给单片机,通过数码管显示出输入的模拟电压 已有2人参与
|
|
|
麻烦看一下程序哪里错了,感激不尽~~ 感觉问题应该出在两个display上,重点看显示那里吧 #include <reg51.h> #include <math.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int uchar code light[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code table[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //带小数点数字编码 sbit OE=P2^7; sbit EOC=P2^6; sbit ST=P2^5; sbit CLK=P2^4; float v; int x,y; void delayms(uint xms) //延迟函数 { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void Timer0_INT() interrupt 1 //T0定时器中断给ADC0808提供时钟信号 { CLK=!CLK; //ADC0808时钟信号 } void display1(uchar d) //显示函数 (0路 左) { v=5.00*d/256; x=floor(v); y=floor((v-x)*10); P2=0xfe; //X1,1 P0=table[x]; delayms(1); P2=0xfd; //Y1,2 P0=light[y]; delayms(1); } void display2(uchar d) //显示设定值 (1路 右) { v=5.00*d/256; x=floor(v); y= floor((v-x)*10); P2=0xfb; //X2,3 P0=table[x]; delayms(1); P2=0xf7; //Y2,4 P0=light[y]; delayms(1); } void main() // 主程序 { TMOD=0x02; TH0=0x14; TL0=0x00; IE=0x82; TR0=1; while(1) { P3=0x00; //显示第0路 ST=0; ST=1; ST=0; //启动转换 while(EOC==0); OE=1; //允许输出 display1(P1); //显示A/D转换结果 OE=0; //关闭输出 P3=0x01; //显示第1路 ST=0; ST=1; ST=0; //启动转换 while(EOC==0); OE=1; //允许输出 display2(P1); //显示A/D转换结果 OE=0; //关闭输出 } } |
» 猜你喜欢
不自信的我
已经有11人回复
北核录用
已经有3人回复
要不要辞职读博?
已经有6人回复
实验室接单子
已经有3人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有26人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有4人回复
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复

3楼2014-06-26 22:42:28
badboyback
铁虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 638.8
- 散金: 27
- 红花: 4
- 帖子: 306
- 在线: 225.7小时
- 虫号: 1765221
- 注册: 2012-04-19
- 专业: 粒子物理学和场论

4楼2014-06-30 12:28:00
5楼2014-09-02 14:54:54












回复此楼