共享 希望各位回复一下多多支持
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- /*大胆呼吸*/
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "lcd.h"
- #include "adc.h"
- #include "dht11.h"
- #include "pwm.h"
- #include "ms1100.h"
- // ADC1转换的电压值通过MDA方式传到SRAM
- extern __IO uint16_t ADC_ConvertedValue;
- // 局部变量,用于保存转换计算后的电压值
- extern float TVOC3,CH2O1,vola;
- float temp;//pwm风扇等级
- int level;
- void Display(void);
-
- int main(void)
- {
- u8 x=0;
- u8 lcd_id[12]; //存放LCD ID字符串
- u16 adcx;
- u8 temperature;
- u8 humidity;
- TIM1_PWM_Init(800,0);//不分频。PWM频率=72000/(899+1)=80Khz
- Adc_Init(); //ADC初始化
- delay_init(); //延时函数初始化
- uart_init(9600); //串口初始化为9600
- //LED_Init(); //初始化与LED连接的硬件接口
- LCD_Init();
- /* pwm控速 */
- /* if(TVOC3>=0.000 && TVOC3<=0.618)
- {
- TIM_SetCompare1(TIM1,630); //驱动输出电压
- }
- else if (TVOC3>0.618 && TVOC3<=1.273)
- {
- TIM_SetCompare1(TIM1,650); //驱动输出电压
- }
-
- else if (TVOC3>1.273 && TVOC3<=1.819)
- {
- TIM_SetCompare1(TIM1,899); //驱动输出电压
- }
- */
- // TIM_SetCompare1(TIM1,670); //驱动输出电压
- //sprintf((char*)lcd_id,"%04X",0x8890);//lcddev.id);//将LCD ID打印到lcd_id数组。
- while(DHT11_Init()) //DHT11初始化
- {
- LCD_ShowString(30,130,200,16,16,"Ready!!!");
- delay_ms(200);
- LCD_Fill(30,130,239,130+16,WHITE);
- delay_ms(200);
- }
-
- while(1)
- {
- sprintf((char*)lcd_id,"%f",temp);//TVOC());
- switch(x)
- {
- case 0:LCD_Clear(WHITE);break;
- }
- DHT11_Read_Data(&temperature,&humidity);//读取温湿度值
- LCD_ShowNum(160,100,temperature,2,16); //显示温度
- LCD_ShowNum(140,70,humidity,2,16); //显示湿度
- Display();
- adcx=Get_Adc_Average(ADC_Channel_14,10); //采集端口ADC
- temp=(float)adcx*(3.3/4096);
- adcx=temp;
- TVOC(temp);//电压值转甲醛值,TVOC3
- CH2O(temp);//电压值转CH20, CH2O1
-
-
- LCD_ShowxNum(100,130,TVOC3,1,16,0);
- TVOC3-=(u16)TVOC3;
- TVOC3*=1000;
- LCD_ShowxNum(116,130,TVOC3,3,16,0X80);
- LCD_ShowxNum(100,160,CH2O1,1,16,0);
- CH2O1-=(u16)CH2O1;
- CH2O1*=1000;
- LCD_ShowxNum(116,160,CH2O1,3,16,0X80);
- /* pwm控速 */
- if(TVOC3<0.234)
- {
- TIM_SetCompare1(TIM1,0); //驱动输出电压
- }
-
- else if(TVOC3>=0.234 && TVOC3<=0.618)
- {
- TIM_SetCompare1(TIM1,500); //驱动输出电压
- }
- else if(TVOC3>0.618 && TVOC3<=1.273)
- {
- TIM_SetCompare1(TIM1,700); //驱动输出电压
- }
-
- else if(TVOC3>1.273 )// && TVOC3<=1.819)
- {
- TIM_SetCompare1(TIM1,800); //驱动输出电压
- }
-
- x++;
- if(x==12) x=0;
- LED0=!LED0;
- delay_ms(1000);
- }
- }
- void Display(void)
- {
- POINT_COLOR=RED;
- LCD_ShowString(60,20,200,24,24,"Healthy Breathing");
- LCD_ShowString(60,70,200,16,16,"HUMIDITY:");
- LCD_ShowString(160,70,200,16,16,"%");
- LCD_ShowString(175,100,200,16,16," oC");
- LCD_ShowString(60,100,200,16,16,"TEMPERATURE:");
- LCD_ShowString(60,130,200,16,16,"TVOC:0.000 ppm");
- LCD_ShowString(60,160,200,16,16,"CH2O:0.000 ppm");
- // LCD_ShowString(60,198,200,24,24,"DEGREE :");
- }
复制代码
所有资料51hei提供下载:
最新pcb.zip
(961.51 KB, 下载次数: 212)
|