实验二(六位数码管动态显示实验).doc
文本预览下载声明
实验二: 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]
显示全部