原创 学习单片机只能坚持!!!

2007-4-15 10:43 6748 11 13 分类: MCU/ 嵌入式

我在学单片机,学学停停..停停学学...发现这样根本提高不了自己.


以前学的都给忘了...今天搞一个简单的按键LED程序都搞了很长时间.还出错了.


HEHE...小错误.居然是把IO口的高低位弄反了...


真是晕...看来搞单片机的程序.只能一直坚持...准备有空DIY下一个电源玩玩..


底下附上我这次搞的一个超小程序...


配合我博客上的实验板8个按键.分别让LED显示1111-8888.


#pragma db code
#include<AT89X51.H>
#include<ic2.h>
#define uchar unsigned char
#define uint  unsigned int


/*=====数码管位及按键定义=====*/
sbit LED_0=P1^0;
sbit LED_1=P1^1;
sbit LED_2=P1^2;
sbit LED_3=P1^3;


/*=====0-9=====A-G=====*/
uchar a[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
             0x80,0x90,0x88,0x83,0xc6,0x86,0x8e,0x82};


/*=====四个数码管显示数据存放处=====*/
uchar one,two,three,four;
uint key;



void delay(uint x);
void display(void);
void led_analyze(uint i);
void keyl();



void main()
{
  while(1)//无限循环
  {
 keyl();//调用按键子程序
 led_analyze(key);//调用分解数据子程序
    display();//调用显示子程序
 
 }
}
/*====键盘扫描=====*/
void keyl()
{
 
  P2=0xfd;//开按键
  if(P2!=0xfd)//判断有无键按下
  {
    delay(500);//延时
 if(P2!=0xfe)//有键按下,判断哪个键按下执行某项操作
  {
    if(P2==0xf9) key="1111";
    else if(P2==0xf5) key="3333";
       else if(P2==0xed) key="5555";
    else if(P2==0xdd) key="7777";
    }
  }
 
  P2=0xfe;//开按键
  if(P2!=0xfe)//判断有无键按下
  {
    delay(500);//延时
 if(P2!=0xfd);//有键按下,判断哪个键并执行操作
 {
 if(P2==0xfa) key="2222";
 else if(P2==0xf6)key=4444;
 else if(P2==0xee)key=6666;
 else if(P2==0xde)key=8888;
 }
 }
}


  


/*====延时函数=====*/
void delay(uint x)
{
  uint i;
  for(i=0;i<x;i++);
}



/*====显示函数=====*/
void display(void)
{
  P0=a[one];//调用显示数据
  LED_0=0;  //显示开
  delay(100);    //调用键盘扫描
  LED_0=1;  //关显示


  P0=a[two];
  LED_1=0;
  delay(100);
  LED_1=1;


  P0=a[three];
  LED_2=0;
  delay(100);
  LED_2=1;


  P0=a[four];
  LED_3=0;
  delay(100);
  LED_3=1;
}


/*====分解显示数据=====*/
void led_analyze(uint i)
{
    one="i/1000";
    two=(i/100)%10;
    three=(i%100)/10;
    four=(i%100)%10;
}
/*=====================*/

文章评论2条评论)

登录后参与讨论

用户1337912 2009-5-12 12:27

不错的资料~谢谢~

用户514462 2008-7-30 23:56

先谢谢,再顶一个哈

用户1272036 2008-5-31 17:56

谢谢!

用户140223 2008-5-8 16:59

ths

用户131105 2008-2-8 12:09

下载看看,多谢

用户1405008 2007-12-30 13:06

支持,顶起!

用户498106 2007-12-29 20:03

zhichi!

用户115469 2007-12-29 08:56

不错!谢谢!

用户130362 2007-12-29 08:40

先顶一个了

用户60235 2007-6-4 18:30

说的很对,学习单片机确实是这样的,过一段时间不动就忘记了。
相关推荐阅读
wang1jin 2011-11-13 16:39
wang1jin单片机视频教程115盘下载地址!(迅雷下载)
  为了大家下载方便,我购买了一个115盘的空间,可以长期快速的为大家提供视频下载。   下载地址如下,如果下载上有什么问题,可以及时联系我,我给大家解决!       ...
wang1jin 2011-05-04 19:14
《51单片机C程序应用实例详解》随书代码下载
 最近有朋友向我反映《51单片机C程序应用实例详解》的DVD光盘中没有随书的代码,我去打开DVD光盘一看.确实是没有.可能是出版社当时没有放进去,为此我向广大的读者道歉.  当然道歉是不够的,代码也要...
wang1jin 2011-04-26 21:30
和朋友一起出的一本书《51单片机C程序应用实例详解》
本书是由sunhm、指挥和wang1jin三人合作完成。《51单片机C程序应用实例详解》在北京航空航天大学出版社的大力支持下,终于付印了,这是本人与另外两位朋友花费一年多心血完成的。  编写本书的初衷...
wang1jin 2010-11-26 15:29
请注意:PROTEL99SE视频被人刻成DVD来高价出售
最近在电子QQ群中,有一个QQ为1429474268人发了一条消息,(抱歉请允许我公开这个QQ)。他发了一条广告:实现PCB LAYOUT工程师梦想的同仁请进:http://item.taobao.c...
wang1jin 2010-06-21 13:40
wang1jin带您从零学单片机视频教程第一章下载地址
内容介绍:电子爱好者社区$Zk Q6^6L ~ _ I8h#zM0s5G(R一、单片机硬件讲解部分详细讲述了:电子爱好者社区4[7g Tt"Efff uH k.Q2aZ01、什么是单片机。电子爱好者社...
wang1jin 2010-06-17 22:34
无法下载视频教程的朋友可以购买最新刻的光盘!
最近网站上的视频教程因为服务器的问题,一直无法下载。很多网友也在问我怎么不能下载。因为我个人也没有能力去购买服务器,为大家提供这个视频的下载,为此我感觉到很抱歉。为了解决这个问题,我已经找到应对的方法...
我要评论
2
11
关闭 站长推荐上一条 /2 下一条