太原理工大学毕业设计(论文)用纸
3.3 LCD.c
分析LCD12864主要是把卡的相关信息显示出来,用户可以找到自己的卡号和卡内剩余金额。
lCD显示用到PA0到PA7用于接收要显示的数据。PC5控制使能,PC6控制读写,PC7控制操作数据寄存器还是状态(命令)寄存器。
原理图:
图9 LCD原理图
3.3.1 LCD12864写数据(write_com(cmd))
分析:先设置PC6为0即写,在设置PC7为0即写的是命令寄存器,在设置PC5为1即使能,然后把数据写给PORTA,完成。
3.3.2 LCD12864写数据(write_data(dat))
分析:先设置PC6为0即写,在设置PC7为1即写的是数据寄存器,在设置PC5为1即使能,然后把数据写给PORTA,完成。
3.3.3 LCD12864定位显示数据write_lcd(line,row,* str, len)
分析:LCD12864有4行(0行开始),有8列(0列开始)。先写命令write_com(cmd)即告诉LCD12864要在第几行几列显示。再写数据write_data(*str)LCD12864在指定位值显示相应数据。
- 11 -
太原理工大学毕业设计(论文)用纸
3.3.4 LCD12863定位显示数据以l6进制形式显示主要用于显示卡号write_lcd_hex( line,row,*Buf,Len )
分析:就是把接受到的字节转化成对应的字符 对应关系 : 字0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 节 字0 1 2 3 4 5 6 7 8 9 A B C D E F 符
3.3.5 清屏LCD12864(clr_screen())
分析:当LCD12864要显示不同的内容的时候,先清屏,再显示。 调用写命令write_con(0x01)(0x01即清屏命令)
3.3.6 LCD12864初始化(init_lcd)
写命令 write_com(0x30);选择8bit数据流 ;
写命令 write_com(0x0c);开显示(无游标、不反白) ;
写命令 write_com(0x01);清除显示,并且设定地址指针为00H;
写命令 write_com(0x06); 指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位 。
3.4 bell.c(蜂鸣器)
分析:蜂鸣器响意味着操作成功。PB1输出控制着蜂鸣器。 原理图:
- 12 -
太原理工大学毕业设计(论文)用纸
图 10 蜂鸣器原理图
3.4.1初始化蜂鸣器(init_bell())
分析:即把PB1设为输出。
3.4.2 蜂鸣器响(bell_poll())
分析:PORTB ^=_BV(PB1);PB1 1 0 1 0循环 蜂鸣器响。 _delay_ms(100);
3.5 usart.c (串口通信)
分析:RX发送口PD0,TX接受口PD1.用于向电脑发送数据(即卡的序列号)。 原理图:
- 13 -
太原理工大学毕业设计(论文)用纸
图 11 串口原理图
AVR的异步传输接口USART功能
(一)全双工通信(相互独立的接受数据寄存器和发送数据寄存器) (二)支持同步或异步传输操作。
(三)同步传输操作时,可采用主机时钟同步,也可采用从机时钟同步。 (四)独立的高精度波特率发生器,不占用定时/计数器
(五)扩展的,支持5-9为数据位和1位或2位停止位的串行数据帧结构。 (六)有硬件支持的奇偶校验位和数据校验。 (七)硬件实现的数据溢出检测。 (八)硬件实现的帧错误检测。
(九)包括错误起始位检测的噪声滤波器和数字低通滤波器。
(十)配备3个完全独立的中断源:TX发送完成,TX发送数据寄存器和RX接收完成
(十一)支持多机通信模式 (十二)支持倍速异步通信模式
3.5.1 USART数据寄存器————UDR
UDR寄存器有2个物理上分离的寄存器RXB,TXB构成,他们使用相同的I/O地址。写UDR的操作,是将发送的数据写入到寄存器TXB中;读UDR的操作,读取的是接受寄存器RXB的内容。当设定使用5,6的数据帧时,高位未用到的位在发送时被忽略,在接受时有硬件自动清0.
只有在USART寄存器中的UDRE位置1时(数据寄存器位空),UDR才能被写入;否则写入的数据将被USART忽略。在发送使能的情况下,写入UDR的数据将进入发送器的移位寄存器,由引脚TXD串行移出。
- 14 -
相关推荐: