标题: ADC0808模数转换显示 单片机程序 [打印本页]

作者: dazhige    时间: 2019-4-17 09:12
标题: ADC0808模数转换显示 单片机程序
新人咋到,贡献一个 ADC模数转换显示.rar (24.38 KB, 下载次数: 52)

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit ST= P1^3;                //启动信号
  6. sbit EOC=P1^4;                //转换结束信号
  7. sbit OE= P1^5;                //输出使能
  8. sbit CLK=P1^6;                //时钟信号
  9. //0~9字型码
  10. uchar code seg_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  11. /**************************************************
  12. 函数功能:软件延时
  13. 入口参数:类型uint x为1ms的倍数
  14. 出口参数:无
  15. ****************************************************/
  16. void delay(uint x)
  17. {
  18.         uchar i;
  19.         while(x--)
  20.                 for(i=0;i<115;i++);                //1ms        
  21. }
  22. /**************************************************
  23. 函数功能:数码管显示
  24. 入口参数:seg_data[]为0~9字型码
  25. 出口参数:uint x 要显示的数字
  26. ****************************************************/
  27. void display(uint x)
  28. {        
  29.         uchar i,disp[3];
  30.         disp[0]=seg_data[x/100];                //百位
  31.         disp[1]=seg_data[(x%100)/10];        //十位
  32.         disp[2]=seg_data[x%10];                        //个位
  33.         for(i=0;i<3;i++)
  34.         {
  35.                 P0=disp[i];                                        //数码管段码                        
  36.                 P2=~(1<<i);                                        //数码管位码移位,片选
  37.                 delay(20);                                        //延时2ms
  38.                 P2=0xff;                                        //关闭数码管显示
  39.         }
  40. }
  41. main()
  42. {
  43.         TMOD=0x02;                                //T0工作模式2
  44.         TH0=0x14;               
  45.         TL0=0x14;
  46.         ET0=1;
  47.         EA=1;
  48.         TR0=1;
  49.         P1=0;                                //选择ADC0808的通道0
  50.         while(1){
  51.                 ST=0;
  52.                 EOC=1;                                //高电平有效
  53.                 OE=0;
  54.                 ST=1;                                //上升沿清零、锁存地址
  55.                 ST=0;                                //下降沿开始A/D转换
  56.                 while(EOC==1);                //等待转换完成
  57.                 OE=1;                                //输出允许信号
  58.                 display(P3);                //显示转换的数据
  59.         }
  60. }
  61. /**************************************************
  62. T0定时器中断给ADC0808提供时钟信号
  63. ****************************************************/
  64. void Timer0_INT() interrupt 1
  65. {
  66.         CLK=~CLK;
  67. }
复制代码




作者: admin    时间: 2019-4-17 14:28
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者: dazhige    时间: 2022-2-7 18:53
程序注释都在源码中,都很清楚了

ADC.jpg (90.47 KB, 下载次数: 134)

ADC.jpg





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1