標(biāo)題: 我也玩液晶~~~NOKIA 3310 [附帶程序] [打印本頁]
作者: a119 時間: 2013-6-17 03:40
標(biāo)題: 我也玩液晶~~~NOKIA 3310 [附帶程序]
5_84980_5042fefe24964a5.jpg (71.88 KB, 下載次數(shù): 104)
下載附件
2013-6-17 03:44 上傳
5_84980_8bbe88a76b815ed.jpg (48.93 KB, 下載次數(shù): 108)
下載附件
2013-6-17 03:44 上傳
03年買的NOKIA3310,現(xiàn)在退休了.屏用來做個多功能溫度計.鬧鐘
可以給其他電器定時啟動,延時關(guān)閉,
還可以設(shè)置溫控報警.[用來燒水也可以.]
......
不說了,無圖無真相,上圖.
現(xiàn)在將程序原理圖附上.程序是仿水銀溫度計的界面. |
|
5_84980_28466b0b0c5115b.jpg (75.8 KB, 下載次數(shù): 97)
下載附件
2013-6-17 03:44 上傳
5_84980_33de54ec4f91cf3.jpg (58.94 KB, 下載次數(shù): 123)
下載附件
2013-6-17 03:44 上傳
5_84980_f9985410f3d9165.jpg (108.8 KB, 下載次數(shù): 135)
下載附件
2013-6-17 03:44 上傳
5_84980_c99d5cb9a52d6e3.jpg (91.53 KB, 下載次數(shù): 109)
下載附件
2013-6-17 03:44 上傳
5_84980_4d35e9d6547e690.jpg (67.63 KB, 下載次數(shù): 131)
下載附件
2013-6-17 03:44 上傳
5_84980_045d126f8d2f7f9.jpg (68.08 KB, 下載次數(shù): 90)
下載附件
2013-6-17 03:44 上傳
5_84980_28a2337b84b6dfb.jpg (68.74 KB, 下載次數(shù): 94)
下載附件
2013-6-17 03:44 上傳
5_84980_f375d12009080f6.jpg (51.77 KB, 下載次數(shù): 135)
下載附件
2013-6-17 03:44 上傳
5_84980_e25010e29e93354.jpg (65.53 KB, 下載次數(shù): 129)
下載附件
2013-6-17 03:44 上傳
5_84980_74a61dd7cff3604.jpg (59.05 KB, 下載次數(shù): 106)
下載附件
2013-6-17 03:44 上傳
5_84980_9fa26d1b479cbfb.jpg (62.94 KB, 下載次數(shù): 122)
下載附件
2013-6-17 03:44 上傳
5_84980_61e2a1fd1acb1eb.jpg (65.26 KB, 下載次數(shù): 116)
下載附件
2013-6-17 03:44 上傳
5_84980_0119d473aa18cb8.jpg (69.85 KB, 下載次數(shù): 109)
下載附件
2013-6-17 03:44 上傳
5_84980_04705be321dca5d.jpg (57.91 KB, 下載次數(shù): 93)
下載附件
2013-6-17 03:44 上傳
3310溫度計[程序 原理圖].rar
(140.19 KB, 下載次數(shù): 135)
2013-6-17 03:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: admin 時間: 2013-6-17 03:47
下面是主程序:
#include <config.h>
//外部函數(shù)
//-------------------delay.c--------------------------------
extern void delay(unsigned int delay_time); //延時子程序
//------------------LPH7366.c--------------------------------
#define COM 0 //指令
#define DAT 1 //數(shù)據(jù)
#define STR 1 //字符
extern void LPH7366_init(); //LPH7366初始化
extern void LPH7366_flash(unsigned int delay_time); //LPH7366閃屏函數(shù)
extern void LPH7366_write(unsigned char type,unsigned char in_data); //LPH7366寫函數(shù)
extern void LPH7366_clr(); //顯示屏幕清屏
extern void LPH7366_write_str(unsigned char line,unsigned char row,unsigned char str);
extern void LPH7366_write_han(unsigned char symbol_line,unsigned char symbol_row,unsigned char han);
extern void LPH7366_write_doc(unsigned char symbol_line,unsigned char symbol_row,unsigned char doc);
extern void data_tick(unsigned char i_data); //數(shù)據(jù)拆分函數(shù)
extern unsigned char row(unsigned char stye,unsigned char i); //計算屏幕的列地址 類型
extern unsigned char ge,shi; //數(shù)據(jù)拆分
extern bit data_flag; //是否動態(tài)顯示數(shù)據(jù)標(biāo)志位 0:不動態(tài) 1:動態(tài)
//------------------------time.c--------------------------------
extern void time_init(); //時間初始化
extern struct time
{
unsigned char hour;
unsigned char minute;
unsigned char second;
}local_time,alarm_time,temp_time;
extern bit second_flag; //秒信號標(biāo)志
//------------------------溫度圖.c------------------------------
extern void pic_temp(); //溫度主畫面
extern void pic_temp_face_move(); //臉部表情選擇
extern unsigned char face_flag; //人臉表情標(biāo)志位 1:笑臉 2:閉嘴 3:苦惱 4:講話 5:傷心 6:驚訝 7:沉默
//-------------DS18B20.C-------------------
extern void DS18B20_init(); //DS18B20初始化
extern void DS18B20_send(unsigned char in_data); //DS18B20發(fā)送數(shù)據(jù)
extern void ReadTemperature(); //DS18B20讀取溫度轉(zhuǎn)換好的數(shù)據(jù)
extern void temp_data_turn(float in_data); //DS18B20讀取溫度轉(zhuǎn)換
extern bit T_sign; //溫度正負(fù)符號
extern float temp; //轉(zhuǎn)換好的溫度數(shù)值
extern unsigned char t_bai,t_shi,t_ge,t_feng; //溫度轉(zhuǎn)換好的各個位
extern signed char temp_TH,temp_TL;
//------------DS18B20控制命令-----------------------------
#define T_CONVER 0x44 //開始溫度轉(zhuǎn)換
#define T_CONFIG 0x5f //11位轉(zhuǎn)換
#define T_READ 0xbe //讀暫存器
#define T_WRITE 0x4e //寫暫存器
#define T_ROM_JMP 0xcc //忽略64ROM地址
#define T_COPY_E2 0x48 //將溫度上下限數(shù)值寫到E2ROM
#define T_RECALL_E2 0xb8 //將E2中存儲的溫度上下限數(shù)值復(fù)制到上下限寄存器中。
#define T_cont 0.0625 //溫度轉(zhuǎn)換常數(shù)
//---------------keyB.c---------------------------
extern key_main(); //主鍵盤
//------------------------------------------------
//內(nèi)部函數(shù)
void time_move(); //時間部分動畫
void temp_move(); //溫度部分動畫
void temp_display(); //溫度顯示
void temp_bar_move(); //溫度條部分動畫
void data_clr(); //行33-58清零函數(shù)
void tick_time_temp(); //檢查設(shè)置參數(shù)
bit sign_cross=0; //正負(fù)符號交叉標(biāo)志位
bit ring_flag=1;
unsigned char alarm_tick_time=0;
sbit LED=P1^5;
sbit SPK=P1^6;
unsigned char temp_bar[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
void main()
{
LPH7366_init(); //顯示屏幕初始化
LPH7366_clr(); //屏幕白屏
time_init(); //定時器0初始化
pic_temp();
LPH7366_write_str(1,4,'j');
LPH7366_write_str(1,5,'i');
LPH7366_write_str(1,6,'a');
LPH7366_write_str(1,7,'n');
LPH7366_write_str(1,8,'h');
LPH7366_write_str(1,9,'u');
LPH7366_write_str(1,10,'i');
LPH7366_write_han(2,1,0);
LPH7366_write_han(2,2,1);
LPH7366_write_doc(4,25,0x36);
LPH7366_write_doc(4,26,0x36);
time_init(); //定時器0初始化
while(1) //溫度圖動畫部分
{
data_flag=1;
pic_temp_face_move(); //人臉表情
time_move(); //時間部分動畫
temp_move(); //溫度部分動畫
temp_bar_move(); //溫度條部分動畫
key_main(); //主鍵盤
tick_time_temp(); //查詢各個參數(shù)是否到了設(shè)定數(shù)值
if(temp_TL<temp&&temp<temp_TH)
{
face_flag=1;
}
}
}
void time_move()
{
data_tick(local_time.hour);
LPH7366_write_str(6,1,(shi+16));
LPH7366_write_str(6,2,(ge+16));
if(second_flag==1)
LPH7366_write_str(6,3,26); //
else
LPH7366_write_str(6,3,0); //
data_tick(local_time.minute);
LPH7366_write_str(6,4,(shi+16));
LPH7366_write_str(6,5,(ge+16));
if(second_flag==1)
LPH7366_write_str(6,6,26);
else
LPH7366_write_str(6,6,0); //
data_tick(local_time.second);
LPH7366_write_str(6,7,(shi+16));
LPH7366_write_str(6,8,(ge+16));
if(ring_flag==1)
{
LPH7366_write_str(6,9,0x00);
LPH7366_write_str(6,10,10);
}
else
{
LPH7366_write_str(6,9,0x00);
LPH7366_write_str(6,10,0);
}
}
void temp_move()
{
data_flag=1; //動態(tài)顯示
ReadTemperature(); //讀溫度
temp_data_turn(temp); //轉(zhuǎn)換溫度數(shù)值
temp_display();
}
void temp_display()
{
if(T_sign==0) //正數(shù)
{
if(sign_cross==1)
{
data_clr();
sign_cross=0;
}
if(t_bai!=0)
{
LPH7366_write_str(4,5,(t_bai+16));
LPH7366_write_str(4,6,(t_shi+16));
LPH7366_write_str(4,7,(t_ge+16));
LPH7366_write_doc(4,46,0x01); //C
LPH7366_write_doc(4,47,0x3c);
LPH7366_write_doc(4,48,0x42);
LPH7366_write_doc(4,49,0x42);
LPH7366_write_doc(4,50,0x42);
}
else
{
LPH7366_write_str(4,5,(t_shi+16));
LPH7366_write_str(4,6,(t_ge+16));
LPH7366_write_doc(4,39,0x80); //小數(shù)點
LPH7366_write_str(4,7,(t_feng+16));
LPH7366_write_doc(4,46,0x01); //C
LPH7366_write_doc(4,47,0x3c);
LPH7366_write_doc(4,48,0x42);
LPH7366_write_doc(4,49,0x42);
LPH7366_write_doc(4,50,0x42);
}
}
else //是負(fù)數(shù)
{
if(sign_cross==0)
{
data_clr();
sign_cross=1;
}
if(t_bai!=0)
{
LPH7366_write_str(4,5,13); //負(fù)號
LPH7366_write_str(4,6,(t_bai+16));
LPH7366_write_str(4,7,(t_shi+16));
LPH7366_write_str(4,8,(t_ge+16));
LPH7366_write_doc(4,52,0x01); //C
LPH7366_write_doc(4,53,0x3c);
LPH7366_write_doc(4,54,0x42);
LPH7366_write_doc(4,55,0x42);
LPH7366_write_doc(4,56,0x42);
}
else
{
LPH7366_write_str(4,5,13); //負(fù)號
LPH7366_write_str(4,6,(t_shi+16));
LPH7366_write_str(4,7,(t_ge+16));
LPH7366_write_doc(4,45,0x80); //小數(shù)點
LPH7366_write_str(4,8,(t_feng+16));
LPH7366_write_doc(4,52,0x01); //C
LPH7366_write_doc(4,53,0x3c);
LPH7366_write_doc(4,54,0x42);
LPH7366_write_doc(4,55,0x42);
LPH7366_write_doc(4,56,0x42);
}
}
}
void temp_bar_move()
{
unsigned char k,i,n,j,l;
k=(unsigned char)temp;
i=k/8; //幾行
n=k%8; //幾小行
if(i>=0&&i<=5)
{ if(i>0)
{for(j=5;j>(5-i);j--)
{
LPH7366_write_doc(j,80,temp_bar[7]); //正行全顯
for(l=1;l<=(5-i);l++) //清除上面不顯示的,主要是為了清楚以前殘留顯示
LPH7366_write_doc(l,80,0x00);
}
}
if(n>0) //一行顯示都不到
LPH7366_write_doc((5-i),80,temp_bar[n-1]);
}
LPH7366_write_doc(1,80,0x04);
}
void data_clr()
{
unsigned char i;
for(i=33;i<59;i++)
{
LPH7366_write_doc(4,i,0x00);
}
}
void tick_time_temp()
{
if(ring_flag==1)
{ if(alarm_time.hour==local_time.hour)
{
if(alarm_time.minute==local_time.minute)
{
if(local_time.second<30)
{
SPK=~SPK;
face_flag=4;
}
else
SPK=0;
}
}
}
if(temp_time.hour==local_time.hour)
{
if(temp_time.minute==local_time.minute)
{
temp_move();
face_flag=7;
}
}
if(temp>(temp_TH+0.5))
{
alarm_tick_time++;
if(alarm_tick_time==10)
{
alarm_tick_time=0;
LED=0;
face_flag=6;
}
}
if(temp<(temp_TL-0.5))
{
alarm_tick_time++;
if(alarm_tick_time==10)
{
alarm_tick_time=0;
LED=~LED;
face_flag=3;
delay(2000);
}
}
}
作者: 白色米兔 時間: 2013-10-13 04:03
看看
作者: gaozhaohong 時間: 2014-9-2 16:16
真乃神人也。
作者: heam 時間: 2014-9-15 12:28
謝謝分享
作者: T29 時間: 2014-9-17 09:10
還沒看,應(yīng)該很好
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |