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

ATmega16L-6 1602

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ATmega16L-6 1602
* A$ N0 Y' v8 K+ y! O' b% F1 t1 u3 a
//1602液晶相关I/O设置
% Q' p( J/ c" M8 j9 g, M& b+ o#define Rs  PORTC4_bit
+ k8 |  J* a3 u6 e#define RW  PORTC5_bit! g7 w9 v" d: D% V
#define E   PORTC6_bit& l) z1 D5 N' z( a0 g! c7 S9 Q9 H
#define LCDDAT PORTD
. D0 e& y5 X* g* h  H! W' @' ~/ a
5 K& r; Z4 ]$ o! Y" a& [#define iDat    1                //数据标志
: W8 b! h0 i! e4 f3 p5 E4 n#define iCmd    0                //指令标志& O: B+ G; i6 m# P( g

( w* v( ^- W( O" V! @( I5 u//DatCmd==0--1602写命令函数6 |5 G: M: Z% [0 D/ ^, E
//DatCmd==1--1602写数据函数8 }0 e  z% |2 D& @# q+ V
void LCD1602_Writebyte(unsigned char DatCmd,unsigned char dataByte)4 w6 e4 y# I5 Q, m$ J& B$ Z) M0 i
{0 E# y. R: K( ^/ P+ l" h3 w" g. R: ~* s
        if (DatCmd == iCmd)                //指令操作
2 f$ d; l9 F2 O. T. A9 i* ^, F+ ?3 X                Rs=0;               //设置该字节数据为控制命令
, O9 X8 i9 q0 B0 ?7 D0 P        else9 `, ~. ~$ U' \- D- C
                Rs=1;                   //设置该字节数据为数据% K+ w4 s; s1 k" Q$ [' I
1 K: G* b2 R) d# Y6 c9 p! \0 e
        RW=0;                //选择写状态7 r$ H8 Q+ R- x7 b
        LCDDAT=dataByte;        //将命令字通过RD口送至DB4 w  O3 ?! D  {
        E=1;                 //E高电平将命令字写入1602液晶" }- J* ]+ Q, y7 }. B& d, Y0 U
    delay_us(850);, Y: @( L$ K9 {4 N
        E=0;                 //写完以后,恢复E的电平% p) n+ h- p( }! ~9 ^* ~% T
}
2 |1 W- b( d) m$ Q: F- ~# _+ V- H: e/ l
//1602液晶显示地址写函数
8 H, R2 }+ h* svoid LCD1602_GotoXY(unsigned char x,unsigned char y). K& d1 R$ I. P9 i, S4 o
{
0 T: v7 g0 r8 I        x&=0x0f;             //列地址限制在0-15间
8 e' v6 i0 R$ D$ U+ A: u+ C5 T        y&=0x01;             //行地址限制在0-1间2 Z, f9 w( U: w4 @  H0 q
        if(y==1)             //如果是第2行
# ?$ c  j0 w" t8 {# Y/ t                LCD1602_Writebyte(iCmd,(x+0x40)|0x80); //将列地址写入4 S! m9 i7 E' v5 l% Z5 B( |/ o
        else                 //如果是第1行& S. c* B4 s0 d0 A+ E/ R/ x2 T
                LCD1602_Writebyte(iCmd,x|0x80);        //将列地址写入
! G, s' ~! w( W6 Z}$ E% y( R, c$ p% F) I8 K

; j4 f! u+ H0 z- k2 M4 P//1602液晶初始化函数( |- _" S& B: Q3 N, P, P$ h
void LCD1602_init(void)3 g* ]9 I1 K9 o, d
{
% L# D; w5 C3 ^, F    delay_ms(15);
3 S1 G' u$ B. D+ b9 X2 X. g! x    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示' |, }) U; z2 y: M1 O
    delay_ms(5);9 j* F) E3 ]8 X4 R
    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示
: Q1 K8 \. R* T7 n: c    delay_ms(5);8 x' O" L# r; I% P2 a+ A" C
    LCD1602_Writebyte(iCmd,0x38);
) K7 |7 X7 ?/ ^5 Q6 {1 n% g1 B
' K0 z" d1 u+ ~5 q# j; S* V& Q3 t1 B$ a4 W% H( v) |
    LCD1602_Writebyte(iCmd,0x38);
4 g: y9 ]( ^& u" c  Y    LCD1602_Writebyte(iCmd,0x08); //显示功能关,无光标& ~+ _; G1 O1 U) {8 p
    LCD1602_Writebyte(iCmd,0x01); //清屏. c$ p# x! U% p- d5 F. r
    LCD1602_Writebyte(iCmd,0x06);  //写入新的数据后,光标右移,显示屏不移动5 K3 L, V. |9 _% i+ C: L
    LCD1602_Writebyte(iCmd,0x0C);  //显示功能开,无光标
/ @* M- E+ O3 B& \0 a: _}
2 F' I  N+ C. J% e  [+ c
$ A5 x! M3 u( j: ^1 I% m//1602液晶指定地址显示函数
9 Z) j; N5 i, E3 t3 d; n: }void LCD1602_Display(unsigned char x,unsigned char y,unsigned char buf)
9 d6 o: I. z: M: S; Q0 z{
8 m* U( N/ M' B8 v" _        LCD1602_GotoXY(x,y);                    //先将地址信息写入
0 L- {1 i& M2 ?, o0 ^        LCD1602_Writebyte(iDat,buf);  //再写入要显示的数据- d4 f9 x: w0 m0 X8 p' C
}
* k! c9 L% X4 r+ g) H3 ~3 Y
: I" n, _. P5 d6 ovoid LCD1602_prints(unsigned char x,unsigned char y,unsigned char *pString)
# G5 w% g3 a% M- g7 Q0 o{4 G0 D! u! V2 s+ D7 J
* V8 p6 W$ S$ u( ^* Y" o( ^
        LCD1602_GotoXY(x,y);8 x* x0 w' t# r6 w( ^% \
        while(*pString)//while((*pString)!='\0')//        //只要字符串没写完就继续写" p3 @3 p# |/ K; z* a  v
        {
) N$ V* `2 b2 l- O# U                LCD1602_Writebyte(iDat,*pString++);
6 Z; _% M: @: j4 E* d2 l: b8 d- n        }
" D2 D4 F  ?& G& s7 i  X% T2 d}
4 N: E& \' K+ T
9 n3 `. c! U+ d2 ^* yvoid main(void)$ ?- `+ k# z: Z. W& X' u- j
{6 _' h: p2 x' V8 y) P
7 O  h+ V- f, t& f# s3 i
    unsigned int num=1223;2 P4 u& P9 o5 j4 w4 L7 u8 i5 u
    DDRC=0XFF;
7 \) A) U& |: z& ~    DDRD=0XFF;% ^+ {, V+ Y( ~0 ~/ P* [) f+ H
    PORTC=0B00000000;$ {9 h- ~  M+ G
    PORTD=0B00000000;7 U1 R' l, [( a
* v# K( o" G6 _7 ~9 E0 O, N
    LCD1602_init();
1 J, G7 J; {/ `1 Q3 q: Y" v) h    LCD1602_prints(0,0,"Zeroer1223");- U" i/ D. w9 ?) Z8 w# S
" ]' m1 w2 d( }8 g4 A  N
    while(1)
0 D9 V; }2 R3 i3 j4 V    {
. o1 F" ~* k4 U5 u; V+ Z: r                delay_ms(500);
! u7 t; X: _+ V; v" j5 y0 C6 a                if(++num>9999) num=0;
7 c$ V3 Z1 S- `1 r# k; c$ f7 }                LCD1602_Display(6,1,num/1000+'0');//千位
' B* v- N) M0 p  p                LCD1602_Display(7,1,(num%1000)/100+0X30);//百位
& |, H/ \# M! X8 l/ {                LCD1602_Display(8,1,(num%100)/10+0x30);//十位
- x+ @% P* G6 z# ^4 b  ~                LCD1602_Display(9,1,(num%10)+'0'); //个位' l6 H4 M2 \# d2 J$ A0 G9 o4 ?

# m  a" M  Y" e    }" `2 x0 v1 z  W: {: t4 A
}# L3 ?8 d  S2 o+ h' G0 ?; e! `

8 f$ A: o( S- X4 y4 C1 z' k" W! q8 A9 d8 @
6 D: W' C8 M  ]3 ^

, w: a* A0 T2 Y) o$ x. Q7 ]# O# R8 r* s! P1 `7 |; o  Z6 ?/ C

' \- f" z  `2 r
# Z! r' x0 [$ s" p9 d# H1 l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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