完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
4个回答
|
|
可以到官网查一下他的资料看一看。具体用什么显示都可以的,数码管,lcd,oled都行
|
|
|
|
是要看数据手册,AD转换器,就是单片机的一个外设,看相应的控制寄存器,学习下,怎么配置,怎么读取,
显示的话,可以用液晶显示,可以用数码管,串口,都可以的。 好好学习下了啊。 |
|
|
|
#include "reg51.h"
#include "intrins.h" #include"absacc.h" #include"math.h" typedef unsigned char BYTE; typedef unsigned int WORD; ***it led=P1^1; //声光报警控制端 BYTE code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极0~9 BYTE code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//共阳极0.~9. /* AD 转换寄存器 */ sfr P1ASF = 0x9D; //P1 口功能控制寄存器 sfr ADC_CONTR = 0xBC; //AD 控制寄存器 sfr ADC_RES = 0xBD; //AD 转换结果高位 sfr ADC_RESL = 0xBE; //AD 转换结果低位 sfr AUXR1 = 0xA2; //AD 转换结果寄存器 #define ADC_POWER 0x80 //AD 转换电源开启 #define ADC_FLAG 0x10 //AD 转换标志位 #define ADC_START 0x08 //AD 转换开始位 #define ADRJ1 0x40 //AD 转换结果:高2 位+低8 位 #define ADC_SPEEDLL 0x00 //AD 转换速度控制,540 个时钟周期 #define ADC_SPEEDL 0x20 //AD 转换速度控制,360 个时钟周期 #define ADC_SPEEDH 0x40 //AD 转换速度控制,180 个时钟周期 #define ADC_SPEEDHH 0x60 //AD 转换速度控制,90 个时钟周期 unsigned char AD_val_h; //AD 转换结果高位 unsigned char AD_val_l; //AD 转换结果低位 unsigned long AD_val; float AD_float; void InitADC(); void SendData(BYTE dat); //void GetADCResult(BYTE ch); void Delay(WORD n); void Delay2(WORD n); void ShowResult(BYTE ch); /********************************************************* *延时n微秒程序 **********************************************************/ void DelayXus(WORD n) { while(--n); } void GetADCResult(BYTE ch) //AD 转换 { AUXR1 &=~ADRJ1; ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START; _nop_(); _nop_(); _nop_(); _nop_(); while(!(ADC_CONTR & ADC_FLAG)); ADC_CONTR &=~ADC_FLAG; AD_val_h=ADC_RES; AD_val_l=ADC_RESL; AD_val=AD_val_h*4+AD_val_l; } void InitADC() { P1ASF=0xff; ADC_RES=0; ADC_CONTR=ADC_POWER|ADC_SPEEDLL; Delay(1); } void Delay(WORD n) { WORD x; while(n--) { x=500; while(x--); } } void Delay2(WORD n) { WORD x; while(n--) { x=5000; while(x--); } } void display(float f1) { BYTE qian,bai,shi,ge; WORD f; f=f1*1000; qian=(int)f/1000; bai=(int)f/100%10; shi=(int)f/10%10; ge=(int)f%10; P2=0xf7; P0=table1[qian]; WR=0; Delay(5); P0=0XFF; WR=1; P2=0xfb; P0=table[bai]; WR=0; Delay(5); P0=0XFF; WR=1; P2=0xfd; P0=table[shi]; WR=0; Delay(5); P0=0XFF; WR=1; P2=0xfe; P0=table[ge]; WR=0; Delay(5); P0=0XFF; WR=1; } void main() { SP=0x60; InitADC(); AUXR1 &=~ADRJ1; while(1) { GetADCResult(0); AD_float=AD_val*5.0/1024.0; display(AD_float); if(AD_float>4.0) {led=0;} else led=1; if(AD_float>=3.0&&AD_float<4.0) P0=0xf0; if(AD_float>=2.0&&AD_float<3.0) P0=0xf8; if(AD_float>=1.0&&AD_float<2.0) P0=0xfc; if(AD_float>=0.0&&AD_float<1.0) P0=0xfe; //Delay2(10); }display(AD_float); } |
|
|
|
能帮忙看一下我的程序哪有错吗?要实现以下功能,数码管总是不稳定STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计0-5V直流电压检测电路。一是利用单片机内部的A/D转换器测量外接直流电压;二是利用数码管显示当前信号的电压值;三是根据不同的电压大小控制发光管点亮指示。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
245 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
422 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之开发板测试
387 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络socket程序编程
850 浏览 0 评论
飞凌嵌入式-ELFBOARD-RGB LCD屏接口的PCB设计要点
872 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11726 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-16 05:18 , Processed in 0.657840 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号