单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于Proteus和Keil C的程序开发 计数显示器和发光二极管的简单应用

[复制链接]
zhuhaiya 发表于 2019-12-14 20:42 | 显示全部楼层 |阅读模式
基于ProteusKeilC的程序开发
验证计数显示器的如下功能:可统计按钮BUT的按压次数,并将按压结果以十进制数形式显示出来;当显示值达到99后可自动从1开始,无限循环。

验证发光二极管的如下功能:仿真运行开始时,当开关p3_2闭合时,按一下按钮p3_4,流水灯全亮,再按一下按钮,流水灯全灭,然后正式开始流水,从第一个二极管开始每当按钮BUT按压一次,二极管就亮一次,且再次按压按钮时,下一个二极管亮一次,以此类推,循环往复。
简单东西,入门学习,不喜勿喷

单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. sbit P3_4=P3^4;
  4. sbit P3_2=P3^2;
  5. bit ldelay=0;
  6. uchar t=0;

  7. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};
  8. unsigned char count;
  9. void delay(unsigned int time){
  10.         unsigned int j=0;
  11.         for(;time>0;time--)
  12.                 for(j=0;j<125;j++);
  13.                 }

  14. void main(){
  15. uchar code ledp[10]={0x00,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  16. uchar ledi;
  17. TMOD=0x01;
  18. TH0=0x3c;
  19. TL0=0xb0;
  20. TR0=1;
  21. ET0=1;
  22. EA=1;
  23.   count=0;
  24.         P0=table[count/10];
  25.         P2=table[count%10];
  26.         while(1){
  27.                
  28.                 if(P3_4==0){
  29.                         delay(10);
  30.                         if(P3_4==0){
  31.                                 count++;
  32.                                 if(count==100)
  33.                                         count=0;
  34.                                 P0=table[count/10];
  35.                                 P2=table[count%10];
  36.                                 while(P3_4==0);}
  37.                         
  38.                         if(P3_2==0){
  39.                                                            
  40.                 if(ldelay) {
  41.                         ldelay=0;
  42.                         P1=ledp[ledi];
  43.                         delay(1000);
  44.                         ledi++;
  45.                         if(ledi==10) ledi=2;
  46.         }
  47.                         }
  48.         }
  49. }
  50. }

  51. timer0() interrupt 1{
  52.         t++;
  53. if(t==20) {t=0;ldelay=1;}
  54. TH0=0X3C;TL0=0xb0;
  55. }
复制代码


2.png
1.png
51hei.png

计数显示器与二极管.zip

132.1 KB, 下载次数: 9, 下载积分: 黑币 -5

简单东西,不喜勿喷

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

可乐dior 发表于 2020-6-30 16:50 | 显示全部楼层
请问有proteus仿真文件吗?我的显示不全
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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