• 大小: 59KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签: 模数转换  

资源简介

之前在网上下载过很多相关程序,但是他们都有一个最大的问题就是只有程序没有硬件电路,本人上传的这个 不仅包括C程序还包括硬件仿真电路,仿真软件采用的是Proteus8.

资源截图

代码片段和文件信息

/*******************************************************************
时间:2017-11-7晚
地点:重庆光电学院
系统晶振:12MHz
实现功能:直接采集并显示电压值,按键按下数码管显示采集到的电压值,按键再次按下关闭ADC
*******************************************************************/
#include “reg52.h“
#include “intrins.h“
#define nop() _nop_()  //宏定义一个机器周期
#define uchar unsigned char
#define uint unsigned int
#define ADC_Data P1
#define SMG_DData P0/*数码管段码端口*/
#define SMG_WData P2/*数码管位码端口*/

//引脚定义
sbit CS_0804  = P3^5;
sbit WR_0804  = P3^6;
sbit INT_0804 = P3^0;
sbit RD_0804  = P3^7;
sbit K1 = P3^1;
sbit K2 = P3^2;
bit value_flag = 0; //标志位



//段码表
uchar code SMG_Dcode[]={0x3F/*0*/0x06/*1*/0x5B/*2*/0x4F/*3*/0x66/*4*/0x6D/*5*/0x7D/*6*/0x07/*7*/0x7F/*8*/0x6F/*9*/};
//位码表
uchar code SMG_Wcode[]={0xfe0xfd0xfb0xf7};

/*******************************************************************
延时函数
*******************************************************************/
void Delay(uint xms)
{
/*

uint ij;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);unsigned char i=0;
*/
uchar xy;
for(x=xms;x>0;x--)
{
for(y=0;y<250;y++)
{
nop();
nop();
nop();
nop();

}


}

/*******************************************************************
获取ADC寄存器值函数
说明:只是获取的ADC内部电压寄存器的值,没有进行任何的转换
      而电压值的转换部分将放在显示部分
*******************************************************************/
uchar GetAdcvalue()
{
uchar DiaoYa = 0;
WR_0804 = 1;//先使其为高电平
CS_0804 = 0;//芯片选通使能
WR_0804 = 0;
WR_0804 = 1;//相当于给了一个低电平脉冲启动转换
nop();nop();nop();nop();
while(INT_0804 == 1);//等待转换结束
RD_0804 = 0;//读数据
INT_0804 = 1;
DiaoYa =ADC_Data;//返回电压寄存器中的值(注意,此时未转换成具体电压)
RD_0804 = 1;
return DiaoYa;//返回电压寄存器中的值
}

/*******************************************************************
显示AD转换后的电压值
说明:此函数主要实现两个功能【一是将ADC0804电压寄存器中的值转换为
      实际电压值;二是将实际电压值用数码管显示出来】
*******************************************************************/
void DisVoltage(uchar V_0804)
{
double Voltage0 = (double)V_0804;
uchar Ge = 0;//用于存取个位数值
uchar Xiao1 = 0;//用于存取小数点后第一位数值
uchar Xiao2 = 0;//用于存取小数点后第二位数值
uchar Xiao3 = 0;//用于存取小数点后第三位数值
    Voltage0 = (5*(Voltage0/255))*1000;//电压值已经转换并且*1000用于提取小数点后三位

//提取每一位的数值
Ge = ((uint)Voltage0)/1000%10;
Xiao1 = ((uint)Voltage0)/100%10;
Xiao2 = ((uint)Voltage0)/10%10;
Xiao3 = ((uint)Voltage0)%10;
    //显示
SMG_WData = 0xff;//消隐
SMG_DData = SMG_Dcode[Ge] | 0x80;
SMG_WData = SMG_Wcode[0];
Delay(4);
SMG_WData = 0xff;//消隐
SMG_DData = SMG_Dcode[Xiao1];
SMG_WData = SMG_Wcode[1];
Delay(4);
SMG_WData = 0xff;//消隐
SMG_DData = SMG_Dcode[Xiao2];
SMG_WData = SMG_Wcode[2];
Delay(4);
SMG_WData = 0xff;//消隐
SMG_DData = SMG_Dcode[Xiao3];
SMG_WData = SMG_Wcode[3];
Delay(4);
SMG_WData = 0xff;
}
/*******************************************************************
检测按键是否被按下
*******************************************************************/
void Scan_keyoutCmd(void)
{
if(K1 == 0) //检测按键是否按下
{
De

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-11-10 21:41  AD转换\
     文件         874  2017-11-07 22:52  AD转换\AD转换.pdsprj.JONY-PC.John.workspace
     文件       22009  2017-11-07 22:51  AD转换\Proteus仿真图.pdsprj
     目录           0  2017-11-07 22:51  AD转换\程序\
     文件        7576  2017-11-07 22:48  AD转换\程序\ADC0804
     文件        7912  2017-11-07 22:48  AD转换\程序\ADC0804.LST
     文件        9604  2017-11-07 22:48  AD转换\程序\ADC0804.M51
     文件        7334  2017-11-07 22:48  AD转换\程序\ADC0804.OBJ
     文件        4057  2017-11-07 22:48  AD转换\程序\ADC0804.c
     文件        3502  2017-11-07 22:48  AD转换\程序\ADC0804.hex
     文件          46  2017-11-07 22:48  AD转换\程序\ADC0804.lnp
     文件        9319  2017-11-07 22:48  AD转换\程序\ADC0804.plg
     文件       68305  2011-07-01 18:17  AD转换\程序\ADC0804.uvgui.Veiko
     文件       68305  2011-07-01 18:16  AD转换\程序\ADC0804.uvgui_Veiko.bak
     文件       55213  2017-11-07 22:50  AD转换\程序\ADC0804.uvopt
     文件       13235  2017-11-06 22:57  AD转换\程序\ADC0804.uvproj
     文件       55219  2017-11-07 08:42  AD转换\程序\ADC0804_uvopt.bak
     文件       13265  2011-06-30 23:27  AD转换\程序\ADC0804_uvproj.bak

评论

共有 条评论