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

ATmega16L-6 1602

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ATmega16L-6 1602
" W, R% n, _- L0 e
//1602液晶相关I/O设置3 G9 J/ Y. S9 f
#define Rs  PORTC4_bit
2 H1 f6 o& K. e#define RW  PORTC5_bit1 c" b4 K" O7 j0 Q/ _0 ~3 u) w
#define E   PORTC6_bit7 B. [: `* Z6 E' m5 |6 ~1 \: n+ q
#define LCDDAT PORTD
; J+ z- S+ L- g5 ]/ z
  {3 B1 f' d* t3 |* J9 b, N#define iDat    1                //数据标志4 @, @# l* |+ z! x* q6 `$ P6 g
#define iCmd    0                //指令标志/ i& X4 V4 u- R: p

( l' F1 X4 q/ y" H0 W7 D& Y//DatCmd==0--1602写命令函数
0 k& E1 |; p8 ~$ V3 M7 J//DatCmd==1--1602写数据函数
, B: ?7 X) t6 o! vvoid LCD1602_Writebyte(unsigned char DatCmd,unsigned char dataByte)( q: Y& u# d9 L* l7 l  ~! x" R
{/ o8 Q7 X# f7 }6 D! l
        if (DatCmd == iCmd)                //指令操作
8 A) E7 B5 p' ^  v                Rs=0;               //设置该字节数据为控制命令
9 k7 w! H% \/ s/ j: T. H        else$ b9 Y" Y( [% r8 o4 Z
                Rs=1;                   //设置该字节数据为数据
* s5 d! S- |* ^/ z* j, n6 e1 F2 V  L5 B1 g( H8 l0 E' ?; z
        RW=0;                //选择写状态
& ]2 M7 P9 z. e! a! F# }        LCDDAT=dataByte;        //将命令字通过RD口送至DB
  D5 x) x# l5 h$ p        E=1;                 //E高电平将命令字写入1602液晶6 d8 I- O$ R* G0 \" U' C
    delay_us(850);
- j. f) b3 U7 U        E=0;                 //写完以后,恢复E的电平
2 B! u; |+ O( D: q8 m, J}
0 g* ?' o4 E& X6 c0 m) k# ]1 G7 K& F; F2 E
//1602液晶显示地址写函数
8 f9 P, h0 R9 ?/ Zvoid LCD1602_GotoXY(unsigned char x,unsigned char y)
% L3 Q5 M  v- m. H; ?{( M; J* u0 X) E9 t0 \
        x&=0x0f;             //列地址限制在0-15间6 Y  d' n  c; p, T' u$ i
        y&=0x01;             //行地址限制在0-1间+ ]/ M9 y; ?$ F. t$ U
        if(y==1)             //如果是第2行
4 @# C" A( a9 h# [6 p* |- z  [                LCD1602_Writebyte(iCmd,(x+0x40)|0x80); //将列地址写入
- I0 d8 Y0 L  @7 O  w        else                 //如果是第1行
+ E+ q- m; M* C" _/ V1 R$ N) x                LCD1602_Writebyte(iCmd,x|0x80);        //将列地址写入
1 i8 i" U( L1 ?- W9 P. H2 x}
3 G5 y( T: g# Z# }% I
3 `7 a5 n8 Y; R7 e! }( a//1602液晶初始化函数
7 w0 Z7 l$ E9 h8 Y% X" \void LCD1602_init(void)
6 Q- b- P( F0 T( u3 n* ]{
; B- L+ L# Q& Q  z3 k; }: B# R    delay_ms(15);
  @0 b! M2 p; T    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示. {; I* ]5 e( ?
    delay_ms(5);
' |$ T3 d2 G1 }! M& _0 X$ i- u8 G    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示
8 \$ c9 ?! o! x- Y: E( X    delay_ms(5);
. R. t; ]; C( Q1 t1 j( n7 S& b    LCD1602_Writebyte(iCmd,0x38);7 @  M2 D# r0 P, l# f8 t1 r8 R
# q! x/ ]. P3 T2 A3 a. r7 ]* k4 q

2 q/ M2 b# i" b/ Y7 `0 m    LCD1602_Writebyte(iCmd,0x38);
7 ^/ m' L; ~. i( ?: z    LCD1602_Writebyte(iCmd,0x08); //显示功能关,无光标5 R3 t4 C+ e- l5 H
    LCD1602_Writebyte(iCmd,0x01); //清屏( k3 T4 d' _+ H# P$ ~5 o9 m: y/ P
    LCD1602_Writebyte(iCmd,0x06);  //写入新的数据后,光标右移,显示屏不移动5 x% g1 P2 W. q" A# J5 ]
    LCD1602_Writebyte(iCmd,0x0C);  //显示功能开,无光标6 b0 K7 `7 N& X5 ~$ G% x9 D
}
+ c5 U& A! @* {$ h, f* U9 R' }3 o5 v9 R3 O6 Z7 e$ a2 U- w+ \
//1602液晶指定地址显示函数
: {: s5 n7 _4 N9 i7 X  i/ jvoid LCD1602_Display(unsigned char x,unsigned char y,unsigned char buf)
' b9 a9 v  H# @! e! q$ J* q- o! p{3 n4 C2 w( o: y+ g
        LCD1602_GotoXY(x,y);                    //先将地址信息写入8 {- W& v  O& I6 G7 I2 N( S9 k$ I3 ]
        LCD1602_Writebyte(iDat,buf);  //再写入要显示的数据  i% t4 p, {/ J( j: ?/ [4 l
}2 ?3 N7 U9 e# V; q- C( z* |! j& U7 J

, h& z2 H; }9 u, `% V% Rvoid LCD1602_prints(unsigned char x,unsigned char y,unsigned char *pString)' [4 o( B9 P: d# C
{" S  M& ?" I0 B. ~$ o5 @6 `
0 Z+ e1 J. U9 M* M% K
        LCD1602_GotoXY(x,y);) b) m1 x9 k1 u" D
        while(*pString)//while((*pString)!='\0')//        //只要字符串没写完就继续写6 G; z1 k: i- V* s) A; p: I7 r
        {/ k. k; u8 Y2 c  m0 |/ \# f# M% Z
                LCD1602_Writebyte(iDat,*pString++);3 F3 j) s0 z# F6 t+ p9 n! Y
        }" a/ y$ X0 z2 ]" g
}6 X( O" ]. m' Q' Y7 f

3 {& `. @3 V+ ]6 p9 R. @* f' ?void main(void)
8 K) e1 H. c) F/ c( v{+ Z+ O& ~' K% |0 K5 p
3 P+ e4 x! l7 `5 g" M: p! Z
    unsigned int num=1223;; n' \/ Z6 M2 P) a" ]  t
    DDRC=0XFF;
# [; {- @. @7 l/ m6 S  a1 U    DDRD=0XFF;+ j$ H4 V* O6 B$ ^; N& ?; E
    PORTC=0B00000000;
( b7 D! p+ U# ^6 l6 _+ S/ O    PORTD=0B00000000;. [6 M% n; P, x8 G

* G# q+ i$ v. N9 q- {# @    LCD1602_init();
; M+ X: W/ f, d( X1 _    LCD1602_prints(0,0,"Zeroer1223");
4 @+ ]. ?; z/ ~9 L. I' C: H' ^/ K7 I( S1 F. Q
    while(1)5 S& C& \; }9 X  h) K
    {
& ]% ]# a9 o8 Z* G6 r  J/ Q+ U8 u                delay_ms(500);
5 `: w# V. x; w- Z) v                if(++num>9999) num=0;
4 Y; Q7 I- H) e  P" n, t                LCD1602_Display(6,1,num/1000+'0');//千位3 G8 G& p( |+ S: Q' X/ N
                LCD1602_Display(7,1,(num%1000)/100+0X30);//百位7 V" u' X1 h/ m% o4 Q' y: ?! d. l
                LCD1602_Display(8,1,(num%100)/10+0x30);//十位+ J5 @& y, I# A
                LCD1602_Display(9,1,(num%10)+'0'); //个位
/ E7 a5 V$ ?2 O8 W% s+ ]* l# ~& \4 Y% ~4 \( P
    }7 W( D. P/ M% h- t2 N
}  s$ V  z9 S& I$ D  I
1 k8 `) h  a7 V' _5 ^5 Q- L  j
% Q4 M1 c# }- U
- [8 w8 x/ x. f  X  O. e

0 M$ `) r+ y" Q" Y4 G8 s( o6 s# N7 N% Y

6 o/ l7 \! u/ J. b/ p2 P
8 H9 j$ R2 `8 F
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-4 01:01 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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