共享自编可用的OCMJ2*8c串口函数
//LCD串口函数void lcd_write_data(unsigned char rs,unsigned char cdata)//rs==0,为命令,==1,为数据
{
unsigned char i,temp;
LCD_CS=0;
LCD_CLK=0;
if(rs==0)
{
temp=(0xf8);//写入命令11111(RW)(RS)0
}
else
{
temp=(0xfa);//写入数据
}
LCD_CS=1;//启动
_nop_();
for(i=0;i<8;i++)//启动写入命令
{
LCD_STD=(bit)(temp&0x80);
temp<<=1;
LCD_CLK=1;
LCD_CLK=0;
}
temp=(cdata&0xf0);//写入第一高4位
for(i=0;i<8;i++)
{
LCD_STD=(bit)(temp&0x80);
temp<<=1;
LCD_CLK=1;
LCD_CLK=0;
}
cdata&=0x0f;
cdata<<=4;
temp=cdata;//写入第二低4位
for(i=0;i<8;i++)
{
LCD_STD=(bit)(temp&0x80);
temp<<=1;
LCD_CLK=1;
LCD_CLK=0;
}
LCD_CS=0;//关闭
}
//LCD初始化
void lcd_init(void)
{
lcd_write_data(lcd_cmd,0x30);//功能设定,基本指令动作
lcd_write_data(lcd_cmd,0x0c);//显示开关,关闭光标,关闭闪烁
lcd_write_data(lcd_cmd,0x01);//清显示
lcd_write_data(lcd_cmd,0x14);//点设定,光标右移动,AC自动+1
lcd_write_data(lcd_cmd,0x02);//地址归位
}
//某一行写入数据,数组型参数,注意不要大于16byte
void lcd_write_msg(unsigned char page,unsigned char *str)
{
unsigned char i=0;
if(page==0)//第一行
{
lcd_write_data(lcd_cmd,0x80);
}
else//第二行
{
lcd_write_data(lcd_cmd,0x90);
}
while((*str!=0)&&(i<16))//最大限制为16
{
lcd_write_data(lcd_dat,*str++);
i++;
}
}
{:shocked:} 金鹏的厂家网址不是有例程嚒, jetli 发表于 2014-9-10 00:00
金鹏的厂家网址不是有例程嚒,
根据手册编写的,这样才能享受DIY过程,哈哈 下来看看研究研究谢谢分享 手上有个金鹏的屏,有机会跑一下 不错啊。 自己写的踏实 foxcase 发表于 2014-9-10 08:12
自己写的踏实
是的,自己做
页:
[1]