单片机C语言程序设计:8X8LED 点阵显示数字
扫描二维码
随时随地手机看文章
/* 名称:按键控制 8X8LED 点阵屏显
示图形
说明:每次按下 K1 时,会使 8X8LED
点阵屏循环显示不同图形。
本例同时使用外部中断和定
时中断。
*/
#include<reg51.h>
#include<intrins.h> #define uchar unsigned char #define uint unsigned int //待显示图形编码 uchar code M[][8]= { {0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00}, //图 1 {0x00,0x38,0x44,0x54,0x44,0x38,0x00,0x00}, //图 2 {0x00,0x20,0x30,0x38,0x3c,0x3e,0x00,0x00} //图 3 }; uchar i,j; //主程序 void main() { P0=0xff; P1=0xff; TMOD=0x01; //T0 方式 1 TH0=(65536-2000)/256; //2ms 定时 TL0=(65536-2000)%256; IT0=1; //下降沿触发 IE=0x83; //允许定时器 0、外部 0 中断 i=0xff; //i 的初值设为 0xff,加 1 后将从 0 开始 while(1); } //T0 中断控制点阵屏显示 void Show_Dot_Matrix() interrupt 1 { TH0=(65536-2000)/256;//恢复初值 TL0=(65536-2000)%256; P0=0xff; //输出位码和段码 P0=~M[i][j]; P1=_crol_(P1,1); j=(j+1)%8; } //INT0 中断(定时器由键盘中断启动) void Key_Down() interrupt 0 { P0=0xff; P1=0x80; j=0; i=(i+1)%3; //i 在 0,1,2 中取值,因为只要 3 个图形 TR0=1; } 单片机C语言程序设计:8X8LED 点阵显示数字" width="550" height="361" /> 扩展阅读:定时器控制数码管动态显示程序