登录
首页 单片机论坛
回帖 发帖
正文

主题:自己亲手编写的单片机数码管时钟c程序

点击:2265 回复:11

交代一下前提,本人对单片机的兴趣由来已久,但是一直没什么突破。一直停留在定时和中断前的水平。这几天潜心修炼,看视频看电子书,终于搞出一个来让我兴奋的时钟程序。(我是低手,高手不要鄙视啊)
数码管的断选是p0,位选是p2,共八个。开机显示12-00-00然后计时。简单的没有其他功能的。
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//共阳极数码管0123456789-
uchar count,second,minute,hour=12;
void delay1ms(uint z)//郭天祥视频里德1ms延时程序
{
uint x,y;
{
 for(x=z;x>0;x--)
 {
  for(y=110;y>0;y--);
 }
}
}
void t0() interrupt 1 //定时器0
{
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
count++;
if(count==20)
{
 count=0;
 second++;
 if(second==60)
 {
  second=0;
  minute++;
  if(minute==60)
  {
   minute=0;
   hour++;
   if(hour==24)
   {
    hour=0;
   }
  }
 }
}
}
void main()
{
tmod=0x01;
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
et0=1;
tr0=1;
ea=1;
while(1)
{
p2=0xff;
p2=0x7f;
p0=table[second%10];
delay1ms(2);
p2=0xbf;
p0=table[second/10];
delay1ms(2);
p2=0xdf;
p0=table[10];
delay1ms(2);
p2=0xef;
p0=table[minute%10];
delay1ms(2);
p2=0xf7;
p0=table[minute/10];
delay1ms(2);
p2=0xfb;
p0=table[10];
delay1ms(2);
p2=0xfd;
p0=table[hour%10];
delay1ms(2);
p2=0xfe;
p0=table[hour/10];
delay1ms(2);
}
}
显示的结果就是从12点开始走表。虽然最最简单的程序,但是还是对我有不小的鼓舞,哈哈。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=121286&Name=h661005
10-08-14 15:04
自己动手试验,比看书强多了;
首先试验,多是从简单的开始;
一旦成功,自己会非常高兴!


10-08-14 17:46
可以啊,我也最近在学,有机会交流下
10-08-15 09:02
动手试验
12-03-23 15:18
看看啊表情
12-03-31 21:24
挺好的,继续努力
12-04-03 22:34
自己动手试验,比看书强多了;
首先试验,多是从简单的开始;
一旦成功,自己会非常高兴!
13-12-30 21:53
不错,好的,
14-07-28 08:09
楼主的程序,肯定是复制下来的吧,这程序能编译通过?
14-09-02 13:28
“断选”应该是“段选”,
14-10-01 19:23

上一页下一页

工控新闻

更多新闻资讯