找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1788|回复: 1
收起左侧

简易单片机计分器代码

[复制链接]
ID:536390 发表于 2019-5-12 20:19 | 显示全部楼层 |阅读模式
此为入门新手可完成的任务   

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar table[]="00";
  6. uchar table1[]="00";
  7. sbit B1=P1^0;
  8. sbit B2=P1^1;
  9. sbit B3=P1^2;
  10. sbit B4=P1^3;
  11. sbit lcden=P2^2;
  12. sbit lcdrw=P2^1;
  13. sbit lcdrs=P2^0;
  14. sbit dula=P2^6;
  15. sbit wela=P2^7;

  16. uchar num;
  17. void delay(uint z)
  18. {
  19.         uint x,y;
  20.         for(x=z;x>0;x--)
  21.                 for(y=110;y>0;y--);
  22. }
  23. void write_com(uchar com)
  24. {
  25.         lcdrs=0;
  26.         P0=com;
  27.         delay(5);
  28.         lcden=1;
  29.         delay(5);
  30.         lcden=0;       
  31. }
  32. void write_data(uchar datum)
  33. {
  34.         lcdrs=1;
  35.         P0=datum;
  36.         delay(5);
  37.         lcden=1;
  38.         delay(5);
  39.         lcden=0;       
  40. }
  41. void init()
  42. {
  43.         dula=0;
  44.         wela=0;
  45.         lcden=0;
  46.         write_com(0x38);
  47.         write_com(0x0c);
  48.         write_com(0x06);
  49.         write_com(0x01);
  50. }
  51. void main()
  52. {
  53.         lcdrw=0;
  54.         init();
  55. //00:00
  56.         write_com(0x80);
  57.         for(num=0;num<2;num++)
  58.         {
  59.                 write_data(table[num]);
  60.                 delay(10);
  61.         }
  62.         write_com(0x80+0x40);
  63.         for(num=0;num<2;num++)
  64.         {
  65.                 write_data(table1[num]);
  66.                 delay(10);
  67.         }

  68.         while(1)
  69.         {
  70. //B1
  71.                 if(B1==0)
  72.                 {       
  73.                         table[1]=table[1]+1;
  74.                         if(table[1]=='0'+10)
  75.                         {
  76.                                 table[0]=table[0]+1;
  77.                                 table[1]='0';
  78.                         }
  79.                         write_com(0x80);
  80.                         for(num=0;num<2;num++)
  81.                         {
  82.                                 write_data(table[num]);
  83.                                 delay(150);
  84.                         }
  85.                 }
  86. //B2
  87.                 if(B2==0)
  88.                 {       
  89.                         table[1]=table[1]-1;
  90.                         if(table[1]=='0'-1)
  91.                         {
  92.                                 table[0]=table[0]-1;
  93.                                 table[1]='9';
  94.                         }
  95.                         write_com(0x80);
  96.                         for(num=0;num<2;num++)
  97.                         {
  98.                                 write_data(table[num]);
  99.                                 delay(150);
  100.                         }
  101.                 }
  102. //B3
  103.                 if(B3==0)
  104.                 {       
  105.                         table1[1]=table1[1]+1;
  106.                         if(table1[1]=='0'+10)
  107.                         {
  108.                                 table1[0]=table[0]+1;
  109.                                 table1[1]='0';
  110.                         }
  111.                         write_com(0x80+0x40);
  112.                         for(num=0;num<2;num++)
  113.                         {
  114.                                 write_data(table1[num]);
  115.                                 delay(150);
  116.                         }
  117.                 }
  118. //B4
  119.                 if(B4==0)
  120.                 {       
  121.                         table1[1]=table1[1]-1;
  122.                         if(table1[1]=='0'-1)
  123.                         {
  124.                                 table1[0]=table[0]-1;
  125.                                 table1[1]='9';
  126.                         }
  127.                         write_com(0x80+0x40);
  128.                         for(num=0;num<2;num++)
  129.                         {
  130.                                 write_data(table[num]);
  131.                                 delay(150);
  132.                         }
  133.                 }
  134.         }
  135. }
复制代码

所有资料51hei提供下载:
计分器.zip (30.77 KB, 下载次数: 7)
回复

使用道具 举报

ID:1 发表于 2019-5-12 22:32 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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