标题: 单片机数字电压表proteus仿真与程序 [打印本页]

作者: 1130555300    时间: 2017-5-17 22:00
标题: 单片机数字电压表proteus仿真与程序

51单片机做的数字电压表仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


数字电压表电路原理图如下:


数字电压表程序流程图和框图:


元件清单:

  
元件名
  
应领取数量
元件清点
领取个数
  
电容104
  
3
3
3
  
电容27
  
2
2
2
  
电阻100
  
9
9
9
  
电阻510
  
1
1
1
  
电阻1K
  
1
1
1
  
电阻10K
  
5
5
5
  
晶振12M
  
1
1
1
  
滑动开关
  
1
1
1
  
触动开关
  
1
1
1
  
排针
  
3
3
3
  
芯片0831
  
1
1
1
  
芯片AT89C52
  
1
1
1
  
二极管1N418
  
3
3
3
  
发光二极管
  
1
1
1
  
极性电容
  
2
2
2
  
三极管9012
  
4
4
4
  
4位数码管
  
1
1
1
  
芯片底座
  
2
2
2
  
PCB
  
1
1
1
  
USB下载器
  
1
1
1
  
杜邦线
  
1
1
1
  
合计
  
45
45
45

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code table[]={
  6. 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf9,0x80,0x90,
  7. 0x40,0x79,0x24,0x30,0x19,0x12,
  8. 0xc1};
  9. uchar code aa[]={0x01,0x02,0x04,0x08};
  10. sbit cs1=P1^0;
  11. sbit scl1=P1^1;
  12. sbit sda1=P1^2;
  13. uchar tmpdata[]={0,0,0,0};
  14. uchar readad0831();
  15. void delay(uint g)
  16. {
  17.    uint u;
  18.         for(u=0;u<g;u++);
  19. }
  20. void display()
  21. {
  22.   uchar i;
  23.   for(i=0;i<4;i++)
  24.   {
  25.     P0=aa[i];
  26.                 P2=table[tmpdata[i]];
  27.                 delay(100);
  28.                 P2=0xff;
  29.   }
  30. }
  31. void main()
  32. {
  33.   uint i=0,tmp;
  34.   while(1)
  35.   {
  36.     i++;
  37.     if(i==255)
  38.     {
  39.        i=0;
  40.       tmp=readad0831()*100;
  41.       tmp=tmp/51;
  42.       tmpdata[0]=tmp/100;
  43.       tmpdata[0]+=10;
  44.       tmp=tmp%100;
  45.        tmpdata[1]=tmp/10;
  46.       tmpdata[2]=tmp%10;
  47.       tmpdata[3]=16;
  48.     }
  49.     display();
  50.   }
  51. }

  52. uchar readad0831()
  53. {
  54.   uchar i=0,tmp=0;
  55.   sda1=1;
  56.   cs1=0;
  57.   _nop_();
  58.   _nop_();
  59.   scl1=0;
  60.   _nop_();
  61.   _nop_();
  62.   scl1=1;
  63.   _nop_();
  64.   _nop_();
  65.   scl1=0;
  66.   _nop_();
  67.   _nop_();
  68.   scl1=1;
  69.   _nop_();
  70.   _nop_();
  71.   scl1=0;
  72.   _nop_();
  73.   _nop_();
  74.   for(i=0;i<8;i++)
  75.   {
  76.     tmp=_crol_(tmp,1);
  77.     if(sda1)
  78. ……………………

  79. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
数字电压表.zip (237.15 KB, 下载次数: 418)



作者: 知趣19    时间: 2017-12-27 10:04
不错的帖子  感谢分享
作者: fyw123    时间: 2017-12-31 14:13
谢谢大哥的分享,nb
作者: 473936933    时间: 2018-1-19 22:11
谢谢分享
作者: 呵..呵    时间: 2018-3-20 20:48
请问有没有仿真软件,我看不了仿真的
作者: maester    时间: 2018-3-21 15:56
正要做这个设计 刚好需要
作者: 1130555300    时间: 2018-3-30 16:12
呵..呵 发表于 2018-3-20 20:48
请问有没有仿真软件,我看不了仿真的

软件下载地址  链接: http://pan.baidu.com/s/1sjscTad 密码: shlg
作者: 叶未落    时间: 2018-4-18 22:53
谢谢分享
作者: longwu4886    时间: 2018-4-19 09:07
学习学习,感谢分享!!!!!!
作者: 可米多    时间: 2018-5-27 20:09
可以下载看看
作者: hgfrtyulkj    时间: 2018-6-18 19:15
感谢分享!!!!!!
作者: 小炮    时间: 2018-6-18 20:56
谢谢大佬的,刚好需要这个
作者: xielove    时间: 2018-11-18 20:00
大哥,为啥我仿真打开后是几个点。。。  我看不懂,我这边要测试数据和仿真结果图。。。
小弟我不会操作呀。。。
作者: xielove    时间: 2018-11-18 20:17
大哥,你那个基于单片机的数字电压表的那个帖子上的文件,仿真该怎么操作?被测电源的电压怎么才能调节,我这边需要测试数据。。。  请大佬看见了,回复我一下,谢谢
作者: 是是是是是是1    时间: 2018-11-23 11:22
谢谢大哥的分享,nb
作者: 12345678..    时间: 2018-12-6 22:17
感谢分享
作者: 嵌入式学习007    时间: 2018-12-10 11:43
不知道这个电压的检测范围是多少啊
作者: 嵌入式学习007    时间: 2018-12-10 11:44
电压检测范围是多少呀,怎么恢复不上
作者: zhc1028683236    时间: 2018-12-13 19:34
感谢感谢,
作者: 呜呜呜呜乌    时间: 2018-12-18 21:13
我想知道,怎么加上过电压报警功能
作者: Z_SIMPLE    时间: 2018-12-21 15:28
复位按钮怎么不能实现复位呀,不知道怎么测量外,电压楼主能给个操作方法吗
作者: 天空之城丶    时间: 2019-3-17 17:51
谢谢大哥的分享,nb
作者: wgsd    时间: 2019-3-17 19:05
谢谢分享,学习学习。
作者: 嘚嘚嘚啦    时间: 2019-5-15 15:42

谢谢分享
作者: 云烟    时间: 2019-5-30 22:14
下载后打不开怎么回事
作者: ColdMountain    时间: 2019-11-20 14:29
感谢大佬分享
作者: ColdMountain    时间: 2019-11-20 14:30
要是原理能够说得清楚一些就好了
作者: 1472580369    时间: 2019-11-28 10:16
感谢分享
作者: shy0000    时间: 2020-6-21 09:37
很不错,有用




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