51單片機做的數字電壓表仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真圖.png (186.03 KB, 下載次數: 162)
下載附件
2017-5-17 22:00 上傳
數字電壓表電路原理圖如下:
電路原理圖.png (67.69 KB, 下載次數: 152)
下載附件
2017-5-17 22:00 上傳
數字電壓表程序流程圖和框圖:
0.png (14.32 KB, 下載次數: 154)
下載附件
2017-5-18 00:26 上傳
0.png (47.08 KB, 下載次數: 109)
下載附件
2017-5-18 00:26 上傳
0.png (73.43 KB, 下載次數: 116)
下載附件
2017-5-18 00:24 上傳
元件清單:
元件名 | | | | 電容104 | | | | 電容27 | | | | 電阻100 | | | | 電阻510 | | | | 電阻1K | | | | 電阻10K | | | | 晶振12M | | | | 滑動開關 | | | | 觸動開關 | | | | 排針 | | | | 芯片0831 | | | | 芯片AT89C52 | | | | 二極管1N418 | | | | 發光二極管 | | | | 極性電容 | | | | 三極管9012 | | | | 4位數碼管 | | | | 芯片底座 | | | | PCB板 | | | | USB下載器 | | | | 杜邦線 | | | | 合計 | | | |
單片機源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code table[]={
- 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf9,0x80,0x90,
- 0x40,0x79,0x24,0x30,0x19,0x12,
- 0xc1};
- uchar code aa[]={0x01,0x02,0x04,0x08};
- sbit cs1=P1^0;
- sbit scl1=P1^1;
- sbit sda1=P1^2;
- uchar tmpdata[]={0,0,0,0};
- uchar readad0831();
- void delay(uint g)
- {
- uint u;
- for(u=0;u<g;u++);
- }
- void display()
- {
- uchar i;
- for(i=0;i<4;i++)
- {
- P0=aa[i];
- P2=table[tmpdata[i]];
- delay(100);
- P2=0xff;
- }
- }
- void main()
- {
- uint i=0,tmp;
- while(1)
- {
- i++;
- if(i==255)
- {
- i=0;
- tmp=readad0831()*100;
- tmp=tmp/51;
- tmpdata[0]=tmp/100;
- tmpdata[0]+=10;
- tmp=tmp%100;
- tmpdata[1]=tmp/10;
- tmpdata[2]=tmp%10;
- tmpdata[3]=16;
- }
- display();
- }
- }
- uchar readad0831()
- {
- uchar i=0,tmp=0;
- sda1=1;
- cs1=0;
- _nop_();
- _nop_();
- scl1=0;
- _nop_();
- _nop_();
- scl1=1;
- _nop_();
- _nop_();
- scl1=0;
- _nop_();
- _nop_();
- scl1=1;
- _nop_();
- _nop_();
- scl1=0;
- _nop_();
- _nop_();
- for(i=0;i<8;i++)
- {
- tmp=_crol_(tmp,1);
- if(sda1)
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
數字電壓表.zip
(237.15 KB, 下載次數: 418)
2017-5-17 22:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|