|
打開實(shí)驗(yàn)板上的蜂鳴,響0.3秒,然后關(guān)閉0.3秒,然后依次這樣循環(huán),
同時(shí)在實(shí)驗(yàn)板上繼電器旁邊的發(fā)光二極管也會(huì)跟隨繼電器不停地閃爍
單片機(jī)源程序如下:
- /***************************************************************************
- 標(biāo)題: 溫控繼電器實(shí)驗(yàn)
- 實(shí)驗(yàn)板:LY5A-L2A開發(fā)板
- 作者: 林洋電子-單片機(jī)
- 說(shuō)明: 溫度低于下線值啟動(dòng)繼電器,達(dá)到上線值關(guān)閉繼電器,注意:使用12M晶振下調(diào)試
- ******************************************************************************/
- //頭文件:
- #include <reg52.h>
- #include "ds18b20.h" //引入DS18B20頭文件
- //引腳定義:
- sbit JDQ=P1^4; //繼電器控制
- sbit SMG_q = P1^0; //定義數(shù)碼管陽(yáng)級(jí)控制腳(千位)
- sbit SMG_b = P1^1; //定義數(shù)碼管陽(yáng)級(jí)控制腳(百位)
- sbit SMG_s = P1^2; //定義數(shù)碼管陽(yáng)級(jí)控制腳(十位)
- sbit SMG_g = P1^3; //定義數(shù)碼管陽(yáng)級(jí)控制腳(個(gè)位)
- //變量定義:
- unsigned char ly_dis[4];//定義顯示緩沖區(qū)
- unsigned char DSU=32; //上線溫度
- unsigned char DSD=30; //下線溫度
- code unsigned char table[]=
- {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- //表:共陽(yáng)數(shù)碼管 0-9
- unsigned char l_posit=0; //顯示位置
- //函數(shù)聲明:
- void display(void);//顯示函數(shù),顯示緩沖區(qū)內(nèi)容
- void delay(void);
- //主函數(shù),C語(yǔ)言的入口函數(shù):
- void main()
- {
- unsigned int i=0;
- float tt;
- int ltemp;
- while(1){
- if(i==0)
- tmpchange(); //溫度轉(zhuǎn)換
- if(i==100){
- tt=tmp()*0.0625; //得到真實(shí)十進(jìn)制溫度值,因?yàn)镈S18B20
- //可以精確到0.0625度,所以讀回?cái)?shù)據(jù)的最低位代表的是0.0625度。
- if(tt<=DSD) //低于下線溫度啟動(dòng)繼電器
- JDQ=0;
- if(tt>=DSU) //達(dá)到上線溫度關(guān)閉繼電器
- JDQ=1;
- ltemp=tt*10+0.5; //放大十倍,這樣做的目的將小數(shù)點(diǎn)后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時(shí)進(jìn)行一個(gè)四舍五入操作。
- if(ltemp<0){ //判斷第一位顯示整數(shù)還是負(fù)號(hào)
- ly_dis[0]=0xbf;
- ltemp=0-ltemp;
- }
- else
- ly_dis[0]=ltemp/1000;//顯示百位值
- ltemp=ltemp%1000;
- ly_dis[1]=ltemp/100; //顯示溫度十位值
- ltemp=ltemp%100;
- ly_dis[2]=ltemp/10; //顯示溫度個(gè)位值
- ly_dis[3]=ltemp%10; //顯示小數(shù)點(diǎn)后一位
- }
- i++;
- if(i==3000)
- i=0;
- display(); //調(diào)用顯示
- delay();
- }
- }
- //顯示函數(shù),參數(shù)為顯示內(nèi)容
- void display()
- {
- P0=0XFF; //
- switch(l_posit){
- case 0: //選擇千位數(shù)碼管,關(guān)閉其它位
- SMG_q=0;
- SMG_b=1;
- SMG_s=1;
- SMG_g=1;
- P0=table[ly_dis[0]]; //輸出顯示內(nèi)容
- break;
- case 1: //選擇百位數(shù)碼管,關(guān)閉其它位
- SMG_q=1;
- SMG_b=0;
- SMG_s=1;
- SMG_g=1;
- P0=table[ly_dis[1]];
- break;
- case 2: //選擇十位數(shù)碼管,關(guān)閉其它位
- SMG_q=1;
- SMG_b=1;
- SMG_s=0;
- SMG_g=1;
- P0=table[ly_dis[2]]&0x7f;
- break;
- case 3: //選擇個(gè)位數(shù)碼管,關(guān)閉其它位
- SMG_q=1;
- SMG_b=1;
- SMG_s=1;
- SMG_g=0;
- P0=table[ly_dis[3]];
- break;
- }
- l_posit++; //每調(diào)用一次將輪流顯示一位
- if(l_posit>3)
- l_posit=0;
- }
- //延時(shí)子函數(shù),短暫延時(shí)
- void delay(void){
- unsigned char i=10;
- while(i--);
- }
復(fù)制代碼
所有資料51hei提供下載:
溫控繼電器.rar
(43.53 KB, 下載次數(shù): 29)
2018-10-23 21:27 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|