资源简介
之前在网上下载过很多相关程序,但是他们都有一个最大的问题就是只有程序没有硬件电路,本人上传的这个 不仅包括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
- 上一篇:基于FPGA的sobel边缘检测
- 下一篇:js实现的简单选项卡特效
相关资源
- ATmega16模数转换
- proteus+8086 A/D模数转换实验(0809)
- STM32_ADC模数转换代码测试通过
- ADC0804与单片机的模数转换程序附仿真
- STM32的ADC模数转换(库函数),亲测可
- 基于AD1674模数转换芯片的接口电路设
- 高速AD ADS1252U 的程序
- 常用AD芯片 模数转换 芯片大全 型号选
- ADC0809模数转换与显示(汇编程序)
- Δ-Σ模数转换器数字滤波器类
- ADC经典教程(清晰中文PDF)
- ADS1110自校准模数转换器在称重中的应
- 基于stm32的ads8698 ads8689驱动程序 ads8
- 高精度模数转换器ADS1256的原理和应用
- adc (模数转换)显示到数码管,检测
- 一个基于AD1674的模数转换电路及程序
- ADC0809 数模转换,模数大全
- ADC0831+LCD016做的数字表
评论
共有 条评论