標題:
ADC0804+單片機數(shù)字電壓表 數(shù)碼管動態(tài)顯示Proteus仿真
[打印本頁]
作者:
lk123i
時間:
2019-11-9 19:52
標題:
ADC0804+單片機數(shù)字電壓表 數(shù)碼管動態(tài)顯示Proteus仿真
單片機設計電壓表,自己認為注釋比較詳細,注釋附件里有,小白設計,有不足多多指教。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
3`[T3D8VOSTGQJ0CO9[7F.png
(49.22 KB, 下載次數(shù): 57)
下載附件
2019-11-9 19:50 上傳
單片機源程序如下:
#include<reg51.h> //頭文件
#define uchar unsigned char; //宏定義
#define uint unsigned int;
sfr p2=0xa0; //特殊功能寄存器使用
sfr p3=0xb0; //P2端口所對應的字節(jié)地址就是0xA0 一整個P2的8位都在0xA0地址上
sbit P13=P1^3; //位定義
sbit P14=P1^4;
sbit P12=P1^2;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
sbit P11=P1^1;
sbit P10=P1^0;
sbit wr=P3^6;
sbit rd=P3^7;
uchar code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //數(shù)碼管段碼
uchar code weima[]= {0x0e,0x0d,0x0b,0x07}; //數(shù)碼管位碼
uchar w;
uint i,j,f,z,h;
uchar tem[]={0,0,0,0};
void zhuanhuan()
{
rd=0; //讀操作
for(i=0;i<10;i++);
wr=0; //寫操作
for(i=0;i<10;i++) //0~9 10個數(shù)
wr=1;
z=P1; //讀回P1
tem[0]=(P1+1)*5/256; //個位 x=(255.99*5*100+5)/256=500
tem[1]=(P1+1)*50/256%10; //P1口最大值255 所以P1+1
tem[2]=(P1+1)*500/256%10;
tem[3]=(P1+1)*100/256%10;
if(P1==255)
{
tem[2]=0;
}
if(z==0)
{
tem[0]=0;
tem[1]=0;
tem[2]=0;
tem[3]=0;
}
}
void display() //數(shù)碼管顯示函數(shù)
{
for(w=0;w<4;w++)
{
p2=0;
p2=duanma[tem[w]];
P3=weima[w];
if(w==0)
{
p2=duanma[tem[w]]+0x80; //個位段碼 后加小數(shù)點
P3=weima[w] ; //個位位碼
}
for(j=0;j<10;j++) ;
}
}
void main()
{
while(1)
{
display();
zhuanhuan();
}
}
復制代碼
所有資料51hei提供下載:
單片機設計電壓表.rar
(154.21 KB, 下載次數(shù): 84)
2019-11-9 19:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
Nexus
時間:
2019-11-28 13:49
樓主沒看到仿真文件啊
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1