STC12C5410AD单片机的AD程序两位数码管显示

发布者:智慧启迪最新更新时间:2012-10-11 来源: 21ic 关键字:STC12C5410AD  AD程序  数码管显示 手机看文章 扫描二维码
随时随地手机看文章

/*用的是主程序中转换AD,在以后的使用中要用中断的方法才能节约CPU的使用率,本程序中是用P1.0为输入,用的是单片机本身的10位AD,最大1024分辨率,除以10后最大为102,用两位的数码管,所以只能在99以内,在程序中大于99的数,就只能显示99,也可用三位数码管显示.*/

#include< reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define duan P1  //数码管段码输出端
sfr ADC_CONTR  = 0xc5; 
sfr ADC_DATA   = 0xc6;
sfr ADC_LOW2   = 0xbe;
sfr P1M0 =0x91;
sfr P1M1 =0x92;
sbit sw=P2^7; //数码管的十位选通
sbit gw=P2^6; //数码管的个位选通
uint shu,ad_shu;
uchar code tab[]={         0xEE,/*0*/
        0x48,/*1*/
        0xD6,/*2*/
        0xDC,/*3*/
        0x78,/*4*/
        0xBC,/*5*/
        0xBE,/*6*/
        0xC8,/*7*/
        0xFE,/*8*/
        0xFC,/*9*/
};

void delay( )
{
uchar a;
for(a=10;a>0;a--);
}

void desplay(int bb)
{
uint ab;
ab=bb;
if(ab>99) ab=99;
duan=tab[ab/10];
sw=0;
delay();
sw=1;
duan=tab[ab%10];
gw=0;
delay();
gw=1; 
}
void main()
{
ADC_CONTR=0xe0; //开A/D转换器
P1M0=0x01; //定义P1.0为AD输入端口,让P1.0为高阻态
P1M1=0x01; //定义P1.0为AD输入端口,让P1.0为高阻态
while(1)
{
  ADC_CONTR|=0x08;
  while((ADC_CONTR & 0x10)==0);
   ADC_CONTR&=0xe7;
   ad_shu=ADC_DATA;
   ad_shu<<=2;
   ad_shu+=ADC_LOW2;
   shu=ad_shu/10;
  
  desplay(shu);
}
}
关键字:STC12C5410AD  AD程序  数码管显示 引用地址:STC12C5410AD单片机的AD程序两位数码管显示

上一篇:基于Proteus的单片机演奏系统的设计
下一篇:详解MSP430看门狗使用方法

推荐阅读最新更新时间:2024-03-16 13:10

STC51-数码管显示
1 数码管显示原理 我们先来看几个数码管的图片, 左图为单位数码管、中图为双位数码管、右图为四位数码管, 另外还有右下角不带点的数码管,最右图还有“米”字数码管等。 不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。数码管内部电路如下图所示,从图(a)可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。而它们的公共端又可分为共阳极和共阴极,图(b)为共阴极内部原理图,图
[单片机]
STC51-<font color='red'>数码管</font><font color='red'>显示</font>
51单片机动态数码管显示(新字符串思路)
新思路 对于数码管的动态显示,已经有了很多的基础教学,教学中多用数组的形式储存数据来进行动态显示,便于理解。对于纯数据来说,数组是一个很好的选择,但是如果有的特殊符号或者字母,数组似乎就没这么方便,总是需要记忆特殊字符所对应的数组下标。如果一定要用数组显示,也可以通过宏定义或枚举来减轻记忆的负担,但是总觉得没这么流畅。倘若能把所有需要显示的内容写成一个字符串,再对字符串进行处理,那么应该能够使程序更加可读,并可以简化操作。 字符串的处理 若想对字符串进行处理,那么第一步就是将字符串中的内容转化成数码管的段码。这里展示共阳极数码管的转化函数代码: #ifndef U8 #define U8 typedef unsigned
[单片机]
51单片机做的音乐盒,带八段数码管显示程序+Proteus仿真
#include reg52.h #define uchar unsigned char #define uint unsigned int sbit key1=P3^2;//按key1可以暂停播放 sbit key2=P3^3;//按key2可切换歌曲 sbit fm=P3^7;//蜂鸣器连续的IO口 uchar code shuzi0=0x3f; uchar code shuzi1=0x06;//数字1 uchar code shuzi2=0x5b;//数字2 uchar code shuzi3=0x4f; uchar code shuzi4=0x66; uchar code shuzi5=0x6d; uchar code
[单片机]
51单片机做的音乐盒,带八段<font color='red'>数码管</font><font color='red'>显示</font><font color='red'>程序</font>+Proteus仿真
数码管显示1314-520(普中51-单核-A2)
#include reg52.h #include intrins.h typedef unsigned int uint; typedef unsigned char uchar; #define LED P0 sbit tube2=P2^2; sbit tube3=P2^3; sbit tube4=P2^4; uint code num ={0x3f , 0x06 , 0x5b , 0x4f , 0x66 , //高电平控制亮 //显示数字 0x6d , 0x7d , 0x07 , 0x7f , 0x6f }; void delay(uint i); void run(); void main(){ whi
[单片机]
<font color='red'>数码管</font><font color='red'>显示</font>1314-520(普中51-单核-A2)
74HC164控制数码管显示
刚开始的时候把74HC164当成了74HC573使了,还看了原理图,半天摸不出个所以然,然后上网查了资料,才知道原来74HC164是串入并出的,此时才知道思考方向出错了。于是再看原理图再分析示例代码方有所获。 原来164只有一个输入端sda(P10),一个控制位clk(P11),还有四个位选:dig1~dig4分别与P13~P15相连,我们可以通过控制dig来达到选位的目的,然后再用sda来向164里传数。而164共有8个输出端,刚好对应了数码管的一个字节(a,b,c,d,,e,f,g,dp),从而显示出不同的数。 还有我写的一个例子程序发现了一个小问题,现在想不通,放到这以后再想:为164送数的时候不能用wh
[单片机]
键盘扫描-数码管递增显示程序
/* 程序效果:51单片机按键扫描数码管显示输入,数码管为递增显示,即像     手机打电话时输入号码一样,程序简单紧凑     理解相对困难,但只要把上一程序弄懂,本程序     即可理解。 程序设计者:http://www.51hei.com转载请保留版权. 注意:如果无法在keil里编译,请删除每一行的所有前导空白, */ #include reg52.h //头文件 #include intrins.h #define uchar unsigned char //宏定义 #define uint unsigned int sbit jdq=P3^5; //位声明,驱动继电器管脚 sbit fmq=P3^4; //位声
[单片机]
对单片机数码管显示段选位选的理解
在51单片机的数码管的应用开发中一些小的细节还是应该注意到的。 其中位选信号应该在段选之前打开,下面是一段示例代码(我用的是国信长天开发板): #include reg51.h // 包含51单片机寄存器定义的头文件 #include intrins.h #define uint unsigned int sbit buzz=P0^6; /************************************************** 函数功能:d延时函数,延时一段时间 ***************************************************/ void dela
[单片机]
STM8 一位共阳数码管0至F数码显示
思修电子小王子开发板一位共阳数码管0至F数码显示。 #define LED PC_ODR //1位数码管段码连接端口组 u8 tableB ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共阳数码管段码0至F int main(void) { u8 num;//定义for循环控制变量“num” PC_DDR=0xFF;//配置PC端口为输出模式 PC_CR1=0xFF;//配置PC端口为推挽输出模式 PC_CR2=0x00;//配置PC端口低速率输出 while(1) { for(n
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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