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

QQ登錄

只需一步,快速開始

搜索
查看: 7193|回復(fù): 11
收起左側(cè)

12864液晶(ST7920)串并實(shí)現(xiàn)各種類型源程序,注釋很詳細(xì)

  [復(fù)制鏈接]
ID:389337 發(fā)表于 2018-8-24 16:44 | 顯示全部樓層 |閱讀模式
12864實(shí)用各種串并類型
0.png

注釋非常詳細(xì)單片機(jī)驅(qū)動(dòng)的12864源程序如下:
  1. #include<reg52.h>
  2. #include<12864.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int  
  5. uchar dis[110];  
  6. uchar a;  
  7. void delay1ms(uint xms)
  8. {   
  9.   unsigned int i,j;  
  10.   for(i=xms;i>0;i--)    /*或for(i=xms;i<0;i++)*/
  11.      for(j=110;j>0;j--); /*for(j=110;j<0;j++); 總循環(huán)數(shù)=xms*110*/
  12. }   
  13. void uart_int(void)
  14. {   
  15.   SCON=0x50;   // SCON=0x50是SM1=1和REN=1,設(shè)置串口方式1且允許串口接收。
  16.              //一般配合TMOD=0x20作串口中斷程序初始化。     
  17.   PCON=0x00;   //         是設(shè)置波特率不加倍(0x80加倍)
  18.   TMOD=0x20;   //         是設(shè)置波特率發(fā)生器為定時(shí)器2為8位自動(dòng)重裝載模式
  19.   TH1 =0xFD;   
  20.   TL1 =0xFD;   /*SMOD是特殊功能寄存器PCON的第7位,可以控制波特率的,SMOD=1時(shí)串口通訊的波特率倍增,   為0時(shí)波特率不倍增。
  21.                SMOD=0時(shí):參數(shù)=256-fsoc/12/32/波特率;      SMOD=1時(shí):參數(shù)=256-fsoc/12/16/波特率:
  22.                12M晶振或11.0592M晶振的情況下,當(dāng)SMOD=0時(shí),9600波特率的參數(shù)是0xfd,當(dāng)SMOD=1時(shí),9600波特率的參數(shù)是0xfa。
  23.                            一個(gè)機(jī)器周期=12個(gè)時(shí)鐘周期
  24.                            系統(tǒng)時(shí)鐘進(jìn)入串行波特率發(fā)生模塊后,會(huì)進(jìn)行32分頻 ,
  25.                            如果你通過寄存器設(shè)置波特率倍增的話,這個(gè)32分頻就會(huì)改為16分頻。
  26.                            分頻:主要是為了在內(nèi)核頻率與串口波特率之間找一個(gè)平衡,同時(shí)傳統(tǒng)51也要設(shè)法降低時(shí)鐘樹上外設(shè)部分的工作頻率、才能控制住功耗。*/

  27.   TR1 =1;      //         是開啟定時(shí)器1
  28.   EA=1;              // 是開啟總中斷。
  29.   ES=1;             //是開啟串口中斷;
  30. }   

  31. void display(unsigned char *p)//顯示
  32. {   
  33.    while(*p!='\0')  /*'\0'是空格,一般是字符串的結(jié)束標(biāo)志,指針變量不等于‘/0’不會(huì)跳出循環(huán)*/
  34.   {   
  35.     write_dat(*p++);   /*調(diào)用函數(shù):寫顯示數(shù)據(jù)到LCD,將數(shù)組中的所有字符一個(gè)個(gè)地顯示在液晶屏幕上*/   
  36.     delay1ms(1);  
  37.   }
  38. }  


  39.    void serve()  interrupt 4   
  40. {      
  41.    dis[a++]=SBUF; /*單片機(jī)自動(dòng)將串行數(shù)據(jù)接收緩沖器中的數(shù)據(jù)取走給table[n]*/     
  42.    RI=0;   /*RI字面是接收中斷的意思,是串口接收中斷標(biāo)志,當(dāng)RI=1時(shí)表示串口接收完成,
  43.           SBUF中保存好了接收的數(shù)據(jù),此時(shí)申請(qǐng)中斷,如果ES=1,就進(jìn)入中斷服務(wù)程序了。*/            
  44. }
  45. void main()
  46. {         
  47.    uart_int();  /*調(diào)用中斷初始化函數(shù)*/  
  48.    lcd_init();   /*調(diào)用leo初始化函數(shù)*/

  49.    while(1)  
  50.    {      
  51.    write_cmd(0x98);
  52.         write_cmd(0x90);        /*寫指令到第二行地址:串行數(shù)據(jù)顯示的位置*/
  53.             write_cmd(0x88);
  54.                             write_cmd(0x80);
  55.    display(dis);   /*調(diào)用dispiay函數(shù):將table的數(shù)組中輸入的所有字符一個(gè)個(gè)地顯示在液晶屏幕上*/
  56.    }
  57. }   
復(fù)制代碼

所有資料51hei提供下載:
12864液晶各種實(shí)現(xiàn)類型.zip (147.25 KB, 下載次數(shù): 339)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:451441 發(fā)表于 2018-12-24 17:14 | 顯示全部樓層
謝謝分享,自學(xué)中正好卡在12864和proteus關(guān)于12864的仿真,LZ的資料幫助很大
回復(fù)

使用道具 舉報(bào)

ID:601736 發(fā)表于 2019-8-19 20:37 | 顯示全部樓層
好資料,先mark了
回復(fù)

使用道具 舉報(bào)

ID:697530 發(fā)表于 2020-2-24 17:07 | 顯示全部樓層
好資料,正是我要找的
回復(fù)

使用道具 舉報(bào)

ID:664122 發(fā)表于 2020-3-1 19:08 | 顯示全部樓層
現(xiàn)在卡在顯示溫度上了,急需大神在線指導(dǎo)
回復(fù)

使用道具 舉報(bào)

ID:702234 發(fā)表于 2020-3-7 21:50 | 顯示全部樓層
還是小hei論壇靠譜,找好久了終于找到想要的資料了
回復(fù)

使用道具 舉報(bào)

ID:163501 發(fā)表于 2020-3-8 13:14 | 顯示全部樓層
下來看盾,不知好不好用。
回復(fù)

使用道具 舉報(bào)

ID:292102 發(fā)表于 2020-4-17 14:03 | 顯示全部樓層
想仿真串行方式
回復(fù)

使用道具 舉報(bào)

ID:292102 發(fā)表于 2020-4-17 14:04 | 顯示全部樓層
之前都沒成功,試試這個(gè)~
回復(fù)

使用道具 舉報(bào)

ID:229137 發(fā)表于 2025-1-13 15:20 | 顯示全部樓層
16032的不知道能不能用
回復(fù)

使用道具 舉報(bào)

ID:295726 發(fā)表于 2025-1-13 16:20 | 顯示全部樓層
還不錯(cuò)。就是看不懂。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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