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

ATmega16L-6 1602

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ATmega16L-6 1602
# H. c& c8 c- t# d8 i, A1 c* G& F% w
//1602液晶相关I/O设置
5 j+ m) K/ u# p8 I5 _2 M#define Rs  PORTC4_bit
- o- P, i- ]& X0 t7 f5 s0 M+ V#define RW  PORTC5_bit% Z  O% X9 ^' m0 d4 d/ N# S+ b0 p
#define E   PORTC6_bit& k/ I& Y, F8 P. y
#define LCDDAT PORTD
* Y( [$ T* \6 v3 j7 \
4 c1 z. B4 e6 t- _#define iDat    1                //数据标志
! u" x3 ]. P# o/ t/ Y: a#define iCmd    0                //指令标志
% G" w& }: S1 _! |! u2 U$ S
$ G1 X5 e; v0 S/ l3 P9 i- t//DatCmd==0--1602写命令函数
0 ?) Q. P3 [4 A' \3 L0 k, P//DatCmd==1--1602写数据函数$ W) X' h. m1 L! e. E% c! L% X9 C
void LCD1602_Writebyte(unsigned char DatCmd,unsigned char dataByte)
  `' @% s' U. M) v{9 T, m$ g) U% d/ U
        if (DatCmd == iCmd)                //指令操作* {" T- U/ N6 O
                Rs=0;               //设置该字节数据为控制命令
- ]9 i& p6 |: V1 b; ^5 X1 u        else
% U" p* R) E; J4 I- U; [                Rs=1;                   //设置该字节数据为数据; @! a3 P: k( `9 o8 H' t6 q: J

+ y+ l8 F2 l6 N' K" A        RW=0;                //选择写状态
, M2 j6 C0 L7 Q, Y1 ?9 p3 N# ]        LCDDAT=dataByte;        //将命令字通过RD口送至DB
. k- Q  T, O6 r. A        E=1;                 //E高电平将命令字写入1602液晶6 m1 K8 J0 a% {
    delay_us(850);
8 u" g' O+ P- T0 }4 O9 s- `8 H. {        E=0;                 //写完以后,恢复E的电平
$ F: v' g8 K7 `& f}: P: z1 p) {9 ^2 w# y  v
3 E" R  m. K3 k) R" N
//1602液晶显示地址写函数
( ~+ x$ g% T3 L4 U5 k' ]; U/ ovoid LCD1602_GotoXY(unsigned char x,unsigned char y)
) Q9 G1 j% B4 k( ^. A- Y{
9 l2 E2 u5 n1 n# z        x&=0x0f;             //列地址限制在0-15间: b1 r( X: V% }/ d# P4 {+ m( M
        y&=0x01;             //行地址限制在0-1间
. N7 p1 R# B, z( D- |1 j9 f% L3 p        if(y==1)             //如果是第2行
) J% T) h: q# y! ?8 M% ?                LCD1602_Writebyte(iCmd,(x+0x40)|0x80); //将列地址写入
8 y: z' X( i1 O! |- @) f0 }        else                 //如果是第1行
2 K' E7 ?; f: o( Q" B1 R                LCD1602_Writebyte(iCmd,x|0x80);        //将列地址写入
1 R9 g/ ~" _/ w}
. v1 n$ C8 R6 E& X. |+ L; m# b
! G; y" c3 x- q- d; a  ~) B* d' f//1602液晶初始化函数
7 B" b$ M% M: G' @2 }void LCD1602_init(void)/ }( b5 `1 R( j. o# C; q: Q
{
* N9 N5 y; R9 v4 x1 p) v5 P    delay_ms(15);
8 D" P) E, ^/ N% ?1 T! Q    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示: B% Y  F* J, P# L5 C3 s* o: d
    delay_ms(5);/ ]: L( P, h. m( Y! V/ A4 W
    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示
+ D1 f% d9 r5 y    delay_ms(5);
% r/ ^+ U4 J* i% k" v    LCD1602_Writebyte(iCmd,0x38);' w; ]3 W1 ?0 @1 i

- N! c( p( z( k% W9 j4 u
- [/ X3 M, F( R0 a5 ^& i    LCD1602_Writebyte(iCmd,0x38);
7 r6 Y" Y# P2 O4 W' ~  R5 Z    LCD1602_Writebyte(iCmd,0x08); //显示功能关,无光标& C" u5 R- w- h8 K. O/ e  a
    LCD1602_Writebyte(iCmd,0x01); //清屏9 j, u: r1 O/ U7 w
    LCD1602_Writebyte(iCmd,0x06);  //写入新的数据后,光标右移,显示屏不移动" h. |, t. P' @1 k, x+ t+ D
    LCD1602_Writebyte(iCmd,0x0C);  //显示功能开,无光标6 C6 u6 B, S% t; o% t# ]1 X5 \
}# \! T1 r1 u- k8 t1 C9 E- }/ w
# D# q" o; O& s! _, d# Q
//1602液晶指定地址显示函数0 V' I+ _9 `8 j  t; [1 Z# L3 A
void LCD1602_Display(unsigned char x,unsigned char y,unsigned char buf)
( x3 H+ g3 P2 I& x{
- ]6 Q" \* F4 N$ d- r, |        LCD1602_GotoXY(x,y);                    //先将地址信息写入9 K8 Q; `1 G2 f6 F
        LCD1602_Writebyte(iDat,buf);  //再写入要显示的数据, ^, P( E9 I# E, H
}
" p. @9 m! g9 D" t% c2 o: w3 l9 }  f* O: }; Z
void LCD1602_prints(unsigned char x,unsigned char y,unsigned char *pString)
) x( k, P: ~1 h/ k{2 R+ ?) P8 l# i
* j, q/ q6 w' x& k
        LCD1602_GotoXY(x,y);* ^8 S3 V% p4 r$ K
        while(*pString)//while((*pString)!='\0')//        //只要字符串没写完就继续写, \0 l) P! m" m  \7 Q! F. S
        {1 Z* I; {2 F' ~, x7 ~& c
                LCD1602_Writebyte(iDat,*pString++);2 l( G$ D, t" d/ d! M5 n8 }6 V
        }% n8 E* M3 t6 m) S  c
}
( `1 N# x  s2 `& k& i6 A+ J
7 H4 J% I' u6 Ovoid main(void)
9 R+ h  p% V1 ]8 O/ g. I% ~{
3 ?2 u* S- A$ ?. `3 F8 Z3 |( C
3 g5 |' _! y1 ?) J4 T4 Z    unsigned int num=1223;/ t3 t+ y1 B7 a% [/ n2 a
    DDRC=0XFF;
$ n  `! e! z1 B* o& r/ {2 o: y    DDRD=0XFF;* i: _) {7 O5 C) p' b) h" @2 c0 w2 @
    PORTC=0B00000000;
4 t3 H1 z' S, Q4 N    PORTD=0B00000000;$ `1 W8 i6 G0 x) }) z9 n  f) E
$ O5 o! N, a2 t3 B6 N, \2 g5 K
    LCD1602_init();4 T/ [) T( ~( Y: g% {
    LCD1602_prints(0,0,"Zeroer1223");
8 c( u* @2 k1 a9 D1 ?) r% p( _  S# g4 }! }4 g% {0 Y
    while(1)
# X( d' C; I) P7 T    {
$ C4 c3 Y+ ]! M( P% M! ^1 j: B                delay_ms(500);) N+ O( U" e3 p- Y
                if(++num>9999) num=0;
" L* o; r( K! p2 p: n6 p# J& C# {                LCD1602_Display(6,1,num/1000+'0');//千位1 K7 K5 z7 L# Q$ M0 W9 r& _
                LCD1602_Display(7,1,(num%1000)/100+0X30);//百位; s& M0 m# o, P; C0 Q: J4 i
                LCD1602_Display(8,1,(num%100)/10+0x30);//十位
& x9 w; u' c! U- W                LCD1602_Display(9,1,(num%10)+'0'); //个位
0 t4 @# r$ f/ v" a2 `7 e. F4 ^# G1 n  g- `. R/ G5 j( y
    }
4 |/ H0 T0 O, h) f; e* ~}! w; L3 [5 ], ]' j

2 k, i4 q8 [3 x6 n% C2 c. ?1 c0 v( m+ u3 h
/ i. k4 G  A" [( d; J5 |# J2 U
2 v+ T9 J# ^1 d" d. A/ f. y: c, H

8 D: L7 Z2 g" {. w5 A6 ?) f3 h& {, A4 n
+ K" {3 `) Q+ h: j- _. G  k% o
% w& J2 ~! U5 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-18 09:19 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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