[DemoCode下载] 分享一个QC12864B液晶屏的测试程序

[复制链接]
2560|29
 楼主| gaoyang9992006 发表于 2020-2-2 16:20 | 显示全部楼层 |阅读模式
游客,如果您要查看本帖隐藏内容请回复

完整资料和代码回复可见。
  1. /********************************************************************
  2. * 文件名  : QC12864B测试程序.c
  3. * 描述    :  
  4. * 创建人  :
  5. * 版本号  : 1.0
  6. ***********************************************************************/
  7. #include <reg52.h>
  8. #include <string.h>

  9. #define uchar unsigned char
  10. #define uint  unsigned int

  11. uchar code IC_DAT[];
  12. uchar code pic1[];
  13. uchar code pic2[];
  14. uchar code pic3[];
  15. //1~VSS:GND;2,3~VDD;19~VCC:A,20~GND:K
  16. sbit RST = P2^4;     //  17~RST
  17. sbit RS  = P2^5;     //  4
  18. sbit RW = P2^6;     //  5~R/W
  19. sbit E   = P2^7;     //  6~E
  20. sbit PSB = P2^2;     //  15~PSB
  21. #define DATA_BUS P0  //7~14:DBx

  22. void TransferData(char data1,bit DI);
  23. void display(void);
  24. void display_grapic(void);
  25. void delayms(uint n);
  26. void DisplayLine(uchar line1,uchar line2);
  27. void DisplayGraphic(uchar code *adder);
  28. void delay(uint m);
  29. void lcd_mesg(uchar code *adder1);

  30. uchar code IC_DAT[]={
  31. "     AT89S52    "  
  32. "                "
  33. "   80C51单片机  "
  34. "    入门实验    "
  35. };

  36. uchar code IC_DAT2[]={
  37. "  归来无所利,  "                        //0x80
  38. "  黄犬却有情,  "                        //0x90
  39. "  骨肉亦不喜。  "                        //0x88
  40. "  当门卧摇尾。  "                        //0x98
  41. };


  42. void initinal(void)           //LCD字库初始化程序
  43. {
  44.            delay(40);             //大于40MS的延时程序
  45.            PSB=1;                 //设置为8BIT并口工作模式
  46.            delay(1);              //延时
  47.            RST=0;                 //复位
  48.            delay(1);              //延时
  49.            RST=1;                 //复位置高
  50.            delay(10);
  51.            TransferData(0x30,0);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
  52.            delay(100);            //大于100uS的延时程序
  53.            TransferData(0x30,0);  //Function Set
  54.            delay(37);             ////大于37uS的延时程序
  55.            TransferData(0x08,0);  //Display on Control
  56.            delay(100);            //大于100uS的延时程序
  57.            TransferData(0x10,0);  //Cursor Display Control光标设置
  58.            delay(100);            //大于100uS的延时程序
  59.            TransferData(0x0C,0);  //Display Control,D=1,显示开
  60.            delay(100);            //大于100uS的延时程序
  61.            TransferData(0x01,0);  //Display Clear
  62.            delay(10);             //大于10mS的延时程序
  63.            TransferData(0x06,0);  //Enry Mode Set,光标从右向左加1位移动
  64.            delay(100);            //大于100uS的延时程序
  65.           }

  66. /********************************************************************
  67. * 名称 : Main()
  68. * 功能 : 主函数
  69. * 输入 : 无
  70. * 输出 : 无
  71. ***********************************************************************/
  72. void     initina2(void)           //LCD显示图片(扩展)初始化程序
  73.           {
  74.            delay(40);             //大于40MS的延时程序
  75.            PSB=1;                 //设置为8BIT并口工作模式
  76.            delay(1);              //延时
  77.            RST=0;                 //复位
  78.            delay(1);              //延时
  79.            RST=1;                 //复位置高
  80.            delay(10);

  81.            TransferData(0x36,0);  //Extended Function Set RE=1: extended instruction
  82.            delay(100);            //大于100uS的延时程序
  83.            TransferData(0x36,0);  //Extended Function Set:RE=1: extended instruction set
  84.            delay(37);             ////大于37uS的延时程序
  85.            TransferData(0x3E,0);  //EXFUNCTION(DL=8BITS,RE=1,G=1)
  86.            delay(100);            //大于100uS的延时程序
  87.            TransferData(0x01,0);  //CLEAR SCREEN
  88.            delay(100);            //大于100uS的延时程序
  89.           }

  90. /********************************************************************
  91. * 名称 : Main()
  92. * 功能 : 主函数
  93. * 输入 : 无
  94. * 输出 : 无
  95. ***********************************************************************/
  96. void    main(void)
  97.      {
  98.          while(1)
  99.             {
  100.                   initina2();            //调用LCD显示图片(扩展)初始化程序
  101.   
  102.           DisplayGraphic(pic2);  //显示图片2
  103.           delayms(200);                          

  104.           initinal();                    //调用LCD字库初始化程序
  105.           delay(100);            //大于100uS的延时程序
  106.           lcd_mesg(IC_DAT);      //显示中文汉字1
  107.           delayms(240);
  108.           delayms(240);
  109.           
  110.           initinal();                    //调用LCD字库初始化程序
  111.           delay(100);            //大于100uS的延时程序
  112.           lcd_mesg(IC_DAT2);     //显示中文汉字2
  113.           delayms(240);
  114.                   delayms(240);
  115.                   initinal();  
  116.         }
  117.       }

  118. /********************************************************************
  119. * 名称 : Main()
  120. * 功能 : 主函数
  121. * 输入 : 无
  122. * 输出 : 无
  123. ***********************************************************************/
  124. void   lcd_mesg(unsigned char code *adder1)
  125. {
  126.         unsigned char i;
  127.         TransferData(0x80,0);  //Set Graphic Display RAM AddRSTs
  128.         delay(100);
  129.         for(i=0;i<32;i++)
  130.                 {
  131.                           TransferData(*adder1,1);
  132.                            adder1++;
  133.                 }

  134.         TransferData(0x90,0);  //Set Graphic Display RAM AddRSTs
  135.         delay(100);
  136.         for(i=32;i<64;i++)
  137.                 {
  138.                           TransferData(*adder1,1);
  139.                            adder1++;
  140.                 }
  141. }

  142. /********************************************************************
  143. * 名称 : Main()
  144. * 功能 : 主函数
  145. * 输入 : 无
  146. * 输出 : 无
  147. ***********************************************************************/
  148. void    TransferData(char data1,bit DI)  //传送数据或者命令,当DI=0是,传送命令,当DI=1,传送数据.
  149.           {
  150.             RW=0;
  151.             RS=DI;
  152.             delay(1);
  153.             DATA_BUS=data1;
  154.             E=1;
  155.             delay(1);
  156.             E=0;
  157.            }

  158. /********************************************************************
  159. * 名称 : Main()
  160. * 功能 : 主函数
  161. * 输入 : 无
  162. * 输出 : 无
  163. ***********************************************************************/
  164. void    delayms(unsigned int n)            //延时10×n毫秒程序
  165.                    {
  166.                       unsigned int i,j;
  167.                       for(i=0;i<n;i++)
  168.                          for(j=0;j<2000;j++);
  169.                    }

  170. /********************************************************************
  171. * 名称 : Main()
  172. * 功能 : 主函数
  173. * 输入 : 无
  174. * 输出 : 无
  175. ***********************************************************************/
  176. void    delay(unsigned int m)            //延时程序
  177.                    {
  178.                       unsigned int i,j;
  179.                       for(i=0;i<m;i++)
  180.                          for(j=0;j<10;j++);
  181.                    }

  182. /********************************************************************
  183. * 名称 : Main()
  184. * 功能 : 主函数
  185. * 输入 : 无
  186. * 输出 : 无
  187. ***********************************************************************/
  188. void DisplayGraphic(unsigned char code *adder)
  189. {

  190.    int i,j;
  191. //*******显示上半屏内容设置
  192.    for(i=0;i<32;i++)              //
  193.     {
  194.       TransferData((0x80 + i),0); //SET  垂直地址 VERTICAL ADD
  195.       TransferData(0x80,0);       //SET  水平地址 HORIZONTAL ADD
  196.       for(j=0;j<16;j++)
  197.        {
  198.          TransferData(*adder,1);
  199.          adder++;
  200.        }
  201.     }          
  202. //*******显示下半屏内容设置
  203.    for(i=0;i<32;i++)              //
  204.     {
  205.       TransferData((0x80 + i),0); //SET 垂直地址 VERTICAL ADD
  206.       TransferData(0x88,0);       //SET 水平地址 HORIZONTAL ADD
  207.       for(j=0;j<16;j++)
  208.        {
  209.          TransferData(*adder,1);
  210.          adder++;
  211.        }
  212.     }
  213. }



  214. unsigned char code pic2[]=
  215. {
  216. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  217. 0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  218. 0x00,0x00,0x00,0x00,0x3F,0xC1,0xC0,0x00,0x1F,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,
  219. 0x00,0x00,0x00,0x01,0xD8,0x01,0xC0,0x00,0x78,0x07,0xF8,0x00,0x00,0x00,0x00,0x00,
  220. 0x00,0x00,0x00,0x06,0x26,0x07,0x40,0x00,0xE0,0x03,0x9F,0x00,0x00,0x00,0x00,0x00,
  221. 0x00,0x00,0x00,0x0C,0x2A,0x0D,0x00,0x01,0xC0,0x01,0x83,0xC0,0x00,0x00,0x00,0x00,
  222. 0x00,0x00,0x00,0x13,0x3C,0x30,0x00,0x03,0x9C,0x01,0x80,0xF8,0x00,0x78,0x00,0x00,
  223. 0x00,0x00,0x01,0xF4,0x80,0x64,0x00,0x07,0x3C,0x01,0x80,0x1E,0x00,0xFC,0x00,0x00,
  224. 0x00,0x00,0x06,0x2B,0x40,0xD0,0x00,0x06,0x18,0xC3,0x80,0x07,0x81,0x8C,0x00,0x00,
  225. 0x00,0x00,0x01,0xEC,0xC3,0x84,0x88,0x0E,0x01,0xE3,0x80,0x01,0xE3,0x0C,0x00,0x00,
  226. 0x00,0x00,0x00,0x67,0x06,0x3F,0xFC,0x0C,0x01,0xC7,0x00,0x7E,0x7F,0x1C,0x00,0x00,
  227. 0x00,0x00,0x01,0xC0,0x07,0xFC,0x08,0x0C,0x00,0x0E,0x01,0xE3,0x1E,0x18,0x00,0x00,
  228. 0x00,0x00,0x03,0x60,0x00,0x00,0x30,0x0E,0x00,0x1C,0x01,0xF1,0x8F,0xB0,0x3F,0x80,
  229. 0x00,0x00,0x06,0x60,0x00,0x00,0xE0,0x06,0x00,0x38,0x03,0xF1,0x8D,0xF0,0xF9,0x80,
  230. 0x00,0x00,0x03,0xE0,0x00,0x03,0x00,0x07,0x80,0xF0,0x03,0x23,0x80,0xF1,0xC1,0x80,
  231. 0x00,0x00,0x00,0x20,0x00,0x06,0x00,0x03,0xFF,0xC0,0x01,0x87,0x01,0xFB,0x81,0x80,
  232. 0x00,0x00,0x00,0x70,0x00,0x04,0x10,0x03,0xFE,0x00,0x01,0xFE,0x00,0x1E,0x03,0x00,
  233. 0x00,0x00,0x00,0x50,0x00,0x04,0x1C,0x01,0xC0,0x00,0x00,0x00,0x3E,0x0F,0x0E,0x00,
  234. 0x00,0x00,0x00,0x98,0x00,0x06,0x38,0x00,0xE0,0x00,0x00,0x00,0xE7,0x0F,0x9C,0x00,
  235. 0x00,0x00,0x01,0x98,0x00,0x02,0x7C,0x00,0x70,0x00,0x00,0x01,0xF1,0x81,0xF8,0x00,
  236. 0x00,0x00,0x00,0x6C,0x00,0x03,0xC0,0x00,0x38,0x00,0x00,0x01,0xF9,0x83,0xE0,0x00,
  237. 0x00,0x00,0x00,0x04,0x00,0x01,0x83,0x00,0x1E,0x00,0x00,0x01,0xB1,0x81,0xE0,0x00,
  238. 0x00,0x00,0x00,0x0E,0x00,0x00,0xC7,0x80,0x07,0x80,0x00,0x01,0x83,0x80,0x70,0x00,
  239. 0x00,0x00,0x00,0x1B,0x00,0x00,0x7F,0x00,0x01,0xF0,0x00,0x00,0xFE,0x00,0x30,0x00,
  240. 0x00,0x00,0x00,0x0F,0x00,0x01,0xFB,0x00,0x00,0xF8,0x00,0x00,0x10,0x00,0x38,0x00,
  241. 0x00,0x00,0x00,0x01,0x80,0x03,0xF0,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x18,0x00,
  242. 0x00,0x00,0x00,0x00,0xC0,0x00,0x18,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x18,0x00,
  243. 0x00,0x00,0x00,0x01,0xC0,0x00,0x0C,0x00,0x03,0x88,0x00,0x00,0x00,0x00,0x1C,0x00,
  244. 0x00,0x00,0x00,0x01,0x60,0x00,0x06,0x00,0x03,0x9C,0x00,0x00,0x00,0x00,0x0C,0x00,
  245. 0x00,0x00,0x00,0x00,0xE0,0x00,0x03,0x00,0x03,0x1E,0x00,0x00,0x10,0x60,0x0C,0x00,
  246. 0x00,0x00,0x00,0x00,0x30,0x00,0x01,0x00,0x07,0x37,0x00,0x00,0x40,0x10,0x1C,0x00,
  247. 0x00,0x00,0x00,0x00,0x30,0x00,0x01,0x80,0x07,0x3D,0xE0,0x00,0x80,0x00,0x1C,0x00,
  248. 0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x80,0x07,0x1B,0xFF,0x80,0x80,0x04,0x18,0x00,
  249. 0x00,0x00,0x00,0x00,0xD8,0x00,0x00,0xF0,0x07,0x1D,0x97,0x80,0x00,0x00,0x18,0x00,
  250. 0x00,0x00,0x00,0x00,0xC8,0x00,0x00,0xF0,0x03,0x0F,0x3F,0x01,0x00,0x00,0x38,0x00,
  251. 0x00,0x00,0x00,0x00,0x78,0x00,0x00,0xF0,0x07,0x87,0xFC,0x00,0x00,0x04,0x30,0x00,
  252. 0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x78,0x0F,0xC0,0x70,0x00,0x80,0x08,0x70,0x00,
  253. 0x00,0x00,0x00,0x00,0x18,0x00,0x1C,0xFF,0x0C,0xE0,0x00,0x00,0x80,0x10,0xE0,0x00,
  254. 0x00,0x00,0x00,0x01,0xF8,0x00,0x1C,0xFF,0xFC,0xF0,0x00,0x00,0x40,0x21,0xC0,0x00,
  255. 0x00,0x00,0x00,0x00,0x90,0x00,0xFC,0xE1,0xF8,0x38,0x00,0x00,0x1F,0x03,0x80,0x00,
  256. 0x00,0x00,0x00,0x00,0x70,0x00,0xFF,0x80,0x38,0x1E,0x00,0x00,0x00,0x0F,0x00,0x00,
  257. 0x00,0x00,0x00,0x0C,0x60,0x00,0x1F,0xF0,0x30,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,
  258. 0x00,0x00,0x00,0x0B,0x80,0x00,0x7F,0xFF,0x70,0x03,0xF0,0x00,0x00,0xFF,0x00,0x00,
  259. 0x00,0x00,0x03,0x0F,0x00,0x00,0x74,0x1F,0xF0,0x00,0x7F,0x00,0x07,0xE3,0x00,0x00,
  260. 0x00,0x00,0x02,0x9C,0x00,0x00,0x0C,0x01,0xFE,0x00,0x0F,0xFF,0xFF,0x83,0x80,0x00,
  261. 0x00,0x00,0xE6,0xE0,0x00,0x00,0x1E,0x00,0x6E,0x00,0x00,0x7F,0xF8,0x01,0x80,0x00,
  262. 0x00,0x30,0xBF,0x00,0x00,0x00,0x67,0x00,0x60,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,
  263. 0x06,0x27,0xF0,0x00,0x00,0x31,0x87,0xF0,0x60,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,
  264. 0x0D,0xFE,0x00,0x00,0x00,0x3E,0x03,0x80,0x60,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,
  265. 0x7F,0x00,0x00,0x00,0x00,0x78,0x03,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,
  266. 0x38,0x00,0x00,0x00,0x0F,0x98,0x03,0x00,0x70,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,
  267. 0x07,0xE0,0x00,0x07,0xF8,0x1C,0x00,0x07,0x30,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,
  268. 0x00,0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x0F,0xB0,0x00,0x00,0x00,0x00,0x01,0x80,0x00,
  269. 0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x0F,0x98,0x18,0x00,0x00,0x00,0x03,0x80,0x00,
  270. 0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x0F,0x1C,0x3C,0x00,0x00,0x00,0x07,0x0F,0x80,
  271. 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x0F,0x0E,0x3E,0x00,0x00,0x00,0x0E,0x1D,0xC0,
  272. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x07,0x3C,0x00,0x00,0x00,0x3F,0x1D,0x80,
  273. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFC,0x00,0x00,0x00,0xF3,0xCF,0x8C,
  274. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFC,0x00,0x00,0x07,0xE0,0xFF,0x3C,
  275. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x3F,0x00,0x00,0xFF,0x00,0x3F,0xF8,
  276. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF8,0x00,0x01,0xE0,
  277. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,
  278. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  279. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

  280. };



jiekou001 发表于 2020-2-2 21:02 | 显示全部楼层
多谢大佬。
WENHX 发表于 2020-2-2 23:58 | 显示全部楼层
QC12864B液晶屏
小明的同学 发表于 2020-2-12 21:02 | 显示全部楼层
老屏幕。
小明的同学 发表于 2020-2-12 21:02 | 显示全部楼层
下载看看,我好像有一块。
小明的同学 发表于 2020-2-12 21:27 | 显示全部楼层
试了一下,非常好用。
天灵灵地灵灵 发表于 2020-2-12 21:30 | 显示全部楼层
看起来不错,下载看看,跟Proteus里的一样吗
xuanhuanzi 发表于 2020-2-12 21:38 | 显示全部楼层
应该是好资料。
734774645 发表于 2020-2-12 21:39 | 显示全部楼层
肯定是非常好用的资料,看看。
734774645 发表于 2020-2-12 21:44 | 显示全部楼层
很全面,好像是用AT89S52开发的。
yiy 发表于 2020-2-12 21:44 | 显示全部楼层
有没有显示效果。
yiy 发表于 2020-2-12 21:45 | 显示全部楼层
478655e44017c4267a.png
这个是吗
yiy 发表于 2020-2-12 21:45 | 显示全部楼层
我看楼主发的贴里,截图过来的。
捉虫天师 发表于 2020-2-12 22:10 | 显示全部楼层
稀有资源看看。
捉虫天师 发表于 2020-2-12 22:11 | 显示全部楼层
取图片的程序呢?
天灵灵地灵灵 发表于 2020-2-13 11:42 | 显示全部楼层
找找我的,试试看。
天灵灵地灵灵 发表于 2020-2-13 11:42 | 显示全部楼层
准备用这个做个万年历闹钟,外加温湿度。
yiyigirl2014 发表于 2020-2-14 11:21 | 显示全部楼层
多谢分享。代码给力。
晓伍 发表于 2020-3-4 14:37 | 显示全部楼层
非常感谢楼主分享
 楼主| gaoyang9992006 发表于 2020-3-4 15:35 | 显示全部楼层
晓伍 发表于 2020-3-4 14:37
非常感谢楼主分享

不客气,大家如果有自己的小作品,或者满意的代码,不妨都拿出来分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16402

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部