这是我参加比赛的作品,希望对大家有帮助。
原理图如下(Altium Designer画的工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg52.h>
- #include<absacc.h> //绝对地址访问
- #include"delay.h"
- #define DAC0832 XBYTE[0x7FFF]
- #define mun 2
- sbit K2=P3^2; //+
- sbit K3=P3^3; //-
- sbit K4=P3^4; //三角波
- sbit K5=P3^5; //锯齿波
- sbit K6=P3^6; //自动模式
- /*共阴极数码管 0 1 2 3 4 5 6 7 8 9*/
- //char array[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- /*共阳极数码管 0 1 2 3 4 5 6 7 8 9 */
- char array[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- int main(void)
- {
- uchar i=0,j;
- /*增*/
- if(K2==0)
- {
- delay_ms(10);
- if(K2==0)
- {
- while(K2==0);
- delay_ms(10);
- i++;
- if(i>=99)
- {
- i=0;
- }
- }
- }
- /*减*/
- if(K3==0)
- {
- delay_ms(10);
- if(K3==0)
- {
- while(K3==0);
- delay_ms(10);
- i--;
- if(i<=0)
- {
- i=99;
- }
- }
- }
- /*自动模式*/
- if(K6==0)
- {
- delay_ms(10);
- if(K6==0)
- {
- while(!K6);
- delay_ms(10);
- vip:
- i=0;
- while(i<=99)
- i++;
- if(i>=99)
- {
-
- while(i>=0)
- i--;
- if(i<=0) goto vip;
- }
- }
- }
- /*三角波*/
- if(K4==0)
- {
- delay_ms(10);
- if(K4==0)
- {
- while(!K4);
- delay_ms(10);
- for (j=0; j<0xff;j++)
- {
- DAC0832=j;
- delay_ms(100);
- }
- for (j=0xff; j>0; j--)
- {
- DAC0832=j;
- delay_ms(100);
- }
- }
-
- }
- /*锯齿波*/
- if(K5==0)
- {
- delay_ms(10);
- if(K5==0)
- {
- while(!K5);
- delay_ms(10);
- for(j=0;j<0xff;j++)
- {
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
数控电源.zip
(5.97 MB, 下载次数: 35)
|