标题: 基于Proteus和Keil C的程序开发 计数显示器和发光二极管的简单应用 [打印本页]
作者: zhuhaiya 时间: 2019-12-14 20:42
标题: 基于Proteus和Keil C的程序开发 计数显示器和发光二极管的简单应用
基于Proteus和KeilC的程序开发
验证计数显示器的如下功能:可统计按钮BUT的按压次数,并将按压结果以十进制数形式显示出来;当显示值达到99后可自动从1开始,无限循环。
验证发光二极管的如下功能:仿真运行开始时,当开关p3_2闭合时,按一下按钮p3_4,流水灯全亮,再按一下按钮,流水灯全灭,然后正式开始流水,从第一个二极管开始每当按钮BUT按压一次,二极管就亮一次,且再次按压按钮时,下一个二极管亮一次,以此类推,循环往复。
简单东西,入门学习,不喜勿喷
单片机源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- sbit P3_4=P3^4;
- sbit P3_2=P3^2;
- bit ldelay=0;
- uchar t=0;
- unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};
- unsigned char count;
- void delay(unsigned int time){
- unsigned int j=0;
- for(;time>0;time--)
- for(j=0;j<125;j++);
- }
- void main(){
- uchar code ledp[10]={0x00,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar ledi;
- TMOD=0x01;
- TH0=0x3c;
- TL0=0xb0;
- TR0=1;
- ET0=1;
- EA=1;
- count=0;
- P0=table[count/10];
- P2=table[count%10];
- while(1){
-
- if(P3_4==0){
- delay(10);
- if(P3_4==0){
- count++;
- if(count==100)
- count=0;
- P0=table[count/10];
- P2=table[count%10];
- while(P3_4==0);}
-
- if(P3_2==0){
-
- if(ldelay) {
- ldelay=0;
- P1=ledp[ledi];
- delay(1000);
- ledi++;
- if(ledi==10) ledi=2;
- }
- }
- }
- }
- }
- timer0() interrupt 1{
- t++;
- if(t==20) {t=0;ldelay=1;}
- TH0=0X3C;TL0=0xb0;
- }
复制代码
-
2.png
(71.59 KB, 下载次数: 40)
-
1.png
(69.77 KB, 下载次数: 36)
-
51hei.png
(6.86 KB, 下载次数: 35)
-
-
计数显示器与二极管.zip
132.1 KB, 下载次数: 20, 下载积分: 黑币 -5
简单东西,不喜勿喷
作者: 可乐dior 时间: 2020-6-30 16:50
请问有proteus仿真文件吗?我的显示不全
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |