嵌入式LAB 7:字符设备驱动程序

前期工作准备:

Mac OS X + Ubuntu14.04虚拟机

器材准备:

树莓派
MAX7219驱动的8x8 LED矩阵
外接显示屏
不需要面包板

实验步骤

1、选择合适的操作GPIO的方法

我选择了WiringPi,WiringPi中的函数类似于Arduino的wiring系统,这使得熟悉Arduino的用户使用WiringPi更为方便,算得上是Arduino风格的库。WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi遵守GUN Lv3。WiringPi使用C或者C++开发。

下载代码

git clone git://git.drogon.net/wiringPi

安装库

./build

查看版本

gpio –v

2、连接方式

如下图所示
嵌入式LAB 7:字符设备驱动程序_第1张图片

3、编写代码

我们小组上网找了一份ASCII码表的点阵字体合集,可以显示各种符号、数字和字母。进行了一定的初始化工作之后,就能够显示字体了。我们让它每隔半秒显示一个ASCII字符。

#include 

#define uchar unsigned char
#define uint  unsigned int

#include "ascii.h"
//定义Max7219端口
#define Max7219_pinCLK 0
#define Max7219_pinCS   1
#define Max7219_pinDIN 2

void Write_Max7219_byte(uchar DATA) {
    uchar i;
    for (i = 0; i < 8 ; i++) {
        digitalWrite(Max7219_pinCLK, LOW);
        digitalWrite (Max7219_pinDIN, DATA & 0x80) ;
        DATA = DATA << 1;
        digitalWrite(Max7219_pinCLK, HIGH);
    }
}
void Write_Max7219(uchar address, uchar dat) {
    digitalWrite (Max7219_pinCS, LOW) ;

    Write_Max7219_byte(address);           //写入地址,即数码管编号
    Write_Max7219_byte(dat);               //写入数据,即数码管显示数字

    digitalWrite (Max7219_pinCS, HIGH) ;
}

void Init_MAX7219(void) {
    Write_Max7219(0x09, 0x00);       //译码方式:BCD码
    Write_Max7219(0x0a, 0x01);       //亮度
    Write_Max7219(0x0b, 0x07);       //扫描界限;8个数码管显示
    Write_Max7219(0x0c, 0x01);       //掉电模式:0,普通模式:1
    Write_Max7219(0x0f, 0x00);       //显示测试:1;测试结束,正常显示:0
}

int  main() {

    uchar i, j;

    wiringPiSetup () ;
    pinMode (Max7219_pinCLK, OUTPUT) ;
    pinMode (Max7219_pinCS, OUTPUT) ;
    pinMode (Max7219_pinDIN, OUTPUT) ;

    delay(1000);
    Init_MAX7219();
    delay(1000)

你可能感兴趣的:(嵌入式,嵌入式)