- 4
- 0
- 约3.1千字
- 约 12页
- 2023-08-05 发布于上海
- 举报
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((PINA0x80)==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|=13; //置一;
else
PORTB=~(13); //清零;
}
void rw(uint8 h)
//读/写选择操作;
{
if(h==0)
{
PORTB=~(14); //清零;
}
else
{ DDRA=0X00; PORTA=0XFF;
PORTB|=14; //置一;
}
}
void e(uint8 h)
//传输使能位;
{
if(h)
{ PORTB|=15;
//置一;
}
else
PORTB=~(15);//清零;
}
//===============================================
=========
void ddra(uint8 h)
//PA 口输入输出函数;
{
if(h)
{
DDRA=0XFF;
//输出模式; PORTA=0xff;
}
else
{DDRA=0X00; PORTA=0XFF; } //输入模式并且有上拉;
}
void busy()
//繁忙检测;
{
ddra(0);
//设置PA 口为输入,有上拉; do
{
e(0);
//传输使能为 0; rs(0);
//指令; rw(1);
//读; e(1);
//e 为高电平;
}while((PINA0x80)==0x80);//如果读到数据表示空闲状态,跳出循环;
e(0);
ddra(1);
//PA 口输出状态;
}
void delay() //小延时;
{
uint8 j=0; j=1;
}
void w_cmd(uint8 cmd)
{
busy();
//繁忙检测通过时,PA 口为输出状态,默认输出 0xff; PORTA=cmd; //向PA 口装载数据;
rs(0);
//指令; rw(0);
//写入; e(1);
//传输使能脉冲高; delay();
//延时; e(0);
//传输使能脉冲低;
}
void w_dat(uint8 dat)
{
busy();
//繁忙检测通
您可能关注的文档
- AAA和RADIUS介绍分析和总结.docx
- ABAB和ABAC的词语分析和总结.docx
- ABA教程分析和总结.docx
- ABB变频器ACS800简易操作步骤.docx
- abcb式词语大全 成语.docx
- ABC作业成本法分析和总结.docx
- ACM错误提示、常见问题.docx
- ACM的发展模式分析和总结.docx
- ACS712电流检测分析和总结.docx
- ADC12物理性能分析和总结.docx
- 2026中考物理复习专项练习运动和力含解析.doc
- 2025_2026学年高考英语一轮复习讲练测第02讲必修1Unit2Englisharoundtheworld讲解含解析.docx
- 天津市静海区第四中学2025_2026学年高二历史上学期第一次月考试题含解析.doc
- 2025年四川省德阳市中考历史真题试卷及答案.docx
- 2025_2026学年高中数学第二章平面向量2.doc
- 2026届高考英语二轮复习好题专题01阅读理解第02期含解析.doc
- 2025年数字货币行业人才测评标准试卷及答案.docx
- 河北省邢台市2025_2026学年高二语文下学期开学考试试题.doc
- 2025年NLP文本摘要模型评估实操考核卷及答案.docx
- 2026版新教材高考历史一轮复习必修下第9单元第22课中古时期的欧洲学案新人教版.doc
原创力文档

文档评论(0)