AVR单片机ATMEGA16 1602液晶驱动程序
及心得
首先,祝福各位同仁,光棍节快乐!
今天,给我最好的节日礼物就是,我自己研发的AVR微控制器芯片开发板,1602液晶屏实验成功!我很欣慰.写了一整天的程序,反复实验,最终在凌晨0点.终于成功了.
在此过程中,最大的问题莫过于那个所谓配套的1602液晶屏数据手册!这个手册简直是误人子弟,里面资料写的很含糊.并且有错误,而导致我反复试验失败,最终,我使用了通用的1602液晶屏数据手册,才得以成功.
我自制的AVR开发板尺寸和我买的51开发板差不多大小,ATmega16最小系统,8位数码管,蓝光流水灯,isp编程接口.过载保护保险丝,两个74hc573锁存器.1602液晶屏都已焊接完成,万用板是12X18cm的单孔玻纤板(质量不太好,便宜没好货).现在我才发现不够用,模块数量相同的两块实验板,手工焊接的一定要比机器印刷的大2~3倍才行.....
没办法,我只能用5X7cm的万用板做小模块,ADC模块,DS1302时钟模块,激光二极管模块等等,然后用杜邦线把它们和AVR核心板链接起来,目前计划是这样的,往往计划很丰满,实际很骨感,伤脑筋啊,,,
此次,首次接触了12864大液晶,能显示中文,和超声波测距传感器,这得好好研究一下,我一直想要了解一下2.4g无线传输模块,和陀螺仪传感器,还有GPS模块,不过那些还早,把AVRATMEGA16学的差不多了,再了解,也不迟. /*
Program name: AVR ATMEGA16 1602驱动程序
初次实验通过时间: 2013-11-11 00:04:01 ^_^ ; 注意:在bysy()函数中严重出错!下次注意!
while((PINA&0x80)==0x80); 此语句检测到PA7为零时终止循环;表明空 闲状态
心得:
AVR单片机的IO口位操作比较复杂,
由三个寄存器控制IO口的输出与输入;
DDRn(输出/输入控制) 寄存器;
PORTn(输出时控制数据,输入时控制内部上拉电阻)寄存器;
PINn(用于读取IO口数据)寄存器;
最终校验通过时间: 2013年11月12日15:12:28 */
#include ; #include ;
#define uint8 unsigned char #define uint16 unsigned int //========IO口位操作
======================================== void rs(uint8 h) //数据/指令选择操作; { if(h)
PORTB|=1<<3; //置一; else