启蒙电子 - DG3000配套教程
DG3000配套教程-网页版
实验一:如何用单片机点亮一个发光二极管
实验二:实现发光二极管流水灯功能
实验三:如何用单片机控制蜂鸣器
实验四:光耦与控制试验
实验五:单片机控制继电器实验
实验六:串口通讯试验
实验七:一个LED数码管显示字符实验
实验八:8位动态LED数码管显示实验
实验九:6位静态LED数码管显示实验
实验十:1602字符液晶显示实验
实验十一:128*64图形液晶显示实验
实验十二:16*16点阵显示实验
实验十三:独立控制按键实验
实验十四:4*4矩形控制按键实验
实验十五:红外遥控解码实验
实验十六:EEPROM(AT24C02)读写实验
实验十七:时钟芯片(PCF8563)显示时间实验
实验十八:温度(单总线DS18B20)显示实验
实验十九:ADC(TLC549)模数转化实验(1-5V)
实验二十:LM358运放的应用(0-1V ADC转化实验)
实验二十一:温度湿度(温湿度模块)显示实验
实验二十二:DAC(DAC0832)数模转化实验
实验二十三:接触式IC卡(SLE4442)读写实验
实验二十四:PS2键控制驱动试验
实验二十五:直流电机驱动实验
实验二十六:步进电机驱动实验
实验二十七:微型打印机驱动实验
DG3000配套教程-实验九:6位静态LED数码管显示实验

9.1 6位静态显示模块与原理图


9.2 静态模块显示原理
根据CD4094驱动原理,我们用一个CD4094驱动一个LED,然后串联起来,如果显示6个数据,我们先一次性发送6个数据给CD4094,然后置位显示即可。
9.3 静态模块显示头文件DIS.h
//----------------------------------------------------------
//启蒙电子:http://www.51c51.net
//QQ:501501561 502502562
//E-Mail:atc51@163.com 501501561@163.com
//----------------------------------------------------------
//程序设计:豆豆
//适用型号:DG3000综合开发试验仪
//----------------------------------------------------------
//----------------------------------------------------------
//程序作用:静态显示头文件DIS.h
//----------------------------------------------------------

//----------------------------------------------------------
#ifndef _display_
#define _display_
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//显示与单片机接口
sbit DIS_STB=P2^5;
sbit DIS_CLK=P2^7;
sbit DIS_SDA=P2^6;
//关闭显示
#define shut_dis() DIS_STB=1;
#define shut_bit() 0xff;
//0~9
unsigned char code led[18]={0x81,0xb7,0xc2,0x92,0xb4,0x98,0x88,0xb3,0x80,0x90,
0xa0,0x8c,0xc9,0x86,0xc8,0xe8};//abcdef
/*子程序*/
void delay(unsigned int k); //延时子程序
void send(unsigned char a); //串入并出子程序
void display(uchar display_buffer[4]); //数码管显示子程序

//延时程序
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
for(j=0;j<100;j++);
}

//串入并出发送数据子程序

void send(unsigned char a)
{
unsigned char i;
for(i=0;i<8;i++)
{
if(_crol_(a,i)&0x80)
DIS_SDA=1;
else
DIS_SDA=0;
DIS_CLK=0;
DIS_CLK=1;
}
}
//----------------------------------------------------------
//启蒙电子:http://www.51c51.net
//QQ:501501561 502502562
//E-Mail:atc51@163.com 501501561@163.com
//----------------------------------------------------------
//数码管显示子程序
void display(uchar display_buffer[6])
{ uchar i,k;
DIS_STB=0;
for(i=0;i<6;i++)
{
k=led[display_buffer[i]];
send(k);
delay(0x01);
}
DIS_STB=1;
}
#endif
9.4静态模块显示程序012345 (C51)
//6 bit 数码管静态驱动显示程序:012345
#include<REG52.h>
#include<DIS.h>
main()
{
unsigned char rt[6]={0x00,0x01,0x02,0x03,0x04,0x05};//显示数据缓冲区
while(1)
{
display(rt);
}
9.4静态模块显示程序012345 (汇编)
;----------------------------------------------------------
;程序作用:6位数码管静态显示012345(汇编)
;----------------------------------------------------------
DSTB BIT P2.5;CD4094与单片机的接口
DCLK BIT P2.7
DDATA BIT P2.6

DBUF DATA 40H ;显示缓冲区首址
;------------------------------------------------------
ORG 0000H
JMP MAIN
;------------------------------------------------------
MAIN: MOV SP,#60H
MOV R0,#0FFH;单元清零
RES1: MOV @R0,#0
DJNZ R0,RES1
MOV DBUF,#00H;要显示的数据
MOV DBUF+1,#01H
MOV DBUF+2,#02H
MOV DBUF+3,#03H
MOV DBUF+4,#04H
MOV DBUF+5,#05H
LOOP1:
CALL DIRS
JMP LOOP1

DELAY: ;延时R5×10MS
MOV R6,#50
DELAY1: MOV R7,#100
DJNZ R7,$
DJNZ R6,DELAY1
DJNZ R5,DELAY
RET
;-----------------------------------------------------
KEYTABLE:
DB 0EEH,0EDH,0EBH,0E7H,0DEH ;0,1,2,3,4, 顺序码
DB 0DDH,0DBH,0D7H,0BEH,0BDH ;5,6,7,8,9,
DB 0BBH,0B7H,07EH,07DH,07BH ;A,B,C,D,E,
DB 077H,0FFH ;F 0FF为结束码
;-----------------------------------------------------
;键值显示子程序
;使用一个数码管显示
;-----------------------------------------------------
DIRS:
CLR DSTB
;开始送数据

MOV A,DBUF
MOV DPTR,#DISPLAY_CODE
MOVC A,@A+DPTR
LCALL TRT

MOV A,DBUF+1
MOV DPTR,#DISPLAY_CODE
MOVC A,@A+DPTR
LCALL TRT

MOV A,DBUF+2
MOV DPTR,#DISPLAY_CODE
MOVC A,@A+DPTR
LCALL TRT

MOV A,DBUF+3
MOV DPTR,#DISPLAY_CODE
MOVC A,@A+DPTR
LCALL TRT

MOV A,DBUF+4
MOV DPTR,#DISPLAY_CODE
MOVC A,@A+DPTR
LCALL TRT

MOV A,DBUF+5
MOV DPTR,#DISPLAY_CODE
MOVC A,@A+DPTR
LCALL TRT

SETB DSTB
RET
DISPLAY_CODE:
DB 81H,0B7H,0C2H,92H ;0,1,2.3
DB 0B4H,98H,88H,0B3H ;4,5,6,7
DB 80H,90H,0A0H,08Ch ;8,9,a,b
DB 0C9H,86H,0C8h,0E8h ;c,d,e,f
RET
;----------------------------------------
TRT:
MOV R3,#08H
TRT1: CLR DCLK
RLC A
MOV DDATA,C
LCALL MS30
SETB DCLK
LCALL MS30
DJNZ R3,TRT1
LCALL MS30
RET
;-------------------------
;延时
;------------------------
MS30: MOV R7,#0FH
MS31: MOV R6,#0FH;
MS32: DJNZ R6,MS32
DJNZ R7,MS31
RET
;-----------------------------
END


友情链接 | 诚聘英才 | 关于我们 | 版权声明 | 联系我们 | 广告服务
Copyright©2007 启蒙电子 www.51c51.net 版权所有
技术支持QQ:501501561 销售咨询QQ:502502562
鲁ICP备05007129