×
嵌入式开发 > 详情

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

发布时间:2020-06-29 发布时间:
|

/*用的是主程序中转换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);}}


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM入门篇之(一)概念