|
做了一個(gè)關(guān)于數(shù)字電壓表的課程設(shè)計(jì),已經(jīng)驗(yàn)收
電路原理圖如下:
電路原理圖如下:
論文目錄
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
c源碼
- #include<AT89X52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint a1,b1,ge,fen,fen1;
- uchar t,dispcount,count=0,flag=0;
- uchar dispbuf[4]={0,0,0,0};// 0x76,0x3f,0x3f,0x4f
- uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0Xff};
- sbit W0=P3^5; //
- sbit W1=P3^4; //
- sbit W2=P3^3; //
- sbit W3=P3^2; //數(shù)碼管位選
- sbit PIN=P1^7;
- sbit st=P2^4; sbit ale=P2^3; //通道控制
- sbit oe=P2^5; //輸出控制
- sbit eoc=P3^7; //轉(zhuǎn)換結(jié)束標(biāo)志
- sbit a=P2^0; //
- sbit b=P2^1; //
- sbit c=P2^2; //通道選擇
- sbit k1=P3^0; //功能轉(zhuǎn)換鍵
- sbit k2=P3^1; //通道選擇鍵
- void delay(uchar x)
- {
- uint a,b;
- for(a=x;a>0;a--)
- for(b=110;b>0;b--);
- }
- void xz()//通道選擇
- {
- if(t==0)
- {
- a=0;b=0;c=0;
- ale=1;
- delay(1);
- ale=0; }
- if(t==1)
- {a=1;b=0;c=0;
- ale=1;
- delay(1);
- ale=0; }
- if(t==2)
- {a=0;b=1;c=0;
- ale=1;
- delay(1);
- ale=0; }
- if(t==3)
- {
- a=1;b=1;c=0;
- ale=1;
- delay(1);
- ale=0; }
- if(t==4)
- {
- a=0;b=0;c=1;
- ale=1;
- delay(1);
- ale=0; }
- if(t==5)
- {
- a=1;b=0;c=1;
- ale=1;
- delay(1);
- ale=0;
- }
- if(t==6)
- {
- a=0;b=1;c=1;ale=1;
- delay(1);
- ale=0;
- }
- if(t==7)
- {a=1;b=1;c=1;ale=1;
- delay(1);
- ale=0;
- }
- }
- void aj()//按鍵
- {
- if(k1==0)
- {
- delay(2);
- if(k1==0)
- TR1=!TR1; //定時(shí)器1 使能取反
- while(!k1);
- }
- if(TR1==0)
- {
- if(k2==0)
- {
- delay(5);
- if(k2==0)
- {
- t++;
- if(t==8)
- t=0;
- }
- while(!k2);
- }
- }
- }
- void du()//讀數(shù)據(jù)
- {
- uchar tmp;
- st=1;
- st=0;
- delay(1); //這里必須延時(shí)給硬件處理時(shí)間if(eoc==1) //轉(zhuǎn)換結(jié)束標(biāo)志
- {
- oe=1; //轉(zhuǎn)換結(jié)束輸出控制
- delay(1);
- tmp=P0;
- oe=0;
- delay(1);
- }
- if(tmp>=255)
- {
- flag=1;
- }
- else
- {
- flag=0;
- }
- ge=tmp/51;
- a1=(tmp%51)*10;
- fen=a1/51;
- b1=(a1%51)*10;
- fen1=b1/51;
- dispbuf[0]=dispcode[t];
- dispbuf[1]=dispcode[ge];
- dispbuf[2]=dispcode[fen];
- dispbuf[3]=dispcode[fen1];
- }
- void init()//初始化
- {
- EA=1;
- ET1=1;
- TMOD=0x10;
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- T2MOD=0x00;
- T2CON=0x04; TR2=1 ;RCAP2L=(65536-4000)%256;
- RCAP2H=(65536-4000)/256;
- TR2=1; //打開(kāi)定時(shí)器中斷1,2
- ET2=1;
- W0=1;
- W1=1;
- W2=1;
- W3=1;
- ale=0;
- oe=0;
- st=0;
- t=0;k1=1;k2=1;
- }
- void as() interrupt 3 using 0 {
- uchar a;
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- a++;
- if(a==20)
- {
- a=0;
- t++;
- if(t==8)
- t=0;
- }
- }
- void main()
- {
- init();
- while(1)
- {
- aj();
- xz();
- du();
- // xs();
- }
- }
- void t1(void) interrupt 5 using 0
- {
- TF2=0; //T2定時(shí)器必須用軟件清0
- P1=dispbuf[dispcount]; //控制數(shù)碼管顯示
- if (dispcount==0)
- {
- W0=0;
- W1=1;
- W2=1;
- W3=1;
- }
- if(dispcount==1)
- { PIN=0;
- W0=1;
- W1=0;
- W2=1;
- W3=1;
- }
- if(dispcount==2)
- {
- PIN=1;
- W0=1;
- W1=1;
- W2=0;
- W3=1;
- }
- if(dispcount==3)
- {
- W0=1;W1=1;W2=1;W3=0;
- }
- dispcount++;
- if(flag==1)
- count++;
- if(dispcount==4) dispcount=0;
- }
復(fù)制代碼
全部資料51hei下載地址:
51上傳.zip
(975.31 KB, 下載次數(shù): 85)
2018-9-24 00:46 上傳
點(diǎn)擊文件名下載附件
內(nèi)附有原理圖,c源碼,仿真圖,pcb文件(已連好線),和課程設(shè)計(jì)論文模板
|
評(píng)分
-
查看全部評(píng)分
|