打印

求dsp2812/28335 1602液晶程序

[复制链接]
6207|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
meng219902|  楼主 | 2012-5-19 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我就不懂了,51单片机的程序就那么简单,这个怎么回事啊?是我在这方面不懂?
请前辈给我指点一下,或者给我发个程序

我的单片机程序是非常简单的,那DSP的呢??
#include<reg52.h>
sbit en=P2^6;
sbit wr=P2^5;
sbit rs=P2^4;

void init();
void dely(unsigned int m);
  void write_kong(unsigned char com);
void write_shu(unsigned char shu);
unsigned char code table[]="I Like MCU!";
unsigned char code table1[]="Zhao chun mei!";
unsigned char num,num1;
void main()
{
  en=0;
  write_kong(0x38);
write_kong(0x0f); //光标闪烁
write_kong(0x06);  //输入方式    读写操作后 光标 画面平移
write_kong(0x01);
write_kong(0x80);
for(num=0;num<11;num++)
{
     write_shu(table[num]);
  dely(10000);
}
// write_kong(0x01);
write_kong(0x80+0x41 );
for(num1=0;num1<14;num1++)
{
     write_shu(table1[num1]);
  dely(10000);
}
for(num=0;num<16;num++)
{
    write_kong(0x18);
  dely(10000);
}
while(1);
}
  
void write_kong(unsigned char com)
{                  
   dely(100);
   en=0;
  wr=0;
  rs=0;
P0=com;
dely(100);
  en=1;
  dely(100);
  en=0;
}
void write_shu(unsigned char shu)
{ dely(100);
  en=0;
wr=0;
  rs=1;
P0=shu;
dely(100);
  en=1;
  dely(100);
  en=0;
  rs=0;
}
void dely(unsigned int m)
{
   while(m--);
}

相关帖子

沙发
meng219902|  楼主 | 2012-5-19 10:03 | 只看该作者
哦 我又没说清楚(我语文能力实在是太差了)  我的意思是 你告诉我DSP2812/28335关于1602程序是怎样编写的,应该注意什么,或者你可以直接发程序(如果您感觉说麻烦的话),
  在这里我要说一句谢谢!

使用特权

评论回复
板凳
meng219902|  楼主 | 2012-5-19 10:05 | 只看该作者
我的DSP程序是这样编的 与单片机的差不多
#include"DSP28x_project.h"

#define en GpioDataRegs.GPADAT.bit.GPIO4
#define wr GpioDataRegs.GPADAT.bit.GPIO3
#define rs GpioDataRegs.GPADAT.bit.GPIO0
#define D0 GpioDataRegs.GPADAT.bit.GPIO6
#define D1 GpioDataRegs.GPADAT.bit.GPIO7
#define D2 GpioDataRegs.GPADAT.bit.GPIO8
#define D3 GpioDataRegs.GPADAT.bit.GPIO9
#define D4 GpioDataRegs.GPADAT.bit.GPIO10
#define D5 GpioDataRegs.GPADAT.bit.GPIO11
#define D6 GpioDataRegs.GPADAT.bit.GPIO12
#define D7 GpioDataRegs.GPADAT.bit.GPIO13

// void InitGpio(void);
void dely(Uint16 m);
//void Data_to_DB8(unsigned int data);
void write_kong(unsigned char com);
void write_shu(unsigned char shu);
unsigned char table[]="I Like MCU!";
unsigned char table1[]="Zhao chun mei!";
Uint16 num,num1,count,count1;

void main(void)
{
        InitSysCtrl();
//        InitGpio();
         EALLOW;
        GpioCtrlRegs.GPAMUX1.all=0x0000;
//        GpioCtrlRegs.GPADIR.all=0x3fd8;
        GpioCtrlRegs.GPADIR.bit.GPIO0=1;
        GpioCtrlRegs.GPADIR.bit.GPIO3=1;
        GpioCtrlRegs.GPADIR.bit.GPIO4=1;
        GpioCtrlRegs.GPADIR.bit.GPIO6=1;
        GpioCtrlRegs.GPADIR.bit.GPIO7=1;
        GpioCtrlRegs.GPADIR.bit.GPIO8=1;
        GpioCtrlRegs.GPADIR.bit.GPIO9=1;
        GpioCtrlRegs.GPADIR.bit.GPIO10=1;
        GpioCtrlRegs.GPADIR.bit.GPIO11=1;
        GpioCtrlRegs.GPADIR.bit.GPIO12=1;
        GpioCtrlRegs.GPADIR.bit.GPIO13=1;       
        EDIS;
        DINT;
        InitPieCtrl();
        IER=0x0000;
        IFR=0x0000;
        InitPieVectTable();
        en=0;       
        write_kong(0x38);  //8位数字接口 两行显示  5*7点阵
        write_kong(0x0f); //显示开关控制 光标闪烁
        write_kong(0x06);  //输入方式    读写操作后 光标 画面平移
        write_kong(0x01);  //清屏
                write_kong(0x80);
                for(num=0;num<11;num++)
                {
                    write_shu(table[num]);
                        dely(1200);
                }
        //        write_kong(0x01);       
                write_kong(0x80+0x41 );
                for(num1=0;num1<14;num1++)
                {
                    write_shu(table1[num1]);
                        dely(1200);
                }       
        while(1);
       
}
               
void write_kong(unsigned char com)
{                                                                                                                          
         dely(12);
          en=0;       
        wr=0;
        rs=0;
//        Data_to_DB8(com);
        D0=com&0x0001;
        D1=(com>>1)&0x0001;
        D2=(com>>2)&0x0001;
        D3=(com>>3)&0x0001;
        D4=(com>>4)&0x0001;
        D5=(com>>5)&0x0001;
        D6=(com>>6)&0x0001;
        D7=(com>7)&0x0001;
        dely(12);
         en=1;
         dely(12);
         en=0;
         count++;
}
void write_shu(unsigned char shu)
{
        dely(12);
        en=0;
        wr=0;
        rs=1;
//        Data_to_DB8(shu);
                D0=shu&0x0001;
        D1=(shu>>1)&0x0001;
        D2=(shu>>2)&0x0001;
        D3=(shu>>3)&0x0001;
        D4=(shu>>4)&0x0001;
        D5=(shu>>5)&0x0001;
        D6=(shu>>6)&0x0001;
        D7=(shu>7)&0x0001;
        dely(12);
         en=1;
         dely(12);
         en=0;
         rs=0;
   count1++;
}
void dely(Uint16 m)
{
        Uint16 mm;
        while(m--)
        for(mm=0;mm<100;mm++);
}

使用特权

评论回复
地板
meng219902|  楼主 | 2012-5-19 10:11 | 只看该作者
我的时延是这样计算的(从前我对DSP的时延很模糊,不知道他大概能时延多久,就是一顿写数据1000.1000的for),今天早晨醒后,我在想,我不能这样了,如果学DSP连这个都不懂的话,不就跟学单片机那个dely(这个“dely”我学单片机的时候写习惯了,虽然我知道是这个“delay”,在dsp上是“delay_loop”呵呵),我是这样计算的,单片机晶振是12M,dsp是150M,那么在单片机上的dely(100),我想在dsp上应该是dely(100*150/12)吧? 前辈们我算的对吗???

使用特权

评论回复
5
meng219902|  楼主 | 2012-5-19 20:25 | 只看该作者
哎。。。。。。。我已经试了很多的程序了,但是我的液晶怎么还是不显示呢?是我焊接的问题(莫非不是我的程序有问题?), 前辈们 你们就行行好,指点指点我把

使用特权

评论回复
6
meng219902|  楼主 | 2012-5-19 20:27 | 只看该作者
对了 可以把单片机的外设用到dsp上吗?我的意思就是给单片机的板子供电,但是不给他烧程序,他外设不有两排插针呢吗?我们按照单片机与液晶连的线通过插针的方式与DSP的IO口 相连可以不?

使用特权

评论回复
7
gaochy1126| | 2012-5-23 11:54 | 只看该作者
dsp的供电是3.3V的 你们用单片机的供电,那你单片机外设和dsp共地了吗?如果没有共地的的话,肯定不行!1602的供电电压是5v的!

使用特权

评论回复
8
meng219902|  楼主 | 2012-5-23 16:11 | 只看该作者
7# gaochy1126

你说的意思我懂了,就是不能与单片机连一起,因为给不到5+的电压, 我说一下,我的那个DSP有一个5+的IO口,自己供液晶还是可以的,但是你说的意思我知道,谢谢,非常感谢

使用特权

评论回复
9
joing1999| | 2012-5-24 11:17 | 只看该作者
读写部分要加延时呀。你要看看1602的时序。

使用特权

评论回复
10
meng219902|  楼主 | 2012-5-24 17:25 | 只看该作者
9# joing1999

我想问一下,我没有加吗?时序问题我懂的,只是这个时延在DSP上多大啊?我现在还不知道啊,菜鸟啊 菜鸟

使用特权

评论回复
11
y_code| | 2013-5-22 19:41 | 只看该作者
求问,代码调通了没?我用的也是28335+1602,我时序总是不对

使用特权

评论回复
12
meng219902|  楼主 | 2013-5-22 23:53 | 只看该作者
y_code 发表于 2013-5-22 19:41
求问,代码调通了没?我用的也是28335+1602,我时序总是不对

没有,气的我不弄了  其他人用12864显示的  但是我也没弄出来   嗯。,,有人用XINTF来处理  我询问了一下卖个我板子的老板,他说不行,我感觉他说直接不行,那么我看了别的板子的视频,感觉还得加一些与非门电路才能行,这样控制地址位的变换(说详细点 我就不太清楚了,)

使用特权

评论回复
13
comeon201208| | 2013-5-23 21:24 | 只看该作者
1602液晶的其实是很简单的,一般的单片机的都可以驱动其工作的

使用特权

评论回复
14
meng219902|  楼主 | 2013-5-24 09:45 | 只看该作者
comeon201208 发表于 2013-5-23 21:24
1602液晶的其实是很简单的,一般的单片机的都可以驱动其工作的

您说的对,一般的单片机都可以,但是对于“高级”的单片机就为什么不可以了呢?我怀疑可能是时序的问题,但是我已经控制时序跟着技术手册来了,还不行,真的很头疼,

使用特权

评论回复
15
zhangmangui| | 2013-5-24 13:10 | 只看该作者
meng219902 发表于 2013-5-24 09:45
您说的对,一般的单片机都可以,但是对于“高级”的单片机就为什么不可以了呢?我怀疑可能是时序的问题, ...

肯定是可以的   我的开发板上使用cpld做了译码的   可以用的

使用特权

评论回复
16
lvgyl| | 2013-12-22 13:32 | 只看该作者
用dsp的SPI怎么做?我的总是不能驱动液晶

使用特权

评论回复
17
673307560| | 2014-8-6 14:36 | 只看该作者
貌似已经是去年的帖子了。不知道大家有没有调出来。但是路过总要留下点什么的。
用28335写的时候,GPIO口如果变换变换比频繁的话,对DATA寄存器赋值很容易出错,所以对1602的指令一般会出错,所以这个时候最好使用置位和复位的方式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

908

帖子

14

粉丝