“导航按键与数字按键综合控制数码管”程序设计说明
1 工程文件下载:
2 程序设计思想框架说明
本实验中按键1、2是通过触发0号和1号外部中断来分别控制一个数码管信号显示位置的循环右移和循环左移,模拟量按键3(该键既是模拟按键又是数字按键,这里使用到的是其模拟按键功能),通过对AD模拟转换值判断是锁定还是释放数码管信号显示(即通过该按键来控制数码管信号显示位置是否能移动),导航键的上拉和下拉键通过对其AD模拟转换值的判断来控制数码管信号显示内容,期间所有按键均采用延时消抖,AD模拟转换结果(本实验这里只获取ADC_RES寄存器中的8为转换值)要通过线性右移8位(即只保留高三位)来消除转换误差。

3 相关寄存器配置
P0(8位)和P2.3需要设置成推挽输出,以驱动电路正常发光。涉及寄存器及配置值如下:
P2M1=0x00;
P2M0=0xff;
P0M1=0x00;
P0M0=0xff;
TMOD寄存器:

初始化时,设置定时器0,工作模式1即16位普通工作模式,TMOD= 0x01 ;
IE寄存器:

初始化时,设置EA=1,打开总的中断,设置ET0=1开启定时器0的中断;设置EX0=1开启外部中断0;设置EX1=1开启外部中断1;
TH0、TL0寄存器:
设置初始值为TL0=#0A4H;TH0=#0FFH,即0号定时器中断50us触发一次。
TCON寄存器:

初始化时,设置TR0=1启动定时器0;设置IT0=0、IT1=0即外部中断0、1都为脉冲触发。
IP寄存器:

初始化时,设置PT0=1,定时器0为高优先级;
P1ASF()寄存器:

初始化时设置P1ASF=#0FFH,将P1.0~7口作为模拟功能A/D使用。
ADC_CONTR寄存器

初始化设置ADC_CONTR=#8FH,开启AD模拟转换器,并且开始进行转换,选择P1.7作为A/D输入来用
CLK_DIV寄存器

初始化设计CLK_DIV=#00H,ADC_RES[7:0]存放高8为ADC结果,ADC_RESL[1:0]存放低2位ADC结果。
注:具体的一些单片机寄存器的使用功能请参照STC15F2K60S2数据手册。
与STC15系列单片机A/D转换相关的寄存器如表2所示。
表2 与A/D相关的寄存器












