预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(word完整版)基于51单片机状态机矩阵键盘扫描数码管动态显示的时钟系统(word完整版)基于51单片机状态机矩阵键盘扫描数码管动态显示的时钟系统(word完整版)基于51单片机状态机矩阵键盘扫描数码管动态显示的时钟系统/******************************************************************************程序功能:基于状态机的线性反转扫描方法实现按键扫描数码管动态显示开发环境:KeiL4硬件环境:STC12C5A60S2,11.0592接线说明:单片机P1口接底板JP29,具体接法为:P10—L1,P11—L2,P12—L3,P13-L4,P14-L5,P15-L6,P16-L7,P17-L8单片机P20~P21接底板JP26,具体接法:P20—DS,P21—SHCP,P22-STCP跳线说明:J70实验现象:数码管动态显示时钟时间同时显示当前被按下的键值可通过矩阵键盘对时钟进行开关已经参数调试******************************************************************************/#include<REG52。h>typedefunsignedcharuint8;typedefunsignedintuint16;#defineKEY_PORTP1//定义4x4键盘使用的单片机端口sbitSEG_DS=P2^0;//74HC595芯片的数据引脚sbitSEG_SHCP=P2^1;//74HC595芯片的控制引脚,上升沿移入数据sbitSEG_STCP=P2^2;//74HC595芯片的控制引脚,上升沿更新数据//*****************************************************************************//全局变量//*****************************************************************************charhour,min,sec;//秒分时uint8Clock_flag;//时钟开关标志位uint8ct_flag;//按键长按标志位//*****************************************************************************//反转法矩阵键盘的各个按键的计算值unsignedchartabLe[]={0xee,//00xed,//10xeb,//20xe7,//30xde,//40xdd,//50xdb,//60xd7,//70xbe,//80xbd,//90xbb,//100xb7,//110x7e,//120x7d,//130x7b,//140x77//15};//共阳数码管的编码,并将数据定义在CODE区unsignedcharcodeSeg_Data[]={0xc0,/*0*/0xF9,/*1*/0xA4,/*2*/0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xF8,/*7*/0x80,/*8*/0x90,/*9*/0x88,/*A*/0x83,/*b*/0xC6,/*C*/0xA1,/*d*/0x86,/*E*/0x8E,/*F*/};//数码管位选编码,控制显示8位中的第几位unsignedcharcodeSeg_Addr[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xFF,//ALLON0x00//OFF};//*****************************************************************************//函数声明//*****************************************************************************voidSEG_Send595OneByte(unsignedcharucData);//向74HC595写入一个8位的数据//指定数码管显示定数字voidDispLayOneCharOnAddr(unsignedcharData,unsignedcharAddr);unsignedcharKey_Scan(void);//基于状态机的按键扫描voidParameter_Setting(uint8key_value_get);//按键参数设置voidTimer0Configuration();//定时器初始化voidCLOCK(void);//时钟运行函数//******