|
單片機(jī)設(shè)計(jì)電壓表,自己認(rèn)為注釋比較詳細(xì),注釋附件里有,小白設(shè)計(jì),有不足多多指教。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
3`[T3D8VOSTGQJ0CO9[7F.png (49.22 KB, 下載次數(shù): 57)
下載附件
2019-11-9 19:50 上傳
單片機(jī)源程序如下:
- #include<reg51.h> //頭文件
- #define uchar unsigned char; //宏定義
- #define uint unsigned int;
- sfr p2=0xa0; //特殊功能寄存器使用
- sfr p3=0xb0; //P2端口所對(duì)應(yīng)的字節(jié)地址就是0xA0 一整個(gè)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個(gè)數(shù)
- wr=1;
- z=P1; //讀回P1
- tem[0]=(P1+1)*5/256; //個(gè)位 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; //個(gè)位段碼 后加小數(shù)點(diǎn)
- P3=weima[w] ; //個(gè)位位碼
- }
- for(j=0;j<10;j++) ;
-
- }
- }
-
- void main()
- {
- while(1)
- {
- display();
- zhuanhuan();
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
單片機(jī)設(shè)計(jì)電壓表.rar
(154.21 KB, 下載次數(shù): 84)
2019-11-9 19:51 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|