標(biāo)題: 51單片機(jī)數(shù)控穩(wěn)壓電源設(shè)計(jì)報(bào)告與仿真程序 [打印本頁]
作者: sampan 時(shí)間: 2017-7-22 15:07
標(biāo)題: 51單片機(jī)數(shù)控穩(wěn)壓電源設(shè)計(jì)報(bào)告與仿真程序
基于51的數(shù)控直流穩(wěn)壓電源的設(shè)計(jì)資料全套 分享給大家
0.png (43.52 KB, 下載次數(shù): 52)
下載附件
2017-7-22 18:48 上傳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (41.74 KB, 下載次數(shù): 55)
下載附件
2017-7-22 18:49 上傳
數(shù)控穩(wěn)壓電源設(shè)計(jì)報(bào)告
班級(jí):電信10-1班 學(xué)號(hào):3100718116 姓名:羅遠(yuǎn)鋒
此次數(shù)控穩(wěn)壓電源設(shè)計(jì)我主要通過51單片機(jī)控制輸出來控制電源的電壓和顯示。主流程圖如下。
1.001.jpg (20.37 KB, 下載次數(shù): 45)
下載附件
2017-7-22 18:52 上傳
主要輸出部分
1.002.jpg (24.03 KB, 下載次數(shù): 61)
下載附件
2017-7-22 18:52 上傳
1.003.jpg (45.5 KB, 下載次數(shù): 42)
下載附件
2017-7-22 18:52 上傳
加減置數(shù)部分,通過對(duì)4X4矩陣鍵盤的設(shè)置,可任意置數(shù),加減, 自動(dòng)步進(jìn),輸出波形。
1.004.jpg (32.87 KB, 下載次數(shù): 42)
下載附件
2017-7-22 18:52 上傳
1.005.jpg (34.77 KB, 下載次數(shù): 48)
下載附件
2017-7-22 18:52 上傳
預(yù)置數(shù)部分 通過撥碼開關(guān)來預(yù)置。
1.006.jpg (50.62 KB, 下載次數(shù): 53)
下載附件
2017-7-22 18:52 上傳
顯示部分 通過單片機(jī)對(duì)兩位數(shù)碼管進(jìn)行動(dòng)態(tài)掃描
1.007.jpg (56.33 KB, 下載次數(shù): 54)
下載附件
2017-7-22 18:52 上傳
1.008.jpg (71 KB, 下載次數(shù): 64)
下載附件
2017-7-22 18:52 上傳
1.009.jpg (36.91 KB, 下載次數(shù): 46)
下載附件
2017-7-22 18:52 上傳
1.010.jpg (47.01 KB, 下載次數(shù): 58)
下載附件
2017-7-22 18:52 上傳
1.011.jpg (43.76 KB, 下載次數(shù): 35)
下載附件
2017-7-22 18:52 上傳
1.012.jpg (61.52 KB, 下載次數(shù): 34)
下載附件
2017-7-22 18:52 上傳
單片機(jī)源程序如下:
- #include<regx51.h>
- #include<math.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar aa,bb,cc,dd,jj,ii,jjj,iii,key,j;
- uchar time1=0;
- sbit led1=P2^0;
- sbit led2=P2^1;
- sbit ce=P2^4;
- #define timer0_count 0xfc18//定時(shí)器初值,設(shè)置time0 1/1000秒中斷一次
- const seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管的顯示
- const seg_point[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//有小數(shù)點(diǎn)的數(shù)碼管顯示
- uchar scan1;//用來分別顯示2個(gè)數(shù)碼管
- uchar scan2;
- uchar counter[2]={0xf1,0xf2};
- uchar vout=0; //j_片選,vout_電壓輸出
- static void timer0_initialize(void)//timer0的初始化
- //定時(shí)器的初始化程序
- {
- EA=0; //中斷控制器IE--停止接受中斷
- TR0=0; //停止計(jì)時(shí)
- TMOD=0x01; //設(shè)置工作方式為1
- TL0=(timer0_count & 0x00ff);
- TH0=(timer0_count>>8); //設(shè)置time0 初值
- PT0=1; //設(shè)置timer0高優(yōu)先級(jí)
- ET0=1; //允許timer0中斷
- TR0=1; //開始計(jì)時(shí)
- EA=1; //開所有中斷
- }
- void delay(uint t) //tms的延時(shí)
- {
- uchar i;
- uint j;
- for(j=0;j<t;j++)
- for(i=0;i<40;i++);
- }
- void shuc(void)
- {
- uchar nn;
- vout=2*(scan2*10+scan1);//輸出的數(shù)字量
- P1=vout;
- for(nn=0;nn<250;nn++)
- ;
- nn=0;//輸出是存在D/A轉(zhuǎn)換時(shí)間差所以要延時(shí)
- }
- void shaom(void)
- {
- P3=0x0f;//掃描是否有按鍵按下
- if((P3&0x0f)!=0x0f)
- dd=0;
- else
- dd=1;
- }
- void zdbj(void) //自動(dòng)步進(jìn)
- {
- uchar rr;
- jj=scan2;
- ii=scan1;
- shaom();
- for(;jj<10;jj++)
- {
- for(;ii<10;ii++)
- {
- if(dd)
- {
- scan1=ii;
- scan2=jj;
- shuc();
- for(rr=0;rr<250;rr++)
- {
- shaom();
- if(dd)
- delay(70);
- else
- break;
- }
- if(jj==9&&ii==9)
- {
- ii=0;
- jj=0;
- }
-
- }
- else
- {
- jj=10;
- ii=10;
- }
- }
- ii=0;
- }
- jj=0;
- shaom();
- for(;dd==0;)
- shaom();
- }
- void sjb(void) //三角波
- {
- uchar max;
- max=vout;
- shaom();
- for(;dd;)
- {
- for(iii=0;iii<=max;iii=iii+2)
- {
- P1=iii;
- shaom();
- delay(10);
- if(dd==0)
- break;
- }
- if(dd==0)
- break;
- for(;iii>0;iii=iii-2)
- {
- P1=iii;
- shaom();
- delay(5);
- if(dd==0)
- break;
- }
- if(dd==0)
- break;
- }
- P1=max;
- shaom();
- for(;dd==0;)
- shaom();
- }
- unsigned char keyscan(void) //鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法
- {
- unsigned char cord_h,cord_l;//行列值中間變量
- P3=0x0f; //行線輸出全為0
- cord_h=P3&0x0f; //讀入列線值
- if(cord_h!=0x0f) //先檢測有無按鍵按下
- {
- delay(70); //去抖
- if((P3&0x0f)!=0x0f)
- {
- cord_h=P3&0x0f; //讀入列線值
- P3=cord_h|0xf0; //輸出當(dāng)前列線值
- cord_l=P3&0xf0; //讀入行線值 ;;
- while((P3&0xf0)!=0xf0);//等待松開并輸出
- {
- time1=time1+1;
- return(cord_h+cord_l);//鍵盤最后組合碼值
- }
- }
- }return(0); //返回該值
- }
- void timer0_isr(void) interrupt 1 //timer0中斷
- //用于LED數(shù)碼管的動(dòng)態(tài)顯示
- {
-
- TR0=0; //停止時(shí)鐘0
- P2=counter[j];
- switch(j)
- {
- case 0:P0=seg[scan1];break;
- case 1:P0=seg_point[scan2];break;
- default:break; //j為其他情況是跳出循環(huán)
- }
- j++;
- if(j==2)
- j=0;
- TL0=(timer0_count & 0x00ff);
- TH0=(timer0_count>>8); //設(shè)置time0 初值
- TR0=1; //開時(shí)鐘
- }
-
- void main(void)
- {
- ce=0;
- delay(5);
- scan1=(P3/2)%10;
- scan2=P3/20;
- ce=1;
- delay(5);
- shuc();
- timer0_initialize(); //定時(shí)器初始化用于LED顯示
- do
- {
- key=keyscan();
- if(time1==1)
- switch( key)
- {
-
- case 0xee:aa=1;break;//1 按下相應(yīng)的鍵顯示相對(duì)應(yīng)的碼值
- case 0xed:aa=2;break;
- case 0xeb:aa=3;break;
- case 0xe7:aa=4;break;//4
- case 0xde:aa=5;break;//5
- case 0xdd:aa=6;break;//5
- case 0xdb:aa=7;break;//6
- case 0xd7:aa=8;break;//7
- case 0xbe:aa=9;break;//8
- case 0xbd:aa=0;break;//9
- case 0xbb:time1--;break;//確認(rèn)
- case 0xb7: //三角波
- {
- time1=0;
- sjb();
- }
- break;
- case 0x7e: //加
- {
- time1=0;
- scan1++;
- if(scan1==10)
- {
- scan1=0;
- scan2++;
- if(scan2==10)
- scan2=0;
- }
- shuc();
- }break;//c
- case 0x7d: //減
- {
- time1=0;
- scan1--;
- if(scan1==-1)
- {
- scan1=9;
- scan2--;
- if(scan2==-1)
- scan2=9;
- }
- shuc();
- }break;
- case 0x7b: //自動(dòng)步進(jìn)
- {
- time1=0;
- zdbj();
- }break;//e
- case 0x77: time1--;break;
- }
-
- if(time1==2)
- switch( key)
- {
-
- case 0xee:bb=1;break;//0 按下相應(yīng)的鍵顯示相對(duì)應(yīng)的碼值
- case 0xed:bb=2;break;//1
- case 0xeb:bb=3;break;//2
- case 0xe7:bb=4;break;//3
- case 0xde:bb=5;break;//4
- case 0xdd:bb=6;break;//5
- case 0xdb:bb=7;break;//6
- case 0xd7:bb=8;break;//7
- case 0xbe:bb=9;break;//8
- case 0xbd:bb=0;break;//9
- case 0xbb: //確認(rèn)
- {
- scan2=0;
- scan1=aa;
- time1=0;
- shuc();
- }break;
- case 0xb7://三角波
- {
- time1=0;
- sjb();
- }
- break;
- case 0x7e: //加
- {
- time1=0;
- scan1++;
- if(scan1==10)
- {
- scan1=0;
- scan2++;
- if(scan2==10)
- scan2=0;
- }
- shuc();
- }break;//c
- case 0x7d: //減
- {
- time1=0;
- scan1--;
- if(scan1==-1)
- {
- scan1=9;
- scan2--;
- if(scan2==-1)
- scan2=9;
- }
- shuc();
- }break;
- case 0x7b: //自動(dòng)步進(jìn)
- {
- time1=0;
- zdbj();
- }break;//e
- case 0x77: time1--;break;
- }
- ;
- if(time1>2)
- switch( key)
- {
-
- case 0xee:time1--;break;//0 按下相應(yīng)的鍵顯示相對(duì)應(yīng)的碼值
- case 0xed:time1--;break;//1
- case 0xeb:time1--;break;//2
- case 0xe7:time1--;break;//3
- case 0xde:time1--;break;//4
- case 0xdd:time1--;break;//5
- case 0xdb:time1--;break;//6
- case 0xd7:time1--;break;//7
- case 0xbe:time1--;break;//8
- case 0xbd:time1--;break;//9
- case 0xbb: //確認(rèn)
- {
- time1=0;
- scan2=aa;
- scan1=bb;
- time1=0;
- shuc();
- }break;
- case 0xb7://三角波
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
proteus數(shù)控穩(wěn)壓電源.zip
(489.83 KB, 下載次數(shù): 106)
2017-7-22 15:06 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: 1076986846 時(shí)間: 2018-4-3 15:39
值得學(xué)習(xí)謝謝
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
欧美1—12sexvideos|
成人片在线看
|
看av电影|
欧美在线视频一区
|
午夜精品一区二区三区免费视频
|
亚洲人成人一区二区在线观看
|
国产精品一区二区无线
|
午夜影院免费体验区
|
俺去俺来也www色官网cms
|
成人一级视频在线观看
|
亚洲欧美日韩精品
|
九九九视频在线观看
|
狠狠操狠狠干
|
久久国产视频网站
|
国产精品国产自产拍高清
|
国产亚洲黄色片
|
毛片a区
|
wwwxx在线观看|
视频二区国产
|
欧美 日韩 中文
|
国产精品久久久久一区二区
|
亚洲精品一区在线观看
|
人成在线视频
|
少妇一级淫片aaaaaaaaa
|
91麻豆精品国产91久久久久久
|
超碰在线免费
|
亚洲男人网
|
国产成人精品久久二区二区91
|
欧美一二三
|
在线观看中文字幕av
|
日韩福利|
欧美久久久久久久久中文字幕
|
午夜精品久久
|
日韩图区
|
国产精品欧美一区二区三区不卡
|
黄色三级在线播放
|
免费福利视频一区二区三区
|
成人在线视频免费播放
|
成人久久|
久久亚洲精品国产精品紫薇
|
久久久久久国产精品
|