找回密码
 注册
关于网站域名变更的通知
查看: 292|回复: 2
打印 上一主题 下一主题

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
如题,论坛里串行显示LCD12864的例程,要不就是不清晰,甚至有错误,网上一些资料或者要会员(我不说是哪家),要不就是有误。我的这个程序是我亲测可用的,接线也很明确。供坛友们下载。
5 r( A1 P# o' g0 O7 B附图,实际操作图% k+ R; |+ L  T* v: J7 x
1 R% N$ Q; P  a+ F' k# l
单片机程序节选
( I" E0 }$ h, R2 `5 l/********************************************************************
  ~/ K: [* l2 R* 名称 : delay()
# f6 o+ x( \/ X$ O/ g* 功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。
+ N' h3 B- r0 @7 g% q* 输入 : t( ^5 {/ h- K1 y
* 输出 : 无
! [; t! L. l: Z! [' p, i1 K8 D***********************************************************************// k$ c1 f  B3 v7 l; {; ~. {: g
void delay(unsigned int t)% M+ q$ i$ _/ {6 \
{
' y# m) b( c( u  F8 X. W5 Y    unsigned int i,j;. `. s1 M! M  N
    for(i=0; i<t;  i++)5 g6 x% k) Y9 T6 j$ K
    for(j=0; j<10; j++);* X  s0 M+ L& Y. e0 Z8 g
}2 W. L2 u" |5 A- ~8 l

6 m6 y. [( W5 }! y  l" k; U. p/********************************************************************* `! W; b  P+ h
* 名称 : sendbyte()  B, v7 r, ?+ p4 o$ _
* 功能 : 按照液晶的串口通信协议,发送数据
$ n0 ?% k: I8 D4 w; P  [0 [* 输入 : zdata
: F# Z. e4 Q( M( G+ ?) h6 v2 w* 输出 : 无3 S7 a/ K# L6 q* [/ E/ t) P2 {( H5 u
***********************************************************************/, Z7 Z/ z+ P9 N( x
void sendbyte(unsigned char zdata)
: U  k0 h) Q8 \8 q. {{
( o' s3 z2 m! L4 u' q5 f  ~    unsigned int i;2 C. t- }* Z) W2 C, l
    for(i=0; i<8; i++)
( H  |9 v  _6 u9 o: e% D    {7 C- \0 W* H! N( X1 b
        if((zdata << i) & 0x80)
/ a1 N- A3 D" L$ K" ^: W        {
6 A% a( k" |4 ~            SID = 1;! m: m& L+ g, Y
        }
4 p) B8 A9 I& [- y9 p6 o        else ) y; p5 N  W5 A$ ^) Q. C7 k6 V9 A' G
        {
2 ]6 }% |1 Q, {& M! Z- M            SID = 0;
1 d# Q/ F9 |( i% k/ H        }
' ]9 M2 d! T" @$ d6 _        SCLK = 0;
; e" O: Y* A1 y        SCLK = 1;  u" m4 @" U# S: A& h, ^1 q
    }" @0 y, ]7 y" m) {* n
}' f+ _) p$ Q! l. ]$ E; k

0 Z: q( R4 R# I1 x9 u4 U. b. n/********************************************************************1 _1 g% s6 ]* Y8 C
* 名称 : write_com()
* D, _9 b' X) B0 E2 P( i, I* 功能 : 写串口指令4 u# o5 ]2 v+ b: v# w" D' l
* 输入 : cmdcode
5 B0 r" B6 O" c# j" c' t5 w1 Z+ L5 t* 输出 : 无
- j, x2 i* d6 @, c***********************************************************************/0 T% V+ d  l  R5 V; ~: ^
void write_com(unsigned char cmdcode)$ {& O4 p2 [* p7 H. I2 h, h
{* H" S- x6 M6 Z: p5 d
    CS = 1;
' V' n+ h" `: F) Y: \9 Y    sendbyte(0xf8);
6 X2 A# k) D- I$ `: C; J    sendbyte(cmdcode & 0xf0);
0 P6 d  V2 H' K' a9 I    sendbyte((cmdcode << 4) & 0xf0);
' T: E/ W6 V4 ?% _+ d/ Z; V    delay(2);
& t7 z" F1 W& l2 {4 M- ^' f" _}
$ N' j+ Y0 E+ C3 T1 Y& U7 o! j* ?& s' B( G! L' [) x: F& i. V6 J! i) ]
/********************************************************************- [( N7 l1 M! a" A& k" d
* 名称 : write_data()! t6 Q9 j. k, I9 x8 k/ u
* 功能 : 写串口指令% W, l. {( B( o" Z
* 输入 : cmdcode
7 U+ K" J0 y/ f9 _1 Q& m* 输出 : 无- R" ^8 @" u  d
***********************************************************************/
; W) x  D0 i" S7 n+ s' A% Dvoid write_data(unsigned char Dispdata)
' B! u9 J% g9 Q9 g5 F/ e6 H{
' `# y% V4 D" K3 M/ E- `( p' L# _5 n    CS = 1;% L0 Q  s9 w( S8 R& z$ i  K; F
    sendbyte(0xfa);
7 J; d& f+ A& Z4 E( N9 W; \8 R    sendbyte(Dispdata & 0xf0);
+ \8 h* Q4 ]3 ~' F( i( P    sendbyte((Dispdata << 4) & 0xf0);, }* J5 s! [. g2 y
    delay(2);
# U  A9 o5 p- @" d}' H2 Z! Z" a' q1 j' _1 U1 {4 E5 O
0 d+ N4 {$ o% V; w  t. n
/********************************************************************
2 F+ f. ?, i/ T' n: O6 m* 名称 : lcdinit()
8 F0 ]' R* R3 ~* w1 i* 功能 : 初始化函数* v: r2 ]# {; ~, K' |
* 输入 : cmdcode
4 b. S2 j4 [1 O$ D* 输出 : 无, y$ d4 D5 m# `2 a& z3 j
***********************************************************************// p% [- @, @+ m, ~9 P. u& a' z% f9 Z
void lcdinit()
: R' j( L9 D  J9 L" P: U  f{  1 I' ^$ y5 B* n  L4 p- S/ a+ Y! z
//    RST = 0;' n* q; w8 d6 i
//    delay(100);
  j3 @) B4 ^2 s//    RST = 1;
( W- T0 `4 e5 A: q, x' N6 e9 p//    delay(20000);$ F5 ^% g+ f  [8 [, S! l* J
    write_com(0x30);( R1 Q, f% K- P( S* k4 D
    delay(50);
% f0 z+ d; c# u. d) T& s/ y3 @' k    write_com(0x0c);
2 ]; m, V* k: F) Z0 S    delay(50);4 W8 {, D9 y, ^) R; X
}
5 B9 c" _$ }. b4 n% I/ U7 i' H

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 11:46 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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