找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2731|回复: 1
收起左侧

ADC0804+单片机数字电压表 数码管动态显示Proteus仿真

[复制链接]
ID:618105 发表于 2019-11-9 19:52 | 显示全部楼层 |阅读模式
单片机设计电压表,自己认为注释比较详细,注释附件里有,小白设计,有不足多多指教。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
3`[T3D8VOSTGQJ0CO9[7F.png

单片机源程序如下:
  1. #include<reg51.h>  //头文件
  2. #define uchar unsigned  char;  //宏定义
  3. #define uint  unsigned  int;
  4. sfr p2=0xa0;                //特殊功能寄存器使用
  5. sfr p3=0xb0;                //P2端口所对应的字节地址就是0xA0   一整个P2的8位都在0xA0地址上
  6. sbit P13=P1^3;                        //位定义
  7. sbit P14=P1^4;
  8. sbit P12=P1^2;
  9. sbit P15=P1^5;
  10. sbit P16=P1^6;
  11. sbit P17=P1^7;
  12. sbit P11=P1^1;
  13. sbit P10=P1^0;
  14. sbit wr=P3^6;
  15. sbit rd=P3^7;
  16. uchar code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
  17. 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};                          //数码管段码
  18. uchar code weima[]= {0x0e,0x0d,0x0b,0x07};                        //数码管位码
  19. uchar w;
  20. uint i,j,f,z,h;
  21. uchar tem[]={0,0,0,0};

  22. void zhuanhuan()
  23. {   
  24.         rd=0;                                          //读操作
  25.         for(i=0;i<10;i++);
  26.                                                         
  27.         wr=0;                                                         //写操作
  28.         for(i=0;i<10;i++)                                 //0~9 10个数
  29.         wr=1;
  30.         z=P1;                                                         //读回P1
  31.         tem[0]=(P1+1)*5/256;                         //个位 x=(255.99*5*100+5)/256=500
  32.         tem[1]=(P1+1)*50/256%10;                    //P1口最大值255 所以P1+1
  33.         tem[2]=(P1+1)*500/256%10;                 
  34.         tem[3]=(P1+1)*100/256%10;
  35.         if(P1==255)
  36.         {
  37.                 tem[2]=0;
  38.         }
  39.                
  40.         if(z==0)
  41.         {  
  42.                 tem[0]=0;
  43.                 tem[1]=0;
  44.                 tem[2]=0;
  45.                 tem[3]=0;                                         
  46.                                                                                                                                 
  47.         }
  48.                                                                   
  49.                                        
  50.         }
  51. void display()                                          //数码管显示函数
  52. {  
  53.         for(w=0;w<4;w++)
  54.         {        
  55.                 p2=0;
  56.                  p2=duanma[tem[w]];
  57.                  P3=weima[w];
  58.                 if(w==0)
  59.                 {
  60.                         p2=duanma[tem[w]]+0x80;   //个位段码  后加小数点
  61.                         P3=weima[w] ;                          //个位位码
  62.                 }
  63.                 for(j=0;j<10;j++) ;
  64.                      
  65.         }               
  66. }
  67.                         
  68. void main()
  69. {
  70.         while(1)                     
  71.          {                             
  72.                 display();                        
  73.                 zhuanhuan();                           
  74.         }
  75. }
复制代码

所有资料51hei提供下载:
单片机设计电压表.rar (154.21 KB, 下载次数: 82)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:277534 发表于 2019-11-28 13:49 | 显示全部楼层
楼主没看到仿真文件啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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