第二十课 按键之六 矩阵按键之按键数码管显示(综合)
程序讲解:(如果前面的课程学的差不多了,这节可估计会比较容易)
/*--------------------------------------------------------------*/
//LED八位数码滚动显示
//显示部分用中断方式,便于程序的拓展
/*--------------------------------------------------------------*/
//包含头文件
#include <reg52.h>
#include "74HC595.H"
#include "Key_Board.H" //矩阵按键头文件(上节可内容)
//全局变量定义
unsigned char LED_Pos; //位扫描
unsigned char LED_Seg[8] = {16,16,16,16,16,16,16,16};
/*--------------------------------------------------------------*/
//定时器初始化 (呵呵..还要讲么?)
void T0_init(void) //不是很清楚的可以看看 第十四课 内容
{
TMOD = 0x01;
TH0 = 0xf8; //2000us
TL0 = 0x36;
IE = 0x82;
TR0 = 1;
}
/*--------------------------------------------------------------*/
//LED显示函数2
volatile void LED_Display2(void)
{
Ser_IN(0x01 << LED_Pos); //位选
Ser_IN(seg[LED_Seg[LED_Pos]]); //段码
Par_OUT();
LED_Pos++; //循环扫描
if(LED_Pos == 8) LED_Pos = 0;
}
/*--------------------------------------------------------------*/
//定时器中断服务
void T0_intservice(void) interrupt 1
{
TH0 = 0xf8;
TL0 = 0x36;
LED_Display2();
}
/*-------------------------------------------------------------*/
//主函数
void main(void)
{
unsigned char i;
T0_init();
while(1)
{
for(i = 0; i < 8; i++)
LED_Seg = key_scan(); //键值送到数码管显示
}
}
本节重点(由于都是以前讲过的这里就不再赘述了哈!)
1、第十九课 按键之五 矩阵按键之查表扫描:
http://blog.ednchina.com/lmjxf/234199/message.aspx
2、第九课 一个比较重要的驱动函数的讲解(74HC595)
http://blog.ednchina.com/lmjxf/231935/message.aspx
演示视频:
http://v.youku.com/v_show/id_XOTIzNjM4Mjg=.html
相关程序:https://static.assets-stash.eet-china.com/album/old-resources/2009/6/2/8b6c4647-3f34-402d-b239-3a2b3478b1ee.rar
tengjingshu_112148725 2009-6-2 23:12