欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: Proteus中加了排阻LCD1602屏幕不亮 [打印本頁]

作者: shurmin    時間: 2018-12-2 23:34
標題: Proteus中加了排阻LCD1602屏幕不亮
本帖最后由 shurmin 于 2018-12-3 21:56 編輯

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P3^2;
sbit K2=P3^3;
sbit beep=P3^7;
sbit rs=P2^0;
sbit rw=P2^1;
sbit ep=P2^2;
uchar i;
uchar song_Index=0,Tone_Index=0;
uchar *song_Tone,*song_Time;
uchar *discode;
uchar code dis1[]={" Yuan Yin Wo "};//the name of the first song
uchar code dis2[]={" Cong Ci Yi Hou "};//the name of the second song
uchar code dis3[]={" 203 "};//the name of the third song
uchar code dis4[]={" 203 "};
uchar code dis5[]={" 203 "};
uchar code dis[]={"K1:Down  K2:Up"};
uint code Tone_tab[]={
        62018,62401,62491,62895,63184,63441,63506,
        63773,63965,64137,64215,64360,64488,64603,
        64654,64751,64836,64876,64948,65012,65067,65535};
uchar code song1_Tone[]={
  14,14,14,14,13,12,
        12,14,13,12,12,14,13,12,
        12,11,11,11,11,12,9,9,14,13,12,
        12,14,13,12,12,11,11,12,12,16,16,
        16,16,16,14,13,12,
        12,14,13,12,12,14,13,12,
        12,16,15,15,14,12,12,12,12,11,11,12,
        12,16,16,12,11,11,12,12,16,16,15,15,
        15,14,12,12,12,12,0xff};
uchar code song1_Time[]={
        8,8,8,4,2,2,
        8,4,2,2,4,2,1,1,
        1,1,1,1,1,2,1,4,2,1,1,
        4,2,1,1,1,1,1,1,1,2,1,
        8,8,8,2,1,1,
        4,2,1,1,4,2,1,1,
        2,1,1,1,1,1,1,4,1,1,1,1,
        1,2,1,1,1,1,1,1,2,1,2,2,
        2,1,1,8,8,8,0xff};
uchar code song2_Tone[]={
        7,7,7,5,7,
        9,8,9,8,9,12,11,9,
        8,9,9,5,7,
        9,8,9,11,8,9,8,8,8,7,
        7,9,9,7,7,8,
        9,8,9,8,9,12,13,14,
        13,13,11,11,8,9,9,7,
        5,7,9,8,8,6,6,4,
        5,5,5,5,0xff};
uchar code song2_Time[]={
        8,8,8,2,2,
        2,2,2,2,2,2,2,2,
        4,4,4,2,2,
        2,2,2,2,1,1,1,1,2,2,
        2,2,4,4,2,2,
        2,2,2,2,2,2,2,2,
        2,1,1,2,2,4,2,2,
        4,2,2,2,1,1,2,2,
        4,4,4,4,0xff};
uchar code song3_Tone[]={
  7,9,8,7,9,
        5,7,6,7,8,
        4,9,8,7,9,
        8,7,7,7,7,5,9,9,
        9,9,8,7,9,
        5,7,6,7,8,
        9,11,12,9,9,8,7,
        7,7,7,7,5,6,6,7,
        7,7,0xff};
uchar code song3_Time[]={
  8,1,1,1,1,
        8,1,1,1,1,
        8,1,1,1,1,
        1,1,1,1,1,1,1,1,
        8,1,1,1,1,
        8,1,1,1,1,
        1,1,1,1,1,1,4,
        1,1,1,1,1,1,1,1,
        8,8,0xff};
uchar code song4_Tone[]={
  14,14,14,14,13,12,
        12,14,13,12,12,14,13,12,
        12,11,11,11,11,12,9,9,14,13,12,
        12,14,13,12,12,11,11,12,12,16,16,
        16,16,16,14,13,12,
        12,14,13,12,12,14,13,12,
        12,16,15,15,14,12,12,12,12,11,11,12,
        12,16,16,12,11,11,12,12,16,16,15,15,
        15,14,12,12,12,12,0xff};
uchar code song4_Time[]={
        8,8,8,4,2,2,
        8,4,2,2,4,2,1,1,
        1,1,1,1,1,2,1,4,2,1,1,
        4,2,1,1,1,1,1,1,1,2,1,
        8,8,8,2,1,1,
        4,2,1,1,4,2,1,1,
        2,1,1,1,1,1,1,4,1,1,1,1,
        1,2,1,1,1,1,1,1,2,1,2,2,
        2,1,1,8,8,8,0xff};
uchar code song5_Tone[]={
  14,14,14,14,13,12,
        12,14,13,12,12,14,13,12,
        12,11,11,11,11,12,9,9,14,13,12,
        12,14,13,12,12,11,11,12,12,16,16,
        16,16,16,14,13,12,
        12,14,13,12,12,14,13,12,
        12,16,15,15,14,12,12,12,12,11,11,12,
        12,16,16,12,11,11,12,12,16,16,15,15,
        15,14,12,12,12,12,0xff};
uchar code song5_Time[]={
        8,8,8,4,2,2,
        8,4,2,2,4,2,1,1,
        1,1,1,1,1,2,1,4,2,1,1,
        4,2,1,1,1,1,1,1,1,2,1,
        8,8,8,2,1,1,
        4,2,1,1,4,2,1,1,
        2,1,1,1,1,1,1,4,1,1,1,1,
        1,2,1,1,1,1,1,1,2,1,2,2,
        2,1,1,8,8,8,0xff};
void delayms(uint ms)
{
        uchar a;
        while(ms--)
        {
                for(a=230;a>0;a--);
        }
}
uchar Busy_Check(void)
{
        uchar LCD_Status;
        rs=0;
        rw=1;
        ep=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        LCD_Status=P0&0x80;
        ep=0;
        return LCD_Status;
}
void lcd_wcmd(uchar cmd)
{
        while(Busy_Check());
        rs=0;
        rw=0;
        ep=0;
        _nop_();
        _nop_();
        P0=cmd;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep=1;
  _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep=0;
}
void lcd_pos(uchar pos)
{
        lcd_wcmd(pos|0x80);
}
void lcd_wdat(uchar dat)
{
        while(Busy_Check());
        rs=1;
        rw=0;
        ep=0;
        P0=dat;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep=1;
  _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep=0;
}
void lcd_init(void)
{
        lcd_wcmd(0x38);
        delayms(1);
        lcd_wcmd(0x0c);
        delayms(1);
        lcd_wcmd(0x06);
        delayms(1);
        lcd_wcmd(0x01);
        delayms(1);
}
void int0() interrupt 0
{
        delayms(100);
        if(INT0==0)
        {
                TR0=0;
                if(song_Index>5)
                {
                        song_Index=5;
                }
                else
                {
                        song_Index ++;
                }
                if(song_Index==1)
                {
                        song_Tone=song2_Tone;
                        song_Time=song2_Time;
                        discode=dis2;
                }
                if(song_Index==2)
                {
                        song_Tone=song3_Tone;
                        song_Time=song3_Time;
                        discode=dis3;
                }
                if(song_Index==3)
                {
                        song_Tone=song4_Tone;
                        song_Time=song4_Time;
                        discode=dis4;
                }
                if(song_Index==4)
                {
                        song_Tone=song5_Tone;
                        song_Time=song5_Time;
                        discode=dis5;
                }
                if(song_Index==5)
                {
                        song_Tone=song1_Tone;
                        song_Time=song1_Time;
                        discode=dis1;
                        song_Index=0;
                }
                TR0=1;
                i=0;
        }
}
void int1() interrupt 2
{
        delayms(100);
        if(INT1==0)
        {
                TR0=0;
                if(song_Index<1)
                {
                        song_Index=0;
                }
                else
                {
                        song_Index --;
                }
                if(song_Index==1)
                {
                        song_Tone=song2_Tone;
                        song_Time=song2_Time;
                        discode=dis2;
                }
                if(song_Index==2)
                {
                        song_Tone=song3_Tone;
                        song_Time=song3_Time;
                        discode=dis3;
                }
                if(song_Index==3)
                {
                        song_Tone=song4_Tone;
                        song_Time=song4_Time;
                        discode=dis4;
                }
                        if(song_Index==4)
                {
                        song_Tone=song5_Tone;
                        song_Time=song5_Time;
                        discode=dis5;
                }
                if(song_Index==5)
                {
                        song_Tone=song1_Tone;
                        song_Time=song1_Time;
                        discode=dis1;
                        song_Index=0;
                }
                TR0=1;
                i=0;
        }
}
void Timer0() interrupt 1
{
        TH0=Tone_tab[Tone_Index]/256;
        TL0=Tone_tab[Tone_Index]%256;
        beep=~beep;
}
void LCD_disp(void)
{
        uchar i;
        lcd_pos(0);
        i=0;
        while(discode!='\0')
        {
                lcd_wdat(discode);
                i++;
        }
        lcd_pos(0x40);
        i=0;
        while(dis!='\0')
        {
                lcd_wdat(dis);
                i++;
        }
}
void int_init(void)
{
        TMOD=0x01;
        ET0=1;
        EX0=1;
        IT0=1;
        EX1=1;
        IT1=1;
        EA=1;
        TR0=0;
}
void main(void)
{
        int_init();
        song_Tone=song1_Tone;
        song_Time=song1_Time;
        discode=dis1;
        lcd_init();
        while(1);
        {
                LCD_disp();
                Tone_Index=song_Tone;
                if(Tone_Index==0xFF)
                {
                        i=0;
                        TR0=0;
                }
                TR0=1;
                delayms(song_Time[Tone_Index]*60);
                TR0=0;
                i++;
        }
}
               
                       
                       
                       

QQ圖片20181202233035.png (39.94 KB, 下載次數: 38)

QQ圖片20181202233035.png

作者: xuyaqi    時間: 2018-12-3 10:19
你給 LCD 2腳VDD應該加上+5v電源
作者: 哈嘍哈    時間: 2018-12-3 17:19
電平跳動都沒有,你再檢查一下程序

作者: shurmin    時間: 2018-12-3 21:33
xuyaqi 發表于 2018-12-3 10:19
你給 LCD 2腳VDD應該加上+5v電源

還是沒有字符

QQ圖片20181203213307.png (8.1 KB, 下載次數: 31)

QQ圖片20181203213307.png

作者: han7741    時間: 2018-12-3 21:41

給 LCD 2腳VDD應該加上5v電源
作者: ldjadsad    時間: 2018-12-3 21:47
我也有同樣問題,同求

作者: shurmin    時間: 2018-12-3 21:48
xuyaqi 發表于 2018-12-3 10:19
你給 LCD 2腳VDD應該加上+5v電源

而且如果加了電源以后,3腳的燈不亮了,說明3腳不運行了

作者: shurmin    時間: 2018-12-3 21:56
哈嘍哈 發表于 2018-12-3 17:19
電平跳動都沒有,你再檢查一下程序

剛剛檢查了一下,確實有點錯誤,但是還是不能讓電平跳動




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1