LED数码管显示电子钟共11页.docx
- 文档编号:926697
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:13
- 大小:21.14KB
LED数码管显示电子钟共11页.docx
《LED数码管显示电子钟共11页.docx》由会员分享,可在线阅读,更多相关《LED数码管显示电子钟共11页.docx(13页珍藏版)》请在冰豆网上搜索。
LED数码管显示电子钟共11页
#include
#include
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 data dis_buf[8];
unsigned char data dis_index;
unsigned char hour,min,sec;
unsigned char sec100;
sbit K1 = P1^4;
sbit K2 = P1^5;
bit scan_key();
void proc_key();
void inc_sec();
void inc_min();
void inc_hour();
void display();
void delayms(unsigned char ms);
void main(void)
{
P0 = 0xff;
P2 = 0xff;
TMOD = 0x11; // 定时器0, 1工作模式1, 16位定时方式
TH1 = 0xdc;
TL1 = 0;
TH0 = 0xFC;
TL0 = 0x17;
hour = 12;
min = 00;
sec = 00;
sec100 = 0;
dis_buf[0] = dis_code[hour / 10]; // 时十位
dis_buf[1] = dis_code[hour % 10]; // 时个位
dis_buf[3] = dis_code[min / 10]; // 分十位
dis_buf[4] = dis_code[min % 10]; // 分个位
dis_buf[6] = dis_code[sec / 10]; // 秒十位
dis_buf[7] = dis_code[sec % 10]; // 秒个位
dis_buf[2] = 0xbf; // 显示"-"
dis_buf[5] = 0xbf; // 显示"-"
dis_digit = 0xfe;
dis_index = 0;
TCON = 0x01;
IE = 0x8a; // 使能timer0,1 中断
TR0 = 1;
TR1 = 1;
key_v = 0x03;
while
(1)
{
if(scan_key())
{
delayms(10);
if(scan_key())
{
key_v = key_s;
proc_key();
}
}
}
}
bit scan_key()
{
key_s = 0x00;
key_s |= K2;
key_s <<= 1;
key_s |= K1;
return(key_s ^ key_v);
}
void proc_key()
{
EA = 0;
if((key_v & 0x01) == 0) // K1
{
inc_hour();
}
else if((key_v & 0x02) == 0) // K2
{
min++;
if(min > 59)
{
min = 0;
}
dis_buf[3] = dis_code[min / 10]; // 分十位
dis_buf[4] = dis_code[min % 10]; // 分个位
}
EA = 1;
}
void timer0() interrupt 1
// 定时器0中断服务程序, 用于数码管的动态扫描
// dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
// dis_digit --- 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,
// 选通P2.0口数码管
// dis_buf --- 显于缓冲区基地址
{
TH0 = 0xFC;
TL0 = 0x17;
P2 = 0xff; // 先关闭所有数码管
P0 = dis_buf[dis_index]; // 显示代码传送到P0口
P2 = dis_digit; //
dis_digit = _crol_(dis_digit,1); // 位选通值左移, 下次中断时选通下一位数码管
dis_index++; //
dis_index &= 0x07; // 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
}
void timer1() interrupt 3
{
TH1 = 0xdc;
sec100++;
if(sec100 >= 100)
{
sec100 = 0;
inc_sec();
}
}
void inc_sec()
{
sec++;
if(sec > 59)
{
sec = 0;
inc_min();
}
dis_buf[6] = dis_code[sec / 10]; // 秒十位
dis_buf[7] = dis_code[sec % 10]; // 秒个位
}
void inc_min()
{
min++;
if(min > 59)
{
min = 0;
inc_hour();
}
dis_buf[3] = dis_code[min / 10]; // 分十位
dis_buf[4] = dis_code[min % 10]; // 分个位
}
void inc_hour()
{
hour++;
if(hour > 23)
{
hour = 0;
}
if(hour > 9)
dis_buf[0] = dis_code[hour / 10]; // 时十位
else
dis_buf[0] = 0xff; // 当小时的十位为0时不显示
dis_buf[1] = dis_code[hour % 10]; // 时个位
}
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}proteus元件库中文注释)
死记硬背是一种传统的教学方式,在我国有悠久的历史。
但随着素质教育的开展,死记硬背被作为一种僵化的、阻碍学生能力发展的教学方式,渐渐为人们所摒弃;而另一方面,老师们又为提高学生的语文素养煞费苦心。
其实,只要应用得当,“死记硬背”与提高学生素质并不矛盾。
相反,它恰是提高学生语文水平的重要前提和基础。
不知道你是否也在用proteus这款仿真软件,很多人说仿真是在理想条件下,得出的结果不太正确,所以很多人不推荐使用仿真。
但是懒猫认为存在即有价值,对于高手来说还用这个软件确实不是件好事,但对于初学者来说,直观的调试会让人感到更兴奋一些,不瞒大家说,懒猫初学51时第一个点灯程序就是在proteus上点灯的。
当然如果你一味的依懒于软件仿真,你不会学到单片机的真谛,毕竟仿真有限,纸上得来终觉浅,缘知此事要躬行!
实践出真知……所以还是鼓励大家有条件的话多在实物上调试。
好了,费话不说了,还是把自己整理的东东拿出来吧,就是proteus元件库的中文注释,但愿对初学的你有所帮助^_^
我国古代的读书人,从上学之日起,就日诵不辍,一般在几年内就能识记几千个汉字,熟记几百篇文章,写出的诗文也是字斟句酌,琅琅上口,成为满腹经纶的文人。
为什么在现代化教学的今天,我们念了十几年书的高中毕业生甚至大学生,竟提起作文就头疼,写不出像样的文章呢?
吕叔湘先生早在1978年就尖锐地提出:
“中小学语文教学效果差,中学语文毕业生语文水平低,……十几年上课总时数是9160课时,语文是2749课时,恰好是30%,十年的时间,二千七百多课时,用来学本国语文,却是大多数不过关,岂非咄咄怪事!
”寻根究底,其主要原因就是腹中无物。
特别是写议论文,初中水平以上的学生都知道议论文的“三要素”是论点、论据、论证,也通晓议论文的基本结构:
提出问题――分析问题――解决问题,但真正动起笔来就犯难了。
知道“是这样”,就是讲不出“为什么”。
根本原因还是无“米”下“锅”。
于是便翻开作文集锦之类的书大段抄起来,抄人家的名言警句,抄人家的事例,不参考作文书就很难写出像样的文章。
所以,词汇贫乏、内容空洞、千篇一律便成了中学生作文的通病。
要解决这个问题,不能单在布局谋篇等写作技方面下功夫,必须认识到“死记硬背”的重要性,让学生积累足够的“米”。
模拟芯片(AnalogICs)
放大器(Amplifiers)
比较器(Comparators)
显示驱动器(DisplayDrivers)
过滤器(Filters)
数据选择器(Multiplexers)
稳压器(Regulators)
定时器(Timers)
基准电压(VoltageReference)
杂类(Miscellananeous)
电容(Capacitors)
可动态显示充放电电容(Animated)
音响专用轴线电容(AudioGradeAxial)
轴线聚苯烯电容(AxialLeadPolypropene)
轴线聚苯烯电容(AxialLeadPolystyrene)
陶瓷圆片电容(CeramicDisc)
去耦片状电容(DecouplingDisc)
普通电容(Generic)
高温径线电容(HighTempRadial)
高温径线电解电容(HighTemperatureAxialElectrolytic)
金属化聚酯膜电容(MetallisedPolyesterFilm)
金属化聚烯电容(MetallisedPolypropene)
金属化聚烯膜电容(MetallisedPolypropeneFilm)
小型电解电容(MinitureElectrolytic)
多层金属化聚酯膜电容(MultilayerMetallisedPolyesternFilm)
聚脂膜电容(MylarFilm)
镍栅电容(NickelBarrier)
无极性电容(NonPolarised)
聚脂层电容(PolyesterLayer)
径线电解电容(RadialElectrolytic)
树脂蚀刻电容(ResinDipped)
钽珠电容(TantalumBead)
可变电容(Variable)
VX轴线电解电容(VXAxialElectolytic)
连接器(Connectors)
音频接口(Audio)
D型接口(D-Type)
双排插座(DIL)
插头(HeaderBlocks)
PCB转接器(PCBTransfer)
带线(Ribbon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LED 数码管 显示 电子钟 11