最近在社区申请到一块S08P-Lite开发板,打算用它来了解S08P的性能并掌握其用法。此外,也顺便学习一下用CW来设计开发。 首先体验了一下出厂demo的精彩,它比较有意思是将板载的每个外设都检测了个遍,若是不看例程的话,可能你只是看个片头曲,因为你是要参与其中。在打开串口的情况下,你才会见到demo给出的提示。你主要参与的主要在3个阶段,分别是触摸热敏电阻、按下按键及触摸感应板。否则它是不会向下执行的,你也就会错后续的好戏看。 看过demo过了瘾,下面就是构建开发环境,也就是安装CW。由于已经有许多帖子介绍过,故此处从略。为了验证开发环境是否达标,就将demo又重新编译下载了一次,当然为了以示区别,你可以先添加一条输出语句,有了它你就有了下载成功的识别标记。 过了编译下载关,离自主编程就进了一大块。为了初试身手,就选数码管的驱动显示为目标。 为便于使用,资料选用的是数码管显示模块,它可同时显示8位数字,是以串并转换的方式工作的。相较于常规的数码管显示,它具有无需刷新显示的优势,且占用的I/O资源比较少,其接口原理图如图1所示。 图1 模块原理图 在开发板的驱动下,该数码管的显示效果如图2所示。 图2模块显示效果 在驱动该显示模块时,它与MCU的连接关系如下: VCC---3.3V GND---GND CLK---PTE2 DIN---PTE1 CS ---PTE3 定义相关引脚输出高低电平的语句为: #define SMG_CLK_Clr() PORT_PTED_PTED2 = 0 //PTE2 #define SMG_CLK_Set() PORT_PTED_PTED2 = 1 #define SMG_DIN_Clr() PORT_PTED_PTED1 = 0 //PTE1 #define SMG_DIN_Set() PORT_PTED_PTED1 = 1 #define SMG_CS_Clr() PORT_PTED_PTED3 = 0 //PTE3 #define SMG_CS_Set() PORT_PTED_PTED3 = 1 配置相关引脚为输出功能的函数为: - void S08P_smg_init(void)
- {
- PORT_PTEOE_PTEOE1 = 1;
- PORT_PTEOE_PTEOE2 = 1;
- PORT_PTEOE_PTEOE3 = 1;
- SMG_CLK_Set();
- SMG_DIN_Set();
- SMG_CS_Set();
- }
复制代码
显示模块的初始化函数为: - void Init_MAX7219(void)
- {
- Write_Max7219(0x09, 0xff);
- Write_Max7219(0x0a, 0x03);
- Write_Max7219(0x0b, 0x07);
- Write_Max7219(0x0c, 0x01);
- Write_Max7219(0x0f, 0x01);
- }
复制代码 相应的辅助函数是: - void Write_Max7219(char address,char dat)
- {
- SMG_CS_Clr();
- Write_Max7219_byte(address);
- Write_Max7219_byte(dat);
- SMG_CS_Set();
- }
复制代码
实现显示效果的主程序为: - void main(void)
- {
- Sys_Init();
- EnableInterrupts;
- MTIM1_Init();
- S08P_smg_init();
- Init_MAX7219();
- DelayMS(2000);
- Write_Max7219(0x0f, 0x00);
- Write_Max7219(1,8);
- Write_Max7219(2,7);
- Write_Max7219(3,6);
- Write_Max7219(4,5);
- Write_Max7219(5,4);
- Write_Max7219(6,3);
- Write_Max7219(7,2);
- Write_Max7219(8,1);
- while(1);
- }
复制代码
有了这个基础,后面我们可以给开发板再配上更多的显示器件和方式。
|