X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
Microchip MCU
[资料分享] 基于MEGA128带字库的LCD12864写显示
cc哥儿
2014-8-25 21:12
楼主
#include<iom128v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
#define RS_ON PORTC|=BIT(0)
#define RS_OFF PORTC&=~BIT(0)
#define RW_ON PORTC|=BIT(1)
#define RW_OFF PORTC&=~BIT(1)
#define LCDE_ON PORTC|=BIT(2)
#define LCDE_OFF PORTC&=~BIT(2)
uchar const table1[]="数据组1";
uchar const table2[]="数据组2";
/*************************10us延时函数**************************/
void delay_10us(void)
{
uchar i,j;
for(i=23;i>0;i--)
for(j=1;j>0;j--);
}
/******************************************************************/
/*************************毫秒级延时函数***************************/
void delay_1ms(uchar t)
{
uchar a,b,c;
for(c=t;c>0;c--)
for(b=129;b>0;b--)
for(a=45;a>0;a--);
}
/*****************************读忙指令********************************/
void read_busy(void)
{
RS_OFF;
RW_ON;
LCDE_ON;
delay_10us();
DDRA=0X00;
delay_10us();
while(PINA&0x80);
DDRA=0XFF;
LCDE_OFF;
}
/*********************************************************************/
/*****************************写指令函数*********************************/
void write_cmd(uchar cdata)
{
read_busy();
RS_OFF;
RW_OFF;
LCDE_ON;
delay_10us();
PORTA=cdata;
delay_10us();
LCDE_OFF;
delay_10us();
}
/************************************************************************/
/*****************************写数据函数*********************************/
void write_data(uchar ddata)
{
read_busy();
RS_ON;
RW_OFF;
LCDE_ON;
delay_10us();
PORTA=ddata;
delay_10us();
LCDE_OFF;
delay_10us();
}
/***************************************************************************/
/****************************12864液晶初始化********************************/
void lcd12864_init(void)
{
delay_1ms(50);
write_cmd(0x30);
delay_1ms(1);
write_cmd(0x0c);
delay_1ms(1);
write_cmd(0x06);
delay_1ms(1);
write_cmd(0x01);
delay_1ms(1);
}
/****************************************************************************/
void IO_init(void)
{
DDRA=0xff;
PORTA=0XFF;
DDRD=0XFF;
PORTD=0X00;
DDRC=0XFF;
PORTC=0X28;
}
/******************************主函数*******************************************/
void main(void)
{
uchar i,j;
IO_init();
while(1)
{
lcd12864_init();
write_cmd(0x80);
for(i=0;i<16;i++)
{
write_data(table1[i]);
delay_1ms(2);
}
write_cmd(0x90);
for(i=0;i<16;i++)
{
write_data(table1[i+16]);
delay_1ms(2);
}
write_cmd(0x88);
for(i=0;i<8;i++)
{
write_data(table1[i+32]);
delay_1ms(2);
}
delay_1ms(10);
write_cmd(0x01);
delay_1ms(10);
write_cmd(0x01);
delay_1ms(10);
lcd12864_init();
write_cmd(0x80);
for(i=0;i<16;i++)
{
write_data(table2[i]);
delay_1ms(2);
}
write_cmd(0x90);
for(i=0;i<16;i++)
{
write_data(table2[i+16]);
delay_1ms(2);
}
write_cmd(0x98);
for(i=0;i<16;i++)
{
write_data(table2[i+32]);
delay_1ms(2);
}
delay_1ms(10);
}
}
/**************************************************************/
点赞
回复评论 (1)
沙发
jingxichina
拿来试试看
不锈钢电阻,电阻器
点赞
2014-8-26 14:48
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
求大神给一个利用定时器触发adc采集的程序
EEWORLD大学堂----机器学习从零到一
看图说话STM32-俺相信您肯定会收藏:)
LM5117中文数据手册
u盘枚举成功后,名字显示为Removable disk,该如何才能显示为自己想要的名字?
【为C2000做贡献】闻亭DSP培训第5天全部资料
美国海归经历:国内和国外生活的真实比较 回国发展
为TMDXx570LS31USB运行demo最准备!
驱动程序编译的问题!急!!!
嵌入式驱动移植问题
像诺基亚学习下一站生活
单步无法进入中断
长期供应信号源HP83640L/83622A/83752A/8247C/824
奇怪的警告!
EEWORLD大学堂----直播回放:新一代多频段协议 TI SimpleLink MCU 平台
fade in / fade out
Protel绘图经验谈
关于TI芯片tms320C6726B的flash烧写问题
简单介绍几种常用位移传感器的基础知识
vxworks新手交流群
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复