#include "code_tab.h"
#define lcd_scl p0_4 // 序列時鐘輸入
#define lcd_sda p0_5 // 序列資料輸入
#define lcd_rst p0_6 // 復位輸入端
#define lcd_dc p0_7 // 資料/命令控制
#define xlevell 0x00
#define xlevelh 0x10
#define xlevel ((xlevelh&0x0f)*16 + xlevell)
#define max_column 132
#define max_row 32
#define brightness 0xcf
#define x_width 132
#define y_width 32
#define oledwrdat(val) spiwritebyte(val, 1)
#define oledwrcmd(val) spiwritebyte(val, 0)
void delay_ms(uint ms)
return;
}/**
* oled ssd1306初始化
*/void lcdinit(void)
/*** 序列資料匯流排傳輸一位元組資料
*@param[in] byte:傳輸的資料
*@param[in] sel:0-寫命令,1-寫資料
*/static
void spiwritebyte(uchar byte, uchar sel)
}/**
* 設定顯示座標
*/void oledsetpos(uchar x, uchar y)
/**
* 全屏
*/void oledfill(uchar bmp_dat)
}/**
* 描述:顯示6*8一組標準ascii字串,顯示的座標(x,y),y為頁範圍0~7
*/void lcdp6x8str(uchar x, uchar y, uchar ch)
oledsetpos(x,y);
for(i=0; i<6; i++)
oledwrdat(f6x8[c][i]);
x += 6;
j++;
}}/**
* 描述:顯示8*16一組標準ascii字串,顯示的座標(x,y),y為頁範圍0~7
*/void lcdp8x16str(uchar x, uchar y, uchar ch)
oledsetpos(x,y);
for(i=0;i<8;i++)
oledwrdat(f8x16[c*16+i]);
oledsetpos(x,y+1);
for(i=0; i<8; i++)
oledwrdat(f8x16[c*16+i+8]);
x+=8;
j++;
}}/**
*/void lcddrawbmp(uchar x0, uchar y0, uchar x1, uchar y1, uchar bmp)
}}
CC2530使用OLED實現自動換行垂直滾動顯示
實驗平台 cc2350 螢幕引數 128 64 驅動晶元 ssd1306 使用oled時,想要重定向printf輸出到oled螢幕上,並實現橫向128列輸出完畢後或者遇到 n 時自動換行顯示,並且將已輸入內容向上移動一行,類似win的命令列視窗。實現的主要思路為ssd1306的設定顯示偏移量 set...
外部中斷 CC2530
中斷在計算機組成中都有詳細介紹。中斷分為外部中斷和內部中斷。對於cc2530片上系統來說,通用i o引腳設定為輸出時候,可以用於產生中斷,可以設定為外部訊號的上公升或下降沿出發。p0,p1,p2都有中斷使能位。對於ien1 2暫存器內的埠所有的位都是公共的。此外還包括其他很多態別的中斷 除了公共中斷...
CC2530學習筆記
第四單元 定時器計數器應用 1 定時器 計數器的分類 cc2530中共包括5個定時器 計數器,分別是定時器1 定時器2 定時器3 定時器4和睡眠定時器。2 定時器 計數器的作用 1 計數器功能 對任意時間間隔的輸入訊號的個數進行計數,一般用來對外界事件進行 計數。其輸入訊號一般來自微控制器外部開關型...