1 設計任務設計出一個基于51單片機的有一定輸出電壓范圍和功能的數控電源。
0.png (31.1 KB, 下載次數: 117)
下載附件
2017-6-19 23:40 上傳
2 設計要求 (1)輸出電壓:范圍0~+9.9V,步進0.1V,紋波不大于10mV; (2)輸出電壓值由LCD顯示; (3)由“+”、“-”兩鍵分別控制輸出電壓步進增減; (4)輸出電壓可預置在0~9.9V之間的任意一個值; (5)自制鍵盤設置電壓值。
0.png (24.61 KB, 下載次數: 129)
下載附件
2017-6-19 23:39 上傳
0.png (51.46 KB, 下載次數: 136)
下載附件
2017-6-19 23:39 上傳
單片機源程序如下:
- #include<reg51.h>
- #include<math.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit rs=P2^4;
- sbit rw=P2^5;
- sbit ea=P2^6;
- uchar num,i,key,j=0;
- float a2;
- uchar keyscan(void);
- uchar code table[6]="Please";
- uchar code table1[16]=" enter letter...";
- uchar code table2[16]="0123456789abcde.";
- float table3[6];
- uchar code table4[8]="volt(v):";
- uchar code table5[6]="error!";
- uchar table6[6];
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void write_com(uchar com)
- {
- rs=0;
- rw=0;
- P0=com;
- delay(5);
- ea=1;
- delay(5);
- ea=0;
- }
- void write_date(uchar date)
- {
- rs=1;
- rw=0;
- P0=date;
- delay(5);
- ea=1;
- delay(5);
- ea=0;
- }
- void disvol()
- {
- write_com(0x80+0x40);
- for(num=0;num<8;num++)
- {
- write_date(table4[num]);
- delay(10);
- }
- }
-
- void init()
- {
- delay(5);
- write_com(0x38);
- write_com(0x0c);
- write_com(0x06);
- write_com(0x01);
- write_com(0x80);
- for(num=0;num<6;num++)
- {
- write_date(table[num]);
- delay(20);
- }
- write_com(0x80+0x40);
- for(num=0;num<0x10;num++)
- {
- write_date(table1[num]);
- delay(20);
- }
- }
- void diserr()
- {
- write_com(0x80+0x40);
- for(num=0;num<6;num++)
- {
- write_date(table5[num]);
- delay(20);
- }
- delay(2000);
- }
- void he_zhi()
- {
- uint a1,a3,c11,c12;
- float b1,b2,b3,b4,c1,c2,h;
- if(table3[0]!='.')
- {
- if(!table3[1])
- {
- if(j==1)
- {
- table3[1]='.';
- }
- }
- if(!table3[2])
- {
- if(j==2)
- {
- table3[2]='.';
- }
- }
- if(table3[1]=='.')
- {
- b1=table3[0];
- b2=table3[2]/10;
- b3=table3[3]/100;
- h=b1+b2+b3;
- a2=h*256/10;
- a3=a2;
- a1=a3+1;
- c1=a2-a3;
- c2=a1-a2;
- c11=1000*c1;
- c12=1000*c2;
- if(c11>c12)
- {
- P1=a1;
- }
- else
- {
- P1=a3;
- }
-
- if(j==1)
- {
- write_com(0x80+0x49);
- }
- if(j==3)
- {
- write_com(0x80+0x4b);
- }
- if(j==4)
- {
- write_com(0x80+0x4c);
- }
-
- }
-
- else if(table3[2]=='.')
- {
- b1=table3[0]*10;
- b2=table3[1];
- b3=table3[3]/10;
- b4=table3[4]/100;
- h=b1+b2+b3+b4;
- if(h<=10)
- {
- a2=h*256/10;
- a3=a2;
- a1=a3+1;
- c1=a2-a3;
- c2=a1-a2;
- c11=1000*c1;
- c12=1000*c2;
- if(c11>c12)
- {
- P1=a1;
- }
- else
- {
- if(a3==256)
- {
- P1=255;
- }
- else
- {
- P1=a3;
- }
- }
- if(j==2)
- {
- write_com(0x80+0x4a);
- }
- }
-
-
-
- else
- {
- write_com(0x01);
- diserr();
- }
- }
- else
- {
- write_com(0x01);
- diserr();
- }
- }
- if(table3[0]=='.')
- {
- write_com(0x01);
- diserr();
- }
-
- }
- void qingchu(uchar p)
- {
- uchar z;
- for(z=0;z<=5;z++)
- {
- table3[z]=p;
- }
- }
-
- void main()
- {
- init();
-
- delay(4500);
- write_com(0x01);
- write_com(0x80+0x40);
- write_com(0x0f);
- disvol();
- i=0x80+0x48;
- while(1)
- {
- key=keyscan();
- delay(100);
- switch(key)
- {
- case 0xee:write_com(i);
- write_date(table2[0]);table3[j]=0;j++; // table2[16]="0123456789abcde."
- i++;
- break;//0
- case 0xde:write_com(i);
- write_date(table2[1]);table3[j]=1;j++;
- i++;
- break;//1
- case 0xbe:write_com(i);
- write_date(table2[2]);table3[j]=2;j++;
- i++;break;//2
- case 0x7e:write_com(i);
- write_date(table2[3]);table3[j]=3;j++;
- i++;break;//3
- case 0xed:write_com(i);
- write_date(table2[4]);table3[j]=4;j++;
- i++;break;//4
- case 0xdd:write_com(i);
- write_date(table2[5]);table3[j]=5;j++;
- i++;break;//5
- case 0xbd:write_com(i);
- write_date(table2[6]);table3[j]=6;j++;
- i++;break;//6
- case 0x7d:write_com(i);
- write_date(table2[7]);table3[j]=7;j++;
- i++;break;//7
- case 0xeb:write_com(i);
- write_date(table2[8]);table3[j]=8;j++;
- i++;break;//8
- case 0xdb:write_com(i);
- write_date(table2[9]);table3[j]=9;j++;
- i++;break;//9
- case 0xe7:write_com(i);
- write_date(table2[15]);table3[j]='.';j++;
- i++;break;
-
- case 0xbb:write_com(i);
- table3[j]=table3[j]+0.1 ;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
電子綜合實驗1.zip
(119.26 KB, 下載次數: 194)
2017-6-19 15:00 上傳
點擊文件名下載附件
|