本次设计是通过CCS和AD15设计的一个模拟风扇控制系统,该系统主要包括独立键盘电路模块、直流稳压电路模块、程序下载电路模块、数码管显示模块、三极管LED驱动模块、电机驱动电路模块。本次设计方MSP430G2553为控制核心,合理应用该单片机的资源,以最好的方式实现本设计,并且达到了设计要求中的各项指标。
话不多说,直接上代码:
该代码纯属个人编写,仅供参考,小白一个,哈哈哈哈。当然有好多东西没有封装成函数。
下面展示一些 内联代码片。
// A code block
主函数
// An highlighted block
#include #include "stdint.h" #include "SMG.h" #include "DS18B20.h" #include "Inital.h" #define Point 0x80 const unsigned char tabel[14]={ 0x7e, //'0' 0x06, //'1' 0x6d, //'2' 0x79, //'3' 0x33, //'4' 0x5b, //'5' 0x5f, //'6' 0x70, //'7' 0x7f, //'8' 0x7b, //'9' 0x01, //'-' 0x4e, //'C' 0x00 //'不显示' }; uint8_t time = 0; //时间记录 uint8_t cishu = 0; //50ms*20=1s uint8_t flag0 = 0; //模式标志位 uint8_t flag1 = 0; //时间标志位 uint8_t flag2 = 0; //判断显示温度标志位 uint8_t model = 0; //模式 uint8_t Model = 0; //模式 uint16_t n=0; //记录当前TACCR2的值 uint8_t Tempreture; //时间显示 void Display1(void) { uint8_t baiwei,shiwei,gewei; baiwei=time/100; shiwei=time%100/10; gewei=time%10; Write_Max7219(1,tabel[gewei]); Write_Max7219(2,tabel[shiwei]); Write_Max7219(3,tabel[baiwei]); Write_Max7219(4,tabel[0]); } //model显示 void Display2(void) { Write_Max7219(5,tabel[12]); Write_Max7219(6,tabel[10]); Write_Max7219(7,tabel[model]); Write_Max7219(8,tabel[10]); } //温度显示 void Display3(void) { uint8_t ge,shi; shi=Tempreture/10; ge=Tempreture%10; Write_Max7219(1,tabel[11]); Write_Max7219(2,tabel[ge]); Write_Max7219(3,tabel[shi]); Write_Max7219(4,tabel[12]); } //初始化 void Display_all0(void) { Write_Max7219(1,tabel[0]); Write_Max7219(2,tabel[0]); Write_Max7219(3,tabel[0]); Write_Max7219(4,tabel[0]); Write_Max7219(5,tabel[12]); Write_Max7219(6,tabel[10]); Write_Max7219(7,tabel[0]); Write_Max7219(8,tabel[10]); } /* * main.c */ void main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer InitSystemClock(); InitZHDIO(); InitPWM(); InitTimer0HZD(); Init_Max7219_IO(); Init_Max7219_(); Display_all0(); P1OUT &= ~BIT5;P1OUT &= ~BIT6;P1OUT &= ~BIT7; /*开启总中断*/ __bis_SR_register(GIE); while(1) { Display1(); Display2(); while(flag2==1) { Tempreture = DS18B20_Conert(); Display2(); Display3(); __delay_cycles(2); } __delay_cycles(2); } } #pragma vector = PORT1_VECTOR __interrupt void port1_ISR(void) { __delay_cycles(500000); //0.1s消抖 /*P1.1中断,切换模式*/ if(P1IFG&BIT1) { P1IFG &= ~BIT1; switch(flag0) { case 0: if(time!=0)TA1CCR2 = 400; //20% else TA1CCR2 = 499; flag0=1;model=1;Model=1;n=400;P1OUT |= BIT5;P1OUT &= ~BIT6;P1OUT &= ~BIT7; break; case 1: if(time!=0)TA1CCR2 = 350; //30% else TA1CCR2 = 499; flag0=2;model=2;Model=2;n=350;P1OUT |= BIT6;P1OUT &= ~BIT5;P1OUT &= ~BIT7; break; case 2: if(time!=0)TA1CCR2 = 150; //70% else TA1CCR2 = 499; flag0=0;model=3;Model=3;n=150;P1OUT |= BIT7;P1OUT &= ~BIT5;P1OUT &= ~BIT6; break; default: break; } Display2(); } /*P1.2中断,选择时间*/ if(P1IFG&BIT2) { TA1CCR2 = n; P1IFG &= ~BIT2; TA0CTL &= ~TAIE; /*关闭定时器中断*/ TA0CTL |= TACLR; /*TAR清零,保证重新从0计数*/ switch(flag1) { case 0: time=60;flag1=1;cishu=0; //cishu也清零 break; case 1: time=120;flag1=2;cishu=0; break; case 2: time=180;flag1=0;cishu=0; break; default: break; } TA0CTL |= TAIE; /*开启定时器中断*/ } /*P1.3中断,停止*/ if(P1IFG&BIT3) { P1IFG &= ~BIT3; TA1CCR2=499; //PWM停止产生 time=0; //时间归0 flag1=0; //保证从60s开始 P1OUT &= ~BIT5;P1OUT &= ~BIT6;P1OUT &= ~BIT7; //指示灯全部熄灭 } /*P1.4中断,显示温度*/ if(P1IFG&BIT4) { P1IFG &= ~BIT4; Tempreture = DS18B20_Conert(); if(flag2==1) {flag2=0;model=Model;} //标志位,判断显示温度还是时间 else {flag2=1;model=4;} } } /*定时器中断,倒计时*/ #pragma vector = TIMER0_A1_VECTOR __interrupt void Timer0ZHD(void) { switch(TA0IV) //由于寄存器的共用,需要判断到底是哪个中断被执行 { //读取了TA0IV后,中断标志位自动清零 case 0x02: break; case 0x04: break; case 0x0A: if(cishu==20) //50ms*20=1s { cishu=0; if(time>0)time--; else { time=0; TA1CCR2=499; //PWM停止产生 } } else cishu++; break; default: break; } } 头文件: 下面展示一些 内联代码片。 // A code block var foo = 'bar'; // An highlighted block /* * DS18B20.h * * Created on: 2020年12月1日 * Author: duwei */ #ifndef DS18B20_H_ #define DS18B20_H_ //P2.4 #define DS18B20_DIR P2DIR #define DS18B20_OUT P2OUT #define DS18B20_IN P2IN #define DS18B20_DQ BIT4 #define DS18B20_H DS18B20_OUT|=DS18B20_DQ //DQ置位 #define DS18B20_L DS18B20_OUT&=~DS18B20_DQ //DQ复位
上一篇:TI的CCS集成开发环境的 快捷键设置 自定义的快捷键 实现编译下载功能 CCS9.xxx
下一篇:MSP430笔记3——串口发送数据
推荐阅读最新更新时间:2024-11-16 21:55