C51单片机12864怎样按顺序显示数字

C51单片机12864怎样按顺序显示数字,第1张

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit CS=P2^5 //片选信号

sbit SID=P2^6 //数据信号

sbit SCLK=P2^7 //时钟信号 

sbit RST=P2^2 //复位信号

sbit CH = P2^4 //并行、串行选择信号

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

名称 : delay()

功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。

* 输入 : t

* 输出 : 无

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

void delay(unsigned int t)

{

unsigned int i,j

for(i=0 i<t i++)

for(j=0 j<10 j++)

}

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

* 名称 : sendbyte()

* 功能 : 按照液晶的串口通信协议,发送数据

* 输入 : zdata

* 输出 : 无

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

void sendbyte(unsigned char zdata)

{

unsigned int i

for(i=0 i<8 i++)

{

if((zdata << i) & 0x80)

{

SID = 1

}

else 

{

SID = 0

}

SCLK = 0

SCLK = 1

}

}

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

* 名称 : write_com()

* 功能 : 写串口指令

* 输入 : cmdcode

* 输出 : 无

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

void write_com(unsigned char cmdcode)

{

CS = 1

sendbyte(0xf8)

sendbyte(cmdcode & 0xf0)

sendbyte((cmdcode << 4) & 0xf0)

delay(2)

}

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

* 名称 : write_data()

* 功能 : 写串口指令

* 输入 : cmdcode

* 输出 : 无

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

void write_data(unsigned char Dispdata)

{

CS = 1

sendbyte(0xfa)

sendbyte(Dispdata & 0xf0)

sendbyte((Dispdata << 4) & 0xf0)

delay(2)

}

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

* 名称 : lcdinit()

* 功能 : 初始化函数

* 输入 : cmdcode

* 输出 : 无

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

void lcdinit()

RST = 0

delay(100)

RST = 1

delay(20000)

write_com(0x30)

delay(50)

write_com(0x0c)

delay(50)

}

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

* 名称 : hzkdis()

* 功能 : 显示字符串

* 输入 : *s

* 输出 : 无

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

void hzkdis(unsigned char code *s)

while(*s > 0)

write_data(*s)

s++

delay(50)

}

}

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

* 名称 : Test()

* 功能 : 显示子函数

* 输入 : 无

* 输出 : 无

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

void Test()

write_com(0x03)

delay(50) 

write_com(0x81)

hzkdis(" HOT-51")

write_com(0x91)

hzkdis("单片机开发板")

write_com(0x89)

hzkdis(" ")

write_com(0x98)

hzkdis(" 东流电子")

}

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

* 名称 : Main()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

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

void Main()

CH = 0

delay(1)

lcdinit()

delay(10)

while(1)

{

Test()

delay(5000)

}

}

首先,数码管和液晶显示屏共用P0口肯定会相互影响,有时单把12864液晶接在P0口就会产生花屏现象,建议你把液晶接在其他口上。

其次,你每次赋值之前最好都清一下屏,效果会好一点。就是在display1()和display2()之间清屏。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11196029.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存