数模转换ADC08009应用

发布者:星光闪耀最新更新时间:2024-08-14 来源: cnblogs关键字:数模转换  AT89C51 手机看文章 扫描二维码
随时随地手机看文章

 

 1 #include              //头文件

 2 #define uchar unsigned char           //宏定义无符号字符型

 3 #define uint  unsigned  int           //宏定义无符号整型

 4 code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟

 5 uchar wei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端                                                                 //位控制码

 6 sbit ST=P3^0;   //A/D启动转换信号

 7 sbit OE=P3^1;   //数据输出允许信号

 8 sbit EOC=P3^2;  //A/D转换结束信号

 9 sbit CLK=P3^3;  //时钟脉冲  

10 uint z,x,c,v,AD0809, date;        //定义数据类型

11 /******************************************************************

12 延时函数

13 ******************************************************************/

14 void delay(uchar t)

15 {

16   uchar i,j;

17    for(i=0;i18    {

19             for(j=13;j>0;j--);

20          { ;

21          }

22    }

23 }

24 /**********************************************************************

25                 数码管动态扫描

26 *********************************************************************/

27 void xianshi() //显示函数

28  { 

29 uint z,x,c,v;

30   z=date/1000;                         //求千位

31   x=date%1000/100;                 //求百位

32   c=date%100/10;                 //求十位

33   v=date%10;                         //求个位

34 

35       P2=0XFF;

36           P0=seg7code[z]&0x7f;

37           P2=wei[0];

38           delay(80);

39           P2=0XFF;  

40       P0=seg7code[x];

41           P2=wei[1];

42           delay(80);

43           P2=0XFF;  

44              P0=seg7code[c];

45           P2=wei[2];

46           delay(80);

47           P2=0XFF;  

48       P0=seg7code[v];

49           P2=wei[3];

50           delay(80); 

51           P2=0XFF;

52   }

53  /*************************************************************************

54                                 CLK振荡信号        

55 **************************************************************************/

56 void timer0( ) interrupt 1 //定时器0工作方式1

57 {

58 

59 TH0=(65536-2)/256;          //重装计数初值

60 TL0=(65536-2)%256;          //重装计数初值

61 CLK=!CLK;                          //取反

62 }

63 

64  /*************************************************************************

65                                 主函数        

66 **************************************************************************/

67  void main()

68 { 

69 TMOD=0X01;                          //定时器中断0

70 

71 CLK=0;                                  //脉冲信号初始值为0

72 TH0=(65536-2)/256;          //定时时间高八位初值

73 TL0=(65536-2)%256;          //定时时间低八位初值

74 EA=1;                                  //开CPU中断

75 ET0=1;                                  //开T/C0中断

76 TR0=1;

77  while(1)                           //无限循环

78         {

79         ST=0;                                //使采集信号为低

80         ST=1;                                //开始数据转换

81         ST=0;                                //停止数据转换

82         while(!EOC);                //等待数据转换完毕

83         OE=1;                                //允许数据输出信号

84         AD0809=P1;                    //读取数据

85         OE=0;                                //关闭数据输出允许信号

86         if(AD0809>=251)                //电压显示不能超过5V

87         AD0809=250;

88         date=AD0809*20;                //数码管显示的数据值,其中20为采集数据的毫安值

89         xianshi();                        //数码管显示函数

90     

91     }

92 }       


关键字:数模转换  AT89C51 引用地址:数模转换ADC08009应用

上一篇:自定义reg52.h头文件(单片机学习重难点核心知识点)
下一篇:基于AT89C51单片机烟雾传感器

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

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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