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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11820|回復: 7
收起左側(cè)

51單片機驅(qū)動320X240液晶屏(RA8803)源程序-多圖

  [復制鏈接]
ID:72705 發(fā)表于 2015-1-24 14:25 | 顯示全部樓層 |閱讀模式
今天完成了320X240液晶屏的測試,先上個效果圖,然后上程序。
這是我的測試環(huán)境:


這個是圖形模式:

再上個文字模式:

350大洋呀,在單色屏里這是我玩的最貴的屏了.
        我把程序放到另一個文章中吧,因為比較多。一個主文件,一個頭文件,大家用的時候看一下,不要復雜然后不能用,再來罵我。
        用這個屏比較討厭的地方就是,如果程序不對了,調(diào)節(jié)對比度的電位器是沒反應的,不知道別人用過的屏是不是這個樣子的。電位器中間接VO,一端接VOUT,另外一端接地。INT和BUSY腳沒接。來了背光,屏的工作電流在250mA左右,挺大的。

  1. 主程序(RA8803.C):
  2. /****************************************************
  3. 圖片橫向取模
  4. *********************************************************/
  5. #include <reg52.h>
  6. #include <driver.h>

  7. code uchar s1[]={"320X240液晶驅(qū)動"};
  8. code uchar s2[]={"-- RA8803控制器 Crasyboye"};
  9. code uchar s3[]={"RA8803是一款雙圖層文字/圖形LCD控制器,"
  10.                  "支持320X240,擴展模式可支持640X240和320X480。"
  11.                  "RA8803支持屏幕水平卷動及垂直卷動"
  12.                  "支持512Byte sRAM可自行造字等等"};
  13. code uchar s4[]={"本驅(qū)動來源于網(wǎng)絡,經(jīng)修參照資料改后顯示穩(wěn)定,"
  14.                  "可以用來測試采用RA8803控制器的液晶屏,"
  15.                  "如轉(zhuǎn)摘請注明出處:"};
  16. code uchar s5[]={"http*//hi*baidu*com*crasyboye"};
  17. /***************************************************
  18. 函數(shù):void display_NET()
  19. 功能:網(wǎng)點的顯示,大小四種網(wǎng)點
  20. ****************************************************/
  21. void display_NET(uchar s,uchar n)
  22. {
  23. lcd_cmdwrite(0x00,0xc5); //圖形顯示模式
  24. lcd_cursorxy(0,0);

  25. for(i=0;i<240;i++) //行畫點控制
  26. {
  27. for(j=0;j<40;j++)   //同時進行8列
  28. {
  29.       if(n==1)lcd_datawrite(s);
  30.       if(n==2) lcd_datawrite(s);
  31.       if(n==4)lcd_datawrite(s);
  32.    if(n==8)
  33.      if(j%2)lcd_datawrite(s);
  34.     else lcd_datawrite(~s);
  35. }
  36.    if(n==1) s=~s;
  37.    if(n==2) if((i)%2) s=~s;
  38.    if(n==4) if((i+1)%4==0) s=~s;
  39.    if(n==8) if((i+1)%8==0) s=~s;

  40. }
  41. }
  42. /*************************************************
  43.             主程序
  44. ***************************************************/
  45. void main(void)
  46. {
  47. delay(10);
  48. lcd_Initial();
  49. while(1)
  50.    {

  51.     lcd_clear();
  52.     display_NET(0x0f,4);
  53.     DelayKey(1,4);

  54. lcd_clear();
  55.     display_NET(0x00,8);
  56.     DelayKey(1,4);

  57. lcd_clear();
  58.     lcd_clear();
  59.     lcd_cursorxy(5,10);
  60.     display_Bstring(s1);

  61.     lcd_cursorxy(7,50);
  62.     display_string(s2);

  63.     lcd_cursorxy(4,74);
  64.     display_string(s3);
  65.     lcd_cursorxy(4,145);
  66.     display_string(s4);
  67.    lcd_cursorxy(4,200);
  68.     display_string(s5);
  69. DelayKey(1,4);
  70.    }  
  71. }

  72.      頭文件(driver.h):
  73. #ifndef _driver_h
  74. #define _driver_h
  75. #define uchar unsigned char
  76. #define uint unsigned int

  77. #define x 320
  78. #define y 240
  79. #define xy (x/8)*y

  80. sbit lcd_RS=     P3^1; //A0
  81. sbit lcd_WR=     P3^4;
  82. sbit lcd_RD=     P3^3;
  83. sbit lcd_CS=     P3^2 ; //CE27
  84. sbit lcd_RES=    P3^0;
  85. #define lcd_data    P0
  86. sbit key=       P3^4;    //用來定住顯示的

  87. uint i,j;
  88. void melay(unsigned int MS)
  89. {
  90. unsigned char us,usn;
  91. while(MS!=0)
  92. {
  93.    usn = 2; //for 12M
  94.    while(usn!=0)
  95.    {
  96.     us=0xf6;
  97.     while (us!=0){us--;};
  98.     usn--;
  99.    }
  100.    MS--;
  101. }
  102. }

  103. void DelayKey(unsigned int Second , unsigned int MS100)
  104. {       //輸入精確到0.1S,是用,
  105. unsigned int i;
  106. for(i=0;i<Second*100+MS100;i++)
  107. {
  108.    if(key==0)
  109.    {
  110.     melay(20);
  111.     while(key==0) melay(100);
  112.     break;
  113.    }
  114.    else melay(50);
  115. }   
  116. }
  117. /**********************************************
  118. 函數(shù):void delay(uint t)
  119. 功能:延時微秒的設定
  120. **************************************************/
  121. void delay(uint t)
  122. {
  123. while(t--);
  124. }
  125. /**************************************************
  126. 函數(shù):void lcd_cmdwrite (uchar cmdx , uchar cmdy)
  127. 功能:在指定的寄存器寫下命令
  128. ********************************************************/
  129. void lcd_cmdwrite (uchar cmdx , uchar cmdy)
  130. {
  131. lcd_data=cmdx;
  132. lcd_CS=0;
  133. lcd_RD=1;
  134. lcd_RS=0;   
  135. lcd_WR=0;
  136. lcd_WR=1;   
  137. lcd_RS=1;
  138. lcd_CS=1;
  139.    
  140. lcd_data=cmdy;
  141. lcd_CS=0;
  142. lcd_RD=1;
  143. lcd_RS=0;   
  144. lcd_WR=0;
  145. lcd_WR=1;
  146. lcd_RS=1;
  147. lcd_CS=1;
  148. }
  149. /*************************************************
  150. 函數(shù):void lcd_datawrite(unsigned char datax)
  151. 功能:寫下顯示的數(shù)據(jù)
  152. *****************************************************/
  153. void lcd_datawrite(unsigned char datax)
  154. {
  155.     lcd_data=datax;
  156. lcd_CS=0;
  157. lcd_RD=1;
  158. lcd_RS=1;
  159. lcd_WR=0;
  160. lcd_WR=1;
  161. lcd_RS=0;
  162. lcd_CS=1;
  163. }
  164. /****************************************************
  165. 函數(shù):uchar lcd_cmdread(unsigned char cmdx)
  166. 功能:讀回一個值
  167. *********************************************************/
  168. uchar lcd_cmdread(uchar cmdx)
  169. {
  170.     uchar address_cmd;
  171. lcd_data=cmdx;
  172. lcd_CS=0;
  173. lcd_RD=1;
  174. lcd_RS=0;
  175. lcd_WR=0;
  176. lcd_WR=1;  
  177. lcd_RS=1;
  178. lcd_CS=1;

  179. lcd_data=0xff;
  180. lcd_CS=0;
  181. lcd_WR=1;
  182. lcd_RS=0;  
  183. lcd_RD=0;
  184. address_cmd=lcd_data;
  185. lcd_RD=1;
  186. lcd_RS=1;
  187. lcd_CS=1;
  188. return(address_cmd);
  189. }
  190. /******************************************************
  191. 函數(shù):void lcd_Initial(void)
  192. 功能:初始化好多寄存器
  193. **********************************************************/
  194. void lcd_Initial(void)
  195. {
  196. lcd_cmdwrite(0x00,0xcd);   //WLCR 正常模式;文字模式;屏幕開啟;不閃爍;不反白;
  197. lcd_cmdwrite(0x01,0x03);   //MISC 系統(tǒng)頻率選擇:8M
  198. lcd_cmdwrite(0x02,0x10);   //APSR  
  199. lcd_cmdwrite(0x03,0x80);   //ADSR 平移方向動控制
  200. lcd_cmdwrite(0x10,0x6b);   //WCCR 正常顯示,不加粗

  201. lcd_cmdwrite(0x12,0xb3);   //MAMR   

  202. lcd_cmdwrite(0x20,0x27);   //AWRR  
  203. lcd_cmdwrite(0x30,0xef);   //AWBR  
  204. lcd_cmdwrite(0x40,0x00);   //AWLR  
  205. lcd_cmdwrite(0x50,0x00);   //AWTR  

  206. lcd_cmdwrite(0x21,0x27);   //DWRR  
  207. lcd_cmdwrite(0x31,0xef);   //DWBR  
  208. lcd_cmdwrite(0x41,0x00);   //DWLR
  209. lcd_cmdwrite(0x51,0x00);   //DWTR

  210. lcd_cmdwrite(0x60,0x00);   //CPXR
  211. lcd_cmdwrite(0x61,0x00);   //BGSG
  212. lcd_cmdwrite(0x70,0x00);   //CPYR
  213. lcd_cmdwrite(0x71,0x00);   //BGCM
  214. lcd_cmdwrite(0x72,0xef);   //EDCM      
  215. lcd_cmdwrite(0x90,0x09);   //SCCR  
  216. lcd_cmdwrite(0xc0,0xc8);   //TPCR  
  217. lcd_cmdwrite(0xc1,0x3a);   //TPSR  
  218. lcd_cmdwrite(0xc8,0x80);   //TPXR
  219. lcd_cmdwrite(0xc9,0x80);   //TPYR
  220. lcd_cmdwrite(0xca,0x00);   //TPZR
  221. lcd_cmdwrite(0xd0,0x0f);   //LCCR  
  222. lcd_cmdwrite(0xe0,0x00);   //PNTR
  223. lcd_cmdwrite(0xf0,0xa0);   //FNCR  
  224. lcd_cmdwrite(0xf1,0x0f);   //FVHT      字體不放大
  225. }

  226. /*****************************************************
  227. 函數(shù):void lcd_clear()
  228. 功能:清除內(nèi)存
  229. ********************************************************/
  230. void lcd_clear()
  231. {
  232. uchar reg;
  233. lcd_cmdwrite(0xe0,0x00);
  234. reg = lcd_cmdread(0xf0);
  235.     reg &=0xf7;
  236. reg |=0x08;
  237. lcd_cmdwrite(0xf0,reg);
  238.     delay(300);
  239. }
  240. /******************************************************
  241. 函數(shù):void lcd_cursorxy(unsigned int xn,unsigned int yn)
  242. 功能:設定要顯示數(shù)據(jù)的地址
  243. **********************************************************/
  244. void lcd_cursorxy(uint xn,uint yn)
  245. {
  246. lcd_cmdwrite(0x60,xn);
  247. lcd_cmdwrite(0x70,yn);
  248. }
  249. /***********************************************
  250. 函數(shù):void lcd_showbig(uchar *text,uint xn)
  251. 功能:顯示字符,漢字
  252. ******************************************************/
  253. void display_string(uchar *text)
  254. {
  255.     lcd_cmdwrite(0x00,0xcd);
  256. lcd_cmdwrite(0xf1,0x0f); //不放大
  257.     while(*text != '\0')         
  258. {
  259.     lcd_datawrite(*text);
  260.     ++text;
  261.     }
  262. }

  263. void display_Bstring(uchar *text)
  264. {
  265.     lcd_cmdwrite(0x00,0xcd);
  266. lcd_cmdwrite(0xf1,0x5f); //放大一倍
  267.     while(*text != '\0')         
  268. {
  269.     lcd_datawrite(*text);
  270.     ++text;
  271.     }
  272. }
  273. /***********************************************
  274. 函數(shù):void display_img(uchar code *p)
  275. 功能:顯示一幅320*240的完美圖片,但分正顯和反顯
  276.       顯示,我用的S52,放不下了。
  277. ***********************************************
  278. void display_img(uchar code *p,bit c)
  279. {
  280. lcd_cmdwrite(0x00,0xc5);         
  281. lcd_cursorxy(0,0);
  282. for(i=0;i<xy;i++)
  283.      {
  284.       if(c)lcd_datawrite(p[i]);     //320*240
  285.       else lcd_datawrite(~p[i]);
  286.      }
  287. }
  288. */
  289. #endif
  290.                
復制代碼




回復

使用道具 舉報

ID:89971 發(fā)表于 2015-9-12 20:26 | 顯示全部樓層
樓主你好!.#include <driver.h>里的程序怎么沒放上來
回復

使用道具 舉報

ID:84147 發(fā)表于 2015-11-11 14:33 | 顯示全部樓層
你這個屏幕是帶字庫的嗎,控制器是集成在上面的嗎
回復

使用道具 舉報

ID:104638 發(fā)表于 2017-8-11 11:01 | 顯示全部樓層
我用這個不能用,不知為什么,管配重新配置了的
回復

使用道具 舉報

ID:245473 發(fā)表于 2018-10-16 19:04 | 顯示全部樓層
好,樓下無私
回復

使用道具 舉報

ID:314908 發(fā)表于 2020-3-31 21:19 | 顯示全部樓層
謝謝分享,我把程序燒錄到51后,從驅(qū)字開始顯示亂碼,后在網(wǎng)上提問,說是Keil軟件本身的一個“BUG”,keil編譯器會忽略0xFD值的字符串,就是要打一個關(guān)于oxfd的補丁,用12864的也是這個問題,打了補丁后顯示正常。
回復

使用道具 舉報

ID:860649 發(fā)表于 2020-12-15 16:00 | 顯示全部樓層
RA8803要停產(chǎn),要改用RA8806了
回復

使用道具 舉報

ID:157849 發(fā)表于 2020-12-18 13:08 | 顯示全部樓層
調(diào)節(jié)對比度的電位器,中間接VO,一端接VOUT,另外一端不是接地,而是要接電源(5V)
這樣才能調(diào)節(jié)對比度.
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费午夜电影 | 欧美国产精品一区二区三区 | 中文字幕国产视频 | 欧美一级片在线播放 | 婷婷免费视频 | 亚洲一区二区三区在线播放 | 亚洲精品中文在线观看 | 国产精品视频播放 | 日韩欧美在线观看 | 色一情一乱一伦一区二区三区 | 婷婷色成人 | 黄色精品| 日韩不卡在线观看 | 中文字幕男人的天堂 | 免费一区在线观看 | 91麻豆精品国产91久久久更新资源速度超快 | 国产精品一二区 | 久久高清 | 天天射美女 | 中文字幕在线第一页 | 91美女视频| 正在播放国产精品 | 欧美精品一区二区三区视频 | 国产japanhdxxxx麻豆 | 99久久精品一区二区毛片吞精 | 欧美性猛交一区二区三区精品 | 久久久www成人免费无遮挡大片 | 日干夜操 | 欧美精品99 | 福利国产 | 在线看亚洲 | 成年人在线观看视频 | 色综久久 | caoporn国产精品免费公开 | 亚洲福利免费 | 亚洲成人高清 | 亚洲成人一区二区三区 | 午夜三区| 一级黄色片免费在线观看 | 国产高清视频在线观看播放 | 中文字幕专区 |