完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位大神,请问我下面这个程序有什么问题吗?为什么并没有执行A/D转换呢?
------------------------------------------------------------------------------------------------------------------------------- //A/D的值读回来,显示在数码管上,并且赋给D/A,改变led亮度 #include #include #define uchar unsigned char #define uint unsigned int ***it dula=P2^6;//申明U1锁存器的锁存端 ***it wela=P2^7;//申明U2锁存器的锁存端 ***it wr=P3^6;//定义A/D和D/A的WR端口 ***it adrd=P3^7;//定义A/D的RD端口 ***it dacs=P3^2;//定义D/A的CS端口 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) //i=xms即延时约xms毫秒 for(j=110;j>0;j--); } void display(uchar bai,uchar shi,uchar ge) //显示子函数 { dula=1; P0=table[bai]; dula=0; P0=0xff; wela=1; P0=0x7e; wela=0; delayms(5); dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0x7d; wela=0; delayms(5); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0x7b; wela=0; delayms(5); } void main()//主程序 { uchar a,A1,A2,A3,adval; dula=0; wela=0; while(1) { wela=1; P0=0x7f; //开启adcs wela=0; wr=0; //启动A/D转换 _nop_(); wr=1; for(a=10;a>0;a--) //TX-1C实验板A/D工作频率较低,所以启动转换后 //要多留点时间用来转换 { //把显示部分放这里的原因也是为了延长转 //换时间 display(A1,A2,A3); } P1=0xff; //读取P1口之前先给其写全1 adrd=0; //A/D读使能 _nop_(); adval=P1; //A/D数据读取赋给P1口 adrd=1; A1=adval/100; A2=adval/10%10; A3=adval%10; wela=1; P0=0xff; //关闭adcs wela=0; P0=0; //使led开始时亮度为0 dacs=0; //开启dacs wr=0; P0=adval; //数据输入 delayms(50); wr=1; dacs=1; //关闭dacs } } |
|
相关推荐
10个回答
|
|
仔细阅读STC的芯片手册,里面有汇编和C语言示便,非常清晰,你必须下功夫看手册,因为51特别STC编程只要把手册看通,对你来说已经不存在障碍,现在你敢紧去看下AD部分,另外你的整个工程除AD部分其它全屏蔽掉,先把这一块调通
|
|
|
|
道先你这个是什么芯片,STC的吗,还是其它的,另外端口寄存器,AD寄存器设置正确了没有,仔细查查
|
|
|
|
我的芯片是STC89C52。寄存器应该设置正确了吧,我写这个程序之前写了A/D和D/A分开的两个程序,都运行正确了。就是合起来运行不正确。之前写的A/D,D/A程序我发楼下吧,您能帮我在看看吗?谢谢!
|
|
|
|
//A/D模数转换 讲读到了数显示在数码管上
#include #include #define uchar unsigned char #define uint unsigned int ***it dula=P2^6; //申明U1锁存器的锁存端 段选 ***it wela=P2^7; //申明U2锁存器的锁存端 位选 ***it adwr=P3^6; //定义A/D的WR端口 ***it adrd=P3^7; //定义A/D的RD端口 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) //i=xms即延时约xms毫秒 for(j=110;j>0;j--); } void display(uchar bai,uchar shi,uchar ge)//显示子函数 { dula=1; P0=table[bai]; dula=0; P0=0xff; wela=1; P0=0x7e; wela=0; delayms(5); dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0x7d; wela=0; delayms(5); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0x7b; wela=0; delayms(5); } void main() //主程序 { uchar a,A1,A2,A3,adval; wela=1; P0=0x7f; //置CSAD为0(最高位),选通CSAD以后不必再管ADCS wela=0; while(1) { adwr=0; //启动A/D转换 _nop_(); adwr=1; for(a=10;a>0;a--) //TX-1C实验板A/D工作频率较低,所以启动转换后 //要多留点时间用来转换 { //把显示部分放这里的原因也是为了延长转 //换时间 display(A1,A2,A3); } P1=0xff; //读取P1口之前先给其写全1 adrd=0; //A/D读使能 _nop_(); adval=P1; //A/D数据读取赋给P1口 adrd=1; A1=adval/100; A2=adval/10%10; A3=adval%10; } } |
|
|
|
//D/A数模转换
//短接输出电流和led,通过改变输入数据控制led亮度 //灯泡最亮或者灭的时候,led1闪一下 #include #define uchar unsigned char #define uint unsigned int ***it dula=P2^6; //申明U1锁存器的锁存端 段选 ***it wela=P2^7; //申明U2锁存器的锁存端 位选 ***it dawr=P3^6; //定义D/A的WR端口 ***it dacs=P3^2; //定义D/A的CS端口 ***it led1=P1^0; /*uchar val,flag;*/ void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void main() { uchar val,flag; dula=0; wela=0; dacs=0; dawr=0; P0=0; while(1) { if(flag==0) { val+=5; P0=val;//通过P0口给DA数据口赋值 原理图上P0口语da数据输入口相接 if(val==255) { flag=1; led1=0; delayms(100); led1=1; } delayms(50); } else { val-=5; P0=val;//通过P0口给DA数据口赋值 if(val==0) { flag=0; //beep=0; led1=0; delayms(100); led1=1; } delayms(50); } } } |
|
|
|
谢谢你!看了相关资料感觉这方面的内容更清楚了一些。但代码还是没调试出来。我试了试之前成功了的代码和资料给的测试代码,发现单片机都没有反应了。可能是A/D芯片或者作为数据输入的电位器被我弄坏了。。。总之谢谢你!
|
|
|
|
|
|
怎么判断是没有AD转换成功的?
|
|
|
|
怎么判断是没有AD转换成功的?
|
|
|
|
怎么判断是没有AD转换成功的?
|
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9049 浏览 16 评论
4083 浏览 18 评论
1167浏览 3评论
601浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
592浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2329浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1892浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 00:26 , Processed in 1.422921 second(s), Total 98, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号