网站导航: 首页 > 设计参考 > 正文 文章搜索
51单片机C语言编程基础及实例
 
文章编号:
090106102159
文章分类: 单片机 51系列
点 击:
...
关 键 词: C语言,基础,实例
文章来源:
网络
摘 要:
基础知识:51单片机编程基础。第一节:单数码管按键显示。第二节:双数码管可调秒表。第三节:十字路口交通灯。第四节:数码管驱动。第五节:键盘驱动。第六节:低频频率计。第七节:电子表。第八节:串行口应用。

第四节:数码管驱动
显示“12345678”
P1端口接8联共阴数码管SLED8的段极:P1.7接段h,…,P1.0接段a
P2端口接8联共阴数码管SLED8的段极:P2.7接左边的共阴极,…,P2.0接右边的共阴极
方案说明:晶振频率fosc=12MHz,数码管采用动态刷新方式显示,在1ms定时断服务程序中实现

 

 
  1. #include <at89x92.h>       
  2. unsigned char DisBuf[8];  //全局显示缓冲区,DisBuf[0]对应右SLED,DisBuf[7]对应左SLED,       
  3. void DisplayBrush( void )       
  4. {    
  5.     code unsigned char cathode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //阴极控制码       
  6.     code unsigned char Seg7Code[16]= //用十六进数作为数组下标,可直接取得对应的七段编码字节       
  7.     {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};       
  8.     static unsigned char i=0; // (0≤i≤7) 循环刷新显示,由于是静态变量,此赋值只做一次。       
  9.     P2 = 0xff;  //显示消隐,以免下一段码值显示在前一支SLED       
  10.     P1 = Seg7Code[ DisBuf[i] ]; //从显示缓冲区取出原始数据,查表变为七段码后送出显示       
  11.     P2 = cathode[ i ];   //将对应阴极置低,显示       
  12.     if( ++i >= 8 ) i=0;  //指向下一个数码管和相应数据       
  13. }       
  14. void Timer0IntRoute( void ) interrupt 1       
  15. {       
  16.     TL0 = -1000;  //由于TL0只有8bits,所以将(-1000)低8位赋给TL0       
  17.     TH0 = (-1000)>>8; //取(-1000)的高8位赋给TH0,重新定时1ms       
  18.     DisplayBrush();       
  19. }       
  20. void Timer0Init( void )       
  21. {    
  22.     TMOD=(TMOD & 0xf0) | 0x01; //初始化,定时器T0,工作方式1       
  23.     TL0 = -1000; //定时1ms       
  24.     TH0 = (-1000)>>8;       
  25.     TR0 = 1;   //允许T0开始计数       
  26.     ET0 = 1;   //允许T0计数溢出时产生中断请求       
  27. }       
  28. void Display( unsigned char index, unsigned char dataValue )   
  29. {    
  30.     DisBuf[ index ] = dataValue;    
  31. }       
  32. void main( void )       
  33. {       
  34.     unsigned char i;       
  35.     for( i=0; i<8; i++ )   
  36.     {    
  37.         Display(i, 8-i); //DisBuf[0]为右,DisBuf[7]为左    
  38.     }       
  39.     Timer0Init();       
  40.     EA = 1;   //允许CPU响应中断请求       
  41.     While(1);       
  42. }      


 

 
相关文章:

上一页 123456789 下一页
 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4