基于tx-1c 51单片机中断使用及数码管显示的使用方法
来源:互联网 发布时间:2018-09-20 分享至微信


初学51单片机,中断快把我弄晕了,终于明白点了,怕忘了,贴在这里需要时方便自己找


锁存器电路



LED显示器连接电路



数码表编制方式:共8位从低4位到高4位,显示送高电平,如数字2二进制是0101 1011即16进制为:0x5B



C语言程序代码如下:


1 #include


2 #define uint unsigned int


3 #define uchar unsigned char


4


5 sbit dula = P2^6; //段选


6 sbit wela = P2^7; //位选


7 uchar time,num; //定时器0计数次数,数码管显示字符


8


9 void init(); //初始函数化定义


10 void desplay(); //显示函数定义


11 void delay(uint); //延时函数定义


12


13 //数字字码表 0-F


14 uchar code table[]={


15 0x3f,0x06,0x5b,0x4f,


16 0x66,0x6d,0x7d,0x07,


17 0x7f,0x6f,0x77,0x7c,


18 0x39,0x5e,0x79,0x71};


19


20 //主函数


21 void main()


22 {


23 init(); //初始化


24 desplay(); //显示


25 }


26


27 //初始化


28 void init()


29 {


30 TMOD = 1;  //工作方式


31 TH0 = 0xEE;


32 TL0 = 0x00;


33 ET0 = 1;  //打开定时器0中断


34 EA = 1;  //打开总中断


35 TR0 = 1;  //开始计时(数)


36 num = 1;


37 }


38 //数码管显示


39 void desplay()


40 {


41 wela = 1;


42 P0 = 0xFE;


43 wela = 0;


44 P0 = 0xff;


45 dula = 1;


46 P0 = 0x3F;


47 dula = 0;


48 while (1)


49 {


50 if (time==200)


51 {


52 time=0;


53 dula=1;


54 P0=table[num];


55 dula=0;


56 num++;


57 if(num==16)


58 num=0;


59 delay(10);


60 }


61 }


62 }


63 //定时器0中断


64 void time0() interrupt 1


65 {


66 TH0 = 0xEE;


67 TL0 = 0x00;


68 time++;


69 }


70 //显示延时


71 void delay(uint x)


72 {


73 uchar i;


74 while (x--)


75 for (i=0;i<110;i++);


76 }




[ 新闻来源:互联网,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!