标题: 单片机数码显示学号的程序 [打印本页]

作者: yzb813169284    时间: 2019-7-1 09:48
标题: 单片机数码显示学号的程序
掌握74LS164驱动数码管显示和用C51编写显示函数的方法。能够使数码管上显示的数据以左移的方式显示出自己学号的全部(每隔1S钟左移一位) 


单片机源程序如下:
  1. #include <reg51.h>        //头文件

  2. #define uchar unsigned char

  3. #define uint  unsigned int  //宏定义   

  4. uchar disbuf[12];

  5. uchar aa,bb;

  6. void sx(void);

  7. void delay(uint z)          //延时1ms函数

  8. {

  9. uint i,j;

  10. for(i=0;i<z;i++)

  11. for(j=0;j<121;j++);

  12. }

  13. void intimer1(void) interrupt 2    //外部中断1中断服务函数

  14. {

  15. for(aa=0;aa<12;aa++)

  16. {

  17. disbuf[aa]=17;

  18. }                        //清显示


  19. }

  20. void display(void)  //显示函数

  21. {

  22. uchar s,n;

  23. code uchar  tab[]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc,0X80,0X90,

  24. 0xa0,0x83,0xc9,0x86,0xc1,0xe1,0xa2,0xff}; //数码管显示数据字型码表

  25. for(s=0;s<=11;s++)

  26. {

  27. SBUF=tab[disbuf[s]];    //送显示数据

  28. for(n=0;n<4;n++)

  29. delay(250);            //软件延时1s钟

  30. }

  31. }

  32. void main(void)

  33. {

  34. EA=1;

  35. EX1=1;

  36. do

  37. {

  38. for(bb=0;bb<12;bb++)

  39. {

  40. disbuf[bb]=17;

  41. }                  //将显示数据清零

  42. delay(2);            //延时2MS

  43. sx();              //送显示函数

  44. display();          //显示函数

  45. }while(1);

  46. }

  47. void sx(void)          //送显示函数

  48. {


  49. disbuf[0]=0;      //显示数据的第1位

  50. disbuf[1]=9;      //显示数据的第2位

  51. disbuf[2]=1;      //显示数据的第3位

  52. disbuf[3]=0;    //显示数据的第4位

  53. disbuf[4]=1;    //显示数据的第5位

  54. disbuf[5]=0;    //显示数据的第6位

  55. disbuf[6]=1;    //显示数据的第7位

  56. disbuf[7]=3;    //显示数据的第8位

  57. disbuf[8]=2;    //显示数据的第9位

  58. disbuf[9]=17;

  59. disbuf[10]=17;

  60. disbuf[11]=17;  //最后三位用于与下一次显示数据区分开

  61. }
复制代码


作者: 176565    时间: 2020-9-17 15:04
你这个程序不亮啊





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1