本帖最后由 trm999 于 2017-11-5 12:35 編輯
歷時一周,由HT1621B驅動寫起,LCD正常顯示后,加入18B20溫度檢測程序,
可以正常顯示溫度后,又加入按鍵識別,因為是6腳IO,所以只有一個IO可用,
加入短按,2秒長按,5秒長按程序來實現減、加、保存,涉及到保存,
又學習STC單片機的EEPROM,實現保存后由于代碼比較多,又進行模塊化編程學習,
在這里卡了2天,定時器卡了一下午,終于完成
注意:1.EEPROM操作放到中斷里面可以正常操作保存,估計和關閉中斷有關系 2.因為繼電器會干擾動作,要加電容
// - - * * * * * * * HT1621 段碼屏驅動 * * * * * * *
// - - * MCU STC15F104W通過 15F104E未知 內設12M 晶振 *
// - - * C 語言程序 trm999 版本1.0 *
// 溫度容差0.5攝氏度,當空調控制器使用,必須要有容差
// - - * * * * * * * * * * * * * * * * * * * * * * *
/*********************************************************************
數碼管結構 a f b g e c d dp
seg0 seg1 seg2 seg3 seg4 seg5 seg6 seg7
com0 1a 1f 1b 1g 1e 1c 1d 1dp
com1 2a 2f 2b 2g 2e 2c 2d 2dp
com2 3a 3f 3b 3g 3e 3c 3d 3dp
com3 4a 4f 4b 4g 4e 4c 4d 3dp 數據位4位,結構4321
*********************************************************************/
sbit DQ=P3^5; //18B20
sbit SS=P3^0; //繼電器
sbit HT1621_CS=P3^3; // - - HT1621使能引腳
sbit HT1621_WR=P3^2; // - - HT1621時鐘引腳
sbit HT1621_DAT=P3^4; // - - HT1621數據引腳
sbit key_sr=P3^1;//對應按鍵
//shuzi0是左1大8字的代碼表格
uchar code Ht1621_shuzi0[][8]={ //0~9數字數組
{0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x00},//0
{0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00},//1
{0x01,0x00,0x01,0x01,0x01,0x00,0x01,0x00},//2
{0x01,0x00,0x01,0x01,0x00,0x01,0x01,0x00},//3
{0x00,0x01,0x01,0x01,0x00,0x01,0x00,0x00},//4
{0x01,0x01,0x00,0x01,0x00,0x01,0x01,0x00},//5
{0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x00},//6
{0x01,0x00,0x01,0x00,0x00,0x01,0x00,0x00},//7
{0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00},//8
{0x01,0x01,0x01,0x01,0x00,0x01,0x01,0x00},//9
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01},//AUTO 10
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},// 11
};
//shuzi1是左2大8字的代碼表格
uchar code Ht1621_shuzi1[][8]={ //0~9數字數組
{0x02,0x02,0x02,0x00,0x02,0x02,0x02,0x00},//0
{0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00},//1
{0x02,0x00,0x02,0x02,0x02,0x00,0x02,0x00},//2
{0x02,0x00,0x02,0x02,0x00,0x02,0x02,0x00},//3
{0x00,0x02,0x02,0x02,0x00,0x02,0x00,0x00},//4
{0x02,0x02,0x00,0x02,0x00,0x02,0x02,0x00},//5
{0x02,0x02,0x00,0x02,0x02,0x02,0x02,0x00},//6
{0x02,0x00,0x02,0x00,0x00,0x02,0x00,0x00},//7
{0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00},//8
{0x02,0x02,0x02,0x02,0x00,0x02,0x02,0x00},//9
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02},//hight 10
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},// 11
};
//shuzi2是右小8字的代碼表格
uchar code Ht1621_shuzi2[][8]={ //0~9數字數組
{0x04,0x04,0x04,0x00,0x04,0x04,0x04,0x00},//0
{0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00},//1
{0x04,0x00,0x04,0x04,0x04,0x00,0x04,0x00},//2
{0x04,0x00,0x04,0x04,0x00,0x04,0x04,0x00},//3
{0x00,0x04,0x04,0x04,0x00,0x04,0x00,0x00},//4
{0x04,0x04,0x00,0x04,0x00,0x04,0x04,0x00},//5
{0x04,0x04,0x00,0x04,0x04,0x04,0x04,0x00},//6
{0x04,0x00,0x04,0x00,0x00,0x04,0x00,0x00},//7
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00},//8
{0x04,0x04,0x04,0x04,0x00,0x04,0x04,0x00},//9
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04},//low 10
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},// 11
};
//shuzi3是特殊符號代碼表格
uchar code Ht1621_shuzi3[][8]={ //0~9數字數組
{0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//上半圓
{0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},//圓雙線
{0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00},//TEMP
{0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00},//ROOM
{0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00},//SET
{0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00},//下半圓hr
{0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00},//線條
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08},//FAN 7
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},// 8
};
淘寶買的2毛液晶玻璃,接口有變化,com0-com4是反的
全新TD5312P 筆段式 LCD 液晶屏1.jpg (108.9 KB, 下載次數: 160)
下載附件
2016-11-11 13:05 上傳
要用HT1621B驅動,自己做的板子老是有重影,干脆打板子,做工不錯
a0011.jpg (195.2 KB, 下載次數: 149)
下載附件
2016-11-11 13:05 上傳
焊好后,松香不少請無視
a0012.jpg (190.35 KB, 下載次數: 129)
下載附件
2016-11-11 13:05 上傳
15F104E單片機,加的背光,晚上方便
a0013.jpg (168.29 KB, 下載次數: 149)
下載附件
2016-11-11 13:05 上傳
外殼是個問題,基本都是膠粘的,因為汽車使用,所以電源是12V變5V,用的3312模塊的一半
a0014.jpg (296.43 KB, 下載次數: 131)
下載附件
2016-11-11 13:05 上傳
左邊圓的是按鍵
a0015.jpg (175.78 KB, 下載次數: 141)
下載附件
2016-11-11 13:05 上傳
正常顯示溫度,小數字是小數部分,AUTO代表正溫度,負溫度會顯示LOW
a0016.jpg (182.12 KB, 下載次數: 154)
下載附件
2016-11-11 13:05 上傳
設定界面會顯示線條,繼電器閉合會顯示一個小圓圈和兩個細線
a0017.jpg (75.79 KB, 下載次數: 161)
下載附件
2016-11-11 13:05 上傳
源文件因為是模塊化,所以打包吧
|