欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機pwm+adc+顯示程序
[打印本頁]
作者:
wangfushou
時間:
2019-11-11 11:24
標題:
單片機pwm+adc+顯示程序
#include "lcd1602.h"
#include "key.h"
#include "pwm.h"
#include "adc.h"
#include "gpio.h"
uint8 code table1[]="set:"; //要顯示的內容1放入數組table1 cold,warm
uint8 code table11[]="cold";
uint8 code table12[]="warm";
uint8 code table2[]="now:"; //要顯示的內容2放入數組table2
uint8 set_temperature=20,now_temperature=0; //設定溫度默認22度
uint8 set_shi=0,set_ge=0,now_shi=0,now_ge=0;
uint8 cold_flag=1,warm_flag=0; //默認制熱模式
uint8 duty=0;
void adc_handle()
{
uint8 i;
now_temperature=Get_ADC10bitResult(7);//讀取p1.7口adc轉換的值
for(i=1;i<50;i++)
{
if(now_temperature>=i*15&&now_temperature<=(i+1)*15)
now_temperature=30-i;
}
}
void display()
{
DisplayListChar(0, 0, table1); //從第一行第1列開始顯示內容1
set_shi=set_temperature/10+'0'; //數字轉化為字符
set_ge=set_temperature%10+'0';
DisplayOneChar(4,0,set_shi); //顯示一個字符
DisplayOneChar(5,0,set_ge);
if(cold_flag==1) //顯示“cold”
{
DisplayListChar(9, 0, table11);
if(set_temperature>=now_temperature)
{
PWMx_SetPwmWide(PWM7_ID,249, 0x00FA); //實際為P0.6口 輸出電壓3.3*(1-前數/后數)
PWMx_SetPwmWide(PWM6_ID,249, 0x00FA); //輸出電壓為0
}
if(set_temperature<now_temperature)
{
signed int error=0,last_error=0,now_error=0;
last_error=now_error; //保存上一次的誤差
error=now_temperature-set_temperature; //計算現在的誤差
now_error=error; //保存現在的誤差
duty=251-((now_temperature-set_temperature)*25+(now_error-last_error)*0.8);
PWMx_SetPwmWide(PWM7_ID,duty, 0x00FA); //實際為P0.6口 輸出電壓3.3*(1-前數/后數)
PWMx_SetPwmWide(PWM6_ID,249, 0x00FA); //輸出電壓為0
}
}
if(warm_flag==1)
{
DisplayListChar(9, 0, table12);
if(set_temperature<=now_temperature)
{
PWMx_SetPwmWide(PWM7_ID,249, 0x00FA); //實際為P0.6口 輸出電壓3.3*(1-前數/后數)
PWMx_SetPwmWide(PWM6_ID,249, 0x00FA);
}
if(set_temperature>now_temperature)
{
signed int error=0,last_error=0,now_error=0;
last_error=now_error; //保存上一次的誤差
error=set_temperature-now_temperature; //計算現在的誤差
now_error=error; //保存現在的誤差
duty=251-((set_temperature-now_temperature)*25+(now_error-last_error)*0.8);
PWMx_SetPwmWide(PWM7_ID,249, 0x00FA); //實際為P0.6口 輸出電壓3.3*(1-前數/后數)
PWMx_SetPwmWide(PWM6_ID,duty, 0x00FA);
}
}
DisplayListChar(0, 1, table2); //從第二行第9列開始顯示內容2
adc_handle(); //adc處理函數
now_shi=now_temperature/10+'0';
now_ge=now_temperature%10+'0';
DisplayOneChar(4,1,now_shi);
DisplayOneChar(5,1,now_ge);
}
int main()
{
lcd_init(); //液晶初始化
key_init(); //按鍵初始化
PWM_config(); //pwm配置
ADC_config(); //ADC初始化
PWMx_SetPwmWide(PWM7_ID,249, 0x00FA); //實際為P0.6口 輸出電壓3.3*(1-前數/后數)
PWMx_SetPwmWide(PWM6_ID,249, 0x00FA); //輸出電壓為0
while(1)
{
scan_key(); //按鍵掃描
display(); //顯示
}
}
復制代碼
15 溫度傳感器.rar
2019-11-11 11:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
119.25 KB, 下載次數: 41, 下載積分: 黑幣 -5
作者:
zyx@
時間:
2020-8-12 22:07
沒仿真,都不知都功能能不能實現
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1