欢迎来到 MCU博客数据载入中, 请稍候... 的博客!                                                                                      >>> MCUBlog首页>>>


MCU博客数据载入中, 请稍候...


公告
MCU博客数据载入中, 请稍候...

我的分类(专题)
MCU博客数据载入中, 请稍候...

日志更新
MCU博客数据载入中, 请稍候...

最新评论
MCU博客数据载入中, 请稍候...

留言板
MCU博客数据载入中, 请稍候...

链接

Blog信息
MCU博客数据载入中, 请稍候...







 
[E.ET的每日总结]器件清单出来了
天 发表于 2005-8-31 1:13:08

今天电设的器件清单出来了,整个实验室炸开锅。所以今天就没做什么事,猜题,猜题。

极力想做FFT,不过要用Core的话,XC2S200e做不了1024点FFT,只能用S3的。老大又不肯买,不肯做板。虽然也不一定买得到。明天去买买看。本来还想叫Jingjing买好寄过来的类。。。汗。


阅读全文 | 回复 | 引用通告
 


 
[E.ET的每日总结]隔直
天 发表于 2005-8-30 1:54:10

数字相位仪做了一个礼拜,碰到两个最花时间的傻问题,一个是程序——CS信号,一个是硬件,输入隔直没加对地电容!


阅读全文 | 回复 | 引用通告
 


 
[E.ET的每日总结]8.23
天 发表于 2005-8-24 0:44:11

今天:
SPI发送
测量周期
7528程序
会用XCF02配置XC2S200E

决定模拟示波器先缓一下,先做FFT Core,那是杀手锏


阅读全文 | 回复 | 引用通告
 


 
[E.ET的每日总结]8.22
天 发表于 2005-8-22 1:32:50

今天还算小有成就的

把DDS Core应用的差不多了。实现了多路输出,由单片机输入,给出任意频率正弦波。

接着要测试SPI发送,FFT

明天要完成测频率的任务

还有把信号显示在模拟示波器上的话题,今天开阔了思路。
可以通过内部X轴配合外部Y轴给电压,也可以XY都外部控制。其实XY都外部控制就是VGA了,单色VGA。通过两个DAC控制XY。
不过由于DAC输出的电压只能是正或者只能是负,所以象限的问题有必要考虑。现在想到的解决方法有,再用另外的信号控制Vref的值的正负,可以用MUX。
设都使用8bit DAC,每个象限每个轴256个点,那么整个屏幕就是512x512点。产生一个点的时间算他1us,如果每个点都要扫到,那么整个屏幕需要0.262144秒,3.8Hz。。。不行啊。如果扫完一个点的时间0.1us(DAC10M速度),那么38Hz,还算可以接受吧。况且平时显示的话,是不用满屏的。


阅读全文 | 回复 | 引用通告
 


 
[E.ET的每日总结]8.21
天 发表于 2005-8-21 23:58:45

时间是越来越紧了

决定明天开始,花四天做一个完整的项目

今天晚上调好了SPI和DDS。没想到这么有效率的,呵呵^_^

原来的SPI有问题是因为连线的抖动,现在换了牢固的线,就一点问题也没有了。

DDS的瓶颈在于DAC,希望明天能用上YL的7528。当然,以后老大肯买更快一点的就更好了。

接下来又空的时候要看各种Core的使用,比如FFT,乘法器,除法器,各种RAM等等。


……

阅读全文 | 回复 | 引用通告
 


 
[E.ET的每日总结]DDS Core
天 发表于 2005-8-15 1:43:25

在研究Xilinx的DDS Core。

现在已经可以出正弦波了,是从chipscope里面看的,不过一个问题是,他的输出都是有符号数输出,而DAC一般要求无符号数输出,这该怎么办呢??


阅读全文 | 回复 | 引用通告
 


 
[C.程序资源]点阵LCD程序(2)
天 发表于 2005-8-13 23:43:03

#i nclude <hidef.h> /* for EnableInterrupts macro */
#i nclude <MC68HC908GP32.h> /* include peripheral declarations */

#define LCD_DB PTB
#define LCD_RS PTA_PTA0
#define LCD_RW PTA_PTA1
#define LCD_EN PTA_PTA2
#define LCD_CS1 PTA_PTA3
#define LCD_CS2 PTA_PTA4
#define LCD_RST PTA_PTA5

const byte logo_pic[]=
{
0,0,0,0x40,0x5,0,0,0,0,0,0,0xff,0xff,0,0,0,
0,0,0xe0,0x3,0xc0,0x7,0,0,0,0,0x3c,0,0x2,0x3c,0,0,
0,0,0xe,0,0x22,0xf0,0,0,0,0x80,0x3,0,0x22,0x81,0x1,0,
0,0xe0,0,0,0x2,0x1,0x7,0,0,0x70,0,0,0x20,0x41,0xc,0,
0,0x18,0,0,0,0x38,0x18,0,0,0xcc,0,0xe0,0xf,0x4,0x32,0,
0,0x26,0x1,0x1e,0xf0,0,0x61,0,0,0x13,0xc3,0x1,0,0x83,0xc8,0,
0x80,0xa1,0x30,0,0,0xc,0x84,0x1,0xc0,0x40,0x8,0,0,0x10,0,0x3,
0x40,0,0x6,0xc,0xf0,0x61,0,0x6,0x60,0,0x3,0xff,0xff,0xc7,0x20,0x6,
0x30,0x80,0x81,0xff,0x9f,0xf,0x11,0xc,0x10,0xc0,0xd0,0x3,0,0x1e,0x2,0x9,
0x18,0x40,0xf0,0x3,0x7f,0x3e,0xc6,0x18,0x8,0x20,0x20,0x83,0xff,0xfa,0x25,0x10,
0xc,0x10,0,0xc2,0xc0,0xf3,0x8,0x30,0xc,0x10,0,0xe0,0x80,0xff,0x19,0x20,
0x4,0x8,0,0x1e,0x83,0xe7,0x11,0x20,0x86,0xc,0,0x8,0x72,0xc1,0x13,0x60,
0xee,0xc4,0,0x8,0x7,0xe1,0x23,0x4f,0x9a,0xc5,0x1,0xe8,0,0xbb,0x23,0x40,
0xa2,0x4,0x1,0x18,0x3e,0x9c,0x27,0xc0,0x53,0x4,0,0x80,0xff,0xec,0x47,0xc1,
0x2,0xe2,0,0xe3,0xe0,0x8f,0x4f,0xc0,0x3,0x52,0,0xf2,0xc1,0xdf,0x47,0xc0,
0x3,0xe2,0,0x8c,0x83,0x3d,0x47,0x83,0x3,0x2,0,0xc,0xc2,0x3,0x47,0xc4,
0x3,0xe2,0,0x4,0x3e,0x3,0x47,0x88,0x3,0xa2,0,0xc4,0x3,0x82,0x47,0xc0,
0x3,0xa2,0,0x3c,0,0xde,0x47,0x80,0x2,0x62,0,0x4,0xf8,0xf1,0x47,0xc0,
0x3,0x2,0,0x4,0xff,0xb3,0x47,0xcd,0x2,0x24,0x1,0xc0,0xef,0x1f,0x4f,0x40,
0x2,0xc5,0,0xe2,0x81,0xcd,0x27,0x40,0xc6,0x44,0,0xf3,0x81,0xbc,0x23,0x41,
0xc6,0x8,0,0x1a,0xc1,0x81,0x23,0x62,0xc4,0xa,0x2,0xc,0xdf,0xc0,0x11,0x64,
0x2c,0x10,0x4,0xc4,0xc3,0xe0,0x11,0x20,0xc,0x10,0x4,0x3c,0x80,0xf0,0x8,0x30,
0x8,0x20,0x18,0x44,0xf5,0x7f,0x6c,0x10,0x18,0x40,0x30,0xf0,0xff,0x3f,0x84,0x18,
0x10,0xc0,0xe0,0xec,0xaf,0x1c,0x2,0x9,0x30,0x80,0xc0,0x3f,0xff,0xf,0x1,0xc,
0x60,0,0x83,0x3f,0xf2,0x83,0x4,0x4,0x60,0,0x6,0xfe,0x1,0x60,0x1a,0x6,
0xc0,0,0xa,0,0,0x30,0x2c,0x3,0x80,0x1,0x32,0,0,0xc,0x88,0x1,
0,0xa3,0xc1,0,0,0x83,0xc0,0,0,0x66,0,0xf,0xe0,0x80,0xc0,0,
0,0xec,0x1,0xf0,0x1f,0x44,0x30,0,0,0x58,0,0,0x40,0x88,0x38,0,
0,0x70,0,0,0x84,0x8,0xc,0,0,0xe0,0,0,0x84,0x10,0x7,0,
0,0x80,0x1,0,0x82,0x80,0x3,0,0,0,0x7,0,0x2,0xe0,0,0,
0,0,0x3c,0,0,0x3c,0,0,0,0,0xe0,0x3,0x80,0xf,0,0,
0,0,0,0xff,0xff,0x1,0,0,0,0,0,0xd0,0xb,0,0,0
};
const byte logo_char[]=
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0xf8,0xff,0x7,
0xc0,0xff,0xff,0xf,0xe0,0xff,0xf,0,0xe0,0x7,0,0,0xc0,0x1,0x4,0,
0xc0,0x1,0x1e,0,0xc0,0x11,0x3e,0,0xc0,0x39,0x1f,0,0xc0,0x39,0xf,0,
0xc0,0x39,0x1e,0,0xc0,0x1,0x1e,0,0xc0,0,0xc,0,0xc0,0,0,0x3,
0xe0,0,0x80,0x7,0xe0,0x1,0x80,0x3,0xe0,0xf,0xe8,0x1,0xc0,0xff,0x7f,0,
0,0xff,0x1f,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0x4,0,0,0x80,0x1f,0,0,0xf0,0x1f,0,0xc0,0xff,0x1,
0,0xe8,0xf,0,0,0xe,0,0,0xb0,0x7,0,0,0x70,0,0xe,0,
0x60,0,0x1f,0,0,0x80,0xf,0,0,0xc0,0x7,0,0,0xcc,0x3,0,
0xc0,0xfe,0xf1,0x7,0x70,0x38,0xfc,0x3,0x70,0x90,0x3c,0,0x38,0xc8,0x30,0,
0x3c,0xfe,0xf8,0x1,0xbe,0x3f,0xf8,0,0xfc,0x4,0x60,0,0xf4,0,0x30,0,
0x60,0x7e,0x1c,0x18,0x20,0xe6,0xc,0xe,0,0xd3,0xfe,0x3,0,0x39,0xfc,0,
0,0x3c,0,0,0,0x7c,0,0,0,0xe0,0,0,0,0xc0,0,0,
0,0xc0,0,0,0,0xc0,0x1,0,0,0x80,0x1,0,0,0x80,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0x3,0,0,0x80,0x3,0,
0,0x80,0x3,0x7,0,0xc0,0xc3,0x7,0,0xc0,0xf1,0x1,0,0xc0,0xff,0,
0,0xe0,0x7f,0,0,0xfe,0x3f,0,0xc0,0xff,0xf,0,0xe0,0xff,0x1,0,
0xf0,0xc3,0x1,0,0x60,0xc0,0x1,0,0,0xc0,0x71,0,0,0xc0,0xf1,0,
0,0xc0,0xe0,0x1,0,0,0xe0,0x3,0,0,0xc0,0x1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0xa0,0x1,0,0,0xfc,0x1,0,0,0xfc,0,0,0,0x3c,0,0,
0xf8,0x3f,0,0,0xf8,0x39,0x40,0,0x10,0x19,0xe6,0,0xf8,0x33,0x67,0x30,
0x78,0x19,0x67,0x70,0xd8,0x17,0x67,0x38,0xf8,0x1b,0x73,0x18,0xf8,0x19,0x7f,0x1e,
0xf8,0x9e,0xff,0xf,0xd8,0x99,0xf7,0x3,0xcc,0x19,0x73,0,0xec,0x19,0x60,0,
0x7c,0x18,0x70,0,0x3c,0x38,0,0,0,0x38,0,0,0,0x38,0,0,
0,0x18,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
const byte logo_start[]=
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0x80,0,0,0,0,0,0,0,0xf0,0,0,0,0,0,0,
0,0x7e,0,0,0,0,0,0,0x80,0x1f,0,0,0,0,0,0,
0x80,0x11,0,0,0,0,0,0,0x80,0x10,0,0,0,0,0,0,
0x80,0x18,0,0,0,0,0,0,0x80,0xf,0,0,0,0,0,0,
0x80,0x7,0,0,0,0,0,0,0,0x70,0,0,0,0,0,0,
0,0xfc,0,0,0,0,0,0,0,0x8c,0,0,0,0,0,0,
0,0x82,0,0,0,0,0,0,0,0xc2,0,0,0,0,0,0,
0,0x7e,0,0,0,0,0,0,0,0x3e,0,0,0,0,0,0,
0,0,0,0,0xfe,0x7f,0,0,0,0,0,0,0xfe,0x7f,0,0,
0,0xfe,0,0,0xfe,0x7f,0,0,0,0xfe,0,0,0x3e,0,0,0,
0,0x60,0,0,0xfc,0,0,0,0,0x18,0,0,0xf0,0x7,0,0,
0,0xfe,0,0,0x80,0xf,0,0,0,0xfe,0,0,0,0xe,0,0,
0,0x70,0,0,0x80,0xf,0,0,0,0x3c,0,0,0xe0,0x7,0,0,
0,0xe,0,0,0xf8,0,0,0,0,0x2,0,0,0x3e,0,0,0,
0,0x70,0,0,0xfe,0x7f,0,0,0,0xfc,0,0,0xfe,0x7f,0,0,
0,0x9c,0,0,0xfe,0x7f,0,0,0,0x92,0,0,0,0,0,0,
0,0x9a,0,0,0,0xf,0,0,0,0x5e,0,0,0xc0,0x3f,0,0,
0,0x84,0,0,0xc0,0x3f,0,0,0,0xf0,0,0,0xe0,0x70,0,0,
0,0x7e,0,0,0x60,0x60,0,0,0,0xe,0,0,0x60,0x60,0,0,
0,0x4,0,0,0x60,0x60,0,0,0,0x6,0,0,0xe0,0x70,0,0,
0,0x70,0,0,0xc0,0x3f,0,0,0,0xfc,0,0,0xc0,0x3f,0,0,
0,0x9c,0,0,0,0xf,0,0,0,0x92,0,0,0,0,0,0,
0,0x9a,0,0,0,0,0,0,0,0x5e,0,0,0x60,0,0,0,
0,0x4,0,0,0xfc,0x3f,0,0,0,0xf0,0,0,0xfc,0x7f,0,0,
0,0xfc,0,0,0xfc,0x7f,0,0,0,0x8c,0,0,0x60,0x60,0,0,
0,0x82,0,0,0x60,0x60,0,0,0,0xc2,0,0,0x60,0x60,0,0,
0,0xf2,0,0,0,0xf,0,0,0,0x7e,0,0,0xc0,0x3f,0,0,
0xc0,0xf,0,0,0xc0,0x3f,0,0,0xc0,0x1,0,0,0xe0,0x70,0,0,
0,0,0,0,0x60,0x60,0,0,0,0,0,0,0x60,0x60,0,0,
0,0x80,0,0,0x60,0x60,0,0,0,0xf0,0,0,0xe0,0x70,0,0,
0,0xfe,0,0,0xc0,0x3f,0,0,0x80,0x8f,0,0,0xc0,0x3f,0,0,
0x80,0x89,0,0,0,0xf,0,0,0x80,0xc8,0,0,0,0,0,0,
0x80,0x78,0,0,0,0,0,0,0x80,0x3f,0,0,0xe0,0x7f,0,0,
0x80,0x7,0,0,0xe0,0x7f,0,0,0,0,0x3,0,0xe0,0x7f,0,0,
0,0xfe,0x3,0,0xc0,0,0,0,0,0xfe,0,0,0xe0,0,0,0,
0,0x70,0,0,0xe0,0,0,0,0,0x38,0,0,0xe0,0,0,0,
0,0xe,0,0,0,0xf,0,0,0,0x6,0,0,0xc0,0x3f,0,0,
0,0x2,0,0,0xc0,0x3f,0,0,0,0,0,0,0xe0,0x70,0,0,
0,0,0,0,0x60,0x60,0,0,0,0,0,0,0x60,0x60,0,0,
0,0,0,0,0x60,0x60,0,0,0,0,0,0,0xe0,0x70,0,0,
0,0,0,0,0xc0,0x3f,0,0,0,0,0,0,0xc0,0x3f,0,0,
0,0,0,0,0,0xf,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0xff,0x7f,0,0,
0,0,0,0,0xff,0x7f,0,0,0,0,0,0,0xff,0x7f,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0x38,0,0,0,0,0,0,0xe0,0x7c,0,0,
0,0,0,0,0x60,0x7e,0,0,0,0,0,0,0x60,0x66,0,0,
0,0,0,0,0x60,0x66,0,0,0,0,0,0,0x60,0x26,0,0,
0,0,0,0,0xe0,0x7f,0,0,0,0,0,0,0xc0,0x7f,0,0,
0,0,0,0,0xc0,0x7f,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
void delay(byte time)
{
    while(time>0)
    {
        time--;
    }
}
/********************************************************
------------------------LCD命令函数----------------------
功能描述:被调用,用来执行对LCD的操作
传入参数:flag,data
参数设置:flag     1------数据
                   0------指令
          data     为指令或数据的内容
*********************************************************/
void lcd_cmd(byte flag,byte data)
{
    LCD_EN=0;
    if(flag==0x0)
    {
        LCD_RS=0;   
    }
    else
    {
        LCD_RS=1;
    }
    LCD_RW=0;
    LCD_DB=data;
    //delay(100);
 _asm NOP
 _asm NOP
 LCD_EN=1;     //LCD开始接受数据,置使能位为1
    _asm NOP     //等待
 _asm NOP
 delay(10);     
    LCD_EN=0;     //LCD结束接受数据,置使能位为0
    //LCD_RW=1;
    //LCD_RS=1;
 asm       //等待40us
 {
  PSHH
  PSHX
  PSHA
  LDHX #$0040
  LOOP:
  DBNZX LOOP
  PULA
  PULX
  PULH
 }
 
}
void lcd_reset()
{  
    LCD_RST=0;
 delay(255);
 delay(255);
 LCD_RST=1;
 delay(255);
 delay(255);
}
void lcd_clr()
{
    byte i,j;
    LCD_CS1=1;
    LCD_CS2=1;
    delay(10);
    for(i=0xb8;i<0xc0;i++)
    {
        lcd_cmd(0x0,i);
        lcd_cmd(0x0,0x40);
        for(j=0;j<0x40;j++)
        {
            lcd_cmd(0x1,0xff);   
        }       
    }
    delay(10);
    LCD_CS1=0;
    LCD_CS2=0;
    delay(10);
}
void lcd_start()
{
    lcd_reset();
    lcd_cmd(0x0,0x3e);
    lcd_cmd(0x0,0xc0);
    lcd_cmd(0x0,0x3f);
    lcd_clr();
}
void lcd_clr_from_left()
{
 byte line,col;
 LCD_CS1=1;
    LCD_CS2=0;
 
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,0x00); 
  }
  asm        //等待清屏完毕,等待时间>1.6ms
     {
   LDHX #$08FF
   ClrLCD_2MS:
   AIX #-1
   CPHX #0
   BNE ClrLCD_2MS
  }
 }
 LCD_CS1=0;
    LCD_CS2=1;
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,0x00); 
  }
  asm        //等待清屏完毕,等待时间>1.6ms
     {
   LDHX #$08ff
   ClrLCD_2MS2:
   AIX #-1
   CPHX #0
   BNE ClrLCD_2MS2
  }
 }
 LCD_CS1=0;
    LCD_CS2=0;
}
void lcd_clr_from_center()
{
 byte line,col;
 byte temp=63;
    for(col=0x40;col<0x80;col++)
 {
  LCD_CS1=1;
     LCD_CS2=0;
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col+temp);
   lcd_cmd(0x1,0x00);
  }
  temp=temp-2;
  LCD_CS1=0;
     LCD_CS2=1;
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,0x00); 
  }
  asm        //等待清屏完毕,等待时间>1.6ms
     {
   LDHX #$08FF
   ClrLCD_2MS:
   AIX #-1
   CPHX #0
   BNE ClrLCD_2MS
  }
 }
 LCD_CS1=0;
    LCD_CS2=0;
}
void lcd_display_logo_pic()
{
 byte line,col;
 word i=0;
 LCD_CS1=1;
 LCD_CS2=0;
 for(col=0x60;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo_pic[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=1;
 //i=256
 for(col=0x40;col<0x60;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo_pic[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=0;
}
void lcd_display_logo_char()
{
 byte line,col;
 word i=0;
 LCD_CS1=1;
 LCD_CS2=0;
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xba;line<0xbe;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo_char[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=1;
 //i=256
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xba;line<0xbe;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo_char[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=0;
}
void lcd_display_logo_start()
{
 byte line,col;
 word i=0;
 LCD_CS1=1;
 LCD_CS2=0;
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo_start[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=1;
 //i=256
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo_start[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=0;
}
/********************************************************
------------------------LCD显示函数----------------------
功能描述:对于特定的行和列显示特定的字符
传入参数:line,col,code
参数设置:line-----------取值范围为0~3,即只有四行
    col------------取值范围为0~7,即只有八列 
          code-----------为数组,是用来显示的内容
*********************************************************/
void lcd_display(byte line,byte col,byte code[32])
{
    byte i;
    //byte temp;
 line=0xb8+line*2;
 if(col<4)
 {
  LCD_CS1=1;
  LCD_CS2=0;
  col=col*16+0x40;
 }
 else
 { 
  LCD_CS1=0;
  LCD_CS2=1;
  col=(col-4)*16+0x40;
 } 
 lcd_cmd(0x0,line);
 lcd_cmd(0x,col);
 for (i=0;i<32;i++)
 {
  if (i==16)
  {
   lcd_cmd(0x0,line+1);
   lcd_cmd(0x0,col);
  }
  //temp=~code[i];
  //lcd_cmd(0x1,temp);
  lcd_cmd(0x1,code[i]);
 }
 LCD_CS1=0;
 LCD_CS2=0;
}
void main(void)
{
    //SOPT_COPE=0;     //禁止看门狗
    CONFIG1_COPD=1;    //禁止看门狗
 DDRB=0xff;      //B口为输出
 DDRA=0b00111111;
 lcd_start();
 //lcd_clr_from_left();
 lcd_clr_from_center();
 
 //lcd_display_logo_pic();
 //lcd_display_logo_char();
 lcd_display_logo_start();
 for(;;);   
}


阅读全文 | 回复 | 引用通告
 


 
[C.程序资源]点阵LCD程序(1)
天 发表于 2005-8-13 23:34:30

#i nclude <hidef.h> /* for EnableInterrupts macro */
#i nclude <MC68HC908GP32.h> /* include peripheral declarations */

#define LCD_DB PTB
#define LCD_RS PTA_PTA0
#define LCD_RW PTA_PTA1
#define LCD_EN PTA_PTA2
#define LCD_CS1 PTA_PTA3
#define LCD_CS2 PTA_PTA4
#define LCD_RST PTA_PTA5

const byte logo_GT60[]=
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0x1c,0,0,0,0,0,0,0xc0,0xff,0x1,0,0,
0,0,0,0xf8,0xc1,0x7,0,0,0,0,0,0x1e,0,0x1e,0,0,
0,0,0x80,0xf,0,0x78,0,0,0,0,0xc0,0x3,0,0xe0,0,0,
0,0,0xe0,0xf1,0x3,0xc0,0x1,0,0,0,0xf0,0xfc,0x7,0x80,0x3,0,
0,0,0x78,0x1e,0xe,0,0x7,0,0,0,0x3c,0x7,0xf,0,0xe,0,
0,0,0x1e,0x83,0x7,0,0xc,0,0,0,0xf,0xe3,0x1,0,0x1c,0,
0,0x80,0x7,0xe7,0xf,0,0x38,0,0,0x80,0x7,0xe6,0xf,0,0x38,0,
0,0xc0,0xc3,0,0,0,0x70,0,0,0xe0,0xc3,0,0x70,0xff,0x71,0,
0,0xe0,0x61,0,0x70,0xff,0x71,0,0,0xf0,0xe1,0xff,0x1,0,0x60,0,
0,0xf0,0xf1,0xff,0x81,0xff,0x60,0,0,0xf0,0x30,0,0xc0,0xff,0x60,0,
0,0x78,0x18,0,0xc0,0x1,0xe0,0,0,0x78,0x98,0xf,0xe0,0,0xe0,0,
0,0x78,0xe0,0x1f,0xe0,0x1,0xe0,0,0,0x3c,0xf8,0x39,0xe0,0x7f,0xe0,0,
0,0x3c,0xdc,0x38,0xc0,0x3f,0xe0,0,0,0x3c,0xc6,0x3c,0,0,0xe0,0,
0,0x3c,0x86,0x1f,0xf0,0x18,0xe0,0,0,0x3e,0x30,0x7,0xf8,0x19,0xe0,0,
0,0x1e,0xfe,0,0x9c,0x1b,0xe0,0,0,0x1e,0xcf,0x3,0x1c,0x1f,0xe0,0,
0,0x9e,0x3,0x7,0x8,0xe,0xe0,0,0,0x9e,0x1,0x7,0,0,0xe0,0,
0,0x9f,0x83,0xc3,0xfd,0x7,0x70,0,0,0xf,0xff,0xc1,0xfd,0x7,0x70,0,
0,0xf,0x7c,0,0,0,0x70,0,0,0x8f,0x3,0,0xfc,0,0x70,0,
0,0xcf,0x7,0,0xff,0x1,0x38,0,0,0xdf,0x7,0x80,0x87,0x1,0x38,0,
0,0x9e,0x7,0x80,0xc3,0x1,0x38,0,0,0x9e,0x7,0xf8,0xff,0,0x1c,0,
0,0xbe,0x7,0xf8,0xff,0,0x1c,0,0,0x3e,0xf,0,0,0,0xe,0,
0,0x1c,0xf,0,0x7,0,0xf,0,0,0,0x1e,0xc0,0x3f,0,0x7,0,
0,0,0x1e,0xe0,0x7f,0x80,0x3,0,0,0,0x3c,0x70,0x66,0xc0,0x3,0,
0,0,0x3c,0x70,0x73,0xe0,0x1,0,0,0,0x78,0xe0,0x39,0xf0,0,0,
0,0,0xf0,0xc0,0x1c,0x78,0,0,0,0,0xe0,0x1,0,0x3e,0,0,
0,0,0xc0,0x7,0x80,0xf,0,0,0,0,0x80,0x7f,0xf8,0x3,0,0,
0,0,0,0xfe,0x7f,0,0,0,0,0,0,0xf0,0xf,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
/*freescal*/
const byte logo_freescal[]=
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0x18,0,0,0,0,0,0,0,0x1c,0,
0,0,0,0,0,0x8,0x3e,0,0,0,0,0,0,0xc,0x1e,0,
0,0,0,0,0,0x1c,0x1f,0,0,0,0,0,0,0x3e,0xf,0,
0,0,0,0,0,0x3e,0x7,0,0,0,0,0,0x80,0x1f,0x2,0,
0,0,0,0x8,0,0x4f,0,0,0,0,0,0xc,0,0x67,0,0,
0,0,0xc,0x1e,0,0xe6,0,0,0,0,0xf,0x1e,0x60,0xf0,0x1,0,
0,0xe0,0x83,0x1f,0x60,0xf8,0,0,0,0xfc,0x81,0xf,0xf8,0x7c,0,0,
0,0x1c,0x81,0x47,0xf8,0x78,0,0,0,0x8,0x81,0x67,0x7c,0x30,0,0,
0,0x84,0x1,0xf3,0x7c,0,0,0,0,0xfc,0,0xf8,0x3c,0,0,0,
0,0x7c,0,0x78,0x18,0x2,0,0,0,0,0,0x7c,0,0x7,0,0,
0,0xe0,0,0x3c,0x81,0xf,0,0,0,0xf8,0x1,0xb8,0xc3,0x7,0,0,
0,0x18,0x1,0x90,0xe7,0x7,0,0,0,0x4,0x1,0xc0,0xe7,0x1,0,0,
0,0x84,0x1,0xe0,0xc3,0x1,0,0,0,0xfc,0,0xf0,0x1,0,0,0,
0,0x7c,0,0xe0,0x1,0,0,0,0,0,0,0xc0,0,0,0,0,
0,0,0,0,0,0,0x70,0,0,0xfc,0x1,0,0,0xc,0x7e,0,
0,0xfc,0x1,0,0,0xcc,0x7f,0,0,0xc0,0,0,0,0xfe,0x7f,0,
0,0x30,0,0,0x80,0xff,0x7,0,0,0xfc,0x1,0,0x80,0xff,0x1,0,
0,0xbc,0x1,0,0xc0,0xf,0,0,0,0xe0,0,0,0xc0,0xd,0,0,
0,0x70,0,0,0xc0,0xd,0x70,0,0,0x1c,0,0,0xc0,0,0x7e,0,
0,0xc,0,0,0,0xe0,0x7f,0,0,0xe0,0x1,0,0,0xfe,0x3f,0,
0,0xf8,0x1,0,0,0xfe,0x3,0,0,0x3c,0x1,0,0,0x78,0,0,
0,0x24,0x1,0,0,0x38,0,0,0,0x24,0x1,0,0,0x1c,0,0,
0,0x3c,0x1,0,0,0xe,0x7,0,0,0xbc,0,0,0,0xc0,0xf,0,
0,0x8,0x1,0,0,0xf0,0x1f,0,0,0xe0,0x1,0,0,0xf8,0x3f,0,
0,0xfc,0,0,0,0xb8,0x79,0,0,0x1c,0,0,0,0x9c,0x71,0,
0,0x8,0,0,0,0x8e,0x79,0,0,0xc,0,0,0,0x8e,0x39,0,
0,0xc,0,0,0,0x9c,0x1d,0,0,0xe0,0x1,0,0,0xb8,0x1d,0,
0,0xf8,0x1,0,0,0xf0,0xd,0,0,0x3c,0x1,0,0,0x60,0,0,
0,0x24,0x1,0,0,0,0,0,0,0x24,0x1,0,0,0,0xf,0,
0,0x3c,0x1,0,0,0xe0,0xf,0,0,0xbc,0,0,0,0xf0,0x1f,0,
0,0x8,0,0,0,0xf8,0x3f,0,0,0xe0,0x1,0,0,0xb8,0x79,0,
0,0xf8,0x1,0,0,0x9c,0x71,0,0,0x18,0x1,0,0,0x8e,0x79,0,
0,0x4,0x1,0,0,0x9e,0x39,0,0,0x84,0x1,0,0,0xbc,0x1d,0,
0,0xe4,0x1,0,0,0xf8,0xd,0,0,0xfc,0,0,0,0xf0,0xd,0,
0x80,0x1f,0x1,0,0,0x60,0,0,0x80,0xe3,0x1,0,0,0,0xc,0,
0,0xfc,0x1,0,0,0x60,0x1c,0,0x80,0x1f,0x1,0,0,0xf8,0x38,0,
0x80,0xb,0x1,0,0,0xfc,0x79,0,0,0x84,0x1,0,0,0xfc,0x71,0,
0,0xfc,0,0,0,0xdc,0x7b,0,0,0x7c,0,0,0,0x8e,0x3f,0,
0,0x8,0,0,0,0x9e,0x3f,0,0,0,0x8,0,0,0x9c,0x1f,0,
0,0xfc,0xf,0,0,0x1c,0xf,0,0,0xfc,0x7,0,0,0x18,0x6,0,
0,0x80,0x1,0,0,0x10,0,0,0,0xe0,0,0,0,0xc0,0xf,0,
0,0x70,0,0,0,0xf0,0x1f,0,0,0x1c,0,0,0,0xf8,0x3f,0,
0,0xc,0,0,0,0xf8,0x7c,0,0,0x4,0,0,0,0x3c,0x78,0,
0,0,0,0,0,0x1c,0x78,0,0,0,0,0,0,0x1e,0x38,0,
0,0,0,0,0,0x1e,0x1c,0,0,0,0,0,0,0x1c,0x1c,0,
0,0,0,0,0,0x38,0xc,0,0,0,0,0,0,0x30,0,0,
0,0,0,0,0,0,0xe,0,0,0,0,0,0,0,0x1f,0,
0,0,0,0,0,0xb0,0x3f,0,0,0,0,0,0,0xbc,0x3f,0,
0,0,0,0,0,0xdc,0x7f,0,0,0,0,0,0,0xcc,0x79,0,
0,0,0,0,0,0xce,0x39,0,0,0,0,0,0,0xce,0x1c,0,
0,0,0,0,0,0xdc,0x3f,0,0,0,0,0,0,0xfc,0x7f,0,
0,0,0,0,0,0xf8,0x7f,0,0,0,0,0,0,0x78,0,0,
0,0,0,0,0,0,0x60,0,0,0,0,0,0,0x80,0x7f,0,
0,0,0,0,0,0xf8,0x7f,0,0,0,0,0,0xc0,0xff,0x7f,0,
0,0,0,0,0xc0,0xff,0x3,0,0,0,0,0,0xc0,0x1f,0,0,
0,0,0,0,0xc0,0x1,0x6,0,0,0,0,0,0,0xe0,0x1f,0,
0,0,0,0,0,0xf0,0x1f,0,0,0,0,0,0,0xf8,0x3f,0,
0,0,0,0,0,0xbc,0x39,0,0,0,0,0,0,0x9c,0x71,0,
0,0,0,0,0,0x8e,0x79,0,0,0,0,0,0,0x8e,0x79,0,
0,0,0,0,0,0x9c,0x3d,0,0,0,0,0,0,0xfc,0x1d,0,
0,0,0,0,0,0xf8,0xd,0,0,0,0,0,0,0xe0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
/*Motolora*/
const byte logo_moto[]=
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0x7e,0,0,
0,0,0,0,0xc0,0x81,0x3,0,0,0,0,0,0x60,0,0x6,0,
0,0,0,0,0x30,0,0xb,0,0,0,0,0,0x18,0xc0,0x11,0,
0,0,0,0,0xc,0x38,0x10,0,0,0,0x6,0,0x84,0x1f,0x20,0,
0,0x80,0x7,0,0xf4,0xf,0x20,0,0,0xf0,0x1,0,0x82,0x1f,0x40,0,
0,0xfe,0,0,0x2,0x3c,0x40,0,0,0x8e,0,0,0x2,0xe0,0x40,0,
0,0x84,0,0,0x2,0x78,0x40,0,0,0xc2,0,0,0x82,0x1f,0x40,0,
0,0x7e,0,0,0xf4,0xf,0x20,0,0,0x3e,0,0,0x84,0x1f,0x20,0,
0,0,0,0,0x8,0x3e,0x10,0,0,0x70,0,0,0x8,0xe0,0x10,0,
0,0xfc,0,0,0x10,0,0xb,0,0,0x8c,0,0,0x60,0,0x6,0,
0,0x82,0,0,0xc0,0x81,0x1,0,0,0xc2,0,0,0,0x7e,0,0,
0,0x7e,0,0,0,0,0,0,0,0x3e,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0xfe,0,0,0,0,0,0,0,0xfe,0,0,0,0,0,0,
0,0x60,0,0,0,0,0,0,0,0x18,0,0,0,0xe0,0,0,
0,0xfe,0,0,0,0xf8,0,0,0,0xde,0,0,0,0x7e,0,0,
0,0x70,0,0,0,0x1f,0,0,0,0x38,0,0,0,0xff,0,0,
0,0xe,0,0,0,0xff,0,0,0,0x6,0,0,0,0x78,0,0,
0,0xf0,0,0,0,0x38,0,0,0,0xfc,0,0,0,0xdc,0,0,
0,0x9e,0,0,0,0xff,0,0,0,0x92,0,0,0,0xff,0,0,
0,0x92,0,0,0,0x1f,0,0,0,0x9e,0,0,0,0,0,0,
0,0x5e,0,0,0,0x38,0,0,0,0x84,0,0,0,0x7c,0,0,
0,0xf0,0,0,0,0xfe,0,0,0,0x7e,0,0,0,0xee,0,0,
0,0xe,0,0,0,0xc7,0,0,0,0x4,0,0,0,0xc3,0,0,
0,0x6,0,0,0,0x67,0,0,0,0x6,0,0,0,0x7e,0,0,
0,0xf0,0,0,0,0x3e,0,0,0,0xfc,0,0,0,0x1c,0,0,
0,0x9e,0,0,0,0,0,0,0,0x92,0,0,0,0x6,0,0,
0,0x92,0,0,0,0xe7,0,0,0,0x9e,0,0,0,0xff,0,0,
0,0x5e,0,0,0,0xff,0,0,0,0x4,0,0,0,0x1f,0,0,
0,0xf0,0,0,0,0x7,0,0,0,0xfc,0,0,0,0x7,0,0,
0,0x8c,0,0,0,0x7,0,0,0,0x82,0,0,0,0x3b,0,0,
0,0xc2,0,0,0,0x7c,0,0,0,0xf2,0,0,0,0xfe,0,0,
0,0x7e,0,0,0,0xee,0,0,0xc0,0x8f,0,0,0,0xc7,0,0,
0xc0,0xf1,0,0,0,0xc3,0,0,0,0xfe,0,0,0,0xe7,0,0,
0xc0,0x8f,0,0,0,0x7e,0,0,0xc0,0x85,0,0,0,0x7e,0,0,
0,0xc2,0,0,0,0x3c,0,0,0,0x7e,0,0,0,0xc0,0,0,
0,0x3e,0,0,0,0xf8,0,0,0,0x4,0,0,0,0xff,0,0,
0,0,0x4,0,0,0x3f,0,0,0,0xfe,0x7,0,0,0x37,0,0,
0,0xfe,0x3,0,0,0x33,0,0,0,0xc0,0,0,0,0x73,0,0,
0,0x70,0,0,0,0xfb,0,0,0,0x38,0,0,0,0xff,0,0,
0,0xe,0,0,0,0xce,0,0,0,0x6,0,0,0,0,0,0,
0,0x2,0,0,0,0x38,0,0,0,0,0,0,0,0x7c,0,0,
0,0,0,0,0,0xfe,0,0,0,0,0,0,0,0xe6,0,0,
0,0,0,0,0,0xc3,0,0,0,0,0,0,0,0xc7,0,0,
0,0,0,0,0,0x67,0,0,0,0,0,0,0,0x7e,0,0,
0,0,0,0,0,0x3e,0,0,0,0,0,0,0,0x98,0,0,
0,0,0,0,0,0xe0,0,0,0,0,0,0,0,0xfc,0,0,
0,0,0,0,0,0xff,0,0,0,0,0,0,0,0xdf,0,0,
0,0,0,0,0,0xc7,0,0,0,0,0,0,0,0xc0,0,0,
0,0,0,0,0,0xc0,0,0,0,0,0,0,0,0x40,0,0,
0,0,0,0,0,0x80,0,0,0,0,0,0,0,0xe0,0,0,
0,0,0,0,0,0x78,0,0,0,0,0,0,0,0x3c,0,0,
0,0,0,0,0,0x2f,0,0,0,0,0,0,0,0x27,0,0,
0,0,0,0,0,0x7f,0,0,0,0,0,0,0,0xff,0,0,
0,0,0,0,0,0xf8,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
void delay(byte time)
{
    while(time>0)
    {
        time--;
    }
}
/********************************************************
------------------------LCD命令函数----------------------
功能描述:被调用,用来执行对LCD的操作
传入参数:flag,data
参数设置:flag     1------数据
                   0------指令
          data     为指令或数据的内容
*********************************************************/
void lcd_cmd(byte flag,byte data)
{
    LCD_EN=0;
    if(flag==0x0)
    {
        LCD_RS=0;   
    }
    else
    {
        LCD_RS=1;
    }
    LCD_RW=0;
    LCD_DB=data;
    //delay(100);
 _asm NOP
 _asm NOP
 LCD_EN=1;     //LCD开始接受数据,置使能位为1
    _asm NOP     //等待
 _asm NOP
 delay(10);     
    LCD_EN=0;     //LCD结束接受数据,置使能位为0
    //LCD_RW=1;
    //LCD_RS=1;
 asm       //等待40us
 {
  PSHH
  PSHX
  PSHA
  LDHX #$0040
  LOOP:
  DBNZX LOOP
  PULA
  PULX
  PULH
 }
 
}
void lcd_reset()
{  
    LCD_RST=0;
 delay(255);
 delay(255);
 LCD_RST=1;
 delay(255);
 delay(255);
}
void lcd_clr()
{
    byte i,j;
    LCD_CS1=1;
    LCD_CS2=1;
    delay(10);
    for(i=0xb8;i<0xc0;i++)
    {
        lcd_cmd(0x0,i);
        lcd_cmd(0x0,0x40);
        for(j=0;j<0x40;j++)
        {
            lcd_cmd(0x1,0xff);   
        }       
    }
    delay(10);
    LCD_CS1=0;
    LCD_CS2=0;
    delay(10);
}
void lcd_clr_from_left()
{
 byte line,col;
 LCD_CS1=1;
    LCD_CS2=0;
 
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,0x00); 
  }
  asm        //等待清屏完毕,等待时间>1.6ms
     {
   LDHX #$08FF
   ClrLCD_2MS:
   AIX #-1
   CPHX #0
   BNE ClrLCD_2MS
  }
 }
 LCD_CS1=0;
    LCD_CS2=1;
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,0x00); 
  }
  asm        //等待清屏完毕,等待时间>1.6ms
     {
   LDHX #$08ff
   ClrLCD_2MS2:
   AIX #-1
   CPHX #0
   BNE ClrLCD_2MS2
  }
 }
 LCD_CS1=0;
    LCD_CS2=0;
}
void lcd_clr_from_center()
{
 byte line,col;
 byte temp=63;
    for(col=0x40;col<0x80;col++)
 {
  LCD_CS1=1;
     LCD_CS2=0;
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col+temp);
   lcd_cmd(0x1,0x00);
  }
  temp=temp-2;
  LCD_CS1=0;
     LCD_CS2=1;
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,0x00); 
  }
  asm        //等待清屏完毕,等待时间>1.6ms
     {
   LDHX #$08FF
   ClrLCD_2MS:
   AIX #-1
   CPHX #0
   BNE ClrLCD_2MS
  }
 }
 LCD_CS1=0;
    LCD_CS2=0;
}
void lcd_display_logo_6464()/*64×64*/
{
 byte line,col;
 word i=0;
 LCD_CS1=1;
 LCD_CS2=0;
 for(col=0x60;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo_GT60[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=1;
 //i=256
 for(col=0x40;col<0x60;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo_GT60[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=0;
}
void lcd_display_logo_12864(byte logo[])/*128×64*/
{
 byte line,col;
 word i=0;
 LCD_CS1=1;
 LCD_CS2=0;
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=1;
 //i=256
 for(col=0x40;col<0x80;col++)
 {
  for(line=0xb8;line<0xc0;line++)
  {
   lcd_cmd(0x0,line);
   lcd_cmd(0x0,col);
   lcd_cmd(0x1,logo[i]);
   i++; 
  }
 }
 LCD_CS1=0;
 LCD_CS2=0;
}
/********************************************************
------------------------LCD显示函数----------------------
功能描述:对于特定的行和列显示特定的字符
传入参数:line,col,code
参数设置:line-----------取值范围为0~3,即只有四行
    col------------取值范围为0~7,即只有八列 
          code-----------为数组,是用来显示的内容
*********************************************************/
void lcd_display(byte line,byte col,byte code[32])
{
    byte i;
    //byte temp;
 line=0xb8+line*2;
 if(col<4)
 {
  LCD_CS1=1;
  LCD_CS2=0;
  col=col*16+0x40;
 }
 else
 { 
  LCD_CS1=0;
  LCD_CS2=1;
  col=(col-4)*16+0x40;
 } 
 lcd_cmd(0x0,line);
 lcd_cmd(0x,col);
 for (i=0;i<32;i++)
 {
  if (i==16)
  {
   lcd_cmd(0x0,line+1);
   lcd_cmd(0x0,col);
  }
  //temp=~code[i];
  //lcd_cmd(0x1,temp);
  lcd_cmd(0x1,code[i]);
 }
 LCD_CS1=0;
 LCD_CS2=0;
}
void lcd_start()
{
 byte i;
    lcd_reset();
    lcd_cmd(0x0,0x3e);
    lcd_cmd(0x0,0xc0);
    lcd_cmd(0x0,0x3f);
    lcd_clr();
    lcd_clr_from_center();
    lcd_display_logo_6464();
    for(i=0;i<250;i++)
    {
     asm        //等待清屏完毕,等待时间>1.6ms
     {
   LDHX #$08FF
   ClrLCD_2MS:
   AIX #-1
   CPHX #0
   BNE ClrLCD_2MS
  }
    }
    lcd_clr_from_center();
    lcd_display_logo_12864(logo_moto);
    for(i=0;i<250;i++)
    {
     asm        //等待清屏完毕,等待时间>1.6ms
     {
   LDHX #$08FF
   ClrLCD_2MS2:
   AIX #-1
   CPHX #0
   BNE ClrLCD_2MS2
  }
    }
    lcd_clr_from_left();
    lcd_display_logo_12864(logo_freescal);
}
void main(void)
{
    //SOPT_COPE=0;     //禁止看门狗
    CONFIG1_COPD=1;    //禁止看门狗
 DDRB=0xff;      //B口为输出
 DDRA=0b00111111;
 lcd_start();
 //lcd_clr_from_left();
 
 
 
 //lcd_display_logo_12864(logo_moto);
 for(;;);   
}


阅读全文 | 回复 | 引用通告
 


 
[D.其他其他]LCD点阵
天 发表于 2005-8-13 23:22:23

今天写了几个图形的点阵程序,

一切顺利

^_^

现在我的LCD可以显示图像了

哈哈

不过,过程还是一波三折

首先是不会提取图像的点

虽然小麒把一个图像的二进制文件给了我

but全是0和1

完全不能用

于是,我傻乎乎的自己给这些个0,1加上头标,

整整64×64个点

也就是64×8=512个字节

眼睛看花掉

但还是咬咬牙,坚持住

或许,本不应该如此“固执”

结果等我把512个字节标完(标到我眼发酸,手发麻)

发现小麒给的数据是从MSB到LSB的

我要求的数据是从LSB到MSB

当场暴晕

@_@

于是打定主意上网找软件

通过楼上LY帮忙

找到一款能把图片的数据读出的软件

拿下来一试

又是一阵晕

这个软件的输出还是不符合要求

输出跟小麒给的数据一样

都是是从MSB到LSB的

无奈

……

一气之下

干脆自己用VC写了个转换程序

哈哈

顺利通过编译

拿来图片一试

效果非常好

^_^

强悍

现在,只要是图片(前提是,黑白的,尺寸<=128×64)

都能显示在我的LCD上了(做好的图片,只要5分钟就能显示)

晚上一时性起

一口气写了几个图片的程序

一个字

果然是自己写的程序

用得舒服

用得放心

^_^

写完图片程序

顺便把触摸屏的算法改进了一下

现在的触摸屏已经反应灵敏,基本无误判了


阅读全文 | 回复 | 引用通告
 


 
[C.程序资源]LCD12864
天 发表于 2005-8-12 23:31:56

#i nclude <hidef.h> /* for EnableInterrupts macro */
#i nclude <MC68HC908GP32.h> /* include peripheral declarations */

#define LCD_DB PTB
#define LCD_RS PTA_PTA0
#define LCD_RW PTA_PTA1
#define LCD_EN PTA_PTA2
#define LCD_CS1 PTA_PTA3
#define LCD_CS2 PTA_PTA4
#define LCD_RST PTA_PTA5
byte code_0[]=
{/*同   C4512 */
0x00,0xFE,0x02,0x12,0x92,0x92,0x92,0x92,0x92,0x92,0x9A,0x12,0x02,0xFF,0x02,0x00,
0x00,0xFF,0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x08,0x1F,0x40,0x80,0x7F,0x00,0x00
};
byte code_1[]=
{/*济   C2835 */
0x10,0x22,0x64,0x8C,0x20,0xE4,0x24,0xEC,0x15,0xE6,0x14,0xEC,0x64,0xA6,0x14,0x00,
0x04,0x04,0xFE,0x01,0x82,0x7D,0x2A,0x2B,0x28,0x2B,0x28,0x2B,0xFD,0x00,0x01,0x00
};
byte code_2[]=
{/*大   C2083 */
0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00
};
byte code_3[]=
{/*学   C4907 */
0x00,0xC0,0x7F,0x55,0x55,0x40,0x55,0x4A,0x55,0x40,0x55,0x55,0x7F,0x40,0xC0,0x00,
0x09,0x08,0x08,0x09,0x09,0x49,0x89,0x7D,0x0D,0x0B,0x09,0x08,0x08,0x09,0x08,0x00
};
void delay(byte time)
{
    while(time>0)
    {
        time--;
    }
}
/********************************************************
------------------------LCD命令函数----------------------
功能描述:被调用,用来执行对LCD的操作
传入参数:flag,data
参数设置:flag     1------数据
                   0------指令
          data     为指令或数据的内容
*********************************************************/
void lcd_cmd(byte flag,byte data)
{
    LCD_EN=0;
    if(flag==0x0)
    {
        LCD_RS=0;   
    }
    else
    {
        LCD_RS=1;
    }
    LCD_RW=0;
    LCD_DB=data;
    //delay(100);
 _asm NOP
 _asm NOP
 LCD_EN=1;     //LCD开始接受数据,置使能位为1
    _asm NOP     //等待
 _asm NOP
 delay(10);     
    LCD_EN=0;     //LCD结束接受数据,置使能位为0
    //LCD_RW=1;
    //LCD_RS=1;
 asm       //等待40us
 {
  PSHH
  PSHX
  PSHA
  LDHX #$0040
  LOOP:
  DBNZX LOOP
  PULA
  PULX
  PULH
 }
 
}
void lcd_reset()
{  
    LCD_RST=0;
 delay(255);
 delay(255);
 LCD_RST=1;
 delay(255);
 delay(255);
}
void lcd_clr()
{
    byte i,j;
    LCD_CS1=1;
    LCD_CS2=1;
    delay(10);
    for(i=0xb8;i<0xc0;i++)
    {
        lcd_cmd(0x0,i);
        lcd_cmd(0x0,0x40);
        for(j=0;j<0x40;j++)
        {
            lcd_cmd(0x1,0x00);   
        }       
    }
    delay(10);
    LCD_CS1=0;
    LCD_CS2=0;
    delay(10);
}
void lcd_start()
{
    lcd_reset();
    lcd_cmd(0x0,0x3e);
    lcd_cmd(0x0,0xc0);
    lcd_cmd(0x0,0x3f);
    lcd_clr();
}
/********************************************************
------------------------LCD显示函数----------------------
功能描述:对于特定的行和列显示特定的字符
传入参数:line,col,code
参数设置:line-----------取值范围为0~3,即只有四行
    col------------取值范围为0~7,即只有八列 
          code-----------为数组,是用来显示的内容
*********************************************************/
void lcd_display(byte line,byte col,byte code[32])
{
    byte i;
 line=0xb8+line;
 if(col<4)
 {
  LCD_CS1=1;
  LCD_CS2=0;
  col=col*16+0x40;
 }
 else
 { 
  LCD_CS1=0;
  LCD_CS2=1;
  col=(col-1)*16+0x40;
 } 
 lcd_cmd(0x0,line);
 lcd_cmd(0x,col);
 for (i=0;i<32;i++)
 {
  if (i==16)
  {
   lcd_cmd(0x0,line+1);
   lcd_cmd(0x0,col);
  }
  lcd_cmd(0x1,code[i]);
 }
 LCD_CS1=0;
 LCD_CS2=0;
}
void main(void)
{
    //SOPT_COPE=0;     //禁止看门狗
    CONFIG1_COPD=1;    //禁止看门狗
 DDRB=0xff;      //B口为输出
 DDRA=0b00111111;
 lcd_start();
 lcd_display(0x00,0x00,code_0);
 lcd_display(0x00,0x01,code_1);
 lcd_display(0x00,0x02,code_2);
 lcd_display(0x00,0x03,code_3);
 //lcd_display(0x1,0x1,code_1[]);
 for(;;);   
}


阅读全文 | 回复 | 引用通告
 


首页 上一页 下一页 尾页 页次:1/3页  10篇日志/页 转到:



Powered by Oblog.