基于pic16f877a的电压输出并显示

发布者:jiaohe1最新更新时间:2019-11-09 来源: 51hei关键字:pic16f877a  电压输出  显示 手机看文章 扫描二维码
随时随地手机看文章

 

程序源码如下

#include


//引脚定义

#define din RC7           //显示串行数据输入端

#define load RC6          //显示数据锁存端

#define clk RC5           //显示时钟输入端


#define DecodeMode 0x09     //译码模式

#define Intensity 0x0a      //亮度

#define ScanLimit 0x0b      //扫描界限

#define ShutDown 0x0c       //掉电模式

#define DisplayTest 0x0f    //显示测试

#define ShutdownMode 0x00      //掉电方式

#define NormalOperation 0x01   //正常操作方式

#define DecodeDigit 0xff       //译码位数设置

#define IntensityGrade 0x08    //显示亮度级别设置

#define ScanDigit 0x07         //扫描位数设置

#define TestMode 0x01          //显示测试方式

#define TextEnd 0x00           //显示测试结束,正常工作


unsigned char votAJU = 0x00;    //是否使用CVRR位置,由RD7控制

unsigned char votCounter =0;    //电压输出计数器


//4MHz下以ms为单位的延时

void delayMS(unsigned int ms)

{

  int i,j;

  for(i=0;i  {

    for(j=0;j<70;j++);

  }

}


//向max7219写入一个字节

void Write_Max7219_byte(unsigned char DATA)           //LED写数据函数

{

       unsigned char i,k;

       load=0;

       for(i=8;i>=1;i--)

          {

            clk=0;

            k=DATA&0x80;

                        if(k==0x80)din=1;

                        else din=0;

            DATA<<=1;

            clk=1;

           }                                             

}

//向max7219写入指定位置的数据,address为位置,dat为数据

void Write_Max7219(unsigned char address,unsigned char dat)

{

  load=0;

  Write_Max7219_byte(address);

  Write_Max7219_byte(dat);

  load=1;               

}


//初始化max7219

void init_max7219(void)

{

    Write_Max7219(DecodeMode,DecodeDigit);      //设置译码模式

    Write_Max7219(Intensity,IntensityGrade);    //设置亮度

        Write_Max7219(ScanLimit,ScanDigit);         //设置扫描界限

    Write_Max7219(ShutDown,NormalOperation);    //设置电源工作模式

        Write_Max7219(DisplayTest,TextEnd);              //显示测试寄存器,写入00H,实现正常工作

}



//显示函数

void displayVoltage(unsigned char temp[4])

{

    Write_Max7219(0x01,0x0E);

    Write_Max7219(0x02,0x0A);

    if(RD7 == 1)

    {

      Write_Max7219(0x03,1);

    }

    else if(RD7 == 0)

    {

      Write_Max7219(0x03,0);

    }

    else

    {

    }

    Write_Max7219(0x04,0x0F);

    Write_Max7219(0x05,(temp[0]|0x80));

    Write_Max7219(0x06,temp[1]);

    Write_Max7219(0x07,temp[2]);

    Write_Max7219(0x08,temp[3]);        

}


void initINT(void)

{

        OPTION = 0x00;        //设置端口B为弱上拉电阻,RB为下降沿触发中断

    GIE = 1;

    INTE = 1;

    //允许RB0/INT中断

}


void initPORT(void)  //初始化端口D

{

  TRISB0 = 1;     //RB0为输入

  TRISC = 0x00;   //设置为输出

  PORTC = 0x00;   //输出都为0

  TRISD7 = 0;     //RD7为输入

}



void interrupt INTISR(void)

{

        if(INTF == 1)    //如果是外部中断

        {

                INTF = 0;                  //清除标志

        votCounter++;

        if(votCounter > 0x0F)  //只有16X2种可能

        {

          votCounter = 0;

        }

        }

}


void initVotOut(void)

{

  CVRR = 1;

  CVR3 = 0;

  CVR2 = 0;

  CVR1 = 0;

  CVR0 = 0;     //输出1.25V

  CVROE = 1;    //输出AN2引脚

  CVREN = 1;   //开启电压输出

}



void main(void)

{

    unsigned char vtemp[4];

    initPORT();             //端口初始化

    initINT();

    initVotOut();

    init_max7219();          //MAX7219初始化

    vtemp[0] = 0;

    vtemp[1] = 0;

    vtemp[2] = 0;

    vtemp[3] = 0;            //输出0V

    while (1)

    {  

      delayMS(20);

      CVRR = RD7;;

      if(votCounter == 0x00)     //1.25V或者0V

      {

        CVR3 = 0;

        CVR2 = 0;

        CVR1 = 0;

        CVR0 = 0;   

        if(RD7 == 1)             //CVRR = 1

        {

          vtemp[0] = 0;

          vtemp[1] = 0;

          vtemp[2] = 0;

          vtemp[3] = 0;            //输出0V      

        }

        else if(RD7 == 0)

        {

          vtemp[0] = 1;

          vtemp[1] = 2;

          vtemp[2] = 5;

          vtemp[3] = 0;            //输出1.25V   

        }

      }

      else if(votCounter == 0x01)     //0.21或1.41V

      {

        CVR3 = 0;

        CVR2 = 0;

        CVR1 = 0;

        CVR0 = 1;   



关键字:pic16f877a  电压输出  显示 引用地址:基于pic16f877a的电压输出并显示

上一篇:LCD+PIC单片机12864串行显示程序
下一篇:PIC 16f877a PORTB State Change Interrupt仿真与源码

推荐阅读最新更新时间:2024-11-02 11:21

基于W78E516B的液晶显示控制器显示系统设计
液晶 led /' target='_blank' 显示屏 (LCD)具有损耗低、价格低、寿命长、 接口 方便等优点,因此广泛应用于工业产品中,液晶显示 驱动 方案多种多样。目前中小型单色液晶屏控制方案多是基于CPLD液晶显示控制和液晶显示控制器SED1335,液晶显示控制模块功能简单,快速显示时会出现“雪花”现象。针对上述两种弊端,这里采用具有带ISP功能的Flash EPROM低功耗8位微控制器W78E516B 单片机 和液晶显示控制器SID13700构成一个320×240(DMF-50840NF液晶屏)的单色液晶显示系统,整个设计过程中,通过不断改进硬件和调试软件,得到了预期效果。该系统模块显示速度快、功能复杂、性能稳定,且已
[模拟电子]
基于W78E516B的液晶<font color='red'>显示</font>控制器<font color='red'>显示</font>系统设计
泄露海报显示 OPPO Find X3系列将在3月11日发布
目前正在微博上流传的一张泄露海报显示,OPPO Find X3 系列将于 3 月 11 日在国内正式发布。看来,该公司将在国内市场发布 Find X3 和 Find X3 Pro 智能手机。 海报称,OPPO Find X3 系列发布会将于 11 日晚上举行。据报道,Find X3 系列还包括 Find X3 Neo 和 Find X3 Lite 两款手机。这两款手机是 2020 年 12 月正式发布的 Reno5 Pro+ 5G 和 Reno5 5G 手机的升级版本。 根据之前工信部和 3C 认证,OPPO Find X3 Pro 和 Find X3 将正式到来,前者据说搭载骁龙 888 移动平台,而后者很可能搭载骁龙
[手机便携]
STM32_DAC输出电压
今天讲解“STM32F103 DAC输出电压”功能。 今天提供并讲解的软件工程,基于软件工程“A0.0.0(STM32F10x_TIM延时)”修改而来。若不知道如何而来,请关注微信公众号“strongerHuang获取更多信息。 每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘): https://yunpan.cn/cPU3YIHzcu6Eu 访问密码 11f0 STM32F10x的资料可以在我360云盘下载: https://yunpan.cn/crBUdUGdYKam2 访问密码 ca90 一、RCC时钟配置 该函数位
[单片机]
STM32_DAC<font color='red'>输出</font><font color='red'>电压</font>
三星借OLED版iPhone大赚:显示芯片创收4亿美元
凤凰科技讯 据The Investor网站北京时间4月17日报道,苹果公司将要发布的新iPhone包含首款配备OLED屏幕的旗舰机,预计将使用韩国供应商提供的关键零部件,包括独家面板供应商三星显示器。 新iPhone将在9月份发布。多个传闻称,它将分为三种机型,至少一款机型配备OLED屏幕。苹果一般会为关键零部件寻找多个供应商,但是首款OLED版iPhone技术复杂,预计将采用一些韩国供应商独家供应的零部件。 三星显示器是三星电子的屏幕制造部门,是全球唯一能够量产智能机所用OLED面板的制造商。三星显示器目前在手机OLED屏幕市场的份额高达95%。 由于苹果在OLED屏幕领域依旧缺乏经验,三星显示器据称将在整体供应链管理上发挥
[手机便携]
优派发布 Mini-LED 背光技术 ELITE 系列专业游戏显示
以更逼真色彩和更高对比度引领视觉革命 中国上海,2022年1月17日——近日,优派(ViewSonic)宣布将推出三款采用 Mini-LED 技术的 ELITE系列专业游戏显示器,分别为 ELITE XG272G-2K、ELITE XG321UG 和 ELITE XG341C-2K。三款全新的显示器拥有 27 英寸至 34 英寸屏幕,并采用了前沿 Mini-LED 技术,旨在帮助提升用户的游戏体验,通过对比度的优化,即使在昏暗的环境下,显示器也能清晰展现更多细节。全新产品均拥有高刷新率并搭载了 Mini-LED 背光技术,采用全阵列分区背光 (FALD) 技术,利用最多可达 1,152 个独立 Mini-LED 分区控光,实现
[家用电子]
优派发布 Mini-LED 背光技术 ELITE 系列专业游戏<font color='red'>显示</font>器
调查显示iPad快速抢占Kindle份额
图为iPad(蓝)和Kindle(红)市场份额对比   美国市场研究公司ChangeWave周二发布的数据显示,作为一款通用电子阅读器,苹果iPad正在抢夺Kindle的市场。   ChangeWave的调查显示,自今年8月以来,iPad在美国电子阅读器用户中的份额已经从16%增长到32%,而Kindle的走势几乎刚好相反,从62%下滑到47%。   ChangeWave称:“电子阅读器市场实质上已经变成亚马逊Kindle和苹果iPad两强相争的市场。”其余的份额主要被索尼Reader(5%)和巴诺书店的Nook(4%)瓜分。   ChangeWave表示,用户对iPad和Kindle的使用方式存在很大的不同。
[手机便携]
调查<font color='red'>显示</font>iPad快速抢占Kindle份额
新专利显示苹果眼镜 VR头显可采用苹果智能戒指作为配件
苹果正在继续研究一款智能戒指设备,该设备可以成为苹果眼镜、苹果VR头显等设备的配件或与之配合使用。苹果公司已经申请了许多与手指佩戴设备相关的专利。周四公布的一项新专利申请延续了之前在 “可扩展环形设备 ”方面的工作。   苹果这项专利描述的系统包含了一个 “配置在用户手指上佩戴的可穿戴电子设备”,以及一个 “包含用户可查看头戴式显示设备”。苹果在专利描述当中表示,当可穿戴电子设备穿戴在用户的手指上时,具有与用户手指纵轴平行的旋转铰链、视觉标记和收集用户输入的第一传感器。   有趣的是,该专利还指出,苹果VR头显等设备将内建一个传感器,并可以检测戴在用户手指上的视觉标记,以跟踪其运动,也许可以提供某种类型基于手势的控制。头戴部
[手机便携]
新专利<font color='red'>显示</font>苹果眼镜 VR头显可采用苹果智能戒指作为配件
STM32F0xx_ DAC输出电压配置详细过程
前言 数模转换DAC的功能在现实应用中所占的分量,相对定时器TIM、串口USART等要小的多,这也是ST为什么内部集成DAC模块相对来说不是那么多的原因。但在有需要使用数模转换功能的项目中,自带的这个DAC模块基本上可以取代外挂一片DAC芯片,因为自带的这个模块功能也很强大,只需要简单的配置一下就可以输出指定的电压信号(如:PWM波形、三角波、正选波),中途无需要软件干预。当然,今天提供的软件工程只有输出电压的基本操作,没有输出特殊的波形。但是,当你了解输出电压的原理之后,以后你想输出这些特殊的波形,也就容易多了。 STM32F0系列的DAC功能大部分是单通道,相对比较简单。只有STM32F072系列芯片是两路输出通道、有DA
[单片机]
STM32F0xx_ DAC<font color='red'>输出</font><font color='red'>电压</font>配置详细过程
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved