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

ATmega16L-6 1602

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-23 13:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
ATmega16L-6 1602" W: x3 g( f) @3 C4 r2 i
//1602液晶相关I/O设置
" y( h) {! F: S5 `4 ^7 D5 h* }3 d! j#define Rs  PORTC4_bit" k" z& p/ ?! x1 y, i
#define RW  PORTC5_bit
( z; v3 e; q% }3 T! P2 W; T4 u4 Q. L#define E   PORTC6_bit7 Y8 u, `2 s0 R
#define LCDDAT PORTD
0 i6 S) f7 X4 ?9 Y* q3 C2 D& J* A1 h* G' h" ]; A, h
#define iDat    1                //数据标志# U1 t1 g" _2 r7 L: r4 E: r
#define iCmd    0                //指令标志8 e% r/ {' y4 z) k, a$ X
& ~% K' l5 m0 {* c
//DatCmd==0--1602写命令函数
  l9 g3 P8 x% r% e//DatCmd==1--1602写数据函数& G; M; P  w! Y" j# {! G( F; e
void LCD1602_Writebyte(unsigned char DatCmd,unsigned char dataByte)
  ~4 b. `' B/ U! {7 P- ]6 }; E; k{
: G* U6 }$ Y8 q0 j8 }+ v        if (DatCmd == iCmd)                //指令操作
4 G+ U  z2 b' |: j0 R3 a- }! Y1 T; d                Rs=0;               //设置该字节数据为控制命令- A7 R/ s3 p) x6 e+ M4 H6 C
        else3 H1 b8 Y9 |2 W( W& ]$ Q2 g. W
                Rs=1;                   //设置该字节数据为数据9 u$ s; h- ~  T8 X  ]5 L4 [
+ o/ t: F% I% `  p4 b' g% S
        RW=0;                //选择写状态
# N4 _. E+ D/ f( K        LCDDAT=dataByte;        //将命令字通过RD口送至DB
8 `$ y# \, z( a6 ^8 @7 D, {        E=1;                 //E高电平将命令字写入1602液晶
6 D0 v4 n; ?5 p5 F: ]  W  R    delay_us(850);
3 b$ M) y# ?7 O1 r% F" ^        E=0;                 //写完以后,恢复E的电平9 f. B7 c7 L1 \- g) F4 B
}+ g; H, V( c' \* t* N5 H
2 G' \2 N+ y* a7 v8 M6 W
//1602液晶显示地址写函数
2 @0 y/ S& }% A, w: E: X9 uvoid LCD1602_GotoXY(unsigned char x,unsigned char y)
$ S) u0 w+ `/ A* ^{; z* T9 S" a. W8 w3 x& o& H0 T
        x&=0x0f;             //列地址限制在0-15间* [( y  m8 R4 Z& }& a5 H
        y&=0x01;             //行地址限制在0-1间
) Y4 \2 d8 D$ f4 i2 I8 m        if(y==1)             //如果是第2行6 y( d/ Z! n+ }
                LCD1602_Writebyte(iCmd,(x+0x40)|0x80); //将列地址写入
! t6 g! G9 y0 ~8 X8 y        else                 //如果是第1行" j4 t. i; h. b4 e2 y
                LCD1602_Writebyte(iCmd,x|0x80);        //将列地址写入/ Q! i8 e% J* J3 M1 e
}" {) @* q( L; M9 i+ z6 c7 h6 u

+ h/ c' M* r+ ]//1602液晶初始化函数" \' s: M& t4 K; R
void LCD1602_init(void)
. }# w+ ^5 _; S+ n" @. T3 }3 w1 v{( u/ [# n0 s+ q& Q4 p
    delay_ms(15);
3 Q: `1 e3 t! K# A) I) b5 F    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示0 o! Q" N& I, M' P6 _2 M  w0 O
    delay_ms(5);  [  G# i6 O# J
    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示; p9 M1 v: _) J, Y% z% E! P
    delay_ms(5);" A3 j. ]+ t1 E4 ^
    LCD1602_Writebyte(iCmd,0x38);
' l0 Z' A0 \, v$ u# b# h0 Y' P
" H, s$ R0 j, Y6 K. v8 x# i
* Z! m) P: p! X5 @) C) o    LCD1602_Writebyte(iCmd,0x38);/ T- O7 l2 _: f# `1 v+ @  Q
    LCD1602_Writebyte(iCmd,0x08); //显示功能关,无光标/ _3 C6 m9 f5 e. r7 \
    LCD1602_Writebyte(iCmd,0x01); //清屏
4 ?3 a$ Q; M8 W    LCD1602_Writebyte(iCmd,0x06);  //写入新的数据后,光标右移,显示屏不移动
- D" g% h4 F2 i; [0 g- L7 R    LCD1602_Writebyte(iCmd,0x0C);  //显示功能开,无光标
# |  w5 R0 U. S, r& E}- Z  L' [0 X$ p- w
' c% H0 D& e$ Q6 Y& y
//1602液晶指定地址显示函数$ j3 g4 c, O* I3 Z8 r' Q
void LCD1602_Display(unsigned char x,unsigned char y,unsigned char buf)
, L3 F: E# c. S' Y2 Q  i. Z% N{
( h" F& `" X% Z' K4 X. G( p+ L; H        LCD1602_GotoXY(x,y);                    //先将地址信息写入
' {# V0 h: v' I& b, N  ^$ C' j) N        LCD1602_Writebyte(iDat,buf);  //再写入要显示的数据7 \5 B7 R& G9 M: b
}
# o0 V5 n3 {6 [
) O- \2 l; Z5 ]/ Kvoid LCD1602_prints(unsigned char x,unsigned char y,unsigned char *pString)8 ~& Z; B4 k; l. C
{
/ W& k- @1 n$ l  n
$ m8 F2 w' |) l. R' A        LCD1602_GotoXY(x,y);
9 y9 w, z3 H  j" M5 C: `& A        while(*pString)//while((*pString)!='\0')//        //只要字符串没写完就继续写
* X' T1 g+ h! Z        {
( ?' s9 o# S& `2 I' ~* X, l                LCD1602_Writebyte(iDat,*pString++);( g( r' {9 P. A6 L- s- ?
        }1 `: s* i6 Y) k, ~- G* j2 _* ]
}) w; P: A  Y2 {% Q( G5 T" L+ T7 W2 Z
* r5 j$ ?* V; E, @, d6 D" M& R0 m
void main(void)
3 ?8 J  c; h: z{
. D- j/ g) X' S, P: w  _. r, S- v: r: Q
    unsigned int num=1223;
# X6 R) M4 r/ N9 Y    DDRC=0XFF;
8 O/ d( }3 N9 @- y    DDRD=0XFF;
9 B7 W, b7 K$ B" e+ b" G5 {    PORTC=0B00000000;* [6 y3 {% O% u: |
    PORTD=0B00000000;
0 c/ ~# d7 U$ V  P# Y9 t5 T$ k5 g( v, T$ D* ]
    LCD1602_init();) u1 M9 W5 Z9 H5 ?$ @
    LCD1602_prints(0,0,"Zeroer1223");6 J3 v* E9 J+ |! C' V
, C/ Q/ y. H: G( ]- Z7 q, ?
    while(1)
0 [8 ?* w" p0 U5 ?# H3 }, S  @    {7 {  W  D1 c  c& A9 U
                delay_ms(500);( x  n/ H' n7 N  ?
                if(++num>9999) num=0;  H1 ?: o7 j6 \' C: O6 o
                LCD1602_Display(6,1,num/1000+'0');//千位
7 P* P3 u, E) H/ C% r. e                LCD1602_Display(7,1,(num%1000)/100+0X30);//百位1 x5 H2 w# M; l' x
                LCD1602_Display(8,1,(num%100)/10+0x30);//十位: Y6 j, K( c$ t
                LCD1602_Display(9,1,(num%10)+'0'); //个位
, c0 \3 j3 r8 x' A" V) }. {) T' p4 h7 y) D
    }
: r6 v6 e9 V7 g% ]. t}
. A8 ^# t& l) @- g8 R( j2 d+ O. \' K3 U( M3 S) C5 h8 ?# p

" c' I- }2 Q' m" D0 `
! L6 k7 E+ ?  f" I7 z1 Z
7 w: i/ i' Z  F1 t
9 r- |: G4 k1 Y: a
3 u% n: g. I4 _% k" x8 @
/ N2 D: E) {5 p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-20 06:45 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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