AD转换实验电压值在数码管上显示

  电压值在数码管显示器上显示,两位数码管直接显示数值,带小数点。由自己学号末位两位数标记(在刚开始的时候在数码管上显示,稍等消失)。

代码如下

#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define led  P0
#define out  P1

sbit start=P2^1;
sbit oe=P2^7;
sbit eoc=P2^3;
sbit clock=P2^0;
sbit add_a=P2^4;
sbit add_b=P2^5;
sbit add_c=P2^6;

uchar L[2]={0};
uchar A[2]={1,2};
uchar z[2]={4,9};
uchar code x[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

void delay(uchar n){
uchar t;
while(n--)
for(t=0;t<100;t++);
}


void main(void){
uchar i;
uint j;
uchar temp;
for(j=0;j<800;j++){
for(i=0;i<2;i++){
P3=A[i];
led=x[z[i]];
delay(1);
led=0;
}
}
P3=0xff;
add_a=0;add_b=0;add_c=0;  //选择ADC0808的通道0
while(1){
start=0;
start=1;
start=0;  //启动转换
while(1){clock=!clock;if(eoc==1)break;}//等待转换结束
oe=1;  //允许输出
temp=50*out/256; //暂存转换结果
L[1]=temp/10+10;
L[0]=temp%10;
oe=0;//关闭输出
for(i=0;i<2;i++){
P3=A[i];
led=x[L[i]]; //采样结果输出到LED
delay(5);
}
}
}

代码第15行,uchar z[2]={4,9}; 这一行代表了数码管上显示的数字94。如果想要数码管显示8.3,可把此行代码改为{3,8}即可。

Proteus仿真截屏如下:

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
半数字电压表 [摘要]四半数字电压表主要分为四部分:测量部分、显示部分、脉冲部分、供电部分 。该电路采用 ICLl7135高精度,此设备的测量范围为直流0—±2伏。测量部分是通过4半双积分式A/D 转换器ICL7135芯片实现。ICL7135对模拟电压进行A/D转换输出BCD码,并自动输出极 性判断信号,同时ICL7135用动态扫描传送数据使数码管亮灭的时间间隔短,证了测量 结果的稳定显示。74LS47和共阳数码管显示部分,74LS74译码器收ICL7135的BCD码 译码成控制信号去点亮数码管,从而显示出所测的模拟电压。用ICM7556配上合适的电 阻电容组成多谐振荡器作为脉冲部分产生标准的137KHz频率提供ICL7135工作时针信号。 外+5V和74HC04产生的-5V是供电部分给整个电路供电。 [关键词] 数字电压表 A/D转换 数码管 Four And A Half Digital Voltmeter [Abstract] 4 1/2 digital voltmeter measurement are mainly divided into four parts: part, that part, pulse, power supply. Measurement part is through four half A/D converter ICL7135 chip. ICL7135 to simulate A/D conversion voltage output, and automatic BCD output signal, and ICL7135 polarity judgment with dynamic scanning GuanLiang digital data transmission to destroy the time interval is short, guarantee the stability of measurement results. 74LS47 and Yang digital display 74LS74 part, is receiving the decoder ICL135 BCD decoding into the control signal to light, which showed that the simulation test voltage values. ICM7556 with matching appropriate resistance composed many harmonic oscillator as capacitance have standard 137KHz pulse frequency signal. ICL7135 provide working hour External + 5V and 74HC04 produces - for the part is 5V circuit power supply. [Keywords] The digital voltmeter A/D conversion Digital tube 目 录 1前言 1 1.1数字电压表的特点及发展趋势 1 1.1.1 数字电压表的特点 2 1.1.2 数字仪表的发展趋势 3 1.2总体方案设计论证 4 1.2.1设计要求 4 1.2.2设计目的 5 2 数字电压表的基本组成原理及电路设计 6 2.1数字电压表基本原理及系统框图 6 2.2 输入滤波电路及负电源组成原理 6 2.3四半A/D转换器ICL7135的功能介绍 7 2.3.1 ICL7135的内部电路结构 7 2.3.2 ICL7135的引脚功能介绍 8 2.4 ICM7556时钟振荡器 9 2.4.1 555组成的多谐振荡电路 10 2.4.2 ICM7556引脚分布 10 2.5 驱动器、译码器、数码显示器 11 2.6 并行BCD码的输出 14 3 调试要点及测试方法 15 3.1调试要点及测试方法 15 3.2故障排除 15 4 设计心得与体会 16 参考文献 17 附录: 18 附图 四半数字电压表电路原理图 1前言 1.1设计目的 1、理论与实践相结合,设计四半数字电压表 2、掌握四半数字电压表的设计原理、组装、焊和调试方法。 3、了解,掌握,并能独立调试设计四半数字电压表。以及各组成元件的使用和原 理。 4、熟练使用万用表的各个功能。 1.2设计内容及要求 1、将准备的零器件组装焊,正确焊数字电压表。 2、设计好的表测量范围是-1.999~1.999V。 3、在正常范围内允许+/-1个自号跳动。 4、柱状并调试四半数字电压表。 5
要通过STC8A8K64D4微控制器实现数控稳压源,并通过PWM按键控制不同的占空比,并通过I/O口输出低电平0V和高电平3.3V,同时使用DA、AD转换数码管实时显示电压和电流,你可以按照以下步骤进行操作: 1. 配置定时器:选择一个定时器作为PWM的计数器。STC8A8K64D4微控制器具有多个定时器,你可以根据需求选择一个合适的定时器。 2. 设置定时器模式:配置定时器为PWM模式,以便它可以生成PWM信号。这可以通过设置定时器的相关寄存器来完成。 3. 设置PWM参数:配置PWM的相关参数,如占空比、频率等。占空比的控制可以通过按键输入来实现。 4. 配置I/O口:选择一个可用的I/O口作为输出口,并设置为强输出模式。 5. 配置DA和AD转换:选择一个可用的DA通道作为输出电压,选择一个可用的AD通道作为输入电流。配置DA和AD转换的相关寄存器。 6. 配置数码管:选择一个可用的数码管口,并配置数码管驱动方式和显示内容。 7. 根据按键输入控制占空比:使用外部按键输入来控制PWM信号的占空比。当按下不同的按键时,修改PWM的占空比。 8. 进行AD转换:读取AD转换器的,得到输入电流的模拟量。 9. 进行数码管显示:将电压和电流的模拟量进行数码管显示。 10. 输出PWM信号:根据PWM信号的占空比,控制I/O口输出高电平3.3V和低电平0V。 以下是一个简单的示例代码,用于实现数控稳压源,并使用DA、AD转换数码管显示电压和电流: ```c #include <STC8.H> unsigned char PWM_Duty = 0x00; // PWM占空比 unsigned int ADC_Value = 0; // AD转换 void PWM_Config() { // 选择定时器1作为PWM计数器 TMOD &= 0x0F; // 清除定时器1模式 TMOD |= 0x10; // 设置定时器1为工作模式1(16自动重装载) // 设置PWM参数 TH1 = 0xFF; // 定时器1高字节初始 TL1 = 0x00; // 定时器1低字节初始 // 启动定时器1 TR1 = 1; // 启动定时器1 } void IO_Config() { P2M0 = 0xFF; // 设置P2口为强输出模式 P2M1 = 0x00; // 设置P2口为强输出模式 } void DA_Config() { // 配置DA通道 // ... } void AD_Config() { // 配置AD通道 // ... } void Display_Config() { // 配置数码管口 // ... } void Button_Check() { if (P3 & 0x01) // 检测按键是否按下 { if (PWM_Duty < 0xFF) // 增加占空比 { PWM_Duty++; } } else if (P3 & 0x02) // 检测按键是否按下 { if (PWM_Duty > 0x00) // 减小占空比 { PWM_Duty--; } } } void ADC_Read() { // 读取AD转换器的 // ... } void Display_Value() { // 进行数码管显示 // ... } void main() { PWM_Config(); // 配置PWM IO_Config(); // 配置I/O口 DA_Config(); // 配置DA通道 AD_Config(); // 配置AD通道 Display_Config(); // 配置数码管 while(1) { Button_Check(); // 检测按键 ADC_Read(); // 读取AD转换器的 Display_Value(); // 进行数码管显示 T1_PWM = PWM_Duty; // 设置PWM占空比 if (PWM_Duty == 0x00) { P2 = 0x00; // 输出低电平0V } else if (PWM_Duty == 0xFF) { P2 = 0xFF; // 输出高电平3.3V } } } ``` 请根据你的实际需求修改示例代码中的参数。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值