久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2330|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

為什么仿真液晶無(wú)顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:678280 發(fā)表于 2021-10-15 12:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
請(qǐng)教了,不知錯(cuò)在哪里,仿真時(shí)液晶就是啥都沒(méi)有。謝謝。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:678280 發(fā)表于 2021-10-15 12:01 | 只看該作者
上圖的代碼

#include<reg52.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
void Initialize_LCD();
void DelayMS(uint ms);
void ShowString(uchar,uchar,uchar *);
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
uchar code Prompt[]="Press K1 - K3 To Start Demo Prog";
//待滾動(dòng)顯示的信息段落,每行不超過(guò)80個(gè)字符,共6行
uchar const Line_Count=6;       
uchar code Msg[][80]=
{
        "Many CAD users dismiss schematic capture as a necessary evil in the ",
        "process of creating PCB layout but we have always disputed this point ",
        "of view. With PCB layout now offering automation of both component ",
        "can often be the most time consuming element of the exercise.",
        "And if you use circuit simulation to develop your ideas, ",
        "you are going to spend even more time working on the schematic."
};
//顯示緩沖(2行)
uchar Disp_Buffer[32];

void V_Scroll_Display() //垂直滾動(dòng)顯示
{
        uchar i,j,k=0;
        uchar *p=Msg[0];
        uchar *q=Msg[Line_Count]+strlen(Msg[Line_Count]);
        //以下僅使用顯示緩沖的前16字節(jié)空間
        while(p<q)
        {
                for(i=0;i<16&&p<q;i++)
                {        //消除顯示緩沖中待顯示行首尾可能出現(xiàn)的空格
                        if((i==0||i==15)&&*p==' ') p++;
                        if(*p!='\0')
                        {
                                Disp_Buffer[i]=*p++;
                        }
                        else
                        {
                                if(++k>Line_Count) break;
                                p=Msg[k];                                        //p指向下一串的首地址
                                Disp_Buffer[i]=*p++;
                        }
                }
                //不足16個(gè)字符時(shí)空格補(bǔ)充
                for(j=i;j<16;j++) Disp_Buffer[j]=' ';
                //垂直滾動(dòng)顯示
                while(F0) DelayMS(5);
                ShowString(0,0,"                 ");
                DelayMS(150);
                while(F0) DelayMS(5);
                ShowString(0,1,Disp_Buffer);
                DelayMS(150);
                while(F0) DelayMS(5);
                ShowString(0,0,Disp_Buffer);
                ShowString(0,1,"                 ");
                DelayMS(150);
        }
        //最后清屏
        ShowString(0,0,"                 ");
        ShowString(0,1,"                 ");
}

void H_Scroll_Display()//水平滾動(dòng)顯示
{
        uchar i,j,k=0,L=0;
        uchar *p=Msg[0];
        uchar *q=Msg[Line_Count]+strlen(Msg[Line_Count]);
        //將32個(gè)字符的顯示緩沖前16個(gè)字符設(shè)為空格
        for(i=0;i<16;i++) Disp_Buffer[i]=' ';
        while(p<q)
        {
                //忽略緩沖中首尾可能出現(xiàn)的空格
                if((i==16||i==31)&&*p==' ') p++;
                for(i=16;i<32&&p<q;i++)
                {       
                        if(*p!='\0')
                        {
                                Disp_Buffer[i]=*p++;
                        }
                        else
                        {
                                if(++k>Line_Count) break;
                                p=Msg[k];                                        //p指向下一串的首地址
                                Disp_Buffer[i]=*p++;
                        }
                }
                //不足32個(gè)字符時(shí)空格補(bǔ)充
                for(j=i;j<32;j++) Disp_Buffer[j]=' ';
                //水平滾動(dòng)顯示
                for(i=0;i<=16;i++)
                {
                        while(F0) DelayMS(5);
                        ShowString(0,L,Disp_Buffer+i);
                        while(F0) DelayMS(5);
                        DelayMS(20);
                }
                L=(L==0)?1:0;                //行號(hào)在0,1間交替
                DelayMS(300);
        }
        //如果顯示結(jié)束時(shí)停留在第0行,則清除第1行的內(nèi)容
        if(L==1) ShowString(0,1,"                 ");       
}

void EX_INT0() interrupt 0//外部中斷0,由K3控制暫停與繼續(xù)顯示
{
  F0=!F0;                //暫停與繼續(xù)顯示控制標(biāo)志位
}

void main()
{
        uint Count=0;
        IE=0x81;                //允許外部中斷0
        IT0=1;                        //下降沿觸發(fā)
        F0=0;                        //暫停與繼續(xù)顯示控制標(biāo)志位
        Initialize_LCD();
        ShowString(0,0,Prompt);
        ShowString(0,1,Prompt+16);
        while(1)
        {
                if(K1==0)
                {
                        V_Scroll_Display();
                        DelayMS(300);
                }
                else
                if(K2==0)
                {       
                        H_Scroll_Display();
                        DelayMS(300);       
                }
        }
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:752974 發(fā)表于 2021-10-16 11:29 | 只看該作者
仿真中用到的器件要有相應(yīng)的仿真數(shù)學(xué)模型,有的器件缺這個(gè)模型,就不能仿真,可以換一個(gè)試試。
回復(fù)

使用道具 舉報(bào)

地板
ID:856329 發(fā)表于 2021-10-16 12:11 | 只看該作者
樓主,仿真圖中排阻網(wǎng)絡(luò)標(biāo)號(hào)錯(cuò)位,lcd不確定是否有錯(cuò)。
另外,程序中沒(méi)有看到lcd控制引腳的定義。
以下是我仿真的lcd1602和排阻接法,可以參考。

自用的lcd1602驅(qū)動(dòng)奉上,僅供參考
Lcd1602驅(qū)動(dòng).zip (1.67 KB, 下載次數(shù): 2)

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日日噜噜夜夜爽爽狠狠 | 一级黄色片在线看 | 成人国产综合 | 在线看亚洲 | 精品日韩一区 | www在线视频 | 一区二区福利视频 | 天天爱天天操 | 国产乱码精品一区二区三区忘忧草 | 亚洲精品99 | 国产精品自产拍 | 亚洲网视频| 在线亚洲欧美 | 91亚洲国产 | 国产丝袜一区二区三区免费视频 | 亚洲一区二区成人 | 久久久久网站 | 蜜桃免费一区二区三区 | 国产a区 | 日韩在线第一 | 欧美亚洲视频 | 亚洲精品黑人 | 99在线精品视频 | 国产一区二区精华 | 久久国产婷婷国产香蕉 | 香蕉大人久久国产成人av | 亚洲日日操 | 成av在线| 婷婷五月色综合香五月 | 国产一区不卡 | 日韩欧美三区 | 九九久久久| 日本免费一区二区三区 | 国产欧美精品 | 精品一区二区三区在线播放 | 在线色网 | 精品国产一区二区三区在线观看 | 国产一区二区三区四区在线观看 | 国产精品a级 | 91综合网 | wwww.8888久久爱站网 |