- #include <reg52.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- #define lcd_data P0 //lcd数据口
- sbit EN=P2^7; //lcd使能
- sbit RS=P2^6; //lcd命令/数据
- sbit RW=P2^5; //lcd读取/写入
- void delay(uint x) //延时函数
- {
- uchar y,z;
- for(y=x;y>0;y--)
- for(z=110;z>0;z--);
- }
- void lcd_write_com(uchar com) //lcd写命令函数
- {
- RW=0;
- RS=0;
- EN=0;
- lcd_data=com;
- EN=1;
- delay(5);
- EN=0;
- }
- void lcd_write_dat(uchar dat) //lcd写数据函数
- {
- RW=0;
- RS=1;
- EN=0;
- lcd_data=dat;
- EN=1;
- delay(5);
- EN=0;
- }
- void lcd_init() //lcd初始化
- {
- lcd_write_com(0x38);
- lcd_write_com(0x0c);
- lcd_write_com(0x06);
- lcd_write_com(0x01);
- }
- void display(uchar x,uchar y,uchar *str)
- {
- if(y==0)
- lcd_write_com(0x80+x);
- else
- lcd_write_com(0xc0+x);
- while(*str!=' ')
- {
- lcd_write_dat(*str++);
- }
- }
- void main()
- {
- lcd_init();
- display(4,1,"Why");
- while(1);
- }
复制代码
想在任意位置电视字符串,但是
为什么display函数里的x,y值怎么改都是在第一行第一个开始显示?
感谢大家帮忙,谢谢!!
一周热门 更多>