前天才回到學校,打掃了兩天的宿舍,今天終於有空整理自己的東西了。於是我找到了塵封已久的基於數碼管和oled的arduino桌面級顯示裝置(之前做好了,但是由於各種原因被我拆掉了一些零件),今天可算是把它修復了,以後就掛宿舍欣賞了(手動滑稽)。
關於數碼管程式及oled的arduino程式編寫可檢視我之前的部落格,在此我就不在多敘述。
/* 數碼管和oled多彩顯示
* 用於裝飾桌面
* oled基於adafruit庫編寫
* 數碼管基於時序編寫
*/#include
#include
#include
#define screen_width 128
// oled display width, in pixels
#define screen_height 32
// oled display height, in pixels
#define oled_reset 4
// reset pin # (or -1 if sharing arduino reset pin)
adafruit_ssd1306 display
(screen_width, screen_height,
&wire, oled_reset)
;//oled顯示屏的scl接a5,sda接a4
#define d_a 2
//一一對應電晶體的單個管
#define d_b 3
#define d_c 4
#define d_d 5
#define d_e 6
#define d_f 7
#define d_g 8
#define d_h 9
#define com1 10
//對應4位電晶體的管號位
#define com2 11
#define com3 12
#define com4 13
bool digital_tube_number[37]
[8]=
,//0
,//1
,//2
,//3
,//4
,//5
,//6
,//7
,//8
,//9
,//a10
,//b11
,//c12
,//d13
,//e14
,//f15
,//g16
,//h17
,//i18
,//j19
,//k20
,//l21
,//m22
,//n23
,//o24
,//p25
,//q26
,//r27
,//s28
,//t29
,//u30
,//v31
,//w32
,//x33
,//y34
,//不顯示
,//小數點36.};
int delay_time =2;
void
setup()
for(
int i=com1;i<=com4;i++)}
void
loop()
/* 動態顯示
* a數碼管1顯示,b數碼管2顯示,c數碼管3顯示,d數碼管4顯示,
* time1視覺暫留最短時間,time2動態時間
*/void
digital_tube_dynamic_display
(int a,
int b,
int c,
int d,
int time1,
float time2)
for(
int i=
0;i250/time1;i++)}
void
digital_tube_display_sametime
(int number)
}void
digital_tube_display
(int com,
int number)
switch
(com)
for(
int i=
0;i<
8;i++
)}
基於數碼管的簡單時鐘系統
include 標頭檔案 define uchar unsigned char 巨集定義 之後用uchar代替unsigned char 這裡指無符號字元 define uint unsigned int 巨集定義 同上 無符號整數 sbit beep p0 0 uchar dat 定義初始化顯示時...
數碼管的驅動
乙個數碼管需要點亮多長時間呢?也就是說要多長時間完成一次全部數碼管的掃瞄呢 很明顯 整體掃瞄時間 單個數碼管點亮時間 數碼管個數 答案是 10ms 以內。鬼影 的出現,主要是在數碼管位選和段選產生的瞬態造成的。解決方案有兩種 關閉段或者關閉位。示例 如下 include sbit addr0 p1 ...
驅動數碼管的實驗
課程名稱 微控制器原理與應用 專業班級 嵌入式14103班 姓 名 趙存檔 學 號 14160310317 2015 2016 學年第 1 學期 實驗專案 四 預習報告 專案名稱 驅動7段數碼管實驗 實驗目的及要求 1 掌握用proteus畫電路圖。2 用keil編寫 進行除錯。3 進行 測試 實驗...