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

ATmega16L-6 1602

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ATmega16L-6 16029 R2 V9 L) O4 O. Y* y, K
//1602液晶相关I/O设置+ V6 x. d" x) A! j
#define Rs  PORTC4_bit
4 _3 y) e2 v; n- ~& |* A#define RW  PORTC5_bit
+ u6 W/ {: x  u, Z#define E   PORTC6_bit
: Y" _! I/ l$ F. [$ I$ j" V. d#define LCDDAT PORTD
1 t. `. _& [& c( [
( F. {& W) ~& h! ~$ y#define iDat    1                //数据标志
. u  a! l6 {, e5 H- O1 r# d- b#define iCmd    0                //指令标志3 C* T& f+ p& ^# O
# p& V* }9 D1 G& N
//DatCmd==0--1602写命令函数
2 ?9 [/ _7 Z5 K" a0 G* M//DatCmd==1--1602写数据函数9 ?3 A6 q! S. X- ?2 H
void LCD1602_Writebyte(unsigned char DatCmd,unsigned char dataByte)
0 W8 I2 J4 r' p$ R1 P4 Y{! e0 D; O! q, M1 d
        if (DatCmd == iCmd)                //指令操作
" P2 @' _5 k, T/ {' Z                Rs=0;               //设置该字节数据为控制命令& E1 p/ n2 R* u4 \7 @  @8 T+ h- Q
        else) ?( r, N/ ~5 t; l
                Rs=1;                   //设置该字节数据为数据- m# j6 }3 y2 ?' k( _) I

8 w  B0 V( [- ?) G# N& Q        RW=0;                //选择写状态: b  C+ T' u; X! R+ ~! a* |; s
        LCDDAT=dataByte;        //将命令字通过RD口送至DB( T/ v& r; M* @- \
        E=1;                 //E高电平将命令字写入1602液晶, f. D! K* Q& q* k  t1 W5 _2 j
    delay_us(850);
& R6 J4 y0 u  R! Z        E=0;                 //写完以后,恢复E的电平6 I, W' |3 l- b( d; H% I
}: A2 b# E2 ^7 |; M; ]8 M7 y
7 S# R0 z% M& B
//1602液晶显示地址写函数
% m' I1 M( ?) w, e; G5 A3 Hvoid LCD1602_GotoXY(unsigned char x,unsigned char y)! d  T1 W- [/ I1 u# I
{
7 w7 h# Q, y- ]( `9 N        x&=0x0f;             //列地址限制在0-15间+ d) ]3 _$ K! V1 a
        y&=0x01;             //行地址限制在0-1间
+ a: m4 O1 l* _        if(y==1)             //如果是第2行% g% H7 r+ m  q
                LCD1602_Writebyte(iCmd,(x+0x40)|0x80); //将列地址写入
4 j! _4 f4 }9 |4 o: B; G% e: H        else                 //如果是第1行
6 `' R& q* S, T9 F1 ?                LCD1602_Writebyte(iCmd,x|0x80);        //将列地址写入
) \3 R0 L' l' z7 W2 J9 r8 Q}8 S3 M4 S6 z5 t  v$ z0 L
$ ]0 g, h- w, a: A4 Z
//1602液晶初始化函数
; I& I& @& e+ {1 P2 s% Evoid LCD1602_init(void)
5 s. ^- w- [6 c9 G{
8 o4 V4 x% |% k; _& E    delay_ms(15);
( s' x8 _  `( H& E$ Y8 B    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示, G* _' A. s! t: M0 ?
    delay_ms(5);
  \- X4 Z; {+ u+ F% m    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示( {0 `/ D+ X8 C2 M! @$ L9 Z- V
    delay_ms(5);- E5 e* I- M' p5 j" b8 H
    LCD1602_Writebyte(iCmd,0x38);
* M/ T" r" a3 _# h0 k5 t, }- \  s4 y3 H2 Z+ `' u4 M4 F) t2 a# N

5 b0 L( [) @4 P  m. G    LCD1602_Writebyte(iCmd,0x38);
/ V# b7 ~! R: U: n$ {    LCD1602_Writebyte(iCmd,0x08); //显示功能关,无光标9 Q% R( X) i; A' d" H" e& u. @
    LCD1602_Writebyte(iCmd,0x01); //清屏
/ D# e" A3 [- k9 N5 H; Z! c3 f* H    LCD1602_Writebyte(iCmd,0x06);  //写入新的数据后,光标右移,显示屏不移动
. {( P* ]( z2 h  Z* }, ^    LCD1602_Writebyte(iCmd,0x0C);  //显示功能开,无光标
+ a. ~. j' a( }( G) i9 D}
) ]! r0 C/ }0 [& N1 T. `: }( `6 p. j' s
//1602液晶指定地址显示函数
8 m1 Q7 h8 n: z( H5 b5 wvoid LCD1602_Display(unsigned char x,unsigned char y,unsigned char buf); P2 L- ]" Y2 ^2 ?9 a  X5 B
{- M8 t; B; ]* ]9 o6 l% Y
        LCD1602_GotoXY(x,y);                    //先将地址信息写入
5 {" h" h9 K6 N; p5 i( f0 T6 [        LCD1602_Writebyte(iDat,buf);  //再写入要显示的数据4 s% s/ C$ O' R
}- ?* W; C0 K  `5 r, d

3 W$ W' n1 C: V) ?void LCD1602_prints(unsigned char x,unsigned char y,unsigned char *pString)
6 j6 W) q5 |5 {{
! u2 i" k, J1 s' m8 `6 Q# P0 d6 |: l
# v# ?& U% t8 l6 T0 L9 E4 a) W        LCD1602_GotoXY(x,y);
) P/ U& N5 ?2 q/ M9 J6 e- Z% q        while(*pString)//while((*pString)!='\0')//        //只要字符串没写完就继续写. x5 l; m( U. p1 {! x+ g. B2 L
        {
" [8 E) ^& B* j8 I  ]" {7 q' c                LCD1602_Writebyte(iDat,*pString++);
: p/ u% c! W5 I        }
8 ^! [9 [, m3 A" u3 U( I$ Q}' X7 l5 k( ?1 v
; n: Y3 Y' O; E3 v$ R4 Z
void main(void)
$ n- o1 t5 A3 y, }" l/ o+ I{2 `9 e* \) c3 p5 y+ K

; N2 l* h, X& x% ^( m9 H    unsigned int num=1223;# h1 i; J0 P  [- C
    DDRC=0XFF;$ p8 ?! Q: B% F
    DDRD=0XFF;1 E& A5 e0 Y8 _+ |* H- H3 I
    PORTC=0B00000000;  T1 A0 _4 n9 I+ y
    PORTD=0B00000000;
! z6 {% {( B( N3 ^& s8 ~6 u  n) H8 u0 }5 p6 H4 O# W
    LCD1602_init();
, \5 t: y+ ?. X# l    LCD1602_prints(0,0,"Zeroer1223");9 @/ P& L" E5 C

* S% b! ^7 Q, ]    while(1); u* `' J( g, w6 g
    {
* q; O% C6 P' h' v6 z% e- X9 C; R  z                delay_ms(500);
& @6 J( B+ Q2 B4 V9 r  e$ l                if(++num>9999) num=0;* T6 Y# Y. [; L& ~7 h- k% F
                LCD1602_Display(6,1,num/1000+'0');//千位" j8 E' A, f9 K' n3 Y
                LCD1602_Display(7,1,(num%1000)/100+0X30);//百位7 }/ M3 |' \; Y
                LCD1602_Display(8,1,(num%100)/10+0x30);//十位) f4 `+ M1 X9 i3 O- M0 w, B1 J
                LCD1602_Display(9,1,(num%10)+'0'); //个位1 A- }( {% ~2 A# H* |9 D
8 Z% j7 Y9 B' M5 @' w+ {8 U
    }2 y# R4 `7 R, w/ ^3 f( ~% @
}4 F3 D! S; K) p" v( E

7 R9 L" A% B7 y5 _
7 Y4 l" @/ e/ D/ _. h' T$ u

3 s) G( {6 G1 q0 ]! b  \' l) W+ z8 U; s# W+ @

: N/ z5 p: P4 g" ~7 |4 |. \& q: \; A

' p% g% z4 t& ]3 L' |& K) M

0 M5 z% i" Y# V% @& d8 x) V1 l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-17 06:47 , Processed in 0.093750 second(s), 24 queries , Gzip On.

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

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

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