功能: 點亮由FD650B ic驅動的電子屏,并實現按一下按鍵就數字加1,本來想時間周期里可以自動加1的,結果好像有沖突,以后再說 芯片型號STC15F104W單片機先找650b的廠家看資料,就看到了幾個說明書。并沒有想象中的源碼,然后網上到處百度,找的的資料是偏面向對象的寫法,看不懂,自己瞎擼吧。顯示屏板子就直接用的拆機設備的前面板,這里我們多。最終效果。
1.jpg (42.68 KB, 下載次數: 34)
下載附件
2022-5-28 17:22 上傳
那個面板圖也找了份。
2.jpg (85.86 KB, 下載次數: 50)
下載附件
2022-5-28 17:19 上傳
話不多說,直接上源碼吧。
先上hd650.h文件
單片機源程序如下:
- #ifndef __FP__FD650__H
- #define __FP__FD650__H
- /*** type redefine ***/
- typedef unsigned char MS_U8;
- typedef unsigned short MS_U16;
- typedef unsigned long MS_U32;
- typedef int MS_S32;
- typedef int MS_BOOL;
- /****************************begin for FD650 define struct***************************** */
- #define LEDMAPNUM 40
- //key mapping
- typedef struct
- {
- MS_U8 keyMapData;
- MS_U8 keyMapLevel;
- } MS_KEYMAP;
- //led mapping
- typedef struct _led_bitmap
- {
- MS_U8 character;
- MS_U8 bitmap;
- } led_bitmap;
- //數碼管顯示常量
- static const led_bitmap bcd_decode_tab[LEDMAPNUM] =
- { {'0', 0x3F}, {'1', 0x06}, {'2', 0x5B}, {'3', 0x4F},
- {'4', 0x66}, {'5', 0x6D}, {'6', 0x7D}, {'7', 0x07},
- {'8', 0x7F}, {'9', 0x6F}, {'a', 0x77}, {'A', 0x77},
- {'b', 0x7C}, {'B', 0x7C}, {'c', 0x58}, {'C', 0x39},
- {'d', 0x5E}, {'D', 0x5E}, {'e', 0x79}, {'E', 0x79},
- {'f', 0x71}, {'F', 0x71}, {'H', 0x76}, {'h', 0x74},
- {'o', 0x5C}, {'t', 0x78},
- {'l', 0x30}, {'L', 0x38}, {'N', 0x37},{'n', 0x37},
- {'p', 0x73},{'P', 0x73}, {'O', 0x3F}, {'u', 0x1C},
- {'U', 0x3E},{'S', 0x6D}, {'s', 0x6D},{'-', 0x40},
- {' ', 0x00}
- };//BCD decode
- /****************************end for FD650 define struct***************************** */
- /* *************************************硬件相關*********************************************** */
- #define HIGH 1
- #define LOW 0
- #define FRONTPNL_START_TIME_MS 3 //((1000 / 50) / LED_NUM)
- #define FRONTPNL_PERIOD_TIME_MS 150
- #define FP_LED_MAX_NUM 4
- #define FrontPnl_MSECS_TICK 100 //100 msecs/tick
- #define FrontPnl_TICKS_SEC 1 //10 ticks/sec
- /* ********************************************************************************************* */
- // 設置系統參數命令
- #define FD650_BIT_ENABLE 0x01 // 開啟/關閉位
- #define FD650_BIT_SLEEP 0x04 // 睡眠控制位
- #define FD650_BIT_7SEG 0x08 // 7段控制位
- #define FD650_BIT_INTENS1 0x10 // 1級亮度
- #define FD650_BIT_INTENS2 0x20 // 2級亮度
- #define FD650_BIT_INTENS3 0x30 // 3級亮度
- #define FD650_BIT_INTENS4 0x40 // 4級亮度
- #define FD650_BIT_INTENS5 0x50 // 5級亮度
- #define FD650_BIT_INTENS6 0x60 // 6級亮度
- #define FD650_BIT_INTENS7 0x70 // 7級亮度
- #define FD650_BIT_INTENS8 0x00 // 8級亮度
- #define FD650_SYSOFF 0x0400 // 關閉顯示、關閉鍵盤
- #define FD650_SYSON ( FD650_SYSOFF | FD650_BIT_ENABLE ) // 開啟顯示、鍵盤
- #define FD650_SLEEPOFF FD650_SYSOFF // 關閉睡眠
- #define FD650_SLEEPON ( FD650_SYSOFF | FD650_BIT_SLEEP ) // 開啟睡眠
- #define FD650_7SEG_ON ( FD650_SYSON | FD650_BIT_7SEG ) // 開啟七段模式
- #define FD650_8SEG_ON ( FD650_SYSON | 0x00 ) // 開啟八段模式
- #define FD650_SYSON_1 ( FD650_SYSON | FD650_BIT_INTENS1 ) // 開啟顯示、鍵盤、1級亮度
- #define FD650_SYSON_4 ( FD650_SYSON | FD650_BIT_INTENS4 ) // 開啟顯示、鍵盤、4級亮度
- #define FD650_SYSON_8 ( FD650_SYSON | FD650_BIT_INTENS8 ) // 開啟顯示、鍵盤、8級亮度
- // 加載字數據命令
- #define FD650_DIG0 0x1400 // 數碼管位0顯示,需另加8位數據
- #define FD650_DIG1 0x1500 // 數碼管位1顯示,需另加8位數據
- #define FD650_DIG2 0x1600 // 數碼管位2顯示,需另加8位數據
- #define FD650_DIG3 0x1700 // 數碼管位3顯示,需另加8位數據
- #define FD650_DOT 0x0080 // 數碼管小數點顯示
- // 讀取按鍵代碼命令
- #define FD650_GET_KEY 0x0700 // 獲取按鍵,返回按鍵代碼
-
- #endif
復制代碼
然后上主程序文件 單片機用的是那種最小開發板,幾元錢的那種
最后源碼也傳到開源平臺了,希望大家用的開心
|