制作出來的實物圖如下:
QQ截圖20180825200219.png (1.5 MB, 下載次數: 107)
下載附件
2018-8-25 20:03 上傳
數控電源電路原理圖如下:
QQ截圖20180825200118.png (26.21 KB, 下載次數: 108)
下載附件
2018-8-25 20:02 上傳
QQ截圖20180825200201.png (272.69 KB, 下載次數: 108)
下載附件
2018-8-25 20:03 上傳
單片機數控電源源程序:
- #include "reg52.h"
- //宏定義
- #define uchar unsigned char
- #define uint unsigned int
- //按鍵定義
- sbit KEY1= P2^0;
- sbit KEY2= P2^1;
- sbit KEY3= P2^2;
- sbit KEY4= P2^3;
- //數碼管定義
- sbit W1= P2^4;
- sbit W2= P2^5;
- sbit W3= P2^6;
- sbit W4= P2^7;
- //DAC定義
- sbit CS_5615=P3^2;
- sbit CLK_5615=P3^3;
- sbit DAT_5615=P3^4;
- //報警指示定義
- sbit beep = P3^6;
- sbit Duan = P3^7;
- uint U;
- bit flag=0;
- uint a=0;
- uchar code table[]=
- {
- 0xC0,/*0*/
- 0xF9,/*1*/
- 0xA4,/*2*/
- 0xB0,/*3*/
- 0x99,/*4*/
- 0x92,/*5*/
- 0x82,/*6*/
- 0xF8,/*7*/
- 0x80,/*8*/
- 0x90,/*9*/
- }; //共陽數碼管段碼表 沒有小數點 0~9
- void delay_ms(uint z) //延時函數
- {
- uint a,b;
- for(a=z;a>0;a--)
- for(b=125;b>0;b--);
- }
- void shuma(uint buf)
- {
- P0=table[buf%1000/100];
- W1=0;
- delay_ms(1);
- P0=0xff;
- W1=1;
- P0=table[buf%100/10]&0x7f;
- W2=0;
- delay_ms(1);
- P0=0xff;
- W2=1;
- P0=table[buf%10];
- W3=0;
- delay_ms(1);
- P0=0xff;
- W3=1;
- P0=0xC1;
- W4=0;
- delay_ms(1);
- P0=0xff;
- W4=1;
- }
- void tlc_5615(uint buf)
- {
- uint a,c;
- c=buf;
- CS_5615=0;
- for(a=16;a>0;a--)
- {
- DAT_5615=c>>15;
- c=c<<1;
- CLK_5615=1;
- CLK_5615=0;
- }
- CLK_5615=1;
- CLK_5615=0;
- CLK_5615=1;
- CLK_5615=0;
- CS_5615=1;
- }
- //主函數
- void main(void)
- {
- U=0;
- beep=0;
- delay_ms(300);
- beep=1;
- while(1)
- {
- tlc_5615(U*10);
- shuma(U);
- if(flag==0)
- {
- if(KEY1==0)
- {
- delay_ms(5);
- if(KEY1==0)
- {
- while(!KEY1);
- if(U<120)U++;
- }
- }
- if(KEY2==0)
- {
- delay_ms(5);
- if(KEY2==0)
- {
- while(!KEY2);
- if(U>0) U--;
- }
- }
- if(KEY3==0)
- {
- if(KEY3==0)
- {
- U=50;
- }
- }
- if(KEY4==0)
- {
-
- if(KEY4==0)
- {
- U=0;
- }
- }
- }
- if(Duan==0)
- {
- delay_ms(10);
- if(Duan==0)
- {
- flag=1; //過流標志置高
- beep=0;
- U=0;
- tlc_5615(0);
- }
- else
- {
- beep=1;
- }
- }
- }
- }
復制代碼
|