找回密码
 立即注册

QQ登录

只需一步,快速开始

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

新人求教proteus中字体显示位置不对

[复制链接]
跳转到指定楼层
楼主
使用的AGM1232,然后使用proteus仿真图是这样的,程序代码如下,怎么调位置都不对。

  1. #include<reg51.h>
  2. #define PD1 61

  3. unsigned char Column;
  4. unsigned char Page_;
  5. unsigned char Code_;
  6. unsigned char Command;
  7. unsigned char LCDData;

  8. xdata unsigned char CWADD1 _at_ 0x8000;
  9. xdata unsigned char DWADD1 _at_ 0x8001;
  10. xdata unsigned char CRADD1 _at_ 0x8002;
  11. xdata unsigned char DRADD1 _at_ 0x8003;

  12. xdata unsigned char CWADD2 _at_ 0x8004;
  13. xdata unsigned char DWADD2 _at_ 0x8005;
  14. xdata unsigned char CRADD2 _at_ 0x8006;
  15. xdata unsigned char DRADD2 _at_ 0x8007;

  16. code unsigned char EETAB[ ][8]={
  17.     {0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00},
  18.     {0x10,0x30,0x50,0x10,0x10,0x10,0x7c,0x00},
  19.     {0x38,0x44,0x04,0x08,0x10,0x20,0x7c,0x00},
  20.     {0x78,0x84,0x04,0x38,0x04,0x84,0x78,0x00}
  21. };

  22. code unsigned char CCTAB[][32] ={
  23.     {0x00,0x24,0xF6,0x24,0x24,0x64,0xA4,0x24,0x3F,0x24,0xA4,0x64,0x24,0x24,0xE4,0x04,
  24.         0x00,0x00,0x7F,0x80,0x49,0x09,0x09,0x09,0x7F,0x09,0x09,0x09,0x09,0x00,0xFF,0x00},
  25. };

  26. void WriteCommandE1(){
  27.     while(CRADD1 & 0x80);
  28.     CWADD1 = Command;
  29. }

  30. void WriteDataE1(){
  31.     while(CRADD1 & 0x80);
  32.     DWADD1 = LCDData;
  33. }

  34. void ReadDataE1(){
  35.     while(CRADD1 & 0x80);
  36.     LCDData = DRADD1;
  37. }

  38. void WriteCommandE2(){
  39.     while(CRADD2 & 0x80);
  40.     CWADD2 = Command;
  41. }

  42. void WriteDataE2(){
  43.     while(CRADD2 & 0x80);
  44.     DWADD2 = LCDData;
  45. }

  46. void ReadDataE2(){
  47.     while(CRADD2 & 0x80);
  48.     LCDData = DRADD2;
  49. }

  50. void Init(){
  51.     Command = 0xe2;

  52.     WriteCommandE1();
  53.     WriteCommandE2();

  54.     Command = 0xa4;
  55.     WriteCommandE1();
  56.     WriteCommandE2();

  57.     Command = 0xa9;
  58.     WriteCommandE1();
  59.     WriteCommandE2();

  60.     Command = 0xa0;
  61.     WriteCommandE1();
  62.     WriteCommandE2();

  63.     Command = 0xc0;
  64.     WriteCommandE1();
  65.     WriteCommandE2();

  66.     Command = 0xaf;
  67.     WriteCommandE1();
  68.     WriteCommandE2();

  69. }

  70. void Clear(){
  71.     unsigned char i, j;
  72.     i = 0;
  73.     do{
  74.         Command = (i + 0xb8);
  75.         WriteCommandE1();
  76.         WriteCommandE2();

  77.         Command = 0x00;
  78.         WriteCommandE1();
  79.         WriteCommandE2();
  80.         j = 0x50;
  81.         do{
  82.             LCDData = 0x00;
  83.             WriteDataE1();
  84.             WriteDataE2();
  85.         }while(--j!=0);
  86.     }while(++i!=4);
  87. }

  88. void Delay(){
  89.     unsigned char i, j;
  90.     i = 20;
  91.     j = 0;
  92.     do{
  93.         do{
  94.         }while(--j!=0);
  95.     }while(--i!=0);
  96. }

  97. void WriteCHN16x16(){
  98.     unsigned char i, j, k;
  99.     i = 0;
  100.     j = 0;
  101.     while(j<2){
  102.         Command = ((Page_ + j) & 0x03)|0xb8;
  103.         WriteCommandE1();
  104.         WriteCommandE2();
  105.         k = Column;
  106.         while(k < Column + 16){
  107.             if(k < PD1){
  108.                 Command = k;
  109.                 WriteCommandE1();
  110.                 LCDData = CCTAB[Code_][i];
  111.                 WriteDataE1();
  112.             }
  113.             else{
  114.                 Command = k-PD1;
  115.                 WriteCommandE2();
  116.                 LCDData = CCTAB[Code_][i];
  117.                 WriteDataE2();
  118.             }
  119.             i++;
  120.             if(++k >= PD1*2) break;
  121.         }
  122.         j++;
  123.     }
  124. }

  125. int main(){
  126.     Init();
  127.     Clear();
  128.     Page_ = 0x02;
  129.     Column = 0x00;
  130.     Code_ = 0x00;
  131.     WriteCHN16x16();
  132.         
  133.                 Page_ = 0x02;
  134.     Column = 0x10;
  135.     Code_ = 0x00;
  136.     WriteCHN16x16();

  137.     while(1);
  138. }
复制代码

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

使用道具 举报

沙发
ID:700110 发表于 2020-3-5 14:43 | 只看该作者
真的很急,有人能帮忙看一下吗
回复

使用道具 举报

板凳
ID:897458 发表于 2022-2-1 15:12 | 只看该作者
我做的程序也是这样,proteus仿真时不对,但是实物连接时候却是正常的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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