单片机,STC芯片,写了一个12864lcd的文字显示程序,程序下载到芯片了,可屏幕没反应,求详解释我是新手

单片机,STC芯片,写了一个12864lcd的文字显示程序,程序下载到芯片了,可屏幕没反应,求详解释我是新手,第1张

void main()

{

//led_init()/闹弯拆/液晶初始化

ledled_init()//这才是初始化的函数

while(1)

{

display("你好",1)//液晶屏上显示“你好”2s 钟后,改为显示“好的”

delayms(2000)

display("好的",1)

delayms(2000)

}

}

试试看吧,其实最好初始液枣化闹吵下端口好一点

不知你的液晶是什么控制器的,这个是st7920的

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

* 文件名 : 串行12864显示.c

* 描述: 该程序实现了12864以串行的方式进行通信卜兄。

* 创建人 : 东流,2009年4月10日

* 版本号 : 2.0

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

#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=0i<t i++)

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

}

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

* 名称 : sendbyte()

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

* 输入 : zdata

* 输出 : 无

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

void sendbyte(unsigned char zdata)

{

unsigned int i

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

{

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)

}

}

#include<STC12.h>

#define uchar unsigned char

#define uint unsigned int

uchar code seg_data1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}

uchar code seg_data2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}

sbit p20=P2^0

sbit p21=P2^1

sbit p22=P2^2

/隐激/sfr ADC_CONTR=0xBC

//sfr P1ASF=0x9D

//sfr ADC_RES=0xBD

void delay(uint a1)

void input()

void display(uint count)

void main()

{

uint x

while(1)

{

input()

x=5*(ADC_RES*50)/255

display(x)

}

}

void input()

{

P1ASF=0x01

ADC_CONTR=0x88

delay(25)

IE=0xA0

}

void drop() interrupt 5

{

ADC_CONTR=0X88

}

void display(uint count)

{

uchar i

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

{

P0=seg_data1[count%10]

p20=0

delay(25)

p20=1

P0=seg_data2[count/10%10]

p21=0

delay(25)

p21=1

if(count>=100)

{

P0=seg_data1[count/100]

p22=0

delay(25)

p22=1

}

}

}

void delay(uint a1) //误差 0us

{

unsigned char a,b,c

for(c=a1c>0c--)

for(b=142b>0b--)

for(a=2a>0a--)

}

这是我自己写的,用数差誉码管显示,你只需要把void display(uint count)函数改为12864的显示函数灶庆袜即可


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

原文地址: http://outofmemory.cn/yw/12569233.html

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

发表评论

登录后才能评论

评论列表(0条)

保存