找回密码
 注册
查看: 266|回复: 2
打印 上一主题 下一主题

51单片机+LCD12864串行显示程序

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-17 09:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
如题,论坛里串行显示LCD12864的例程,要不就是不清晰,甚至有错误,网上一些资料或者要会员(我不说是哪家),要不就是有误。我的这个程序是我亲测可用的,接线也很明确。供坛友们下载。2 ?: t9 q4 j# ^7 p7 G
附图,实际操作图
+ H& X' M4 F9 s* L: Z& l4 X  k- @* z5 t5 {5 E1 z) \" y* M5 {- P0 i
单片机程序节选$ D: ]6 O% |0 H2 y( p& u: M0 ]! _
/********************************************************************
+ |" a* i, t4 F* 名称 : delay()8 R: e  ^& t4 X) c8 U5 G" ]+ k0 M
* 功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。
  o! s% X5 X2 j) i/ u0 `* 输入 : t" X9 T# [3 g$ Q; p
* 输出 : 无
$ t; a: B+ t9 N* T) \* W/ y***********************************************************************/
  g& J, v) b  ?- V/ j6 {void delay(unsigned int t)
9 L: ~/ P9 N. n$ p{
3 t& y5 R$ t  U, }1 I4 p    unsigned int i,j;- l3 n: \' w$ x6 o! O. ?
    for(i=0; i<t;  i++)  v; X6 v* \5 O% O
    for(j=0; j<10; j++);! u# T) F7 `* b+ u8 H
}
+ d: O/ M6 |! |) d' E/ u
, Q0 P! v  K8 z* F' p/********************************************************************+ ~, h5 P- Y2 i& a
* 名称 : sendbyte()
, L; `7 P+ z1 a6 m6 I" f+ M7 d* 功能 : 按照液晶的串口通信协议,发送数据
. R) Q6 q0 C6 l2 s( Z% V* 输入 : zdata' @, }- t* y  u+ q
* 输出 : 无. ^1 m0 ]$ N. ]2 e
***********************************************************************/( e. B& p& I* b+ E2 q3 r; F  W/ S
void sendbyte(unsigned char zdata): v/ G+ [% w, l- D
{
0 M' k+ M, J2 [7 t9 L, b    unsigned int i;* V! B& q' {$ I9 k+ T/ ]5 N
    for(i=0; i<8; i++)
6 W- b, ^/ u, s% g) A    {
1 ]* w$ V, @4 J# K) ?        if((zdata << i) & 0x80)9 R, n; i& l6 E3 z: B* l1 f% e
        {- y  `7 M* b/ z  V6 Y& s5 P9 @
            SID = 1;
- Y9 \* c" E( D1 f' `. z        }' u7 T; P7 U. A, ~  |0 R1 \  ]% k
        else
* ]9 Q1 A# ^3 Y0 ^3 z        {
% r2 G! f% N% k6 [9 m1 g            SID = 0;
; X- f2 g% h+ K# o) t4 i/ o$ {        }1 Z5 q" K2 w. o/ R
        SCLK = 0;
9 l) f8 x. r: _; J* B: S        SCLK = 1;
. T, k4 k8 j) A6 R    }
  s0 p* k2 s( K* w, E}6 y# L+ u% @% g% e* j7 |# E

- g! V; e9 C! Z0 V& |4 |/********************************************************************; {: r. D7 R5 K. C. T4 H
* 名称 : write_com()3 U; W% f2 ~/ C) D+ j0 h
* 功能 : 写串口指令
6 c9 b  ^" L4 V' Z* 输入 : cmdcode
5 G( P3 p! O2 h" K7 l9 }* 输出 : 无
: {" e" v' j# ^# p' ~- Z***********************************************************************/) [5 \' I) ^  ]2 ^! ~
void write_com(unsigned char cmdcode)
2 B2 l6 l& w& m; V6 d' l. B{
$ b- f/ E) v- _- M2 G/ i    CS = 1;: v) Y  Y0 A4 |; q' a% w7 K
    sendbyte(0xf8);! [) ?$ E, X' k! Y) S7 J
    sendbyte(cmdcode & 0xf0);
3 k# `4 h" p7 M' Z$ L% C6 K# I0 K/ y, P    sendbyte((cmdcode << 4) & 0xf0);
; w6 S" }; A5 {! j    delay(2);6 l6 i2 B% L7 D, S
}
) K  I2 @4 Y6 y: I) d! ?: U* Z+ }9 q( L1 P) e( Y
/********************************************************************
) `% D1 J7 o6 h; M) y* 名称 : write_data()' P4 ]; q2 {/ E9 {' i
* 功能 : 写串口指令7 C( p* K/ ]9 a1 l2 E0 S5 D4 y
* 输入 : cmdcode
4 O8 E" e# G  Y! U  W* 输出 : 无
  t  ~7 {& E" e7 R% y+ Y***********************************************************************/
( u2 m) K  e" q  O1 Qvoid write_data(unsigned char Dispdata)
! G6 S& j& o  {" O) [{3 G) V; Q7 g  ]3 I3 }5 k4 H6 _6 J
    CS = 1;. i' N/ c# f# P
    sendbyte(0xfa);, m7 {+ c5 q9 W0 C& N1 B+ j
    sendbyte(Dispdata & 0xf0);. w2 [! m' s4 V9 d* {+ E
    sendbyte((Dispdata << 4) & 0xf0);
# W$ [0 q7 ^( N$ E% O. O8 L    delay(2);
% L+ g/ Q8 E0 A$ H3 B4 L" o}& ~' ]5 W  g7 W, i; [

0 `0 Y7 j& D$ ?5 B+ D8 X0 x) J/********************************************************************# \, n7 y8 ~& t7 ]! S
* 名称 : lcdinit()  E- m% `( b# k: h% V* j
* 功能 : 初始化函数
2 w* |8 I) U) W0 f- P( o8 u, v* 输入 : cmdcode$ s# u7 c" u% m+ n) ?
* 输出 : 无
! O6 j; ?" s2 N: a* f) Y( [***********************************************************************/2 w8 w! [" o) \: }" s
void lcdinit()
* w( E4 w  Z. d; o8 d# X  x" ~( o{  
3 S  X! Y2 I" |! I7 ~8 x- S2 B( l: l//    RST = 0;
/ l7 L  u1 Z' ^" b//    delay(100);. v7 E4 T5 z8 O$ L4 Z
//    RST = 1;' y( V( e5 }5 w! k
//    delay(20000);
: N$ }% |2 ?, R# I5 c    write_com(0x30);
" u! o( z4 _: a! @    delay(50);  ~3 y( {: }4 k
    write_com(0x0c);! O, f& x* O2 y4 V4 s# m8 J
    delay(50);
1 m* X' t  k1 L" h. z; i}7 M) C5 ?8 z( M% {: s

该用户从未签到

3#
发表于 2022-8-17 10:35 | 只看该作者
真的很有用,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-5-31 11:33 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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