12
返回列表 发新帖
楼主: zhjb1

[分享] KL27 mini实验二 ADC to LCD

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-11-19 17:08:05 | 显示全部楼层
    kiri 发表于 2016-11-18 17:12
    能发一下你编的程序吗?我的ADC数据读不到LCD上,3081155854@qq.com

    今天刚回来,过几天发上去。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-12-8 10:21
  • 签到天数: 743 天

    连续签到: 1 天

    [LV.9]以坛为家II

    0

    主题

    1650

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    19069
    最后登录
    2021-5-6
    发表于 2016-11-19 21:56:57 | 显示全部楼层
    谢谢分享 赞一个
    我又来签到了.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-11-20 09:36:29 | 显示全部楼层
    下边是与LCD驱显相关的代码,由于128X64黑白LCD,需要按照自己的LCD重新设置一些参数。
    ADC 2 LCD
    代码lcd.c:
    //128x64
    #include <stdint.h>
    #include "gpio.h"
    #include "common.h"
    #include "dma.h"
    #include "lpuart.h"

    extern uint32_t t=0,tt=0,k,js,duty,duty1,duty2,speed;
    extern int value,value2,value3,dir1,dir2,ctrl,ford,left,right;

    //128x64 LCD models
    //8X8 ASCII Code
    const unsigned char asc2[][8]={//8x6 Dots 32 to 127 + caratteri alfa_omega a seguire
    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},// space
    {0x00,0x1c,0x22,0x24,0x18,0x16,0x00,0x00},//!-1=32
    {0x00,0x00,0x07,0x00,0x07,0x00,0x00,0x00},//"
    {0x00,0x02,0x04,0x78,0x10,0x0c,0x02,0x00},//#
    {0x00,0x7e,0x15,0x15,0x15,0x0a,0x00,0x00},//$
    {0x00,0x23,0x13,0x08,0x64,0x62,0x00,0x00},//%
    {0x00,0x36,0x49,0x55,0x22,0x50,0x00,0x00},//&
    {0x00,0x00,0x05,0x03,0x00,0x00,0x00,0x00},//'
    {0x00,0x00,0x1C,0x22,0x41,0x00,0x00,0x00},//(
    {0x00,0x00,0x41,0x22,0x1C,0x00,0x00,0x00},//)
    {0x00,0x14,0x08,0x3E,0x08,0x14,0x00,0x00},//**/-10=42
    {0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00},//+
    {0x00,0x00,0x50,0x30,0x00,0x00,0x00,0x00},//;
    {0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00},//-
    {0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00},//.
    {0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x00},///
    {0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00},//0
    {0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00},//1
    {0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00},//2
    {0x00,0x21,0x41,0x45,0x4B,0x31,0x00,0x00},//3
    {0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00},//4-20
    {0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00},//5
    {0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00},//6
    {0x00,0x01,0x01,0x79,0x05,0x03,0x00,0x00},//7
    {0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00},//8
    {0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00},//9
    {0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00},//:
    {0x00,0x00,0x56,0x36,0x00,0x00,0x00,0x00},//;
    {0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x00},//<
    {0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00},//=
    {0x00,0x00,0x41,0x22,0x14,0x08,0x00,0x00},//>-30
    {0x00,0x02,0x01,0x51,0x09,0x06,0x00,0x00},//?
    {0x00,0x32,0x49,0x79,0x41,0x3E,0x00,0x00},//@
    {0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x00},//A
    {0x00,0x41,0x7F,0x49,0x49,0x36,0x00,0x00},//B
    {0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00},//C
    {0x00,0x41,0x7F,0x41,0x41,0x3E,0x00,0x00},//D
    {0x00,0x7F,0x49,0x49,0x49,0x49,0x00,0x00},//E
    {0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00},//F
    {0x00,0x3E,0x41,0x41,0x49,0x7A,0x00,0x00},//G
    {0x00,0x7F,0x08,0x08,0x08,0x7F,0x00,0x00},//H
    {0x00,0x00,0x41,0x7F,0x41,0x00,0x00,0x00},//I-40
    {0x00,0x20,0x40,0x41,0x3F,0x01,0x00,0x00},//J
    {0x00,0x7F,0x08,0x14,0x22,0x41,0x00,0x00},//K
    {0x00,0x7F,0x40,0x40,0x40,0x40,0x00,0x00},//L
    {0x00,0x7F,0x02,0x0C,0x02,0x7F,0x00,0x00},//M
    {0x00,0x7F,0x06,0x08,0x30,0x7F,0x00,0x00},//N
    {0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00},//O
    {0x00,0x7F,0x09,0x09,0x09,0x06,0x00,0x00},//P
    {0x00,0x3E,0x41,0x51,0x21,0x5E,0x00,0x00},//Q
    {0x00,0x7F,0x09,0x19,0x29,0x46,0x00,0x00},//R
    {0x00,0x26,0x49,0x49,0x49,0x32,0x00,0x00},//S
    {0x00,0x01,0x01,0x7F,0x01,0x01,0x00,0x00},//T-50
    {0x00,0x3F,0x40,0x40,0x40,0x3F,0x00,0x00},//U
    {0x00,0x1F,0x20,0x40,0x20,0x1F,0x00,0x00},//V
    {0x00,0x7F,0x20,0x18,0x20,0x7F,0x00,0x00},//W
    {0x00,0x63,0x14,0x08,0x14,0x63,0x00,0x00},//X
    {0x00,0x07,0x08,0x70,0x08,0x07,0x00,0x00},//Y
    {0x00,0x61,0x51,0x49,0x45,0x43,0x00,0x00},//Z
    {0x00,0x00,0x7F,0x41,0x41,0x00,0x00,0x00},//[
    {0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00},//\//
    {0x00,0x00,0x41,0x41,0x7F,0x00,0x00,0x00},//]
    {0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x00},//^-60
    {0x00,0x40,0x40,0x40,0x40,0x40,0x00,0x00},//_
    {0x00,0x00,0x00,0x07,0x05,0x07,0x00,0x00},//' Insty
    {0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00},//a
    {0x00,0x7F,0x48,0x44,0x44,0x38,0x00,0x00},//b
    {0x00,0x38,0x44,0x44,0x44,0x28,0x00,0x00},//c
    {0x00,0x38,0x44,0x44,0x48,0x7F,0x00,0x00},//d
    {0x00,0x38,0x54,0x54,0x54,0x18,0x00,0x00},//e
    {0x00,0x00,0x08,0x7E,0x09,0x02,0x00,0x00},//f
    {0x00,0x0C,0x52,0x52,0x4C,0x3E,0x00,0x00},//g
    {0x00,0x7F,0x08,0x04,0x04,0x78,0x00,0x00},//h-70
    {0x00,0x00,0x44,0x7D,0x40,0x00,0x00,0x00},//i
    {0x00,0x20,0x40,0x44,0x3D,0x00,0x00,0x00},//j
    {0x00,0x00,0x7F,0x10,0x28,0x44,0x00,0x00},//k
    {0x00,0x00,0x41,0x7F,0x40,0x00,0x00,0x00},//l
    {0x00,0x7C,0x04,0x78,0x04,0x78,0x00,0x00},//m
    {0x00,0x7C,0x08,0x04,0x04,0x78,0x00,0x00},//n
    {0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00},//o
    {0x00,0x7E,0x0C,0x12,0x12,0x0C,0x00,0x00},//p
    {0x00,0x0C,0x12,0x12,0x0C,0x7E,0x00,0x00},//q
    {0x00,0x7C,0x08,0x04,0x04,0x08,0x00,0x00},//r-80
    {0x00,0x58,0x54,0x54,0x54,0x64,0x00,0x00},//s
    {0x00,0x04,0x3F,0x44,0x40,0x20,0x00,0x00},//t
    {0x00,0x3C,0x40,0x40,0x3C,0x40,0x00,0x00},//u
    {0x00,0x1C,0x20,0x40,0x20,0x1C,0x00,0x00},//v
    {0x00,0x3C,0x40,0x30,0x40,0x3C,0x00,0x00},//w
    {0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00},//x
    {0x00,0x1C,0xA0,0xA0,0x90,0x7C,0x00,0x00},//y
    {0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00},//z
    {0x00,0x00,0x08,0x36,0x41,0x00,0x00,0x00},//{
    {0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x00},//|-90
    {0x00,0x00,0x41,0x36,0x08,0x00,0x00,0x00},//}
    {0x00,0x08,0x04,0x08,0x10,0x08,0x00,0x00},//~
    {0x00,0x5c,0x62,0x02,0x62,0x5c,0x00,0x00},//OM
    {0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14},//horiz lines-94
    };

    //Write Plus
    void wri(void){
      GPIO_WriteBit(HW_GPIOD,6,0);
      GPIO_WriteBit(HW_GPIOD,6,1);
    }
    //a B Data to LCD,dt:data,com:1-data/0-command
    void b2l(unsigned char dt,unsigned char com){
      unsigned char i;
      if(com) GPIO_WriteBit(HW_GPIOD,5,1);else GPIO_WriteBit(HW_GPIOD,5,0);
      for(i=0;i<8;i++){
        if(dt&0x80)GPIO_WriteBit(HW_GPIOD,7,1);else{GPIO_WriteBit(HW_GPIOD,7,0);};
        dt=dt<<1;
        wri();
      }
    }
    //Set LCD col:0-102 pag:0-8
    void setXY(unsigned char pag,unsigned char col){
    b2l(0xB0+pag,0);//page
    //col+=0x04;//+4-->4bit
    b2l(0x10+((col&0xF0)>>4),0);//row-H4
    b2l(col&0x0F,0);//row-L4
    }
    //LCD Clear
    void lcdClear(void){
    unsigned char pag,col;
    for(pag=0;pag<8;pag++){
      setXY(pag,0);
      for(col=0;col<132;col++){b2l(0x00,1);};}
    }
    //Display a ASCII 8X8,c:Char in cha[]
    void c2lx(unsigned char pag,unsigned char col,unsigned char c){
      unsigned char line;
      setXY(pag,col*8);//6
      for (line=0;line<8;line++)//6
      b2l(asc2[c][line],1);
    }
    //Display a ASCII 8X16,c:Char in cha[]
    void c2l(unsigned char pag,unsigned char col,unsigned char c){
      unsigned char line;
      setXY(pag+1,col*8);//6
      for (line=0;line<8;line++)//6
      b2l(asc2[c][line],1);
      setXY(pag,col*8);//6   
      for (line=8;line<16;line++)//6
      b2l(asc2[c][line],1);
    }
    //Display a Chinese,c:Char in hanzi[][32]
    void h2l(unsigned char pag,unsigned char col,unsigned char c){
      c2lx(pag,col,c*2+96);c2lx(pag,col+1,c*2+97);
    }
    //LCD Initial
    void lcdInit(void){
      GPIO_WriteBit(HW_GPIOD,4,0);;
      DelayMs(100);
      GPIO_WriteBit(HW_GPIOD,4,1);
      DelayMs(100);
      b2l(0xAE,0);//AE=Disp Off/AF=Disp On
      b2l(0xE2,0);//LCD Initial
      b2l(0xA1,0);//Refresh Colum:A0=1-->132/A1=132-->1
      b2l(0xC0,0);//Refresh COM:C0=1-->64/C8=64-->1||A0+C8:col--X-->4
      b2l(0xA2,0);//A2=1/65=1/7__A3=1/65=1/9
      DelayMs(1);
      b2l(0x2F,0);//Power Mode:28+VC+VR+VF
      DelayMs(1);
      b2l(0x23,0);//20->27=1.9,2.19,2.55,3.02,3.61,4.35,5.29,6.48V/Bian Vol
      DelayMs(1);
      b2l(0x81,0);//V0 Vol,After:Num
      b2l(0x14,0);//000000~111111=0~63=8.83~11.17V/30=10V
      DelayMs(1);
      b2l(0xA4,0);//A4-All Off/A5-All On
      b2l(0x10,0);//Column High 4 start:0x10+0000->1111
      b2l(0x00,0);//Column Low 4 start:0x10+0000->1111
      b2l(0x40,0);//40+xxxxxx=Disp From 0->63
      b2l(0x10,0);//10+xxxx=Disp Column Migh 4 bts
      b2l(0x00,0);//00+xxxx=Disp Column low bits xxxxxxxx=0->131
      b2l(0xAD,0);//AC=Corser Off/AD=Corser On/After Num
      b2l(0x03,0);//00=OFF/01=1S/02=0.5S/03=All On
      b2l(0xAF,0);//Start Display
    }
    //Display BaseData
    void dispBase(void){
    c2lx(6,0,42);c2lx(6,1,51);c2lx(6,2,49);c2lx(6,3,26);//JS:
    c2lx(4,0,33);c2lx(4,1,36);c2lx(4,2,35);c2lx(4,3,26);//ADC:
    }
    //Disp Mesuger
    void dispMes(void){
    c2lx(6,4,16+(js/100000)%10);c2lx(6,5,16+(js/10000)%10);c2lx(6,6,16+(js/1000)%10);c2lx(6,7,16+(js/100)%10);c2lx(6,8,16+(js/10)%10);c2lx(6,9,16+(js)%10);
    //c2lx(6,11,16+(value3/10000)%10);c2lx(6,12,16+(value3/1000)%10);c2lx(6,13,16+(value3/100)%10);c2lx(6,14,16+(value3/10)%10);c2lx(6,15,16+(value3)%10);
    c2lx(4,4,16+(value/10000)%10);c2lx(4,5,16+(value/1000)%10);c2lx(4,6,16+(value/100)%10);c2lx(4,7,16+(value/10)%10);c2lx(4,8,16+(value)%10);
    }

    //END Files//

    与LCD相关代码main.c
    //模拟串口定义
    #define res HW_GPIOD
    #define rs  HW_GPIOD
    #define sck HW_GPIOD
    #define sda HW_GPIOD

    //IO端口初始化
    void ioInit(void){
    //LCD
    GPIO_QuickInit(res,4,kGPIO_Mode_OPP);
    GPIO_QuickInit(rs, 5,kGPIO_Mode_OPP);
    GPIO_QuickInit(sck,6,kGPIO_Mode_OPP);
    GPIO_QuickInit(sda,7,kGPIO_Mode_OPP);
    //ADC
    ADC_QuickInit(ADC0_SE8A_PB00,kADC_SingleDIff16);//ADC-B0
    }
    //Main Programs
    int main(void){
    int adcs;
    ioInit();
    lcdInit();
    lcdClear();
    dispBase();
    while(1){
      value=ADC_QuickReadValue(ADC0_SE8A_PB00);//ADC0 Test-B00
      leds();
      js++;
      dispMes();
      if(pp>=100){
       speed=plus;
       plus=0;
       pp=0;
      }
    }
    }

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-18 19:10 , Processed in 0.077488 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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