鱼C论坛

 找回密码
 立即注册
查看: 3564|回复: 2

[技术交流] mega16 12864串行显示

[复制链接]
发表于 2012-7-7 16:40:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 sky! 于 2012-7-7 17:00 编辑
  1. #include<iom16v.h>
  2. #include<macros.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define CS_0 PORTC&=~(1<<PC0)
  6. #define CS_1 PORTC|=(1<<PC0)
  7. #define SID_0 PORTC&=~(1<<PC1)
  8. #define SID_1 PORTC|=(1<<PC1)
  9. #define SCLK_0 PORTC&=~(1<<PC2)
  10. #define SCLK_1 PORTC|=(1<<PC2)
  11. #define PSB_0 PORTC&=~(1<<PC3)
  12. #define PSB_1 PORTC|=(1<<PC3)
  13. #define RESET_0 PORTC&=~(1<<PC4)
  14. #define RESET_1 PORTC|=(1<<PC4)

  15. void write(uchar start,unsigned char ddata);
  16. void sendbyte(unsigned char bbyte);
  17. void delaynms(unsigned int di);
  18. void lcdinit(void);
  19. void lcdtest();
  20. void lcdcls();
  21. unsigned char const ma[] ={"   FISHC FISHC   "};
  22. unsigned char const ma2[]={"FISHC FISHC FISHC"};
  23. unsigned char const ma3[]={"123456789        "};
  24. unsigned char const ma4[]={"fishc fishc fishc"};

  25. void lcdinit(void)
  26. {
  27. delaynms(10);
  28. PSB_0;
  29. RESET_0;
  30. delaynms(1);
  31. RESET_1;
  32. CS_1;
  33. write(0,0x30);
  34. write(0,0x0c);
  35. write(0,0x01);
  36. }

  37. void write(uchar start,uchar ddata)
  38. {
  39. uchar start_data,Hdata,Ldata;
  40. if(!start) start_data=0xf8;
  41. else start_data=0xfa;

  42. Hdata=ddata&0xf0;//取高四位
  43. Ldata=(ddata<<4)&0xf0;//取低四位
  44. sendbyte(start_data);//发送起始信号
  45. delaynms(5);//延时是必须的
  46. sendbyte(Hdata);
  47. delaynms(1);//延时是必须的
  48. sendbyte(Ldata);
  49. delaynms(1);//延时是必须的
  50. }
  51. void sendbyte(uchar bbyte)
  52. {
  53. uchar i;
  54. for(i=0;i<8;i++)
  55. {
  56.   if(bbyte&0x80)
  57.   {
  58.    SID_1;
  59.   }
  60.   else
  61.   {
  62.    SID_0;
  63.   }
  64.   SCLK_1;
  65.   asm("nop");
  66.   asm("nop");
  67.   asm("nop");
  68.   asm("nop");//空周期
  69.   SCLK_0;
  70.   bbyte<<=1;
  71. }
  72. }

  73. void delaynms(uint di)
  74. {
  75. uchar j;
  76. while(di--)
  77. {
  78.   for(j=0;j<1576;j++)          //11.0592M晶振1ms基准延时程序
  79.   {
  80.    ;
  81.   }
  82. }  
  83. }



  84. void main()
  85. {
  86. uchar i;
  87. PORTC=0xff;
  88. DDRC=0xff;


  89. lcdinit();
  90. while(1)
  91. {
  92.   write(0,0x80);for(i=0;i<16;i++) write(1,ma[i]);
  93.   write(0,0x90);for(i=0;i<16;i++) write(1,ma2[i]);
  94.   write(0,0x88);for(i=0;i<16;i++) write(1,ma3[i]);
  95.   write(0,0x98);for(i=0;i<16;i++) write(1,ma4[i]);
  96. }
  97. }




复制代码

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-16 16:14:14 | 显示全部楼层
无回帖,不论坛,这才是人道。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-16 16:21:15 | 显示全部楼层
无回帖,不论坛,这才是人道。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-6 02:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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