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

ATmega16L-6 1602

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ATmega16L-6 1602  d5 a# ~( O; `0 Y! ]# s6 X( p
//1602液晶相关I/O设置
- }2 b6 U8 P; ^+ y9 n4 I9 J#define Rs  PORTC4_bit
& M' z* U8 n' S# H#define RW  PORTC5_bit
- [9 g5 g7 G) b9 I#define E   PORTC6_bit
6 t' `  W( d( b; D, l#define LCDDAT PORTD- S8 m4 E7 z8 M
  V: b/ _  w7 L) d
#define iDat    1                //数据标志5 o3 ?. k: Y2 @' X' r
#define iCmd    0                //指令标志4 H6 I! t  i9 @2 {! q" [: r; B
+ q! }" s8 s* {, O! t0 S: c5 s7 [0 T
//DatCmd==0--1602写命令函数
0 [- A; Y) `6 z//DatCmd==1--1602写数据函数
; O( Z. z) }) r2 ]2 D! ~void LCD1602_Writebyte(unsigned char DatCmd,unsigned char dataByte)# C- N# |1 t& E
{# H/ S) n9 Z! e  i  {6 d0 [# E
        if (DatCmd == iCmd)                //指令操作! r: w7 ]( S5 s' n7 x
                Rs=0;               //设置该字节数据为控制命令
6 R6 ~4 z4 s- r        else$ Z4 m* _, S: b- i+ @) V0 d4 Q
                Rs=1;                   //设置该字节数据为数据
1 O. E( q* @: h8 m& F
  ~. d6 K. V. f$ J7 q        RW=0;                //选择写状态: C- ^) w  Q- U7 L
        LCDDAT=dataByte;        //将命令字通过RD口送至DB
& ^6 H8 P' S$ f/ s. A- Y+ g7 w3 R        E=1;                 //E高电平将命令字写入1602液晶6 A. c+ S9 P- A1 X4 P+ |" S
    delay_us(850);
0 q' U2 G( f; r        E=0;                 //写完以后,恢复E的电平* J# E7 |! v( f, F$ T2 _
}
6 u: @9 L2 p+ Q7 L2 H* ~- ?3 ~4 h8 ~- z& z3 a  Y: {; ]/ a% r
//1602液晶显示地址写函数7 t  l5 m7 |1 `6 |* |
void LCD1602_GotoXY(unsigned char x,unsigned char y)
1 m+ Y% x1 B' e+ [+ B9 `{& |1 A1 x) C" h
        x&=0x0f;             //列地址限制在0-15间
, X. @& q, ]- O7 d9 K        y&=0x01;             //行地址限制在0-1间
5 f7 G( A, `4 w# o4 }+ y9 X: i        if(y==1)             //如果是第2行9 d+ M/ c& H6 F/ m
                LCD1602_Writebyte(iCmd,(x+0x40)|0x80); //将列地址写入
$ t* q7 [2 J6 Y$ L" c; B2 k        else                 //如果是第1行) {/ ^% V& Z: h6 L% }. A1 I
                LCD1602_Writebyte(iCmd,x|0x80);        //将列地址写入
1 e" i7 c3 |( B5 o* z% h& x}
9 K  Z/ g  m- [! J. G0 g: }) q7 ?6 ]6 }1 b# X# m) E
//1602液晶初始化函数$ |; v; i8 y( a# ]
void LCD1602_init(void)% u6 _2 w8 J6 q7 Y# t& h
{
4 A; y3 `2 q8 Q! d" [* M* w    delay_ms(15);9 m. u+ N3 F% N
    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示
, k- Y4 {+ ?  M    delay_ms(5);8 U# n$ k2 M  b2 x% K" D/ ]2 ]& ~
    LCD1602_Writebyte(iCmd,0x38); //8位数据总线,两行显示模式,5*7点阵显示
/ D7 z# R; s( E/ \/ t' t; e- D# V    delay_ms(5);4 W' r4 ~% Z3 b6 p; e& y+ N
    LCD1602_Writebyte(iCmd,0x38);
- W) C$ l5 W1 h% e% `
) a. j' t+ T  B* P* T# B0 [
' i1 B- A+ A$ |$ u' U    LCD1602_Writebyte(iCmd,0x38);
( D1 U0 O# \$ n/ d* j    LCD1602_Writebyte(iCmd,0x08); //显示功能关,无光标
" K: \/ }/ Q+ s6 M, R4 a7 X    LCD1602_Writebyte(iCmd,0x01); //清屏
2 D! r# A/ r2 p! z    LCD1602_Writebyte(iCmd,0x06);  //写入新的数据后,光标右移,显示屏不移动/ F# x( O4 X, K9 B& f
    LCD1602_Writebyte(iCmd,0x0C);  //显示功能开,无光标1 P, w# [9 ]' @* ^. d/ y; q1 v8 X
}
0 K* h3 C) T' ]& I; u
' E- @! D6 s4 P) Z//1602液晶指定地址显示函数
2 S" Q' G. s# ~6 V! P- U) fvoid LCD1602_Display(unsigned char x,unsigned char y,unsigned char buf)9 h. B" c! @: O$ h
{2 e. X/ h) c7 U5 G# \& W
        LCD1602_GotoXY(x,y);                    //先将地址信息写入) x- `- w+ b9 ?/ [$ O
        LCD1602_Writebyte(iDat,buf);  //再写入要显示的数据
9 e# j- C6 J" O# ]7 _- N- U- q}! {: n  _0 H) Q$ \

: {& I9 V9 L  ^void LCD1602_prints(unsigned char x,unsigned char y,unsigned char *pString)9 o0 G' N! L+ |
{, t) b5 ?- z/ _# K2 d- j+ A2 |

: c8 Y8 g2 z. r1 t5 v3 P7 X; x$ e5 J        LCD1602_GotoXY(x,y);2 K* D3 W, x! _- R
        while(*pString)//while((*pString)!='\0')//        //只要字符串没写完就继续写8 a1 @; ~9 c' ~. Q, u8 |
        {
/ j8 T8 F7 W" D: d3 }                LCD1602_Writebyte(iDat,*pString++);
5 B. L% L$ F( Z1 Q        }
3 O# B# G7 O' P2 V' f# W% d. n4 p}
* `% q; n8 e& H- p+ z/ _- m* \
, Y/ H# }) P# `9 O" _void main(void)
6 \" S5 q+ H0 L' @  W3 V( f9 f{
; U3 I% `; c) ]& A# p
& ~/ r/ ?. C" D& r2 v    unsigned int num=1223;
/ H9 O6 y7 K& f1 \4 F    DDRC=0XFF;; d" Q* c: q0 _1 @
    DDRD=0XFF;
) @; s1 W. K! o; z, v" a1 i- i# S    PORTC=0B00000000;
& U  W8 u; I8 O5 ]; M    PORTD=0B00000000;1 W' e0 _. {: O7 Q9 d
- S8 u1 G2 v( X$ K  O; X4 K
    LCD1602_init();
$ J- k& `5 \/ l& ^- m    LCD1602_prints(0,0,"Zeroer1223");
0 |5 L! D4 H' W9 g/ b- P5 d/ q2 @( E5 ?1 c# M
    while(1)
6 c1 ^5 l3 ~2 g8 U7 d1 \2 t    {
" Y; h/ |) T+ Y1 {  @6 q                delay_ms(500);: D! D0 U. M2 Y# c8 V  v# |
                if(++num>9999) num=0;
! Q, R9 M4 B5 t( ]  `) ?" _$ |& R                LCD1602_Display(6,1,num/1000+'0');//千位6 [3 L/ R# ~+ g
                LCD1602_Display(7,1,(num%1000)/100+0X30);//百位' c5 D6 n; O  W7 s( j5 {. @* u+ k$ Z
                LCD1602_Display(8,1,(num%100)/10+0x30);//十位
" E$ b+ \) }: O! K  z  e+ ]8 C                LCD1602_Display(9,1,(num%10)+'0'); //个位
/ W5 {; m, g7 U! L8 [2 D
, m1 ~: `/ A3 c8 C1 c6 Y" D1 t    }8 @! ~' u+ l# G7 t5 p5 Q
}
0 [4 R. C' l. j# F
9 i  |+ a, p. [4 r1 U. A4 x: R% O( q" y9 G
/ d/ ~; d( D  N( I

- q- [+ }5 E/ G9 B, _! f% R+ P
& J5 y, m9 T9 l' Y/ H4 f: N

0 b2 V; u2 l/ B0 c+ ~' ~+ E
; j6 Z$ I! b& Q0 O2 p5 R
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 14:08 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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