}
void ADC_int(void) interrupt 5 //ADC中断服务子程序 { }
ADC_CONTR=0x81; ADC_CONTR=0x89;
//将ADC_FLAG清0
//保存10位A/D转换结果,范围为0~1023
//重新启动A/D转换
adc_value= ADC_RES*256+ADC_RESL; }
4. 实验电路原理及硬件连线
将STC15实验板W1电位器的中间抽头(P5.5)接AD转换的输入端P1.1,转换后结果送数码管显示(0~1023)。
5. 实验内容
(1)完成ad.c程序的编辑、编译与调试。
(2)如果AD模块采用查询方式进行转换,编写程序并验证效果。 (3)如果AD模块采用定时方式进行转换,编写程序并验证效果。 6. 程序调试及效果分析
(1)通过编译软件keil编写源程序代码,编译通过没有错误,生成十六进制目标文件。 (2)通过STC单片机下载软件STC-ISP将十六进制目标文件下载到STC学习板的单片机芯片IAP15W4K58S4,验证实验效果。
(3)调节W1,观察数码管的显示值并记录。 7. 实验报告要求
(1)总结IAP15W4K58S4单片机AD转换模块的软、硬件设计原理与方法;
(2)写出所作实验程序的源代码,给每行语句加上详细的注释,在预习报告的基础上完善程序流程图;
(3)叙述程序调试过程中遇到的问题以及解决方法,写出本次实验的收获和心得体会。
17
实验七 键盘与数码LED显示接口的应用编程与调试
1. 实验目的
(1)掌握独立按键的编程应用。 (2)掌握数码管的编程应用。 2. 预习与思考
(1)预习13.2.1内容。
(2)预习13.2.1、13.2.3内容。 (4)画出独立按键电路原理图。
(5)画出串行数据动态扫描数码管显示电路原理图。
(6)分析595hc.h头文件(见附录)和key-display.c的程序功能。 3. 实验参考程序(key-display.c)
#include \#include \#include
#define uchar unsigned char
#include \包含数码管显示头文件 sbit SW17 = P3^2; sbit SW18 = P3^3; { }
void main(void) {
signed int i=0; //为了i能小于0,定义i为有符号变量,初始值0 GPIO(); while(1) {
if(SW17==0) {
Delay(10000); //按键消抖 if(SW17==0) {
i--;
//变量i减1
//判断如果i小于0就回到99 //等待按键松开
18
if(i<0){i=99;} while(SW17==0);
//按键-
//初始化I/O端口为准双向口 //主程序
while(v!=0)
v--;
//定义按键- //定义按键+
//包含单片机头文件 //包含初始化I/O端口头文件
void Delay(unsigned int v)
}
}
}
if(SW18==0) { }
Dis_buf[6]=i/10;//数码管显示十位数据 Dis_buf[7]=i;//数码管显示个位数据 display();
Delay(10000); //按键消抖 if(SW18==0) { }
i++;
//变量i加1
//判断如果i大于99就回到0 //等待按键松开
if(i>99){i=0;} while(SW18==0);
//按键+
}
4. 实验电路原理及硬件连线
STC15学习板上已经连接好两个独立按键,分别是按键SW17(P3.2引脚)和按键SW18(P3.3引脚)。
硬件电路原理图参考STC15开发板电路图。图中由两片74HC595组成串行数据转并行数据驱动8位数码管显示。STC学习板上IAP15W4K58S4单片机P4.0引脚已经连接好74HC595的串行数据SER;P4.3引脚已经连接好74HC595的位同步脉冲输出SRCLK;P5.4引脚已经连接好74HC595的锁存脉冲输出RCLK。 5. 实验内容
(1)利用IAP15W4K58S4单片机设计两个独立按键SW17(P3.2)和SW18(P3.3),实现按下SW17使2位LED数码管显示的数字加1,按SW18显示的数字减1,当加1到最大值99后回到最小值0,当减1到最小值0后回到最大值99。单片机工作频率为12.0MHz。 (2)修改程序,实现当加1到最大值99后继续按键则保持最大值并给出报警,当减1到最小值0后继续按键保持最小值并给出报警。
(3)修改程序,实现按下按键SW17不松开可以连续减1,按下按键SW18不松开可以连续加1。
(4)修改程序,实现3位数0~999、4位数0~9999的显示。 (5)修改程序,实现数码管左边最高位是0时不显示。
(6)按下按键SW17,有时候显示可能不是减1,而是减2,同理按下按键SW18,有时候显示可能不是加1,而是加2,请分析是什么原因。 6. 程序调试及效果分析
(1)通过编译软件keil编写源程序代码,编译通过没有错误,生成十六进制目标文件。
19
(2)通过STC单片机下载软件STC-ISP将十六进制目标文件下载到STC学习板的单片机芯片IAP15W4K58S4,验证实验效果。
(3)程序对独立按键进行识别,并对变量加一或减一操作,通过数码管的显示可观察。 (4)修改C语言源程序里面相关参数,观察实验效果的变化。 7. 实验报告要求
(1)总结独立按键与LED数码管显示的软、硬件设计原理与方法;
(2)写出所作实验程序的源代码,给每行语句加上详细的注释,在预习报告的基础上完善程序流程图;
(3)叙述程序调试过程中遇到的问题以及解决方法,写出本次实验的收获和心得体会。
20

