完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
单片机是STC89C52RC,我想显示:
第一行:happy everyday!! 第二行:everyday happy!! 谁能给个源码吗? 我用别人的源码修改后,显示不全的,比如烧别人的进去后,显示“123”,我把源码里的“123”改成“3456”,弄好后烧进去,只显示“345”…6不见了…也就是说只能显示3位,要修改哪个语句呢? |
|
相关推荐
25个回答
|
|
本帖最后由 diangongshi 于 2011-11-15 17:53 编辑 你好,我手头有1602液晶显示的程序,我把它改成你所要显示的内容了,下面是在proteus中仿真的图片,你看一下 下面是程序,你说的最后的字符显示不了的问题,我想可能是因为你参考的程序在1602上显示的时候向后缩进了几个字符,从而你最后的一个字符超出了显示的范围。 lcd_pos(0x00); //设置显示位置 对这个函数的参数进行更改就可以达到改变显示位值的目地。 我用的是keil4你如果用的是其它版本的话需要重新建一个工程 希望可以帮到你{:soso_e181:} /************************************/ /*1602LCD测试程序 */ /*目标器件:AT89S51 */ /*晶振:11.0592MHZ */ /*编译环境:Keil 7.50A */ /************************************/ /*********************************包含头文件********************************/ #include #include /*********************************端口定义**********************************/ ***it rs = P2^0; ***it rw = P2^1; ***it ep = P2^2; /********************************显示数据表*********************************/ unsigned char code dis1[] = {"happy everyday!!"}; unsigned char code dis2[] = {"everyday happy!!"}; /***************************************************************************** 函数功能:LCD延时子程序 入口参数:ms 出口参数: *****************************************************************************/ void delay(unsigned char ms) { unsigned char i; while(ms--) { for(i = 0; i< 250; i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } /***************************************************************************** 函数功能:测试LCD忙碌状态 入口参数: 出口参数:result *****************************************************************************/ bit lcd_bz() { bit result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0 & 0x80); ep = 0; return result; } /***************************************************************************** 函数功能:写指令数据到LCD子程序 入口参数:cmd 出口参数: *****************************************************************************/ void lcd_wcmd(unsigned char cmd) { while(lcd_bz()); //判断LCD是否忙碌 rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } /***************************************************************************** 函数功能:设定显示位置子程序 入口参数:pos 出口参数: *****************************************************************************/ void lcd_pos(unsigned char pos) { lcd_wcmd(pos | 0x80); } /***************************************************************************** 函数功能:写入显示数据到LCD子程序 入口参数:dat 出口参数: *****************************************************************************/ void lcd_wdat(unsigned char dat) { while(lcd_bz()); //判断LCD是否忙碌 rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } /***************************************************************************** 函数功能:LCD初始化子程序 入口参数: 出口参数: *****************************************************************************/ void lcd_init() { lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); } /***************************************************************************** 函数功能:主程序 入口参数: 出口参数: *****************************************************************************/ void main(void) { unsigned char i; lcd_init(); // 初始化LCD delay(10); lcd_pos(0x00); //设置显示位置 i = 0; while(dis1 != ' |