资源描述:
《实验一 数码管实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一数码管实验一、实验目的掌握数码管的使用,了解数码管扫描的原理。二、实验内容1、实验原理开发板设计了一个四位八段共阴极数码管。P0~P7分别连接数码管的阳极,K0~K3分别连接四位的控制端。由于四位数码管公用相同的阳极,要实现数码管每一位显示不同的数字,则必须通过扫描的方式来实现,也就是说某个时刻只有一个数码管处于点亮状态,由于人眼的视觉暂留,看到的效果是是四位数码管都是同时点亮的。扫描的具体方法是:P口输出第一位数码的段码,K口控制第一位导通其它三位不导通,延时5ms后,P口输出第二位数码管的段码,K口控制第二位导通其它三位不导通,如此直到扫描完第四位后,继续扫描第一位。2、实验步骤
2、(1)用跳线帽将JP2的(QH~P7)、(QG~P6)、(QF~P5)、(QD~P3)、(QC~P2)、(QB~P1)、(QA~P0)插针短接,将BDM下载器连接到开发板上,打开开发板电源。(2)打开光盘文件中的“演示代码数码管扫描BBIT_LED2.mcp”。(3)点击(Debug)按钮,将源代码下载到单片机中,进入调试窗口。(4)点击调试窗口的(Start)按钮,程序开始执行。(5)观察实验现象,数码管显示“0000”延时一会之后,显示“1111”直到显示“9999”。延时一会儿之后显示“0.0.0.0.”,延时显示“1.1.1.1.”直至“9.9.9.9.”,如此循环。三、实验原
3、理图四、实验所用源程序(下划线部分为改动部分)#include/*commondefinesandmacros*/#include"derivative.h"/*derivative-specificdefinitions*/#defineCONT1PORTK_PK3#defineCONT2PORTK_PK2#defineCONT3PORTK_PK1#defineCONT4PORTK_PK0#defineCONT1_dirDDRK_DDRK3#defineCONT2_dirDDRK_DDRK2#defineCONT3_dirDDRK_DDRK1#defineCONT4_d
4、irDDRK_DDRK0#defineDATAPTP#defineDATA_dirDDRP#defineLEDCPUPORTK_PK4#defineLEDCPU_dirDDRK_DDRK4#defineBUS_CLOCK32000000//总线频率#defineOSC_CLOCK16000000//晶振频率byteshuma[20]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,//0~9对应的段码0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//0~9后加小数点对应的段码uns
5、ignedinti;/*************************************************************//*初始化锁相环*//*************************************************************/voidINIT_PLL(void){CLKSEL&=0x7f;//setOSCCLKassysclkPLLCTL&=0x8F;//DisablePLLcircuitCRGINT&=0xDF;#if(BUS_CLOCK==40000000)SYNR=0x44;#elif(BUS_CLOCK==32000
6、000)SYNR=0x43;#elif(BUS_CLOCK==24000000)SYNR=0x42;#endifREFDV=0x81;//PLLCLK=2×OSCCLK×(SYNDIV+1)/(REFDIV+1)=64MHz,fbus=32MPLLCTL=PLLCTL
7、0x70;//EnablePLLcircuitasmNOP;asmNOP;while(!(CRGFLG&0x08));//PLLCLKisLockedalreadyCLKSEL
8、=0x80;//setPLLCLKassysclk}/***********************************************
9、**************//*初始化端口*//*************************************************************/voidINIT_port(void){CONT1_dir=1;CONT2_dir=1;CONT3_dir=1;CONT4_dir=1;CONT1=0;CONT2=0;CONT3=0;CONT4=0;DATA_dir=0xff;DATA=0x00;}