#include "ioCC2530.h" /*===========引脚端口定义(移植时需要修改)=============*/ #define LCD_CS P1_7 #define LCD_SCLK P1_6 #define LCD_SID P1_5 /*======================================================*/ /*==========================延时函数==========================*/ void delay_lcd(unsigned char time) { while(time--); } /*========================发送字节函数========================*/ void SendByte_lcd(unsigned char data) { LCD_CS = 1; LCD_SCLK = 0; for(unsigned char i=0; i<8; i++) { if(data & 0x80){ LCD_SID = 1; } else { LCD_SID = 0; } data <<= 1; LCD_SCLK = 1; delay_lcd(50); LCD_SCLK = 0; } LCD_CS = 0; } /*========================发送命令函数========================*/ void SendCMD_lcd(unsigned char dat) { SendByte_lcd(0xf8); SendByte_lcd(dat & 0xf0); SendByte_lcd((dat<<4)&0xf0); } /*========================发送数据函数========================*/ void SendDAT_lcd(unsigned char dat) { SendByte_lcd(0xfa); SendByte_lcd(dat & 0xf0); SendByte_lcd((dat<<4)&0xf0); } /*=======================显示字符串函数========================= 参数1:字符串的起始地址(0x00忽略起始地址) 参数2:显示的字符串内容 ===============================================================*/ void DisplayString(unsigned char addr,unsigned char *data) { if(addr != 0x00) { SendCMD_lcd(addr); } while(*data != '\0') { SendDAT_lcd(*data); data++; } } /*=====================显示中文字符函数========================= 参数1:字符串的起始地址(0x00忽略起始地址) 参数2:显示的中文字符内容 参数3:显示的中文字符个数 ===============================================================*/ void DisplayChinese(unsigned char addr,unsigned char *data, unsigned char num) { unsigned char n; if(addr != 0x00) { SendCMD_lcd(addr); } for(n=0; n<num; n++) { SendDAT_lcd(*data); data++; SendDAT_lcd(*data); data++; } } /*=========================LCD清屏函数===========================*/ void Clear_lcd() { SendCMD_lcd(0x01); delay_lcd(50); } /*=========================LCD初始化函数=========================*/ void Init_lcd() { delay_lcd(100); //功能设置。基本指令集,一次送8位数据 SendCMD_lcd(0x30); delay_lcd(50); //显示字符,光标从左到右位移,DDRAM地址加1 SendCMD_lcd(0x04); delay_lcd(50); //显示设定。整体显示,不显示游标 SendCMD_lcd(0x0c); delay_lcd(50); //清零。将DDRAM填满20H清零,地址计数器AC恢复到00H SendCMD_lcd(0x01); delay_lcd(50); //设定DDRAM地址计数器AC到00H,光标移到开头原点位置,不改变DARAM的内容 SendCMD_lcd(0x02); delay_lcd(50); } /*===========CC2530端口初始化函数(移植时需要修改)=============*/ void Init_Port_lcd() { P1SEL &= ~0xe0; //设置为通用I/O端口 P1DIR |= 0xe0; //将I/O端口设置为输出 } void main() { Init_Port_lcd(); Init_lcd(); SendCMD_lcd(0x80); DisplayChinese(0x00,"广职院",3); SendDAT_lcd('*'); SendDAT_lcd('*'); DisplayChinese(0x00,"欧浩源",3); DisplayString(0x91,"2017/12/31"); while(1); }
您需要 登录 才可以下载或查看,没有账号?注册
举报
lzbf 发表于 2017-12-26 16:10 现在有串口的TFT,显示内容更丰富。
lzbf 发表于 2017-12-26 16:13 LCD12232液晶模块的显示宽度有限。
youtome 发表于 2017-12-26 16:13 读写LCD的速度怎么样
1988020566 发表于 2017-12-26 16:13 显示模块简单很多。
youtome 发表于 2017-12-26 16:12 看成了1602,还想怎么能够显示汉字呢
houjiakai 发表于 2017-12-26 16:11 IO资源不丰富的芯片,楼主都设计了这么强大的功能
yzqok 发表于 2017-12-27 09:02 路过,支持
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
发帖类勋章
时间类勋章
等级类勋章
322
899
3548
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号