EM78P458电压表的制作

发布者:熙风细雨最新更新时间:2016-09-05 来源: eefocus关键字:EM78P458  电压表 手机看文章 扫描二维码
随时随地手机看文章
以前的学习笔记——在学习74HC164的应用,用义隆单片机调试。用了汇编调试成功后又用C调试了下。练习着就打算用C语言来编写AD的读写,顺便结合74HC164写了个电压表的程序。又花了半天时间把C代码优化了下,提高了代码效率。晚上回家就把此例子记录下来,以供参考。

一、功能介绍:

本设计采用台湾的义隆单片机EM78P458,此单片机内部有4K*13bit一次性ROM(OTPROM)此单片机内带8位多路AD,精度达到13位。结合3片74HC164来对三个数码管进行数据传输,实现数据的串转并,节省了单片机的I/O口资源;本设计只是个举例应用,为了学习74HC164的应用和义隆单片机C语言的应用。实际应用中三个数码管显示可以用一个74HC164来赋数据,三个I/O口来扫描,动态扫描来显示。具体不做详细介绍。A/D端口输入电压范围:0~5V。显示精确到小数点后2位。

二、具体电路如下:

EM78P458电压表的制作 - 小文 - 小文电子设计

 

三、       完整程序

//**************Voltage**************

//Use IC: EMC78P458                **

//Author: zhengwen                 **

//Date  : 2007.1.22                **

//74HC164_PIN Q0~Q7 =LED_PIN a~h   **

//P57==CLR  P55==CLOCK P56==data   **

//***********************************

#include "em78x458_9xx.h"

#define  uchar unsigned char

#define  uint unsigned int

#define  DATA R56         //Data  bit of 74HC164

#define  CLK  R55         //Clock bit of 74HC164

#define  DATA_CLR  R57    //Clr   bit of 74HC164

#define  ENI()   _asm{eni}

 

//****************存储空间分配**************

unsigned short ledm    @0x20:bank 1;//short 占用2个存储空间

unsigned short ledtemp @0x22:bank 1;//AD计算时候的中间量

unsigned char  AD_data @0x24:bank 1;//AD采集数据存储地址

unsigned char  led1    @0x20:bank 0;//第1位数码管显示数

unsigned char  led2    @0x21:bank 0;//第2位数码管显示数

unsigned char  led3    @0x22:bank 0;//第3位数码管显示数

//******************************************

//************Table of LED******************

const unsigned char table[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

const unsigned char table1[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x88,0x00,0x10,0x08,0x03,0xC6,0xA1,0x86,0x8E};

//用const以后table里的数据就存放在ROM里,不然是存在RAM里

//******************************************

//*******Subprogram of Delay****************

void delay(void)

    {  unsigned short  i;

       for(i=0;i<60000;i++)

        {;}   

    }

 

 

 

 

//***********AD参数设置子程序***************

 void DO_AD(void)

{

       ADCON=0x08;     //选择AD0

       ADCOM=0x01;      //模拟信号进行转换并设置转换

       P6CR=1;

       GCON=0;               //选择ADC增益和工作电压

       ADPD=1;         //禁止ADC的低功耗模式

       ENI();          //开中断

       ADRUN=1;        //启动ADC

       while(ADRUN==1);//等待AD转换结束

       AD_data=ADDATA; //AD数据存储到AD_data地址中

}

//******Send Data Subprogram***********

void sendData(uchar c)

       {

         unsigned char i;

         bit temp;

      for(i=0;i<8;i++)

          {

                if (c&0x80) temp=1;

                else temp=0;

 

                CLK=0;

                DATA=temp;

                CLK=1;

                c<<=1;

              }

       }

//****************************************                                                                              

//*******Initialization of Program***************

void init(void)

{

    P5CR=0x00;      //P5 as Output

    P6CR=0x03;      //PORT6的,1.2口为输入,其他口为输出

       //PDCR=0xff;     //下拉电阻设置

       //ODCR=0x00;   //高阻设置

       //PHCR=0xff;    //上拉电阻设置

       WDTCR&=0xef;       //"1" enable R-option ,"0" disable R-option

}

 

 

 

//*********Main Program********************

void main()

{    

  DATA_CLR=1;   //unable clr bit of 74HC164

  init();       // I/O init

while(1)

 {

  DO_AD();

  AD_data=ADDATA;

 

//******AD采样进来的数据转换*******

//******Vin=(Dx/256)*5 (V)*********

ledm=AD_data;

ledm=ledm*125;

ledtemp=ledm>>6;

led1=ledtemp/100;     

led2=(ledtemp%100)/10;

led3=(ledtemp%100)%10;

//*********************************

  delay();

  sendData(table1[led1]);//输出显示

  sendData(table[led2]);

  sendData(table[led3]); 

 }

      

}  

关键字:EM78P458  电压表 引用地址:EM78P458电压表的制作

上一篇:单片机按键去抖
下一篇:基于EMP78P156单片机的RC测温的实现

推荐阅读最新更新时间:2024-03-16 15:08

基于LabVIEW的虚拟电压表方案设计
  电压是电路中常用的电信号,通过电压测量,利用基本公式可以导出其他的参数。因此,电压测量是其他许多电参数和非电参数量的基础。测量电压相当普及的一种测量仪表就是电压表,但常用的是模拟电压表。模拟电压表根据检波方式的不同。分为峰值电压表、均值电压表和平均值电压表,它们都各自做成独立的仪表。这样,使用模拟电压表进行交流电压测量时,必须根据测量要求选择仪表。另外,多数电压表的表头是按正弦交流有效值刻度的,而测量非正弦波时,必须经过换算才能得到正确的测量结果,从而给实际工作带来不便。   采用虚拟电压表,可将表征交流电压特征的峰值、平均值和有效值集中显示在一块面板上,测量时可根据波形在面板上选择仪表,用户仅通过面板指示值就能对测量结果
[测试测量]
基于LabVIEW的虚拟<font color='red'>电压表</font>方案设计
avr0~5V数字式直流电压表设计
一、实验目的 1. 掌握A/D转换程序的设计; 2. 掌握数据采集与显示的应用; 3.掌握数据处理的方法; 二、实验内容 1. 参照课本P383页 0~5V数字式直流电压表实验 程序,并编译、仿真,见下图所示。 注意:由于用proteus ISIS仿真时,数码管模型显示的闪烁现象和缓存现象,需要对其进行短延时和清屏,否则,显示将出现乱码现象。可在main()主函数里加入两条语句: Delay(1); PORTA=0; (1)修改错误。 比较程序第25行 ADMUX=0XC7 以及程序第71行 x=(5000*(long)i)/1023 所指参考电压不一致,导致输入模拟电压值与数码管显示电压值不一致,有哪几种
[单片机]
基于YL-236单片机实训装置的数字电压表的设计方案
  一、引言   数字电压表采用数字化测量技术,可以将模拟量转换成数字量并加以显示。由于其具有测量精度高、抗干扰能力强等优点,被广泛应用于工业自动化仪表领域。下面本文就以亚龙YL-236单片机实训装置为平台,介绍数字电压表的实现方法。   二、方案总体设计   本设计选择AT89C51单片机作为核心控制器件,采用ADC0809实现A/D转换,用3位LED数码管数字来显示采集电压(范围0~5V)。设计框图如图1所示。      三、硬件部分设计   1.转换芯片ADC0809   ADC0809具有8路模拟输入端口,8路模拟开关分时选通8个模拟通道,转换后的8位数字量锁存到三态输出锁存器中,在输出允许的情况下,可以从8
[单片机]
基于YL-236单片机实训装置的数字<font color='red'>电压表</font>的设计方案
基于LabVIEW 8.2的多用虚拟电压表设计
  O 引 言   虚拟仪器是随着 计算机 技术、电子测量技术和通信技术发展起来的一种新型仪器。它充分利用计算机系统强大的数据处理和显示能力,利用软件完成数据的采集、控制、数据分析和处理以及测试结果的显示等,通过软、硬件的配合,实现传统仪器的各种功能,真正实现了“软件即仪器”的概念,用户可以方便地对仪器进行维护和扩展。   电压是电路中常用的电信号,通过电压测量,利用基本公式可以导出其他的参数。因此,电压测量是其他许多电参数和非电参数量的基础。测量电压相当普及的一种测量仪表就是电压表,但常用的是 模拟 电压表。模拟电压表根据检波方式的不同。分为峰值电压表、均值电压表和平均值电压表,它们都各自做成独立的仪表。这样,使用模拟电
[测试测量]
自制单片机STC12C5A60S2+1602电压表
LCD1602 D0~D7接P0口,RS=P3.1,RW=P3.2,sbit E=P3.3。 电压测试口接P1.0。供电电压要稳定5V才能准确测量。另外因为没有加电阻,只能测5V以下电压。 废话少说,直接上实物图。 单片机源程序如下: #include reg51.h #include intrins.h #define LCD P0 //LCD1602数据接口 sbit RS=P3^1; //设置RS引脚接口,RS=0,指令寄存器;RS=1,数据寄存器 sbit RW=P3^2; //设置R/W引脚接口,R/W=0,写;R/W=1,读 sbit E=P3^3; /
[单片机]
自制单片机STC12C5A60S2+1602<font color='red'>电压表</font>
STC15F2K60S2单片机数字电压表程序 内部ADC实现
①使用STC15F2K60S2单片机板设计一个数字电压表,只能采用单片机内部ADC实现; ②要求能够测量直流电压范围为0~4.55V,测量误差小于0.005V,测量结果保留三位小数点; ③电压表具有自动超量程报警功能,当测量电压超过4.55V时驱动蜂鸣器报警,电压小于4.55V时自动关闭蜂鸣器; ④电压测量校准与测评以考试当天手上的万用表为准,显示器件自选,要求使用内部基准电压作为参考电压; ⑤采集结果通过USB转串口线上传至PC机,显示格式为:“N路电压:X.XXXV”; ⑥串口传输波特率为57600,晶振采用内部22.1184M,复位引脚不能当做I/O使用; ⑦电压表具有自动休眠功能,每当启动15秒钟后自动进入休眠模式,唤醒后
[单片机]
数字电压表的工作原理
  DVM的种类有多种,分类方法也很多,有按位数分的,如3/2位、5位、8位;有按测量速度分的,如高速、低速;有按体积、重量分的,如袖珍式、便携式、台式。但通常是按A/D转换方式的不同将DVM分成两大类,一类是直接转换型,也称比较型;另一类是间接转换型,又称积分型,包括电压-时间变换(VT变换)和电压-频率变换(V-f变换)。   (1)逐次逼近比较型 逐次逼近比较型电压表是利用被测电压与不断递减的基准电压进行比较,通过比较最终获得被测电压值,然后送显示器显示的。虽然逐次比较需要一定时间,要经过若干个节拍才能完成,但只要加快节拍的速度,还是能在瞬间完成一次测量的。图1是逐次逼近比较型数字电压表的原理框图。   图中,数码开关可把由
[测试测量]
数字<font color='red'>电压表</font>的工作原理
PIC16F688的数字电压表设计制作
  简介   该项目介绍了如何使用PIC单片机的数字电压表。一个HD44780的基于字符的LCD用于显示被测电压。在这个项目中使用的是PIC单片机PIC16F688,有12个I / O引脚可以作为内置10位ADC的模拟输入通道,其中8。要测量的电压被馈送到8个模拟通道之一。选择AD转换的参考电压是电源电压VDD(+5 V),。在输入端使用一个电阻分压器网络是映射到ADC的输入电压范围(0-5 V)输入电压范围。该技术是表现为输入电压范围从0-20 V,但它可以进一步扩展与选择适当的电阻和做的数学描述如下。   电路图   由于PIC端口不能直接输入20V,输入电压成比例下降,使用一个简单的电阻分压器网络。电阻R1和R2的规模
[单片机]
PIC16F688的数字<font color='red'>电压表</font>设计制作
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved