单片机+LCD12864数字电压表设计

发布者:哈哈哈33最新更新时间:2020-11-04 来源: 51hei关键字:单片机  LCD12864  数字电压表 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序如下:

//---库函数声明及相关定义---//

#include

#include

#define unint unsigned int

#define unchar unsigned char

#define Databus P1 /*液晶数据总线*/

sbit RS=P3^3;      /*数据指令 选择*/

sbit RW=P3^4;      /*读写 选择*/

sbit EN=P3^2;      /*读写使能*/

sbit cs1=P3^6;     /*片选1*/

sbit cs2=P3^7;     /*片选2*/



sbit clock=P0^4;//时钟线

sbit dout=P0^2;//数据输出端

sbit cs=P0^3;//片选(低电平有效)



sbit        DQ=P0^2;//ds18b20与单片机连接口

float f_temp;//浮点型温度值   

unsigned int tvalue;//温度值

unsigned char tflag;      

unsigned int temp=0;

unsigned char SegBuf[4]={0};


/********************************/

/* 定义中文字库    */

/********************************/

unchar code Hzk[]={

        0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00, //年//0

        0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00,

        0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00,//月//1

        0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0x21,0x41,0x3F,0x00,0x00,0x00,0x00,

        0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00,//日//2

        0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00,

        0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00,//星//3

        0x00,0x48,0x46,0x41,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x49,0x41,0x40,0x00,

        0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,//期//4

        0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00,

        0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,//时//5

        0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,

        0x80,0x40,0x20,0x98,0x87,0x82,0x80,0x80,0x83,0x84,0x98,0x30,0x60,0xC0,0x40,0x00,//分//6

        0x00,0x80,0x40,0x20,0x10,0x0F,0x00,0x00,0x20,0x40,0x3F,0x00,0x00,0x00,0x00,0x00,

        0x12,0x12,0xD2,0xFE,0x91,0x11,0xC0,0x38,0x10,0x00,0xFF,0x00,0x08,0x10,0x60,0x00,//秒//7

        0x04,0x03,0x00,0xFF,0x00,0x83,0x80,0x40,0x40,0x20,0x23,0x10,0x08,0x04,0x03,0x00,


0x00,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x00,//天//8

0x00,0x80,0x40,0x20,0x10,0x08,0x06,0x01,0x02,0x04,0x08,0x10,0x30,0x60,0x20,0x00,

0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,//一//9

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x00,//二//10

0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00,

0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,//三//11

0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,

0x00,0xFE,0x02,0x02,0x02,0xFE,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,//四//12

0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x7F,0x00,0x00,

0x00,0x02,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0xC2,0x82,0x02,0x00,0x00,0x00,//五//13

0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x30,0x20,0x00,

0x10,0x10,0x10,0x10,0x10,0x91,0x12,0x1E,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x00,//六//14

0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x00,0x00,0x01,0x02,0x0C,0x78,0x30,0x00,0x00,


0x00,0x40,0x42,0x44,0x4C,0x40,0x40,0x7F,

      0x40,0x40,0x48,0x44,0xE6,0x40,0x00,0x00,

      0x00,0x40,0x44,0x44,0x44,0x44,0x44,0x44,

      0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00,//当//15


0x08,0x08,0xE8,0x29,0x2A,0x2E,0xE8,0x08,

      0x08,0xCC,0x0A,0x0B,0xE8,0x0C,0x08,0x00,

      0x00,0x00,0xFF,0x09,0x49,0x89,0x7F,0x00,

      0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00,//前//16


0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,//电//17

      0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,

      0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,

      0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,


0x00,0x00,0xFE,0x02,0x82,0x82,0x82,0x82,

      0xFE,0x82,0x82,0x82,0xC3,0x82,0x00,0x00,

      0x40,0x30,0x0F,0x40,0x40,0x40,0x40,0x40,

      0x7F,0x40,0x42,0x44,0x4C,0x60,0x40,0x00,//压//18



0x00,0x00,0x00,0x00,0x7F,0x49,0x49,0x49,

      0x49,0x49,0x7F,0x00,0x00,0x80,0x00,0x00,

      0x01,0x81,0x41,0x21,0x1D,0x21,0x41,0x7F,

      0x89,0x89,0x8D,0x89,0x81,0xC1,0x41,0x00,//是//19


0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0x80,

      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

      0x00,0x00,0x00,0x00,0x31,0x7B,0x7B,0x31,

      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//://20


0x80,0x40,0x20,0xF8,0x27,0x20,0x20,0x20,//伏//21

      0x20,0xFF,0x20,0x24,0x28,0x38,0x20,0x00,

      0x00,0x00,0x00,0xFF,0x80,0x40,0x20,0x18,

      0x06,0x01,0x06,0x18,0x60,0xC0,0x40,0x00



                         };

/****************************************/

/* 定义ASCII字库8列*16行    */

/****************************************/

unchar code Ezk[]={

/*此字体下对应的点阵为:宽x高=8x16   --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16   --*/

        0x00,0x00,0xF0,0xF8,0x08,0x68,0xF8,0xF0,0x00,0x00,0x07,0x0F,0x0B,0x08,0x0F,0x07, //0

        0x00,0x20,0x20,0x30,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,  //1

        0x00,0x30,0x38,0x08,0x88,0xF8,0x70,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x08,0x00, //        2

        0x00,0x30,0x38,0x88,0x88,0xF8,0x70,0x00,0x00,0x06,0x0E,0x08,0x08,0x0F,0x07,0x00, //3

        0x00,0x00,0xF8,0xF8,0x00,0xE0,0xE0,0x00,0x00,0x03,0x03,0x02,0x02,0x0F,0x0F,0x02,//4

        0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00,//5

        0x00,0xC0,0xE0,0x78,0x58,0xC8,0x80,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,//6

        0x00,0x08,0x08,0x88,0xE8,0x78,0x18,0x00,0x00,0x00,0x0E,0x0F,0x01,0x00,0x00,0x00,//7

        0x00,0x70,0xF8,0xC8,0x88,0xF8,0x70,0x00,0x00,0x07,0x0F,0x08,0x09,0x0F,0x07,0x00,//8

        0x00,0xF0,0xF8,0x08,0x08,0xF8,0xF0,0x00,0x00,0x00,0x09,0x0D,0x0F,0x03,0x01,0x00,//9



                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // - -//10

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

        0x00,0x80,0x80,0xE0,0xE0,0x80,0x80,0x00,  // -+-//11

        0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00,


        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,  // ---//12

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -.-//13

        0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00

};




/*状态检查,LCD是否忙*/

void CheckState()   

{

   unchar dat;       /*状态信息,判断是否忙*/

   RS=0;             /*数据指令选择,D/I(RS)=“L” ,表示 DB7∽DB0 为显示指令数据*/

   RW=1;             /*R/W=“H” ,E=“H”数据被读到DB7∽DB0*/

   do{

      Databus=0x00;

      EN=1;          /*EN下降源*/

      _nop_();       /*一个时钟延时*/

      dat=Databus;

      EN=0;

      dat=0x80 & dat;/*仅当第7位为0时才可操作(判别busy信号)*/

      }while(!(dat==0x00));

}

/*写命令到LCD中*/

SendCommandToLCD(unchar com)

{

   CheckState();/*状态检查,LCD是否忙*/

   RS=0;        /*向LCD发送命令。RS=0写指令,RS=1写数据*/

   RW=0;        /*R/W=“L” ,E=“H→L”数据被写到 IR 或 DR */

   Databus=com; /*com :命令*/

   EN=1;        /*EN下降沿*/

   _nop_();

   _nop_();

   EN=0;

}

/*设置页 0xb8是页的首地址*/

void SetLine(unchar page)   

{

        page=0xb8|page; /*1011 1xxx 0<=page<=7 设定页地址--X 0-7,8行为一页64/8=8,共8页*/

        SendCommandToLCD(page);

}

/*设定显示开始行,0xc0是行的首地址*/

void SetStartLine(unchar startline)        

{

        startline=0xc0|startline;    /*1100 0000*/

        SendCommandToLCD(startline); /*设置从哪行开始:0--63,一般从0 行开始显示*/

}

/*设定列地址--Y 0-63 ,0x40是列的首地址*/

void SetColumn(unchar column)   

{

        column=column &0x3f; /*column最大值为64,越出 0=        column= 0x40|column; /*01xx xxxx*/

        SendCommandToLCD(column);

}

/*开关显示,0x3f是开显示,0x3e是关显示*/

void SetOnOff(unchar onoff)   

{

    onoff=0x3e|onoff; /*0011 111x,onoff只能为0或者1*/

    SendCommandToLCD(onoff);

}



/*写显示数据 */

void WriteByte(unchar dat)

{

   CheckState();/*状态检查,LCD是否忙*/

   RS=1;        /*RS=0写指令,RS=1写数据*/

   RW=0;        /*R/W=“L” ,E=“H→L”数据被写到 IR 或 DR */

   Databus=dat;    /*dat:显示数据*/

   EN=1;        /*EN下降沿*/

   _nop_();

   _nop_();

   EN=0;

}

/*选择屏幕screen: 0-全屏,1-左屏,2-右屏*/

void SelectScreen(unchar screen)      

{               

   switch(screen)

   {

     case 0: cs1=0;/*全屏*/

[1] [2]
关键字:单片机  LCD12864  数字电压表 引用地址:单片机+LCD12864数字电压表设计

上一篇:51单片机控制模拟交通信号灯
下一篇:基于51单片机控温程序及电路原理图

推荐阅读最新更新时间:2024-11-12 04:17

单片机外围电路设计攻略(1)
单片机外围电路设计之一:电阻 对于电阻,想必大家都觉得简单,没有什么好说的。其实电阻的应该还是非常广泛的,在不同的应用场合其作用是完全不同的。本人将总结其基本用法,及容易被忽略的地方。 1概念 电阻(Resistance,通常用“R”表示),在物理学中表示导体对电流阻碍作用的大小。导体的电阻越大,表示导体对电流的阻碍作用越大。不同的导体,电阻一般不同,电阻是导体本身的一种特性。电阻将会导致电子流通量的变化,电阻越小,电子流通量越大,反之亦然。而超导体则没有电阻。 电阻元件的电阻值大小一般与温度,材料,长度,还有横截面积有关,衡量电阻受温度影响大小的物理量是温度系数,其定义为温度每升高1℃时电阻值发生变化的百分数。
[单片机]
<font color='red'>单片机</font>外围电路设计攻略(1)
单片机的电平匹配问题
一般单片机、DSP、FPGA他们之间管教能否直接相连. 一般情况下,同电压的是可以的,不过最好是要好好查查技术手册上的VIL,VIH,VOL,VOH的值,看是否能够匹配(VOL要小于VIL,VOH要大于VIH,是指一个连接当中的)。有些在一般应用中没有问题,但是参数上就是有点不够匹配,在某些情况下可能就不够稳定,或者不同批次的器件就不能运行。 常用的逻辑电平有TTL、CMOS、LVTTL、ECL、PECL、GTL;RS232、RS422、LVDS等。其中TTL和CMOS的逻辑电平按典型电压可分为四类:5V系列(5V TTL和5V CMOS)、3.3V系列,2.5V系列和1.8V系列。 5V TTL和5V CMOS逻辑电平是
[单片机]
MSP430单片机个人学习笔记
上点复位信号 :POR(Power On Reset) 上电清除信号 :PUC (Power Up Clear) CPU产生条件: POR产生时 启动看门狗时,看门狗定时器计满。 看门狗写入错误安全参数值 片内Falsh写入错误的安全参数 POR与PUC都会引发复位 复位后初始状态: /RST引脚被设置为复位模式 所有I/O引脚被设置为输入 外围模块被初始化 状态寄存器SR复位 看门狗激活,进入工作模式 程序计数器PC装入0xFFFEH处的地址,从此地址开始执行程序。 内部RC振荡器 系统复位后内部RC振荡器磨人为系统时钟,但精度比较差,不适合使用诸如串口通信场合波特率会随温度和电压变化而变化,不建议使用(约800
[单片机]
MSP430<font color='red'>单片机</font>个人学习笔记
MSP430单片机——定时器
昨天调了MSP430单片机的定时器,犯了个比较傻的错误。 定时器有四种模式,停止模式,增模式,连续模式,增减模式。 定时器中断也有四个,CCR0,CCR1,CCR2及溢出中断,四个。 在学习过程中,我想用下溢出中断,然后定时器又设置在了增模式,因为不希望产生比较/捕捉中断,就没有设置CCR0,原本的想法是不设置CCR0,那么定时器就会自动计数到0xFFFF后产生溢出重新计数。结果程序没有这样想象的执行。定时器进不了溢出中断。最后才发现,如果定时器工作在了增模式,那么就一定要设置CCR0,因为不论是比较中断还是溢出中断,都是定时器的计数值与CCR0相关,此时的溢出中断,也是定时器计数到CCR0,然后产生溢出,又重新开始计数。 然
[单片机]
MSP430<font color='red'>单片机</font>——定时器
MSP430单片机USART串口发送字符和字符串
在MSP430单片机的官方历程中有使用串口中断发送字符以及字符串的程序,但是移植性不高,我专门写了两个函数,用于发送单个字符合字符串,不需要使用中断,供大家参考。 /********************************************** *程序描述:单片机的P3.4、P3.5作为串口发送字符和字符串 *作者 :Zhenhua Liu *时间 :2017.11.01 23:00 ***********************************************/ #include msp430x14x.h #define uchar unsigned char uchar DATA = hel
[单片机]
单片机系统硬件抗干扰的常用方法
单片机系统硬件抗干扰的常用方法 影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选择、安装、制造工艺影响。这些都构成单片机系统的干扰因素,常会导致单片机系统运行失常,轻则影响产品质量和产量,重则会导致事故,造成重大经济损失。 形成干扰的基本要素有三个: (1)干扰源。指产生干扰的元件、设备或信号, 用数学语言描述如下:du/dt, di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。 (2)传播路径。指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。 (3)敏感器件。指容易被干扰的对
[单片机]
STC89C52单片机 DAY 4 LED点阵模块
LED点阵模块显示数字0 #include reg51.h #include intrins.h typedef unsigned char u8; typedef unsigned int u16; sbit SRCLK=P3^6; sbit RCLK=P3^5; sbit SER=P3^6; u8 ledduan ={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e}; u8 ledwei ={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; void delay(int i) { while(i--); } void Hc595SendByte(u8 d
[单片机]
瑞萨基于Arm Cortex-M33 RA6M4 MCU产品群赋能物联网
全球半导体解决方案供应商瑞萨电子集团宣布推出9款全新RA6M4 MCU产品,以扩展其RA6系列微控制器(MCU),使RA产品家族的MCU增至42款。此次发布的全新32位MCU使用基于Armv8-M架构的Arm® Cortex®-M33内核并支持TrustZone®,运行性能提升至200 MHz。RA6M4 MCU通过易用的灵活配置软件包(FSP)提供了优化的性能以及领先的安全性和连接性。此外,瑞萨合作伙伴生态系统还为RA6M4 MCU和FSP提供开箱即用的软硬件构建模块,可用于工业4.0、楼宇自动化、计量健康看护和家用电器等应用。 RA6M4 MCU具备强大的安全性、丰富的连接性、支持奇偶校验/ECC的低功耗大容量嵌入式RAM
[嵌入式]
瑞萨基于Arm Cortex-M33 RA6M4 <font color='red'>MCU</font>产品群赋能物联网
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved