電子溫度計1602液晶顯示或數(shù)碼管顯示
#define uchar unsigned char
#defineuint unsigned int
sbit DS=P2^2; //define interface
uint temp; // variable of temperature
uchar flag1; // sign of the result positive or negative
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
//unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
// 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
// 0x87,0xff,0xef};
sbit lcden=P3^4;//液晶en端口
sbit lcdrs=P3^5;//液晶rs端口
void delay(uint count) //delay
{
}
void dsreset() //DS18B20復(fù)位
{
}
bit tmpreadbit() //DS18B20復(fù)讀取一位
{
}
uchar tmpread() //DS18B20復(fù)讀取一字節(jié)
{
}
void tmpwritebyte(uchar dat) //DS18B20寫一字節(jié)到單片機(jī)
{
}
void tmpchange() //DS18B20數(shù)據(jù)轉(zhuǎn)換
{
}
uint tmp() //獲取溫度值
{
}
void write_com(uchar com)//帶個參數(shù)子函數(shù),此段為寫指令子函數(shù)
{
lcdrs=0;//rs=1的時候?qū)憯?shù)據(jù),rs=0的時候?qū)懼噶?/div>
P0=com;//送指令
delay(5);//在EN=1送高脈沖的時候要在指令和rs之后延時TSP1時間(液晶見芯片時序圖)
lcden=1;//EN高脈沖,開始送數(shù)據(jù)
delay(5);//高電平持續(xù)TPW時間
lcden=0;//持續(xù)后拉低電平
}
void write_data(uchar date)//帶個參數(shù)子函數(shù),此段為寫數(shù)據(jù)子函數(shù)
{
lcdrs=1;//rs=1的時候?qū)憯?shù)據(jù),rs=0的時候?qū)懼噶?/div> uchar A1,A2,A2t,A3; A1=temp/100; A2t=temp0; A2=A2t/10; A3=A2t; tmpchange(); { display(tmp()); }
P0=date;//送指令
delay(5);//在EN=1送高脈沖的時候要在指令和rs之后延時TSP1時間(液晶見芯片時序圖)
lcden=1;//EN高脈沖,開始送數(shù)據(jù)
delay(5);//高電平持續(xù)TPW時間
lcden=0;//持續(xù)后拉低電平
}
void write_1602(uchar add,uchar dat)//將寫指令,寫數(shù)據(jù)兩個子函數(shù)放在一個總的1602函數(shù)中,調(diào)用起來方便
{
write_com(0x80+0x40+add);//寫指令,也就是寫一個要寫數(shù)據(jù)的地址,指明寫數(shù)據(jù)的地址
write_data(dat);//寫數(shù)據(jù),寫進(jìn)去要寫的東西
}
void init()//初始化函數(shù)
{
dula=0;
wela=0;
lcden=0;//因為EN高脈沖時才讀寫數(shù)據(jù),所以初始化EN=0
write_com(0x38);
write_com(0x0c);//液晶初始化顯示模式設(shè)置,調(diào)用子函數(shù),寫進(jìn)去初始化指令碼設(shè)置其功能
write_com(0x06);//寫完一個字符后光標(biāo)地址加1
write_com(0x80);//地址指針指向第一行第一個位置
write_com(0x01);//初始化清除屏幕
}
void display(uint temp) //顯示程序
{
write_1602(1,A1+0x30);
write_1602(2,A2+0x30);
write_1602(3,0x2e);
write_1602(4,A3+0x30);
write_1602(6,C);
}
void main()
{
uchar a;
init();
while(1)
{
for(a=10;a>0;a--)
if(temp>=310) //當(dāng)溫度超過31度(僅作試驗用,實際可設(shè)為其他更高的值),蜂鳴器便會報警。
{
P1=0x00;
beep=0;
}
else
{
beep=1;
P1=0xff;
}
}
}
關(guān)鍵詞:
電子溫度計1602液晶數(shù)碼管顯
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論