我自己研制的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
PORTB&=~(1<<3); //清零;
}
void rw(uint8 h) //读/写挑选操作;
{
if(h==0)
{
PORTB&=~(1<<4); //清零;
}
else
{
DDRA=0X00;
PORTA=0XFF;
PORTB|=1<<4; //置一;
}
}
void e(uint8 h) //传输使能位;
{
if(h)
{
PORTB|=1<<5; //置一;
}
else
PORTB&=~(1<<5);//清零;
}