求用AT89S51单片机构成的0-99加法计数器电路图和C语言源程序…要求用proteus仿真,显示屏用7段数码管…

如题,求电路图和源程序…也可以发到我邮箱…... 如题,求电路图和源程序…也可以发到我邮箱… 展开
 我来答
假像30
2014-07-16 · TA获得超过100个赞
知道答主
回答量:126
采纳率:100%
帮助的人:116万
展开全部
#include<reg51.h> //一个百位数0~100循环显示 #define uint unsigned int #define uchar unsigned char uchar temp,aa,bai,shi,ge; sbit dula=P2^6; //位段选 sbit wela=P2^7; uchar code table[]={ //数码管循环显示0~f 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void display(uchar bai,uchar shi,uchar ge);//显示子程序声明 void delay(uint z); //延时函数 void init(); //初始化函数 void main() { init(); //初始化子程序 while(1) { if(aa==20) //检测到1s { aa=0; temp++; if(temp==100) //判断是否到显示值 { temp=0; } bai=temp/100; shi=temp%100/10; ge=temp%10; } display(bai,shi,ge); } } void delay(uint z) //延时子程序 { uint x,y; for(x=z;x>0;x--) for(y<110;y>0;y--); } void display(uchar bai,uchar shi,uchar ge) { wela=1; P0=0xfe; //百位选通 wela=0; delay(50); dula=1; P0=table[bai]; dula=0; //送百位 P0=0xff; //消隐 wela=1; P0=0xfd; wela=0; delay(50); dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(50); dula=1; P0=table[ge]; dula=0; P0=0xff; } void init() //初始化函数(定时器,显示值) { wela=0; dula=0; temp=0; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; //启动定时器 } void timer0()interrupt 1 //中断子函数 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; aa++; }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式