找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7514|回复: 4
打印 上一主题 下一主题
收起左侧

单片机TLC549 A/D转换程序+仿真

[复制链接]
跳转到指定楼层
楼主


  1. /********************************************************************
  2. *                                                              
  3. *  程序功能 :  数码转换实验
  4. *                                                                        
  5. *  应用软件 :  KEIL C                                               
  6. *                  
  7. *  硬    件 :  W2041  
  8. *                                                               
  9. *  创建时间 :  2015-12-16
  10. *              
  11.                         
  12. ********************************************************************/   
  13. #include <reg52.h>
  14. #include<intrins.h>
  15. #define uchar unsigned char
  16. #define uint unsigned int
  17. sbit dian=P0^7;//小数点位
  18. sbit led_e=P2^7;//液晶使能端口
  19. uchar temp,ad;
  20. uchar code table1[12]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; //数码管段选
  21. sbit CS=P3^3;                //片选
  22. sbit CLK=P2^6;                //时钟
  23. sbit DAT=P2^7;                 //数据
  24. uchar    bdata ADCdata;
  25. sbit    ADbit=ADCdata^0;        //定义可为选址变量

  26. /********************************************************************
  27. 函 数 名:TLC549ADC()
  28. 功    能:A/D转换子程序
  29. 说    明:读取上一次A/D转换的数据,启动下一次A/D转换
  30. ***********************************************************************/
  31. void Delay_MS(uint ms)
  32. {
  33.         uint x,y;
  34.         for(x=ms;x>0;x--)
  35.                 for(y=110;y>0;y--);
  36. }
  37. uchar TLC549ADC(void)
  38. {  
  39.     uchar i;
  40.         CS=1;   
  41.     CLK=0;   
  42.     DAT=1;
  43.     CS=0;
  44.     for(i=0;i<8;i++)
  45.     {
  46.         CLK=1;
  47. //                Delay_MS(5);
  48.        _nop_();  _nop_();_nop_();
  49.        _nop_();
  50.        ADbit=DAT;  
  51.            ADCdata<<=1;    //AD转换     
  52.         CLK=0;
  53. //                Delay_MS(5);
  54.         _nop_(); _nop_();_nop_();      
  55.     }
  56.     return (ADCdata);
  57. }
  58. /********************************************************************

  59. 函 数 名:main()
  60. 功    能:主程序
  61. 说    明:
  62. 入口参数:无
  63. 返 回 值:无  
  64. ***********************************************************************/
  65. void main()
  66. {   
  67.     uchar i,AD_DATA;             //定义A/D转换数据变量
  68.         while(1)
  69.         {
  70. //            TLC549ADC();             //启动一次A/D转换        
  71. //                    for(i=0xff;i>0;i--)         //延时
  72. //                    {_nop_();}        
  73.             AD_DATA=TLC549ADC();     //读取当前电压值A/D转换数据
  74.                 led_e=0;                                  //防止液晶影响
  75.              P1=0xFD;                                  //电压个位
  76.                  P0=table1[AD_DATA/100];
  77.                          for(i=0xff;i>0;i--)         //延时
  78.                             {_nop_();}
  79.                          for(i=0xff;i>0;i--)         //延时
  80.                             {_nop_();}
  81. //                    P0=0XFF;                                 //关闭数码,消除余辉
  82.                  
  83.                  P1=0xFB;                                        //小数点第一位
  84.                  P0=table1[(AD_DATA%100)/10];
  85. //                 dian=0;
  86.                          for(i=0xff;i>0;i--)         //延时
  87.                             {_nop_();}        
  88.                          for(i=0xff;i>0;i--)         //延时
  89.                             {_nop_();}
  90. //                    P0=0XFF;
  91.                
  92.                  P1=0xF7;                                   //小数点第二位
  93.                  P0=table1[AD_DATA%10];
  94.                          for(i=0xff;i>0;i--)         //延时
  95.                             {_nop_();}
  96.                          for(i=0xff;i>0;i--)         //延时
  97.                     {_nop_();}
  98. //                 P0=0XFF;
  99.          }   
  100. }
复制代码


TLC594工程文件和仿真文件下载
22-AD转换TLC549.zip (63.14 KB, 下载次数: 137)

评分

参与人数 2黑币 +55 收起 理由
vktpas + 5 共享资料的黑币奖励!
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:244326 发表于 2017-11-5 21:35 | 只看该作者
到底用的液晶还是数码管
回复

使用道具 举报

板凳
ID:271988 发表于 2018-1-8 20:52 | 只看该作者
xueliang 发表于 2017-11-5 21:35
到底用的液晶还是数码管

都可以,看你需要什么去显示
回复

使用道具 举报

地板
ID:276150 发表于 2018-1-15 16:30 | 只看该作者
这个复制代码页面怎么设置
回复

使用道具 举报

5#
ID:371577 发表于 2018-7-15 13:57 | 只看该作者
为何我用此程序做电压表的程序,0~2.5V可以正常显示。2.5以上就会显示为输入电压-2.5v的值。请大神指点。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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