資源簡介
基于單片機溫控風扇,pwm波調控,數碼管顯示,適合畢設。
代碼片段和文件信息
#include? ?????????//調用單片機頭文件
#define?uchar?unsigned?char??//無符號字符型?宏定義 變量范圍0~255
#define?uint??unsigned?int ?//無符號整型?宏定義 變量范圍0~65535
//數碼管段選定義??????0?????1????2????3????4????5 6 ?7 ??8 ???9
uchar?code?smg_du[]={0x280xee0x420x720xe50xa80x410x770x200xa0
?? ?0x600x250x390x260x310x710xff}; ?//斷碼
//數碼管位選定義
uchar?code?smg_we[]={0xef0xdf0xbf0x7f};
uchar?dis_smg[4]?=?{0};
uchar?smg_i?=?3;????//顯示數碼管的個位數
sbit?dq???=?P2^4; //18b20?IO口的定義
bit?flag_lj_en; ?//按鍵連加使能
bit?flag_lj_3_en; ?//按鍵連3次連加后使能??加的數就越大了?
uchar?key_timekey_value;??????//用做連加的中間變量
bit?key_500ms??;
sbit?pwm?=?P2^3;??
uchar?f_pwm_l?; ??//
uint?temperature?;??//
bit?flag_300ms?;
uchar?menu_1;???????//菜單設計的變量
uint?t_high?=?300t_low?=?100; ???//溫度上下限值?
/***********************1ms延時函數*****************************/
void?delay_1ms(uint?q)
{
uint?ij;
for(i=0;i for(j=0;j<120;j++);
}
/***********************小延時函數*****************************/
void?delay_uint(uint?q)
{
while(q--);
}
/***********************數碼顯示函數*****************************/
void?display()
{
static?uchar?i;???
i++;
if(i?>=?smg_i)
i?=?0;
P1?=?0xff; ?//消隱?
P3?=?smg_we[i]; ? ?//位選
P1?=?dis_smg[i]; ?//段選 ????????
}
/***********************18b20初始化函數*****************************/
void?init_18b20()
{
bit?q;
dq?=?1; //把總線拿高
delay_uint(1); ????//15us
dq?=?0; //給復位脈沖
delay_uint(80); //750us
dq?=?1; //把總線拿高?等待
delay_uint(10); //110us
q?=?dq; //讀取18b20初始化信號
delay_uint(20); //200us
dq?=?1; //把總線拿高?釋放總線
}
/*************寫18b20內的數據***************/
void?write_18b20(uchar?dat)
{
uchar?i;
for(i=0;i<8;i++)
{ ?//寫數據是低位開始
dq?=?0; ?//把總線拿低寫時間隙開始?
dq?=?dat?&?0x01;?//向18b20總線寫數據了
delay_uint(5); ?//?60us
dq?=?1; ?//釋放總線
dat?>>=?1;
}
}
/*************讀取18b20內的數據***************/
uchar?read_18b20()
{
uchar?ivalue;
for(i=0;i<8;i++)
{
dq?=?0; ?//把總線拿低讀時間隙開始?
value?>>=?1; ?//讀數據是低位開始
dq?=?1; ?//釋放總線
if(dq?==?1) ?//開始讀寫數據?
value?|=?0x80;
delay_uint(5); ?//60us 讀一個時間隙最少要保持60us的時間
}
return?value; ?//返回數據
}
/*************讀取溫度的值?讀出來的是小數***************/
uint?read_temp()
{
uint?value;
uchar?low; ???//在讀取溫度的時候如果中斷的太頻繁了,就應該把中斷給關了,否則會影響到18b20的時序
init_18b20(); ???//初始化18b20
write_18b20(0xcc); ???//跳過64位ROM
write_18b20(0x44); ???//啟動一次溫度轉換命令
delay_uint(50); ???//500us
init_18b20(); ???//初始化18b20
write_18b20(0xcc); ???//跳過64位ROM
write_18b20(0xbe); ???//發出讀取暫存器命令
low?=?read_18b20(); ???//讀溫度低字節
value?=?read_18b20();??//讀溫度高字節
value?<<=?8; ???//把溫度的高位左移8位
value?|=?low; ???//把讀出的溫度低位放到value的低八位中
value?*=?0.625; ???????//轉換到溫度值?小數
return?value; ???//返回讀出的溫度?帶小數
}
/*************定時器0初始化程序***************/
void?time_init() ??
{
EA???=?1; ? ??//開總中斷
TMOD?=?0X21; ??//定時器0、定時器1工作方式1
ET0??=?1; ??//開定時器0中斷?
TR0??=?1; ??//允許定時器0定時
ET1??=?1; ??//開定時器0中斷?
TR1??=?1; ??//允許定時器0定時
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????180??2017-02-03?13:12??##溫空風扇?數碼管顯示\Altium?Designer?Sunner畫圖軟件學習視頻\Altium?Designer?Sunner畫圖軟件學習視頻.txt
?????文件????????182??2017-02-03?12:30??##溫空風扇?數碼管顯示\Altium?Designer?Sunner畫圖軟件安裝視頻\Altium?Designer?Sunner畫圖軟件安裝視頻.txt
?????文件????????182??2017-02-03?14:06??##溫空風扇?數碼管顯示\AltiumDesignerSummer9?畫圖軟件安裝包\AltiumDesignerSummer9?畫圖軟件.txt
?????文件????????157??2017-02-03?12:35??##溫空風扇?數碼管顯示\C語言視頻教程\C語言視頻教程.txt
?????文件????????161??2017-02-03?12:29??##溫空風扇?數碼管顯示\KEIL?軟件安裝視頻\KEIL?軟件安裝視頻.txt
?????文件????????173??2017-02-19?16:04??##溫空風扇?數碼管顯示\keil4軟件安裝包?開發工具地址\開發工具.txt
?????文件????2697759??2009-01-05?19:56??##溫空風扇?數碼管顯示\MCU?單片機芯片資料\STC89C52RC.pdf
?????文件????????151??2017-02-06?16:55??##溫空風扇?數碼管顯示\MCU?單片機芯片資料\單片機所有芯片51、52資料.txt
?????文件??????33623??2017-02-03?23:06??##溫空風扇?數碼管顯示\PCB?圖\PCB圖.png
?????文件????????168??2017-02-03?12:29??##溫空風扇?數碼管顯示\Protel?99?軟件安裝包\Protel?99?軟件安裝包.txt
?????文件????????170??2017-02-03?12:28??##溫空風扇?數碼管顯示\Protel?99?軟件安裝視頻\Protel?99?軟件安裝視頻.txt
?????文件????????242??2017-02-03?12:54??##溫空風扇?數碼管顯示\Protel?99畫圖軟件學習視頻\Protel?99畫圖軟件學習視頻.txt
?????文件????????165??2017-02-23?21:31??##溫空風扇?數碼管顯示\Proteus?ISIS??仿真軟件學習視頻\Proteus仿真軟件學習視頻.txt
?????文件????????174??2017-02-03?12:27??##溫空風扇?數碼管顯示\Proteus?軟件安裝包\Proteus?軟件安裝包.txt
?????文件????????167??2017-02-03?14:29??##溫空風扇?數碼管顯示\PROTEUS仿真軟件的安裝方法\PROTEUS仿真軟件的安裝方法.txt
?????文件??????12800??2017-02-03?14:43??##溫空風扇?數碼管顯示\使用前必讀.doc
?????文件??????19968??2017-10-12?22:43??##溫空風扇?數碼管顯示\元件清單\元件清單?溫控風扇.xls
?????文件??????59879??2013-10-26?17:23??##溫空風扇?數碼管顯示\制作過程\18B20溫度傳感器\1.jpg
????..A.SH.??????4096??2013-12-07?21:41??##溫空風扇?數碼管顯示\制作過程\18B20溫度傳感器\Thumbs.db
????..A.SH.?????17920??2013-12-07?21:53??##溫空風扇?數碼管顯示\制作過程\4位共陽數碼管\Thumbs.db
?????文件??????71004??2013-12-07?21:47??##溫空風扇?數碼管顯示\制作過程\4位共陽數碼管\數碼管?(1).jpg
?????文件??????43302??2013-12-07?21:50??##溫空風扇?數碼管顯示\制作過程\4位共陽數碼管\數碼管.jpg
?????文件??????16626??2013-03-29?13:36??##溫空風扇?數碼管顯示\制作過程\三極管\NPN型原理圖.jpg
?????文件??????10402??2013-03-29?13:34??##溫空風扇?數碼管顯示\制作過程\三極管\PNP型原理圖.jpg
????..A.SH.?????25088??2014-01-08?16:57??##溫空風扇?數碼管顯示\制作過程\三極管\Thumbs.db
?????文件???????3296??2013-03-29?14:00??##溫空風扇?數碼管顯示\制作過程\三極管\三極管介紹.txt
?????文件??????19552??2014-01-08?16:57??##溫空風扇?數碼管顯示\制作過程\三極管\三極管介紹說明.jpg
?????文件??????17239??2013-03-29?13:29??##溫空風扇?數碼管顯示\制作過程\三極管\三極管引腳介紹.jpg
?????文件??????16763??2014-02-11?21:49??##溫空風扇?數碼管顯示\制作過程\發光二極管\發光二極管.jpg
?????文件???????9193??2014-02-11?21:50??##溫空風扇?數碼管顯示\制作過程\發光二極管\發光二極管1.jpg
............此處省略113個文件信息
評論
共有 條評論