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

QQ登錄

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

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

LCD12864+51單片機(jī)仿真,為啥12864的全部引腳一起閃爍?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1070075 發(fā)表于 2023-12-14 17:40 來(lái)自手機(jī) | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <reg51.h>//應(yīng)該是清屏失敗了#define uchar unsigned char #define uint unsigned int#define lcdrow 0xc0                        //起始列#define lcdpage 0xb8                 //起始頁(yè)#define lcdcolumn 0x40                  //起始列//#define c_page_max 0x08                //頁(yè)數(shù)最大值  8//#define c_column_max 0x40              //列數(shù)最大值  64#define bus P0sbit rst=P2^0;sbit e=P2^2;sbit rw=P2^3;sbit rs=P2^4;sbit cs1=P2^5;sbit cs2=P2^6;void delayms(uint);void delayus10(void);void select(uchar);void send_cmd(ucahr);void send_data(uchar);void clear_screen(void);void initial(void); void display_zf(uchar,uchar,uchar,uchar); void display_hz(uchar,uchar,uchar,uchar); void display(void);void CheckState(void);uchar code table_zf[]={// P0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//R0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//00xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//T0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,// E0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//U0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//文字:S0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00};//漢字表//宋體12;此字體下對(duì)應(yīng)的點(diǎn)陣為:寬X高=16X16//取模方式:縱向取模下高位,從上到下,從左到右取模uchar code table_hz[]={//文字:電0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,//文字:子0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,  //設(shè)        0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00,0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00,//文字:計(jì)0x20,0x21,0x2E,0xE4,0x00,0x00,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,//文字:與0x00,0x00,0x00,0x00,0x7E,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xCC,0x08,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x24,0x46,0x44,0x20,0x1F,0x00,0x00,//文字:創(chuàng)0x40,0x20,0xD0,0x4C,0x43,0x44,0x48,0xD8,0x30,0x10,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,0x00,0x3F,0x40,0x40,0x42,0x44,0x43,0x78,0x00,0x00,0x07,0x20,0x40,0x3F,0x00,//文字:新0x20,0x24,0x2C,0x35,0xE6,0x34,0x2C,0x24,0x00,0xFC,0x24,0x24,0xE2,0x22,0x22,0x00,0x21,0x11,0x4D,0x81,0x7F,0x05,0x59,0x21,0x18,0x07,0x00,0x00,0xFF,0x00,0x00,0x00,//文字:的0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00,//文字:最0x40,0x40,0xC0,0x5F,0x55,0x55,0xD5,0x55,0x55,0x55,0x55,0x5F,0x40,0x40,0x40,0x00,0x20,0x20,0x3F,0x15,0x15,0x15,0xFF,0x48,0x23,0x15,0x09,0x15,0x23,0x61,0x20,0x00,//文字:佳0x40,0x20,0xF0,0x1C,0x47,0x4A,0x48,0x48,0x48,0xFF,0x48,0x48,0x4C,0x68,0x40,0x00,0x00,0x00,0xFF,0x00,0x40,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x46,0x64,0x40,0x00,//文字:平0x00,0x01,0x05,0x09,0x71,0x21,0x01,0xFF,0x01,0x41,0x21,0x1D,0x09,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,//文字:臺(tái)0x00,0x00,0x40,0x60,0x50,0x48,0x44,0x63,0x22,0x20,0x20,0x28,0x70,0x20,0x00,0x00,0x00,0x00,0x00,0x7F,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00,0x00};void mian(){        CheckState();        initial();        display();        clear_screen();        display();        while(1);}void CheckState(void)                //狀態(tài)檢查,LCD是否忙?{   rs=0;   rw=1;         e=1;                           //僅當(dāng)?shù)?位為0時(shí)才可操作(判別busy信號(hào))    while((bus&0x80)==0x80);    e=0;}void delayus10(void){        uchar i=5;        while(--i);}void delayms(uint j){        uchar i=250;        for(;j>0;j--)        {                while(--i);                i=249;                while(--i);i=250;}}//屏幕選擇-Cs=0選擇雙屏,cs=1選擇左半屏,cs=2選擇右半屏        //void select(uchar cs)void select(uchar cs){  if(cs==0) cs1=0,cs2=0;  else if(cs==1) cs1=0,cs2=1;        else cs1=1,cs2=0;}void send_cmd(uchar cmd)             //寫(xiě)命令函數(shù){        CheckState();        rs=0;rw=0;bus=cmd;delayus10();e=1;e=0;}void send_data(uchar dat)                 //寫(xiě)數(shù)據(jù)函數(shù){        CheckState();  rs=1;rw=0;bus=dat;delayus10();e=1;e=0;}void clear_screen(void)        //清屏函數(shù){   uchar c_page,c_column;   select(0);   for(c_page=0;c_page<0x08;c_page++)   {     send_cmd(c_page+lcdpage);     send_cmd(lcdcolumn);     for(c_column=0;c_column<0x40;c_column++)     {        send_data(0x00);           }    }}void initial()       //LCD初始化{        CheckState();        select(0);        rst=0;delayms(10);rst=1;    clear_screen();  send_cmd(lcdrow);        send_cmd(lcdcolumn);        send_cmd(lcdpage);        send_cmd(0x3f);}//寫(xiě)字符,c_page為當(dāng)前頁(yè),c_column為當(dāng)前列,num為字符數(shù),//offset為所取字符在顯示緩沖區(qū)中的偏移單位void display_zf(uchar c_page,uchar c_column,uchar num,uchar offset){uchar c1,c2,c3;    //這里將uchar改為了uintfor(c1=0;c1<num;c1++){  for(c2=0;c2<2;c2++)        {                        for(c3=0;c3<8;c3++)    {        send_cmd(lcdpage+c_page+c2);     //lcdpage是起始頁(yè),一頁(yè)八行,一共8頁(yè)        send_cmd(lcdcolumn+c_column+c1*8+c3);   //lcdolumn是起始列,加當(dāng)前列,再加              send_data(table_zf[(c1+offset)*16+c2*8+c3]); //     }  }}}//寫(xiě)漢字,C_page為當(dāng)前頁(yè),C_
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1070075 發(fā)表于 2023-12-14 17:41 來(lái)自手機(jī) | 只看該作者
/寫(xiě)字符,c_page為當(dāng)前頁(yè),c_column為當(dāng)前列,num為字符數(shù),//offset為所取字符在顯示緩沖區(qū)中的偏移單位void display_zf(uchar c_page,uchar c_column,uchar num,uchar offset){uchar c1,c2,c3;    //這里將uchar改為了uintfor(c1=0;c1<num;c1++){  for(c2=0;c2<2;c2++)        {                        for(c3=0;c3<8;c3++)    {        send_cmd(lcdpage+c_page+c2);     //lcdpage是起始頁(yè),一頁(yè)八行,一共8頁(yè)        send_cmd(lcdcolumn+c_column+c1*8+c3);   //lcdolumn是起始列,加當(dāng)前列,再加              send_data(table_zf[(c1+offset)*16+c2*8+c3]); //     }  }}}//寫(xiě)漢字,C_page為當(dāng)前頁(yè),C__column為當(dāng)前列,num為字符數(shù),//offset為所取漢字在顯示緩沖區(qū)中的偏移單位void display_hz(uchar c_page,uchar c_column,uchar num,uchar offset){uchar c1,c2,c3;for(c1=0;c1<num;c1++){  for(c2=0;c2<2;c2++)     {     for(c3=0;c3<16;c3++)       {         send_cmd(lcdpage+c_page+c2);         send_cmd(lcdcolumn+c_column+c1*16+c3);         send_data(table_hz[(c1+offset)*32+c2*16+c3]);                         }                 }         } }void display(void){  select(1);  display_zf(0,40,3,0);        display_hz(2,0,4,0);        display_hz(4,32,2,8);        delayus10();        select(2);  display_zf(0,0,4,3);        display_hz(2,0,4,4);        display_hz(4,0,2,10);}

}538UB4TVJ%EHZE@ZCCRS$A.png (80.16 KB, 下載次數(shù): 27)

}538UB4TVJ%EHZE@ZCCRS$A.png
回復(fù)

使用道具 舉報(bào)

板凳
ID:61140 發(fā)表于 2023-12-17 23:13 | 只看該作者
仿真中不需要判忙,因?yàn)樵诜抡嬷性际抢硐霠顟B(tài)。只在實(shí)際應(yīng)用中才判忙。
把判忙去掉應(yīng)該就可以了。
回復(fù)

使用道具 舉報(bào)

地板
ID:1070075 發(fā)表于 2023-12-31 15:34 | 只看該作者
xiaoyuxinke 發(fā)表于 2023-12-17 23:13
仿真中不需要判忙,因?yàn)樵诜抡嬷性际抢硐霠顟B(tài)。只在實(shí)際應(yīng)用中才判忙。
把判忙去掉應(yīng)該就可以了。

好的,謝謝。我找到原因是,就是main寫(xiě)成了mian.
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表