懒猫爱飞

牛年单片机学习日记--数码显示

0
阅读(1467)

10676826202875.rar(俺的proteus仿真和c 程序源代码)

Sun Feb 15 2009                               星期日                                    阴冷
         今天上午钻进自习室看了一上午C语言,感觉很多东西真是忘了,不过还好,现在看看又想起了,好坏也在大学呆呆的坐了四年,总不能赤裸裸的来,还赤裸裸的走吧。
         中午吃过饭,打开电脑登录E空间看了看匠人的博客,真想找个地缝钻进去永不出来,高手,高手,匠人真是高手。想一想像我这样的小菜鸟什么时候才能会飞呀!苍天呀,大地呀……
         后来想一想,天才也是靠勤奋练出来的哀叹有什么用,还是脚踏实地的干吧,匠人不是也曾经当过学徒吗?我不企望一嘴吃个胖子,只要俺一天进步一点点,俺也能看到希望的曙光^_^
    说了那么多,我还是开始我今天的学习之旅吧········
   今天学习数码显示:
 
 
本来想把独立键盘也 练习一下,不过考虑到不会爬的小家伙就想学跑可能会摔倒,那么,俺还是慢慢来了……
#include<reg51.h>
#define uchar unsigned char
#define uint  unsigned int
uchar code duan[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
uchar code wei[]={0x01,0x02,0x04,0x08}; //wei ma
void msec(uint x);  //1ms delay function
/**********************************************/
/*          主函数                            */
/**********************************************/
void main()
{
 uchar i;
 while(1)
 {
 for(i=0;i<4;i++)
 {
 P2= wei[i]; 
 P0= duan[i];
 //P0=0X4F;    //测试段码
 msec(10);
 P2=0;
 }
 }
}
/************************************************/
/*           delay 1ms       */
/***********************************************/
void msec(uint x)
{
 uchar j;
 while(x--)
 {
  for(j=0;j<125;j++)
  {;}
 }
}
这是俺写的数码管动态显示程序,编译也通过了,仿真也出来了,可是不知怎么回事,本来第四个数码管应该显示3的结果显示成9了,真是奇怪了,我测试了一下,我写的段码也没问题呀,我用的是共阴极数码管,3 的段码应该是0X4F,可是为啥显示不正常呢???
   呵呵,搞定了,原来是循环太多了,只要在for语句中的i小于4就ok了(原来是5)……
   看来以后是得小主一点了……