文档详情

实验二(六位数码管动态显示实验).doc

发布:2017-12-15约2.76千字共5页下载文档
文本预览下载声明
实验二: 6位数码管动态显示器实验 实验目的 在实践中加深理解数码管的内部结构和特点以及使用方法; 熟悉数码管动态显示实验电路的工作原理; 理解和掌握数码显示字符的编程方法; 掌握用数码管显示字符代码的计算方法。 实验器材 一台PC机 一套MPLAB-IDE和Proteus仿真教学系统 实验原理 硬件原理图 电路功能: 把要显示的数据5,4,3,2,1,0先放入以DISHC单元开始的显示缓冲区,然后取出送数码管动态显示。 软件设计思路与参考程序清单 程序设计流程图如下: 参考程序如下: /************************************************************** 实现的功能:使数码管从左到右各显示0-5 芯片PIC16F877 XT:4MHZ ***************************************************************/ #include pic.h //包含单片机内部资源预定义 //定义数组display_numb[10],用于存放数字0~9的段码 unsigned char display_numb[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // 0 , 1 2 3 4 5 6 7 8 9 //定义数组display_data[6],用于存放显示的数字,0:L 5:R unsigned char display_data[6]; unsigned char y=0x00; /************************************************************** 端口初始化 PORTD作为数码管段驱动(高有效) PORTE作为数码管位选择驱动(低有效) ***************************************************************/ void init_port(void) { PORTD=0x00; //D口输出低电平 TRISD=0; //D口当作数码管段,设置成输出 ADCON1=0x07; //使A口,E口全为数字I/O口 TRISE=0; //A口当作数码管位选择控制脚,设置成输出 PORTE=0x00; //E口输出低电平 } /************************************************************** 1毫秒延迟程序程序 ***************************************************************/ void delay_1ms(void) { unsigned int n; for(n=0;n50;n++) { NOP(); } } /************************************************************** 若干毫秒延迟程序程序 ***************************************************************/ void delay_ms(unsigned int time) { for(;time0;time--) { delay_1ms(); } } /************************************************************** 主程序 从左到右显示0-5 ***************************************************************/ void main(void) { unsigned char n; //定义变量n init_port(); //端口初始化 display_data[0]=display_numb[0]; //将“0”的段码送入display_data[0] display_data[1]=display_numb[1]; //将“1”的段码送入display_data[1] display_data[2]=display_numb[2]; //将“2”的段码送入display_data[2] display_data[3]
显示全部
相似文档