搜索
bottom↓
回复: 5

51单片机驱动ADC0832及数码管显示

[复制链接]

出0入0汤圆

发表于 2011-9-26 21:21:08 | 显示全部楼层 |阅读模式
/*********************************包含头文件********************************/

#include <reg51.h>

/*********************************端口定义**********************************/

sbit CS  = P3^4;
sbit Clk = P1^0;
sbit DIO = P1^1;

/*******************************定义全局变量********************************/

unsigned char adval;

/*******************************共阳LED段码表*******************************/

unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

/*******************************延时子函数*******************************/

void delay(void)

{
    int i;
    for(i=0;i<100;i++);
}

/*******************************ADC0832转换函数*******************************/

void adc0832()

{
        unsigned char i;

        adval=0;                                  

        CS = 0;                                           //使能adc0832

        DIO = 1;                                       
          Clk = 0;                                    //产生第一个上升沿,启动adc0832
        Clk = 1;
                                       
        DIO = 1;                               
    Clk = 0;                                          //产生第二个上升沿,用于选择单通道输入方式
    Clk = 1;
  

    DIO = 0;                                        //产生第三个上升沿,用于选择0通道输入
        Clk = 0;  
    Clk = 1;
  

        Clk = 0;

    DIO = 1;                                        //作为输入,先置1

    for( i = 0;i < 8;i++ )
    {
               Clk = 1;
               Clk = 0;

              if (DIO)
                        adval=adval|(0x80>>i);
    }

        CS = 1;
}

/*******************************数码管显示函数*******************************/

void display(int k)

{
        P2=0x00;
       
    P0=tab[k/1000];  
    P2=0x08;     
        delay();
    P2=0x00;
   
    P0=tab[k%1000/100];
    P2=0x04;         
        delay();
    P2=0x00;

    P0=tab[k%100/10];
        P2=0x02;       
        delay();  
    P2=0x00;

    P0=tab[k%10];
        P2=0x01;       
        delay();
    P2=0x00;
}

/*******************************主函数函数*******************************/

void main(void)

{

        while(1)                       
        {
                adc0832();
                display(adval);
        }

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-9-26 21:22:52 | 显示全部楼层
点击此处下载 ourdev_679892O7BA6J.zip(文件大小:43K) (原文件名:ADC0832.zip)

出0入0汤圆

 楼主| 发表于 2011-9-26 21:36:51 | 显示全部楼层
自己写的程序,没有加延时。

请大家多多指教啊

出0入0汤圆

 楼主| 发表于 2011-9-27 07:27:34 | 显示全部楼层

(原文件名:clip_image001.gif)

出0入0汤圆

发表于 2013-5-6 21:01:52 | 显示全部楼层
一直没有人ding,其实我想知道为什么只会显示255,而且也没有小数点,如果我想测试大于5V的电压,应该怎么修改程序。

出0入0汤圆

发表于 2014-6-10 09:40:37 | 显示全部楼层
非常感谢,正需要
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表