矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 10306|回复: 20

LCD1602四位并行总线最小系统

  [复制链接]
发表于 2011-11-13 19:06:16 | 显示全部楼层 |阅读模式
使用四位并行总线驱动的1602单片机最小系统
PP2.JPG
PP3.JPG
PP1.JPG

评分

2

查看全部评分

     
发表于 2011-11-13 21:29:39 | 显示全部楼层
用2051可以吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-13 21:50:17 | 显示全部楼层
回复 2# liangkan


    可以!

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=0XA7;
sbit RW=0XA6;
sbit EC=0XA5;
sbit BF=0X97;
uchar ppp[]={'2','0','1','1',0x0,'1','1',0x1,'1','3',0x2,0x3,0x4,0x6};
uchar code year[]={0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02};
uchar code month[]={0x0f,0x09,0x0f,0x9,0xf,0x9,0xb,0x11};
uchar code day[]={0x0f,0x09,0x9,0x0f,0x9,0x9,0xf,0x0};
uchar code wu[]={0x08,0xf,0x14,0x4,0x1f,0x4,0x4,0x4};
uchar code shang[]={0x04,0x4,0x4,0x7,0x4,0x4,0x1f,0x0};
uchar code xia[]={0x1f,0x4,0x4,0x6,0x5,0x4,0x4,0x0};
uchar code jun[]={0x1f,0x11,0xe,0x14,0x1f,0x4,0x1f,0x4};
uchar code *pd[]={year,month,day,shang,wu,xia,jun};
void dis_one_char(uchar posx,bit posy,uchar date);
void lcd_cmd(uchar,bit,bit);
void delay(uchar ms)
{
uchar i;
while(--ms)
for (i=124;i>0;i--);
}
void lcd_Rst()
{
P1=0Xf;
delay(15);
lcd_cmd(0x28,0,0);delay(5);
lcd_cmd(0x28,0,0);delay(5);  
lcd_cmd(0x28,0,0);delay(5);
lcd_cmd(0x28,0,1);delay(5);
lcd_cmd(0x08,0,1);delay(5);
lcd_cmd(0x01,0,1);delay(5);
lcd_cmd(0x06,0,1);delay(5);
lcd_cmd(0x0c,0,1);delay(5);
}
void set_cgram(uchar dat[],uchar addr,uchar posx,bit posy)
{
  uchar i=0,k;
  addr&=0x3f;
  k=addr<<3;k&=0x3f;
  k|=0x40;
  for (i=0;i<8;i++)
   {
  lcd_cmd(k++,0,1);
  lcd_cmd(dat,1,1);
}
  dis_one_char( posx, posy,addr);
}
void lcd_wait()
{
P1=0XFF;
RS=0;
RW=1;
EC=1;
_nop_();
_nop_();
while(BF);
EC=0;
}
void locate(uchar posx,bit posy)
{
posx&=0xf;
posy&=0x1;
if(posy)posx|=0x40;
posx|=0x80;
lcd_cmd(posx,0,1);
}

void lcd_cmd(uchar wcdate,bit rs,bit bf)
{
if (bf) lcd_wait();
P1&=0x0f;
if (rs)       RS=1;
   else        RS=0;
RW=0;      
EC=1;
P1|=(wcdate&0xf0);
EC=0;
P1&=0x0f;
EC=1;
P1|=(wcdate<<4);
EC=0;
}

void dis_one_char(uchar posx,bit posy,uchar date)
{
locate(posx,posy);
lcd_cmd(date,1,1);
}
void dis_lcd_str(uchar posx,bit posy,uchar *str)
{
while(*str!='\0')
  {
   dis_one_char(posx++,posy,*str++);
if(posx>15)
  {
    posx=0;posy^=1;
  }
  }
}
void main()
{
    uchar i,k,p=100;
  while(p--)
  {
   set_cgram(jun,0,0,0);
   delay(10);
    }
  lcd_cmd(0x1,0,1);
  lcd_Rst();
  lcd_cmd(0x40,0,1);
while(1)
    {
  
   lcd_cmd(pd[k],1,1);
   if(++i>7)
   {
    i=0;
  if(++k>6)
  break;
   }
}  
lcd_cmd(0x81,0,1);
   while(1)
    {
    lcd_cmd(ppp,1,1);
    if(++i>13)
     {
    i=0;
    lcd_cmd(0xc1,0,1);
     }
  }
}
回复 支持 反对

使用道具 举报

     
发表于 2011-11-14 11:24:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2011-11-14 17:31:22 | 显示全部楼层
这个要顶一下
回复 支持 反对

使用道具 举报

     
发表于 2011-11-14 17:34:27 | 显示全部楼层
回复 4# bigradio


    这个屏没有汉字库需要自己定义 那是作者自己写的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-17 22:51:15 | 显示全部楼层
回复 4# bigradio


    瞎玩玩,见笑了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-17 22:52:28 | 显示全部楼层
本帖最后由 风之澜 于 2011-11-17 22:56 编辑

回复 5# wys25251325


    感谢加分!这个小板以后就正式服役了。
回复 支持 反对

使用道具 举报

     
发表于 2011-11-18 12:52:04 | 显示全部楼层
这个要顶一下
回复 支持 反对

使用道具 举报

     
发表于 2011-11-18 20:52:15 | 显示全部楼层
电路图呢?你有电路图我就加分。
回复 支持 反对

使用道具 举报

     
发表于 2011-11-18 23:21:04 | 显示全部楼层
呵呵,玩的很有意思啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-19 14:21:02 | 显示全部楼层
回复 10# ka2209


sbit RS= 0XA7;  // 1602RS接  P2.7
sbit RW=0XA6; //1602RW接   P2.6
sbit EC= 0XA5;// 1602E接      P2.5
1602高四位数据位接P1的高四位
其他接法相同。
回复 支持 反对

使用道具 举报

     
发表于 2011-11-19 14:39:53 | 显示全部楼层
回复 12# 风之澜


    晶振频率多少?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-19 14:48:35 | 显示全部楼层
回复 13# ka2209


    这个6M,12M,11.0592M也可以
回复 支持 反对

使用道具 举报

     
发表于 2011-11-19 14:53:05 | 显示全部楼层
回复 14# 风之澜


    你这个小电路板是不是用于电子日历?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-30 14:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表