求12864程序代码

求12864程序代码,第1张

#include<reg52.h>

#include<intrins.h>

#include<stdlib.h>

#define uchar unsigned char

#define uint unsigned int

/*端口定义*/

#define LCD_data P0

sbit LCD_RS=P3^5

sbit LCD_RW=P3^6

sbit LCD_EN=P3^4

sbit LCD_PSB=P3^7

uchar dis1[10]

uchar code dis2[]={"XXXXXXXXXXX@qq.com"}

uchar code dis3[]={"XXXXXXXX"}

uchar code dis4[]={"-------"}

void delay_ms(uint x)

{

int i,j

for(j = 0j <差巧 xj++)

{

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

{

}

}

}

/*写指令数据到LCD

RS=L——表示DB0-DB7为显示指令数据

RW=L——表示DB0-DB7数据被write(当E=“H-L”,指令数据被写到IR或DR)

E=高脉冲

此时DB0-DB7=指令码 */

void write_cmd(uchar cmd)

{

LCD_RS=0

LCD_RW=0

LCD_EN=0

P0=cmd

delay_ms(5)

LCD_EN=1

delay_ms(5)

LCD_EN=0

}

/*设定显示位置*/

void lcd_pos(uchar X, uchar Y)

{

uchar pos

if(X == 0)

{

X = 0x80

}

else if(X == 1)

{

X = 0x90

}

else if(X == 2)

{

X = 0x88

}

else if(X == 3)

{

X = 0x98

}

pos = X + Y

write_cmd(pos) //显示地址

}

/*写显示数据到LCD*/

/*

RS=H ——表示尘困DB0-DB7为显示数据

RW=L ——RW=L,E='H-L',DB0-DB7数据被写到IR或DR

E=高脉冲

DB0-DB7=显示数据

*/

void write_dat(uchar dat)

{

LCD_RS=1

LCD_RW=0

LCD_EN=0

P0=dat

delay_ms(5)

LCD_EN=1

delay_ms(5)

LCD_EN=0

}

/*随机数发生函数*/

void randmaker()

{

uint ran

ran=rand()

dis1[0]=ran/10000+0x30

dis1[1]=ran%10000/1000+0x30

dis1[2]=ran%1000/100+0x30

dis1[3]=ran%100/10+0x30

dis1[4]=ran%10+0x30

ran=rand()

dis1[5]=ran/10000+0x30

dis1[6]=ran%10000/1000+0x30

dis1[7]=ran%1000/100+0x30

dis1[8]=ran%100/10+0x30

dis1[9]=ran%10+0x30

}

/*LCD初始化*/

void lcd_init()

{

LCD_PSB=1//并口方式

write_cmd(0x30)//基本 *** 派庆念作指令

delay_ms(5)

write_cmd(0x0c)//打开显示,光标关闭

delay_ms(5)

write_cmd(0x01)//清除LCD显示类容

delay_ms(5)

}

/*主程序*/

main()

{

uchar i

delay_ms(10)

lcd_init()

lcd_pos(1,0)

i=0

while(dis2[i]!='\0')

{

write_dat(dis2[i])

i++

}

lcd_pos(2,0)

i=0

while(dis3[i]!='\0')

{

write_dat(dis3[i])

i++

}

lcd_pos(3,0)

i=0

while(dis4[i]!='\0')

{

write_dat(dis4[i])

i++

}

while(1)

{

lcd_pos(0,0)

randmaker()

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

{

write_dat(dis1[i])

}

}

}

检查液晶屏察镇控制器的时序. *** 作命令卖没差码.初始化过程,还有硬件,上下拉电阻,既然中皮决定用并口,那么PSB就直接VDD,这样还能省一个IO口. 注意下面的程序中RS=0,RW=0,能同时为低吗? void write_command(uchar cmd)

{

check_busy()

rs=0

rw=0

en=0

P2=cmd

delay_4us()

en=1

delay_4us()

en=0

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存