两位秒表 51单片机程序编程

作者&投稿:项点 (若有异议请与网页底部的电邮联系)
51单片机写一个两位数码管的静态秒表~

两位跟一位电路不一样,一位时不必位选引脚,两位则必需指明位选的两个引脚,
两位时要轮询动态刷两个位,你这个delay方法不好使,要用时间中断处理

你多看看c语言书……现在很多书都讲基础……关于设计方面的很少……需要你自己去想……到底可以编什么软件……我们学这个就是为了用它……所以…… 给你一个问题?怎么实现改c的输出背景和安体颜色……你可以试试去实现他……

你好:

三个警告应该是void int_initial()与void timer0_initial()前边不用加void,然后就是Display()这个函数没有用。

其次我想说,TMOD=0x01就行了,因为程序里边只用到了定时器0,其他的状态不管,甚至可以说把其他定时器关掉。,也用不着TMOD&=0xfd。
然后中断函数要尽量精简、短小实干、不宜过长,因为中断本身就打扰了main函数的正常运行,而且中断内容太多反而容易在下次中断到来时还没处理完,就会栈溢出。养成好的习惯,中断就对最基本的时间计次就行,其余的都抛给main函数吧。
EA、ET0尽量就和定时器0一起初始化,你这习惯看着别扭。可读性略低。
中断里不要声明变量,你用个全局变量就OK。
希望我的回答能帮助到你。

实验一下,就知道有否错误。

难道,楼主没有实验板吗?


临夏回族自治州17146957095: 单片机设计,两位秒表 -
歹郊金泽: 这个也太简单了吧,一点难度都没有,不想写代码了.我的百度空间里有电子钟的程序,是4位LED的,有图有代码.你可以参考一下. 需要修改的就是把时和分去掉,把秒最大值改到99,再加一个按键就可以. 至于按键次数的处理,设一个变量来计算按下次数就可以.

临夏回族自治州17146957095: 用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一.另设计一个“开始”按键和一 -
歹郊金泽: 因为分数低,只好给你说我的思路 因为是秒表,当然用定时器,我常用的是定时器0,工作方式1 TMOD=0X01;给一个溢满值3CB020次为一秒 if(counter> 19) {second++;conunter= 0;} 而后,动态显示,懂吧,用调用延迟 然后快加,每10ms快速加1,关了定时器0,换定时器1?至于暂停,也是一个中断吧,保持现状,就是变量值不改变,而后当然调用显示函数.再按下按键跳出循环.不知道行不行,参考而已

临夏回族自治州17146957095: 51单片机设计一个秒表,用两个数码管(任意相邻的两个)显示. -
歹郊金泽: ORG 0000H JMP BEGIN ORG 000BH LJMP T0INT ORG 001BH LJMP T1INT LEDD EQU 30H LEDC EQU 36H SECC EQU 37H TCNT EQU 3AH ORG 0030H;--------------------------------------- TABLE: ; 共阴极数码管显示代码表 DB 0FCH ;"0" ...

临夏回族自治州17146957095: 基于51单片机的2位LED数码显示秒表,设置开始;复位;暂停;快加(每10ms快加一)的程序.用汇编语言怎么写 -
歹郊金泽: #include<reg51.h>#define uint unsigned int#define uchar unsigned charuchar du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbit k1=P3^1;sbit k2=P3^2;uchar i=0,m=0;void init(){ TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-...

临夏回族自治州17146957095: AT89C51单片机设计一个简易秒表? -
歹郊金泽: 定时器10ms中断 检测按键且10ms位加一 若10ms=10,100ms位加一 若10ms=10,1000ms位加一 以此内推 显示最好用LCD的 用数码管的也行 有疑问mail:290765583@163.com

临夏回族自治州17146957095: 用AT89C51单片机编写一个C语言程序实现2个数码管秒计数器,用4个按键分别控制暂停、加一秒、减一秒和继续 -
歹郊金泽: #include<reg51.h>#define uchar unsigned char; uchar LED1,LED2; uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar num=0;sec,key; void delay(unsigned int a) { unsigned int i,j; for(i=0;i<a;i++) for(j=0;j<120;j++); } void ...

临夏回族自治州17146957095: 设计一个单片机编程,两位的简易秒表,记时单位60 - 50s,用两位的数码管 -
歹郊金泽: #include unsigend char sec = 0; unsigend char code ledchar[] = {0xC0,x0F9, 0xA4, 0xB0 ,0x99, 0x92, 0x82, 0xF8, 0x80 ,0x90}; void ConfigTimer0() {TMOD = 0x01;TH0 = 0xFC; TL0 = 0x18; ET0 = 1; TR0= 1; EA = 1;} void main() ...

临夏回族自治州17146957095: 51单片机编程秒表问题 -
歹郊金泽: 循环过程大致如下 void main() { //假设AB按钮为导通低电平 int num=0; int flag=1; while(1)//主循环 等待A按下 { while(flag)//等待A按下 { if(A连接的IO口为低电平) //A按下 { flag=0; } } if(B连接的IO口为低电平) //B按下 { flag=1; } if(num<100) { 显示num值; } else { num=0; 显示num值; } num++; } }

临夏回族自治州17146957095: 单片机秒表设计!! -
歹郊金泽: #include <reg51.h> #include <intrins.h> unsigned char data dis_digit; unsigned char key_s, key_v; unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off unsigned char dis_buf[...

临夏回族自治州17146957095: 51单片机秒表 c语言编程 -
歹郊金泽: 使用12M得晶振,使用定时器计数,10mS中断一次,10次就是0.1秒,100次就是1秒.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网