找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5271|回复: 1
打印 上一主题 下一主题
收起左侧

单片机数码显示学号的程序

[复制链接]
跳转到指定楼层
楼主
掌握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. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:819825 发表于 2020-9-17 15:04 | 只看该作者
你这个程序不亮啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表