找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机按键控制数码管加1程序,结果不亮

[复制链接]
ID:541924 发表于 2019-5-19 10:52 | 显示全部楼层 |阅读模式
/*
*功能:开关key1控制实现每按一次,数码管数字加1,实现00-99的循环
*开关key2实现随时清零
*/
QQ截图20190519105201.png
  1. #include<reg52.h>
  2. sbit SEG1 = P1^0;  //定义显示十位的数码管
  3. sbit SEG2 = P2^0;  //定义显示个位的数码管
  4. sbit key1 = P3^2;  //定义实现数码管加1的开关key1
  5. sbit key2 = P3^3;  //定义实现清零的开关key2
  6. typedef unsigned int uint;
  7. uint i,j;
  8. uint sum = 0;
  9. unsigned char code DSY_CODE[] = {0xC0,0xF9,0xA4,
  10.                                  0xB0,0x99,0x92,
  11.                                                                  0x82,0xF8,0x80,0x90}; //共阳极数码管
  12. void display(uint i,uint j); //数码管显示函数   


  13. void main()
  14. {
  15.         IE = 0X85;
  16.         IT0 = 1;
  17.         IT1 = 1;
  18.         while(1)
  19.         {           
  20.           display(i,j);                                
  21.         }
  22.                
  23. }


  24. void EX0_INT(void) interrupt 0        // 外部中断0,实现按键按一下数码管数字加一
  25. {
  26.         sum++;        
  27. }

  28. void EX1_INT(void) interrupt 2//外部中断1,实现清零
  29. {
  30.         sum = 0;        
  31. }


  32. void display(uint i,uint j)        //数码管显示数字
  33. {
  34.         i = sum/10;                        //数码管显示十位数字
  35.         j = sum%10;                    //数码管显示个位数字
  36.         if(sum == 100)
  37.         sum = 0;
  38.         P1 = DSY_CODE[i];
  39.         P2 = DSY_CODE[j];
  40. }
复制代码

回复

使用道具 举报

ID:213173 发表于 2019-5-19 21:17 | 显示全部楼层
楼主显示程序错误

无标题.jpg


  1. #include<reg52.h>
  2. sbit SEG1 = P1^0;  //定义显示十位的数码管
  3. sbit SEG2 = P2^0;  //定义显示个位的数码管
  4. sbit key1 = P3^2;  //定义实现数码管加1的开关key1
  5. sbit key2 = P3^3;  //定义实现清零的开关key2
  6. typedef unsigned int uint;
  7. //uint i,j;
  8. uint sum = 0;
  9. unsigned char code DSY_CODE[]={ //共阳极数码管
  10.                 0xC0,0xF9,0xA4,0xB0,0x99,
  11.                 0x92,0x82,0xF8,0x80,0x90};
  12. void display(unsigned char i); //数码管显示函数   

  13. void main()
  14. {
  15.         IE = 0X85;
  16.         IT0 = 1;
  17.         IT1 = 1;
  18.         while(1)
  19.         {           
  20.                 display(sum);
  21.         }
  22.                
  23. }


  24. void EX0_INT(void) interrupt 0 // 外部中断0,实现按键按一下数码管数字加一
  25. {
  26.         sum++;        
  27.         if(sum >= 100)
  28.                 sum = 0;
  29. }

  30. void EX1_INT(void) interrupt 2//外部中断1,实现清零
  31. {
  32.         sum = 0;        
  33. }


  34. void display(unsigned char i)        //数码管显示数字
  35. {       
  36.         P1 = DSY_CODE[i/10];
  37.         P2 = DSY_CODE[i%10];
  38. }
复制代码



回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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