找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4781|回復: 6
打印 上一主題 下一主題
收起左側(cè)

51單片機驅(qū)動LCD12864寫的程序運行后流水燈和數(shù)碼管亂閃,顯示屏只亮沒顯示

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:129583 發(fā)表于 2016-7-7 18:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#include<intrins.h>
#include<stdlib.h>

#define uchar unsigned char
#define uint unsigned int
#define LCD_data  P0
sbit LCD_RS=P1^0;
sbit LCD_RW=P1^1;
sbit LCD_EN=P2^5;
sbit LCD_PSB=P1^2;
sbit wela =P2^6;
sbit dula =P2^7;


void delay_12864(uint x)
{
uint i,j;
for(j=0;j<x;j++)
     for(i=0;i<110;i++)        ;
}

void busychk_12864(void)
{
unsigned int timeout = 0;
LCD_EN = 0;
LCD_RS = 0;
LCD_RW= 1;
LCD_EN = 1;
while( 0x80 && ++timeout != 0);  //忙狀態(tài)檢測,等待超時時間為60ms
LCD_EN = 0;
}


//寫命令子程序
void wrtcom_12864(unsigned char com)
{
busychk_12864();
LCD_EN = 0;
LCD_RS = 0;
LCD_RW = 0;
P0 = com;
LCD_EN = 1;
delay_12864(50);    //50us使能延時!!!注意這里,如果是較快的CPU應該延時久一些
LCD_EN = 0;  
}

//寫數(shù)據(jù)子程序
void wrtdat_12864(unsigned char dat)
{
busychk_12864();
LCD_EN= 0;
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 1;
P0 = dat;
delay_12864(50);    //使能延時!!!注意這里,如果是較快的CPU應該延時久一些
LCD_EN = 0;  
}

void lcd_init()
{  

LCD_PSB=1;
wrtcom_12864(0X30);
delay_12864(5);
wrtcom_12864(0X02);
delay_12864(5);
wrtcom_12864(0X0C);
delay_12864(5);
wrtcom_12864(0X01);
delay_12864(5);
wrtcom_12864(0X06);
delay_12864(5);
wrtcom_12864(0X80);
delay_12864(5);
}

void main()
{

  uint i;

delay_12864(100);      //啟動延時
   lcd_init();
wrtcom_12864(0x80);
for(i=0;i<16;i++)
   wrtdat_12864(0x00+i);
  wrtcom_12864(0x90);
for(i=0;i<16;i++)
   wrtdat_12864(0x10+i);
wrtcom_12864(0x88);
for(i=0;i<16;i++)
   wrtdat_12864(0x30+i);
wrtcom_12864(0x98);
for(i=0;i<16;i++)
   wrtdat_12864(0x40+i);

  delay_12864(50);
           while( 1 ) ;

}





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關帖子

回復

使用道具 舉報

沙發(fā)
ID:111634 發(fā)表于 2016-7-7 21:34 | 只看該作者
主程序沒有安排好12864、流水燈和數(shù)碼管依次輪流工作的時序,互相有干擾。
回復

使用道具 舉報

板凳
ID:57657 發(fā)表于 2016-7-8 00:20 | 只看該作者
用proteus仿真沒有異常的話就能排除是程序的錯誤,否則硬件有干擾。
回復

使用道具 舉報

地板
ID:129583 發(fā)表于 2016-7-8 15:14 | 只看該作者
zl2168 發(fā)表于 2016-7-7 21:34
主程序沒有安排好12864、流水燈和數(shù)碼管依次輪流工作的時序,互相有干擾。

那應該怎么改呢
回復

使用道具 舉報

5#
ID:129583 發(fā)表于 2016-7-8 15:15 | 只看該作者
npn 發(fā)表于 2016-7-8 00:20
用proteus仿真沒有異常的話就能排除是程序的錯誤,否則硬件有干擾。

用的KEIL,這個怎么改改、?
回復

使用道具 舉報

6#
ID:111634 發(fā)表于 2016-7-8 21:58 | 只看該作者
流水燈最快0.1秒流一次。在此時間內(nèi)足夠讓12864更新顯示。怎么會互有干擾?
回復

使用道具 舉報

7#
ID:129825 發(fā)表于 2016-7-25 17:28 | 只看該作者
數(shù)碼管 流水燈 分開寫
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表