找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1704|回复: 0
打印 上一主题 下一主题
收起左侧

CH14432B-ST7920 并口源程序

[复制链接]
跳转到指定楼层
楼主
  1.                                                          
  2. /*$$$$$$$$$$$$$$$$$

  3. Module            :        CH12864B/D               
  4. InterfaCS   :   6800  8 BIT Bus
  5. soft        :   KeilC51 Ver7.0
  6. Control IC  :   ST7920  
  7. ------------------------------------------------------------------
  8. Note:
  9. 1.Parallel bus drive programme.

  10. 2.Default Crystal 12.000Mhz.

  11. 3.This is a new program.

  12. &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/

  13. #include <reg52.h>
  14. #include <intrins.h>
  15. #include "int/tupian.c"

  16. #define uchar unsigned char
  17. #define uint  unsigned int


  18. sbit RS  =P2^3;
  19. sbit RW  =P2^4;
  20. sbit E   =P2^5;
  21. sbit REST =P0^1;
  22. sbit LED = P0^6;


  23. #define lcd_data P1



  24. //================================================================


  25. void DELAY_CLS(void);
  26. void delay_ms(uint ms_value);
  27. void delay_us(uchar us_value);
  28. void wr_data(uchar wdata);
  29. void wr_cmd(uchar cmd);       
  30. void LCD_CLS(void);
  31. void wr_cmd_data( uchar cmd,uchar dat1,uchar dat2);
  32. void gotoxy(uint row, uint col);
  33. void SendStr(uchar code *ptString);
  34. void SendStr1(uchar code *ptString);


  35. void init_lcd(void);
  36. void disp_Graphic();
  37. void disp_fangkuang(void );
  38. void  testshow(uchar fst, uchar snd);
  39. void CallBuiltinChar(void);


  40. //----------------------------------------------------------------

  41. void delay_us(uchar us_value)        //delay about 1 us
  42. {
  43.         while(us_value--)
  44.         {
  45.                 _nop_();
  46.                 _nop_();
  47.         }
  48. }

  49. //----------------------------------------------------------------

  50. void delay_ms(uint ms_value)        //delay about 1 ms
  51. {
  52.         uint k;

  53.         for(k=0;k<ms_value;k++)
  54.         {
  55.                 delay_us(200);
  56.         }
  57. }


  58. //----------------------------------------------------------------

  59. void wr_cmd(uchar cmd)
  60. {
  61.        
  62.         lcd_data = 0xff;        // Set the port as Output       
  63.                 RS = 0;               
  64.                 RW = 0;
  65.                 E = 1;
  66.                 lcd_data = cmd;
  67.         delay_us(10);    //此处必需延时
  68.                 E = 0;
  69.                 RW = 1;
  70.         delay_us(10);   //此处必需延时
  71.         //        lcd_data = 0xFF;
  72. }

  73. //----------------------------------------------------------------

  74. void wr_data(uchar wdata)
  75. {

  76.        lcd_data = 0xFF;        // Set the port as Output
  77.        
  78.                 RS = 1;               
  79.                 RW = 0;
  80.                 E = 1;
  81.                 lcd_data = wdata;
  82.         delay_us(10);     //此处必需延时
  83.                 E = 0;
  84.                 RW = 1;
  85.         delay_us(10);     //此处必需延时
  86.         //        lcd_data = 0xFF;
  87. }


  88. //----------------------------------------------------------------

  89. void DELAY_CLS()

  90. {
  91.            delay_ms(100);
  92.     LCD_CLS();

  93. }

  94. //----------------------------------------------------------------

  95. void LCD_CLS()
  96. {
  97.   wr_cmd(0x30);    // 8-bit interface, Extended instruction
  98.         wr_cmd(0x01);
  99.         delay_ms(5);
  100. }

  101. //----------------------------------------------------------------

  102. void SendStr(uchar code *ptString)
  103. {
  104.         while((*ptString)!='\0')
  105.         {
  106.                 wr_data(*ptString++);
  107.         }
  108. }

  109. //----------------------------------------------------------------

  110. void SendStr1(uchar code *ptString)
  111. {
  112.         while((*ptString)!='\0')
  113.         {
  114.                 wr_data( *ptString++);
  115.         delay_ms(30);
  116.         }
  117. }


  118. //----------------------------------------------------------------

  119. void init_lcd(void)
  120. {
  121.     //delay_ms(40);
  122.         wr_cmd(0x30);           //设定为8位控制,基本指令起动

  123.     wr_cmd(0x34);            //设定为8位控制,扩充指令起动
  124.       
  125.         wr_cmd(0x0c);            // 显示打开

  126.         LCD_CLS();                //清屏
  127.           
  128.         wr_cmd(0x06);                  // 设定AC加1           
  129. }

  130. //----------------------------------------------------------------

  131. void gotoxy(uint row, uint col)
  132. {
  133.     switch(row)
  134.     {
  135.         case 1: wr_cmd(0x80+col);break;
  136.         case 2: wr_cmd(0x90+col);break;
  137.         case 3: wr_cmd(0x88+col);break;
  138.         case 4: wr_cmd(0x98+col);break;
  139.     }
  140. }

  141. //----------------------------------------------------------------

  142. //----------------------------------------------------------------

  143. void  testshow(uchar fst, uchar snd)
  144. {
  145.   uchar x,y,i,k;
  146.    
  147.    for(i=0;i<10;i+=8)            //当i=0时显示上面128×32,当i=8时显示下面12*3
  148.       for(y=0;y<32;y++)
  149.       {     if((y%2)==1)
  150.                k=fst;
  151.             else
  152.                k=snd;
  153.             for(x=0;x<10;x++)
  154.             {
  155.                wr_cmd(0x36);     //扩充指令 绘图显示
  156.                wr_cmd(y+0x80);    //行地址
  157.                wr_cmd(x+0x80+i);    //列地址            
  158.                wr_data(k);
  159.                wr_data(k);
  160.       wr_cmd(0x30);               //扩充指令 绘图关闭  
  161.             }
  162.        }   
  163. }  
  164. /////////////---------------显示方框-----------------------
  165. void disp_kuang()
  166. {
  167.   uchar i,j;
  168.   wr_cmd(0x36);     //扩充指令打开
  169.     for(i=0;i<1;i++)
  170.    {
  171.     wr_cmd(0x80);    //行地址
  172.     wr_cmd(0x80+i);    //列地址            
  173.     wr_data(0xff);
  174.     wr_data(0xff);
  175.    }
  176.       for(j=1;j<16;j++)
  177.    {
  178.      for(i=0;i<9;i++)
  179.       {
  180.        wr_cmd(0x80+j);    //行地址
  181.        wr_cmd(0x80+i);    //列地址
  182.            if(i==0) {wr_data(0x80);wr_data(0x00); }         
  183.               if(i==8) {wr_data(0x00);wr_data(0x01); }
  184.            else  {wr_data(0x00);wr_data(0x00); }
  185.        }
  186.    }   //第一排完

  187.         for(j=0;j<15;j++)
  188.    {
  189.      for(i=0;i<9;i++)
  190.       {
  191.        wr_cmd(0x90+j);    //行地址
  192.        wr_cmd(0x90+i);    //列地址
  193.            if(i==0) {wr_data(0x80);wr_data(0x00); }         
  194.               if(i==8) {wr_data(0x00);wr_data(0x01); }
  195.            else  {wr_data(0x00);wr_data(0x00); }
  196.        }
  197.    }   
  198.          for(i=0;i<1;i++)
  199.    {
  200.     wr_cmd(0x9f);    //行地址
  201.     wr_cmd(0x90+i);    //列地址            
  202.     wr_data(0xff);
  203.     wr_data(0xff);
  204.    }         //第二排完

  205.   wr_cmd(0x30);               //扩充指令 绘图关闭  
  206. }

  207.    
  208.    


  209. //-------------------------------------------------
  210. // ^_^      功 能 说 明: 显示128*64取模图片     ^_^ 数据扫描方向:水平扫描
  211. //-------------------------------------------------
  212. void display_pic(uchar *pic)
  213. {

  214.   uchar x,y,i,j=0;
  215.    
  216.    for(i=0;i<9;i+=8)   
  217.       for(y=0;y<32;y++)
  218.       {   
  219.             for(x=0;x<8;x++)
  220.             {
  221.                wr_cmd(0x36);     //扩充指令 绘图显示打开
  222.                wr_cmd(y+0x80);    //行地址
  223.                wr_cmd(x+0x80+i);    //列地址           
  224.                wr_data(*pic++);
  225.                wr_data(*pic++);   
  226.             }
  227.        }   
  228. }


  229. // Call built-in Charactors
  230. void CallBuiltinChar(void)
  231. {
  232.         uint i,j;
  233.         // 0xA140 ~ 0xA15F
  234.         gotoxy(2,0);
  235.         for (i = 0; i < 32; i++)
  236.         {
  237.                 wr_data(0xA1);
  238.                 wr_data(0x40 + i);
  239.         }
  240.            gotoxy(3,0);
  241.         for (j = 0; j < 16; j++)
  242.         {
  243.                 wr_data(0xA2);
  244.                 wr_data(0x45 + j);
  245.         }
  246. }

  247. //================================================================

  248. void main()
  249. {
  250.     uint i;
  251.     delay_ms(100);
  252.     REST=0;
  253.     delay_ms(200);
  254.           REST=1;
  255.    
  256.         init_lcd();

  257.         while(1)
  258. {
  259.    LED = 0;
  260.    delay_ms(500);
  261.    LED = 1;
  262.    delay_ms(500);
  263.     LED = 0;
  264.      DELAY_CLS();

  265.           


  266.          display_pic(b);
  267.       delay_ms(3500);
  268.    DELAY_CLS();

  269.    testshow(0xaa,0x55);   //雪花
  270.    delay_ms(3500);
  271.    DELAY_CLS();
  272. //
  273. testshow(0xff,0xff);   //全显
  274. delay_ms(2000);
  275.    DELAY_CLS();



  276. //testshow(0x00,0x00);   //空白
  277. // delay_ms(4500);
  278. // DELAY_CLS();
  279. //testshow(0xff,0x00);   //横显
  280. // delay_ms(2500);
  281. //   DELAY_CLS();
  282. //testshow(0x00,0xff);  //横显
  283. // delay_ms(2500);
  284. //   DELAY_CLS();
  285. //testshow(0x55,0x55);   //竖显
  286. // delay_ms(2500);
  287. //   DELAY_CLS();
  288. //testshow(0xAA,0xAA);   //竖显
  289. // delay_ms(2500);
  290. //   DELAY_CLS();
  291. //testshow(0xaa,0x55);   //雪花
  292. // delay_ms(2500);
  293. //DELAY_CLS();


  294.         gotoxy(1,0);
  295.     SendStr("航航航航航航航航航");
  296.         gotoxy(2,0);
  297.     SendStr("显显显显显显显显显");
  298.    delay_ms(4500);
  299.     DELAY_CLS();  

  300.     disp_kuang();
  301.         delay_ms(4500);
  302.     DELAY_CLS();

  303.         gotoxy(1,0);
  304.         wr_data(0xd2);
  305.     wr_data(0xbc);/*壹D2BC*/
  306.             wr_data(0xd2);
  307.     wr_data(0xbc);/*壹D2BC*/
  308.                 wr_data(0xd2);
  309.     wr_data(0xbc);/*壹D2BC*/
  310.                 wr_data(0xd2);
  311.     wr_data(0xbc);/*壹D2BC*/
  312.             wr_data(0xd2);
  313.     wr_data(0xbc);/*壹D2BC*/
  314.                 wr_data(0xd2);
  315.     wr_data(0xbc);/*壹D2BC*/
  316.                 wr_data(0xd2);
  317.     wr_data(0xbc);/*壹D2BC*/
  318.                         wr_data(0xd2);
  319.     wr_data(0xbc);/*壹D2BC*/
  320.                                 wr_data(0xd2);
  321.     wr_data(0xbc);/*壹D2BC*/
  322.         gotoxy(2,0);
  323.                 wr_data(0xd2);
  324.     wr_data(0xbc);/*壹D2BC*/
  325.             wr_data(0xd2);
  326.     wr_data(0xbc);/*壹D2BC*/
  327.                 wr_data(0xd2);
  328.     wr_data(0xbc);/*壹D2BC*/
  329.                 wr_data(0xd2);
  330.     wr_data(0xbc);/*壹D2BC*/
  331.             wr_data(0xd2);
  332.     wr_data(0xbc);/*壹D2BC*/
  333.                 wr_data(0xd2);
  334.     wr_data(0xbc);/*壹D2BC*/
  335.                 wr_data(0xd2);
  336.     wr_data(0xbc);/*壹D2BC*/
  337.                         wr_data(0xd2);
  338.     wr_data(0xbc);/*壹D2BC*/
  339.                                 wr_data(0xd2);
  340.     wr_data(0xbc);/*壹D2BC*/
  341.         delay_ms(4500);
  342.     DELAY_CLS();

  343.        
  344.         gotoxy(1,0);
  345.         for(i=0;i<18;i++)
  346.         {  
  347.     wr_data(0x30+i);
  348.         }
  349.         gotoxy(2,0);
  350.         for(i=0;i<18;i++)
  351.         {  
  352.     wr_data(0x41+i);
  353.         }
  354.         delay_ms(4500);
  355.     DELAY_CLS();

  356.    
  357. }

  358. }
复制代码


全部代码51hei下载地址:
CH14432B-ST7920-并口接线图.zip (61.04 KB, 下载次数: 15)

评分

参与人数 1黑币 +20 收起 理由
admin + 20 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表