惠美科技完成超3亿元D轮融资,由钟鼎资本
06-17
十一、ATMEGA16驱动4液晶(驱动为HD2) 十一—(01)、今天只是简单更新驱动~ ~(以后会更新~~变速等等~~毕竟这些显示器还是很重要的~~还有更重要的是赶紧买板子~~) 先上传图片~~ 这是用ATMEGA16模拟的(真是蛋疼啊~~对比下面的51模拟,数据压缩了完全看不懂~~数据一模一样~~)然后程序: IAR11_1.c //------------------------------------------------ - --------------------------//main#include"ioavr.h"#include"intrinsics.h"#include"Lcd4Init .h "#include"MacroAndConst.h"#include"ZiMo.h"#include"Lcd4Display.h"端口初始化函数 void port_init(){DDRC=0XFF;PORTC=0XFF;DDRD=0XFF;PORTD=0XFF;}//- ------------------------------------------------ -- ---------------------------//mainvoid main(){port_init();lcd_init();lcd_set_row(0);//为什么这里不设置这一行~~是默认的吗~~lcd_display_static(qianming);while(1);} LCD4Init.c //------------------------------------------------ ----------------------------------//LCD4初始化函数-可调用-ATMEGA16单片机 //这里的lcd_check_busy是还没起作用 使用~~#include"ioavr.h"#include"intrinsics.h"#include"MacroAndConst.h"#include"delayics.h"#include"bitics.h"引脚输出高低电平的宏定义level#define lcd_rs_1SET_BIT (PORTD,2)//数据命令选择端#define lcd_rs_0CLR_BIT(PORTD,2)#define lcd_rw_1SET_BIT(PORTD,1)//读写命令选择端#define lcd_rw_0CLR_BIT(PORTD,1)#define lcd_en_1SET_BIT (PORTD,0) //使能信号 #define lcd_en_0CLR_BIT(PORTD,0)#define lcd_cs1_1 SET_BIT(PORTD,4)//左半屏CS1#define lcd_cs1_0 CLR_BIT(PORTD,4)#define lcd_cs2_1 SET_BIT(PORTD,3) //右半屏CS2#define lcd_cs2_0 CLR_BIT(PORTD,3)//-------------------------------- ------- ----------------------------------------#define data_port PORTC//数据传输端口宏定义#define busy0x80//---------------------------------------- --------- ----------------------------------//读取“忙”函数;读取数据线最高位 如果DB7为1,则为Busyvoid lcd_check_busy(){uchar temp;lcd_rs_0;lcd_rw_1;//读取命令 data_port=0x00;lcd_en_1;while(1){lcd_en_1;//使能DDRC=0x00;temp=PINC;if(tempbreak;delay_us(1);lcd_en_0;//禁用}DDRC=0xff; //在E的下降沿,数据被锁存(写入)到其控制驱动器lcd_en_0;} / /------------------------------------------------ - ----------------------------------//LCD写命令函数 void lcd_write_command(uchar com){//lcd_check_busy( );lcd_rs_0 ;lcd_rw_0;data_port=com;lcd_en_1;delay_us(1);delay_us(1);lcd_en_0;}//------------------------ --- ---------------------------------------------------------- --- --//LCD写数据函数 void lcd_write_data(uchar dat){//lcd_check_busy();lcd_rs_1;lcd_rw_0;data_port=dat;lcd_en_1;delay_us(1);delay_us(1);lcd_en_0;}//- --- ---------------------------------------------------------- --- --------------------------//LCD设置页功能。

DB7~DB3是设备的固定位!然后DB2~DB0都设置为8. page(共8页~~) //起始页为0xB8,显示的RAM共有64行,分为8页,每页8行~~ void lcd_set_page(uchar page){page=0xb8|page;//使用页面的主地址或者要显示的页数,即当前显示的页面 lcd_write_command(page);}//---- -------------------------------------------------- ------------------ ------//LCD设置线函数//DB6和DB7是设备固定位(感觉这样设置是为了兼容未来的设备~~),都是1;其中,DB5~DB0为用户设置行,共64行 //Start行首地址为0xC0void lcd_set_row(uchar row){row=0xc0|row;lcd_write_command(row);//用于写入命令,从哪一行开始~~}//-------- - ------------------------------------------------- - ------------------//LCD设置栏功能//DB6和DB7是设备的固定位!是1, 0。
DB5~DB0是用户设置的列,一共64列,但是请注意:CS1和CS2选择左右屏,各64列,其中两个是列 //起始列是0x40void lcd_set_column(uchar column){ column=0x40|column;lcd_write_command(column);//写入列首地址的命令~~}//---------------- -------- ------------------------------------------ -------- ----//显示切换函数。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-18
06-18
06-18
06-17
06-18
06-18
最新文章
使用电子管有哪些注意事项?如何检查电子管之间是否短路?
博通支付1200万美元和解SEC财务欺诈指控
八名运营商高管确认加入虚拟运营商
内蒙古农牧区雷电灾害成因分析及防雷对策
北京联通将5G应用于世园会远程医疗急救
TD-SCDMA最后一轮冲刺测试启动,产业前景更加光明
专访阿里云总裁王健:云计算服务平台梦想成真
USB2.0控制器CY7C68013的接口设计与实现