找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机+LM016动态计数程序

[复制链接]
跳转到指定楼层
楼主
51单片机学习记录,按时计数选取显示

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<string.h>
  3. #define uchar unsigned char

  4. sbit RS=P1^0;
  5. sbit RW=P1^1;
  6. sbit E=P1^2;
  7. unsigned int num,units=0,tens=0,hundreds=0;
  8. uchar row1[]={"Welcome to China"};
  9. uchar row2[]={"0123456789"};

  10. void delay(uchar ms)
  11. {
  12. uchar k;
  13. while(ms--)
  14. for(k=0;k<123;k++);
  15. }

  16. void command(uchar com)
  17. {
  18. RS=0;
  19. RW=0;
  20. E=1;
  21. P0=com;
  22. E=0;
  23. delay(1);
  24. }

  25. void WriteData(uchar dat)
  26. {
  27. RS=1;
  28. RW=0;
  29. E=1;
  30. P0=dat;
  31. E=0;
  32. delay(1);
  33. }

  34. void init()
  35. {
  36. command(0x38);
  37. command(0x0c);
  38. command(0x06);
  39. command(0x01);
  40. }

  41. void display()
  42. {
  43. if(units==10)units=0,tens++;
  44. if(tens==10)tens=0,hundreds++;
  45. if(hundreds==10)hundreds=0;

  46.         
  47. command(0x80);
  48. for(num=0;num<16;num++)
  49. WriteData(row1[num]),delay(5);

  50. command(0x80+0x40);
  51. WriteData(row2[hundreds]);
  52. command(0x80+0x40+0x01);
  53. WriteData(row2[tens]);
  54. command(0x80+0x40+0x02);
  55. WriteData(row2[units]);
  56. units++;
  57. delay(10);
  58. }

  59. void main()
  60. {
  61. init();
  62. while(1)
  63. display();
  64. }
复制代码

exp41.zip

75.24 KB, 下载次数: 4, 下载积分: 黑币 -5

keil和proteus8.9

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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