收藏0 举报
justsuperone 发表于 2014-9-22 22:27 把初始化防在循环外边试试
钟国两 发表于 2014-9-22 22:49 也不行啊,我之前已经试过把初始化放在外面的,
/******************************************************************************* * 标题: 启东微芯LJD-SY-5100单片机开发系统演示程序 * * 文件: 1602.C * * 日期: 2005-7-4 * * 版本: 1.0 * * 作者: 启东微芯 * * 网站: http://www.ljd-2008.com * ******************************************************************************** * 描述: * * 液晶屏第一行显示 welcome! * * 第二行显示 www.bluemcu.com * * * ******************************************************************************** * 【版权】 Copyright(C)微芯科技 http://www.ljd-2008.com All Rights Reserved * * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! * *******************************************************************************/ #include <reg51.h> #include <intrins.h> typedef unsigned char BYTE; typedef unsigned int WORD; typedef bit BOOL ; sbit rs = P1^4; sbit rw = P1^5; sbit ep = P1^3; BYTE code dis1[] = {"welcome!"}; BYTE code dis2[] = {"www.bluemcu.com"}; delay(BYTE ms) { // 延时子程序 BYTE i; while(ms--) { for(i = 0; i<250; i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } lcd_wcmd(BYTE cmd) { // 写入指令数据到LCD delay(1); rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } lcd_pos(BYTE pos) { //pos=0x40; //设定显示位置 lcd_wcmd(pos|0x80); //lcd_wcmd(pos); } lcd_wdat(BYTE dat) { //写入字符显示数据到LCD delay(1); rs = 1; rw = 0; ep = 0; _nop_(); _nop_(); P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } lcd_init() { delay(1); //LCD初始化设定 lcd_wcmd(0x38); //显示模式设置:单行,8字符,5x7点阵 delay(1); delay(1); lcd_wcmd(0x06); //开显示,关光标,不闪烁 delay(1); delay(1); lcd_wcmd(0x0c); //设置输入模式:光标增量移动,显示不移位 delay(1); delay(1); //lcd_wcmd(0x08); //delay(1); //delay(1); lcd_wcmd(0x01); //清除LCD显示的内容 delay(1); } void main() { while(1) { BYTE i; lcd_init(); // 初始化LCD delay(10); lcd_pos(0x05); // 设置显示位置为第一行的第5个字符 i = 0; while(dis1[i]!='\0') { // 显示字符"welcome!" lcd_wdat(dis1[i]); delay(30); i++; } //delay(20); //lcd_init(); delay(10); lcd_pos(0x40); // 设置显示位置为第二行第二个字符 //delay(10); i = 0; while(dis2[i]!='\0') { lcd_wdat(dis2[i]); // 显示字符" www.bluemcu.com " delay(30); i++; } //while(1); delay(40); } }
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
时间类勋章
发帖类勋章
等级类勋章
2
6
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号