找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1174|回复: 0
收起左侧

cc2530 + nokia5110

[复制链接]
ID:440139 发表于 2018-12-5 15:54 | 显示全部楼层 |阅读模式
LCD.h
#ifndef   __LCD
#define   __LCD

#include <ioCC2530.h>
#define  uint  unsigned int
#define  uchar  unsigned  char
#define  LCD_RST  P1_2   // L
#define  LCD_CE   P1_3
#define  LCD_DC   P1_5
#define  SDIN  P1_6
#define  SCLK  P1_7
void LCD_clear(void);
void LCD_WriteByte(uchar Dat,uchar Cmd)
{
   uchar i;
    SCLK=0;
    LCD_CE = 0;                                          //5110片选有效,允许输入数据
    if (Cmd == 0)                                 //写命令
         LCD_DC = 0;                                  
    else  LCD_DC = 1;                          //写数据
        for(i=0;i<8;i++)                                     //传送8bit数据
                {
                     if(Dat&0x80)
                        SDIN = 1;
                        else
                        SDIN = 0;
                        SCLK = 1;
                        Dat = Dat << 1;
                        SCLK = 0;
}
     LCD_CE = 1;       

}
void LCD_SetPos(uchar x,uchar y)
{
    LCD_WriteByte(0x40 | y, 0);                  // column
    LCD_WriteByte(0x80 | x, 0);        // row
  }
void Delay(uint n)
{
uint i;
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
}
void Delay_ms(uint n)
{
uint i,j;
for(i=0;i<n;i++)
{
   for(j=0;j<535;j++);
}
}

void LCD_Init(void)
{
   LCD_RST = 0;     // 产生一个让LCD复位的低电平脉冲
   Delay_ms(5);
   LCD_RST = 1;

   LCD_CE = 0;     // 关闭LCD
    Delay(4);
   LCD_CE = 1;     // 使能LCD
   Delay(4);

    LCD_WriteByte(0x21, 0);        // 使用扩展命令设置LCD模式
    LCD_WriteByte(0xc8, 0);        // 设置液晶偏置电压
    LCD_WriteByte(0x06, 0);        // 温度校正
    LCD_WriteByte(0x13, 0);        // 1:48
           // 使用基本命令,V=0,水平寻址
    LCD_clear();                    // 清屏
    LCD_WriteByte(0x0c, 0);        // 设定显示模式,正常显示

    LCD_CE = 0;      // 关闭LCD
  }

void LCD_clear(void)
{
  unsigned int i;
  LCD_WriteByte(0x20, 0);
  LCD_WriteByte(0x0c, 0);
  LCD_WriteByte(0x80, 0);

  for (i=0; i<504; i++)
  LCD_WriteByte(0, 1);
}


void InitIO(void)
{
  P1SEL&=~0xec;
  P1DIR|=0xec;

}
__code const unsigned char font6x8[][6] =
{
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp  0
  { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !   1
  { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "   2
  { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // #   3
  { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $   4
  { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },   // %   5
  { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // &   6
  { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // '   7
  { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // (   8
  { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // )   9
  { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },   // *   10
  { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },   // +   11
  { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },   // ,   12
  { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },   // -   13
  { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // .   14
  { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // /   15
  { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0   16
  { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1   17
  { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2   18
  { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3   19
  { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4   20
  { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5   21
  { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6   22
  { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7   23
  { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8   24
  { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9   25
  { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // :   26
  { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ;   27
  { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // <   28
  { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // =   29
  { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // >   30
  { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ?   31
  { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },   // @   32
  { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },   // A   33
  { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B   34
  { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C   35
  { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D   36
  { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E   37
  { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F   38
  { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G   39
  { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H   40
  { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I   41
  { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J   42
  { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K   43
  { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L   44
  { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M   45
  { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N   46
  { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O   47
  { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P   48
  { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q   49
  { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R   50
  { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // S   51
  { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T   52
  { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U   53
  { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V   54
  { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W   55
  { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // X   56
  { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y   57
  { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z   58
  { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [   59
  { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },   // 55  60
  { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },   // ]   61
  { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^   62
  { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _   63
  { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // '   64
  { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a   65
  { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b   66
  { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c   67
  { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },   // d   68
  { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e   69
  { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f   70
  { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },   // g   71
  { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h   72
  { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i   73
  { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },   // j   74
  { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k   75
  { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l   76
  { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m   77
  { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n   78
  { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o   79
  { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },   // p   80
  { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },   // q   81
  { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r   82
  { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s   83
  { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t   84
  { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u   85
  { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v   86
  { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w   87
  { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x   88
  { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y   89
  { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z   90
  { 0x00, 0x00, 0xff, 0xff, 0x00, 0x00 },   // ||  91
  { 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x08 },   // <-  92
  { 0x08, 0x08, 0x08, 0x2a, 0x1c, 0x08 },   // ->  94
  { 0x04, 0x02, 0xff, 0x02, 0x04, 0x00 },   // up  94
  { 0x00, 0x20, 0x40, 0xff, 0x40, 0x20 },   // down  95
  { 0x00, 0x01, 0x01, 0xFF, 0x81, 0x81 },   //ADC Series上用的上划线
  { 0x00, 0x80, 0x80, 0xFF, 0x80, 0x80 }    //ADC Series上用的下划线
};

void LCD_write_char(unsigned char c)
{
  unsigned char line;

  c -= 32;
  for (line=0; line<6; line++)
  LCD_WriteByte(font6x8[c][line], 1);
}

void display(int x)
{

  char dis[5];
  unsigned char k=0;
  dis[0]=(unsigned char)(x/10000);
  dis[1]=(unsigned char)((x%10000)/1000);
  dis[2]=(unsigned char)((x%1000)/100);
  dis[3]=(unsigned char)((x%100)/10);
  dis[4]=(unsigned char)(x%10);
while(!dis[k])k++;
LCD_clear();
LCD_SetPos(3,3);
for(;k<5;k++)
  {
     LCD_write_char(0x30+dis[k]);
     Delay(2);

  }



LCD_write_char('c');
LCD_write_char('m');
}
#endif
main.c
#include  "LCD.h"
#include "HC-sr04.c"
unsigned int get_dis;


void main(void)
{
   Delay_ms(2);
  InitIO();
  LCD_Init();
  Delay_ms(2);

  //Init_UltrasoundRanging();
  //HCSR_Init();
  // Timer1_Init();
  while(1)
    {       
      get_dis=DHT11();
      display(get_dis);
      Delay_ms(1000);


     }

}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表