【Nucleo心得】+ 8x8点阵驱动 (EX02)
[复制链接]
上一个实验是在8x8点阵上静态显示了一组数据,这一次实验是将表格上多组数据依序显示出来,做一个动态显示的演示。
Nucleo板上有一个蓝颜色的使用者按键B1,依原理图上来看按键是安排在PC13接脚,按键松开时是高电平,按下时是低电平。MBED已经将这一只脚命名成 USER_BUTTON,因此程序上直接使用就可以了。
DigitalIn mybutton(USER_BUTTON);
本实验是当按键松开时在8x8点阵上显示一种花样,按下后显示另一种花样,程序码如下:
- #include "mbed.h"
- const char sprite1[][8] = {
- { 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
- ,
- { 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
- ,
- { 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }
- ,
- { 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 }
- ,
- { 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00 }
- ,
- { 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00 }
- ,
- { 0x00, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00 }
- ,
- { 0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18 }
- ,
- { 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x3c }
- ,
- { 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x7e }
- ,
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18 }
- ,
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18 }
- ,
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18 }
- ,
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
- };
- const char sprite2[][8] = {
- { 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00 }
- ,
- { 0x00, 0x00, 0x3C, 0x24, 0x24, 0x3C, 0x00, 0x00 }
- ,
- { 0x00, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x7E, 0x00 }
- ,
- { 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF }
- };
- SPI spimax(SPI_MOSI, SPI_MISO, SPI_SCK);
- DigitalOut CS(PB_6);
- DigitalIn mybutton(USER_BUTTON);
- void max7219(char reg,char dta)
- {
- CS = 0;
- spimax.write(reg);
- spimax.write(dta);
- CS = 1;
- }
- void init_max7219(void)
- {
- max7219(0x09,0);
- max7219(0x0a,8);
- max7219(0x0b,7);
- max7219(0x0c,1);
- max7219(0x0f,0);
- for(char i=0; i<8; i++) {
- max7219(i+1,0);
- }
- }
- int main()
- {
- char j;
- init_max7219();
- j=0;
- while(1) {
- if(mybutton) {
- if(j>=14) {
- j=0;
- }
- for (char i=0; i<8; i++) {
- max7219 (i + 1, sprite1[j][i]);
- }
- }
- else {
- if(j>=4) {
- j=0;
- }
- for (char i=0; i<8; i++) {
- max7219 (i + 1, sprite2[j][i]);
- }
- }
- j++;
- wait_ms(100);
- }
- }
复制代码
视频如下:
http://v.youku.com/v_show/id_XNzk4NTU2NjQ0.html
【Nucleo心得】+ 8x8点阵驱动 (EX01)
https://bbs.eeworld.com.cn/thread-448651-1-1.html
|