搜索
bottom↓
回复: 16

请大家帮我看看这段程序能不能实现功能

[复制链接]

出0入0汤圆

发表于 2012-4-20 22:24:36 | 显示全部楼层 |阅读模式
预计功能是 :开电源后,LCD显示时间 并开始走动  (初始显示   2012-05-01 TUE     00:00:00),
              按键对显示控制,按下按键后LCD切换显示 ,再次按下按键恢复初始显示
用keil51编译没错误,但没实验板,也不会用protue仿真 所以请高手帮忙看看能不能行
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. sbit RS=P3^1;
  5. sbit EN=P3^0;                         //RW接地
  6. sbit KEY=P3^3;
  7. uchar h,m,s,count,t;
  8. uchar code table[]="   2012-05-01 TUE";
  9. uchar code table1[]="   00:00:00";
  10. uchar code table2[]="   ZHOU DENG";
  11. uchar code table3[]="   20091131173";
  12. //延时;
  13. void delay(uint z)
  14. {
  15.   uint x,y;
  16.   for(x=z;x>0;x--)
  17.      for(y=110;y>0;y--);
  18. }
  19. //LCD写指令;
  20. void write_com(uchar com)
  21. {
  22.   RS=0;
  23.   EN=0;
  24.   P1=com;
  25.   delay(5);
  26.   EN=1;
  27.   delay(5);
  28.   EN=0;
  29. }
  30. //LCD写数据;
  31. void write_date(uchar date)
  32. {
  33.   RS=1;
  34.   EN=0;
  35.   P1=date;
  36.   delay(5);
  37.   EN=1;
  38.   delay(5);
  39.   EN=0;
  40. }
  41. //时分秒走动;
  42. void write_sfm(uchar add,uchar date)
  43. {
  44.   uchar shi,ge;
  45.   shi=date/10;
  46.   ge=date%10;
  47.   write_com(0x80+0x40+add);        //第二行时间位置
  48.   write_date(0x30+shi);
  49.   write_date(0x30+ge);
  50. }
  51. // 按键检测
  52. uchar keyscan()
  53. {
  54. if(KEY==0)
  55. {
  56.   delay(5);
  57.   if(KEY==0)
  58.   return 0;          
  59.   else
  60.   return 1;
  61.   }
  62.   else
  63.   return 1;
  64. }
  65. // 切换内容
  66. void xianshi()
  67. {
  68.   uchar a;
  69.   write_com(0x01);//清屏;
  70.   write_com(0x80);
  71.   for(a=0;a<12;a++)
  72.   {
  73.    write_date(table2[a]);
  74.    delay(5);
  75.   }
  76.   write_com(0x80+0x40);
  77.   for(a=0;a<14;a++)
  78.   {
  79.    write_date(table3[a]);
  80.    delay(5);
  81.   }
  82.    while(keyscan()) ;  //保持显示
  83. }
  84.   
  85. //LCD初始化;
  86. void init()
  87. {
  88. uchar b;
  89. write_com(0x38);
  90. delay(5);
  91. write_com(0x0c);
  92. delay(5);
  93. write_com(0x06);
  94. delay(5);
  95. write_com(0x01);
  96. delay(5);
  97. write_com(0x80);
  98. for(b=0;b<16;b++)
  99.           {
  100.           write_date(table[b]);
  101.           delay(5);
  102.     }
  103. write_com(0x80+0x40);
  104. for(b=0;b<12;b++)
  105.         {
  106.           write_date(table1[b]);
  107.           delay(5);
  108.         }
  109. }
  110. //主函数;
  111. void main()
  112. {
  113. while(1)
  114. {
  115. init();   
  116. count=0;
  117. TMOD=0x01;
  118. TH0=(65536-50000)/256;
  119. TL0=(65536-50000)%256;
  120. EA=1;
  121. ET0=1;
  122. TR0=1;
  123. while(1)
  124. {
  125.   if(count==20)
  126.   {
  127.    count=0;
  128.    s++;
  129.    if(s==60)
  130.    {
  131.     s=0;
  132.         m++;
  133.         if(m==60)
  134.         {
  135.          m=0;
  136.          h++;
  137.          if(h==24)
  138.          {
  139.           h=0;
  140.          }
  141.          write_sfm(4,h);
  142.         }
  143.         write_sfm(7,m);
  144.    }
  145.    write_sfm(10,m);
  146.   }
  147.   if(keyscan()==0)
  148.    break;
  149.    }
  150.   xianshi();
  151.   }
  152.   }
  153. //中断;
  154. void timer0() interrupt 1
  155. {
  156. TH0=(65536-50000)/256;
  157. TL0=(65536-50000)%256;
  158. count++;
  159. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出145入215汤圆

发表于 2012-4-22 03:53:53 来自手机 | 显示全部楼层
那个什么单词错了!是protel!你说的完全扯淡!按键当然可以控制液晶的显示!看看版主会不会杀你的头!!!

出145入215汤圆

发表于 2012-4-22 06:50:55 | 显示全部楼层
c看不懂

出0入0汤圆

发表于 2012-4-22 07:29:59 | 显示全部楼层
画饼不如买个饼真实的吃

出0入0汤圆

发表于 2012-4-22 08:30:52 | 显示全部楼层
NJ8888 发表于 2012-4-22 07:29
画饼不如买个饼真实的吃

这话有理顶一下

出0入0汤圆

发表于 2012-4-22 19:41:10 | 显示全部楼层
很想帮楼主
可惜c看不懂~~~~~~~~~我只用汇编

出0入0汤圆

发表于 2012-4-23 15:12:33 | 显示全部楼层
dz20062008 发表于 2012-4-22 06:50
c看不懂

难道是汇编高手???

出0入0汤圆

发表于 2012-4-23 15:13:12 | 显示全部楼层
lxa0 发表于 2012-4-22 19:41
很想帮楼主
可惜c看不懂~~~~~~~~~我只用汇编

也是汇编高手???

出0入0汤圆

发表于 2012-4-23 15:16:49 | 显示全部楼层
逻辑是是可以的,具体的就只有焊板子或者仿真来看了

出0入0汤圆

发表于 2012-4-23 22:15:34 | 显示全部楼层
raxb 发表于 2012-4-23 15:13
也是汇编高手???

我是一个汇编手
而非汇编高手

出0入0汤圆

发表于 2012-4-24 12:52:58 | 显示全部楼层
呵呵,好多汇编手

出0入0汤圆

发表于 2012-4-24 13:19:54 | 显示全部楼层
让别人看还不如老老实实花一个星期摸摸proteus来得更实际一点,话说proteus仿真常见单片机电路还是挺容易的

出0入0汤圆

 楼主| 发表于 2012-4-24 19:56:03 | 显示全部楼层
已经成功仿真和调试了~~~谢谢大家了

出145入215汤圆

发表于 2012-4-25 01:57:57 | 显示全部楼层
我学过计算机C语言,没有学完整也没实际操作过,学51单片机时就是学的汇编,感觉汇编与单片机就是一体的

出0入0汤圆

发表于 2012-4-25 21:46:49 | 显示全部楼层
lxa0 发表于 2012-4-23 22:15
我是一个汇编手
而非汇编高手

呵呵,俺也是一个汇编手,兼职C,有空交流交流

出0入0汤圆

发表于 2012-4-25 21:48:28 | 显示全部楼层
raxb 发表于 2012-4-25 21:46
呵呵,俺也是一个汇编手,兼职C,有空交流交流

欢迎指教~~~~~~~~~~

出0入0汤圆

发表于 2012-4-25 22:47:33 | 显示全部楼层
lxa0 发表于 2012-4-25 21:48
欢迎指教~~~~~~~~~~

呵呵,好的,互相交流学习
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 22:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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