单片机-数码管显示开发实验
关于单片机的一些小实验_06 一位数码管静态显示

#define SMG6_ON() (P0_5=0) //定义"SMG6_ON()"为P0.5输出低电平,选中数码管6
#define SMG6_OFF() (P0_5=1) //定义"SMG6_OFF()"为P0.5输出高电平,不选中数码管6
// 0 1 2 3 4 5 6 7 8 9 A b C d E F
/********************************************************************************************
*函数名称:main()
*功能:控制数码管1~8每个依次显示"0"~"F"这十六个字符
* 4.短接P0.0__SMG1
*短接P0.1__SMG2
*短接P0.2__SMG3
*短接P0.3__SMG4
*短接P0.4__SMG5
*短接P0.5__SMG6
*短接P0.6__SMG7
*短接P0.7__SMG8
*短接P2.7__SI1
*短接P2.6__RCK1
*短接P2.5__SCK1
*日期:2014年04月23号
typedef unsigned int uint32; //无符号32位整型变量
typedef signed int int32; //有符号32位整型变量
typedef float fp32; //单精度浮点数(32位长度)
typedef double fp64; //双精度浮点数(64位长度)
单片机数码管动态显示

动态显示1.掌握LED数码管显示及其一般电路结构;2.掌握LED动态显示程序的一般设计方法。
一、实验内容动态显示,也称为扫描显示。
显示器由6个共阴极LED数码管构成。
单片机的P0口输出显示段码,由一片74LS245输出给LED管;由P1口输出位码,经74LS04输出给LED显示。
二、实验步骤1、打开Proteus ISIS编辑环境,按下表所列的元件清单添加元件。
图1 动态显示实验电路原理图2、按实验要求在KeilC中创建项目,编辑、编译程序。
3、将编译生成的目标码文件(后缀为.Hex)传入Proteus的实验电路中。
4、在Proteus ISIS仿真环境中运行程序,观察实验运行结果并记录。
三、实验要求1.编写一显示程序显示201071;2.显示特殊字符good;3.调整软件延时子程序的循环初值,逐渐加大每一位LED点亮的时间,观察程序运行结果。
四、参考程序dbuf equ 30h ;置存储区首址temp equ 40h ;置缓冲区首址org 00hmov 30h,#2 ;存入数据mov 31h,#0mov 32h,#1mov 33h,#0mov 34h,#7mov 35h,#1mov r0,#dbufmov r1,#tempmov r2,#6 ;六位显示器mov dptr,#segtab ;段码表首地址dp00: mov a,@r0 ;取要显示的数据movc a,@a+dptr ;查表取段码mov @r1,a ;段码暂存inc r1inc r0djnz r2,dp00disp0: mov r0,#temp ;显示子程序mov r1,#6 ;扫描6次mov r2,#01h ;从第一位开始dp01: mov a,@r0mov p0,a ;段码输出mov a,r2 ;取位码mov p1,a ;位码输出acall delay ;调用延时mov a,r2rl amov r2,ainc r0djnz r1,dp01sjmp disp0segtab: db 3fh,06h,5bh,4fh,66hdb 6dh,7dh,07h,7fh,6fhdelay: mov r4,#03h ;延时子程序aa1: mov r5,0ffhaa: djnz r5,aadjnz r4,aa1retend实验原理MCS-51单片机内设置了两个可编程的16位定时器T0和T1,通过编程,可以设定为定时器和外部计数方式。
单片机控制装置与调试任务六 数码管显示应用

该数组共有5个元素,每个元素由不同的下标表示,分别为buffer[0],buffer[1],buffer[2],buffer[3]和buffer[4]。
为了稳定发光,再延时一段时间,之后加人熄灭数码管进行消隐,主要防止显示有拖尾现象。
{ cs1=0;cs2=1;
//选中段码锁存IC
for(i=0;i<9;i++)
效,然后送数据,先送段选,然后再送位选,最后CP脉冲高电平使的
数据输出。
2.动态扫描的基本流程 以从高位到低位扫描显示为例, 动态扫描的基本流
程是: (1)送段码
①送最高位的段码到总线。
②拉低cs1,置位cs2。 ③用wr线发送锁存脉冲。 (2)送位码 ①送第七个通道(Q8)位选数据到总线。 ②拉低cs2,置位cs1。 ③同样用wr线发送锁存脉冲。第七个通道(Q8)导通, 第一位数码管点亮。
/例* 8如位,数一码个管3从位左数到字右变依量次tem显p示要“D在n0高L,阻ED1态,七2段,数3码,管4,显×↑,示5其,“6,百7、”十八HH、个个数”字各的个C语位××言上程的序数字*/ 。无无输输出出
port=tab[disbuf[i]];wr=1;wr=0;
//送段码,锁存数据
图5-1所示为常见的各种数码管的外形。
{ while(1)
//while循环
disbuf[1]=tab[1];
//分别为"0、1、2、3、4、5、6、7"
(2) 定义共阳极字形编码表(数字0~9)
在建立数组的时候,注意字型码的排列次序,段码对表头的偏移位置就是该数值的段码,这种排列方法很便于显示数据
因此可将LED各段码与数据位建立如表4-1所示的对应关系。
实验三 数码管动态显示程序设计1综述

实验三数码管动态显示程序设计实验目的1、理解数码管动态显示原理2、理解数码管动态显示电路的设计方法3、掌握数码管动态显示程序的设计方法实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验内容1、动态扫描显示程序2、特征位小数点控制显示程序实验电路图实验步骤及调试信息1、新建实验项目2、输入实验程序并补充完整;------------------------------------------------------;数码管动态显示程序;包含小数点显示;位选码输出有两种方式:; DispSelection1: 一次一位; DispSelection2: 一次一字节;; 2009-08-20;-------------------------------------------------------LEDCLK bit P3.4LEDDIN bit P2.3LEDDATA data P0dseg at 30hdispbuf: ds 8 ;显示缓冲区8字节disppoint: ds 1 ;小数点控制数据maincode SEGMENT CODECSEG at 0LJMP StartRSEG maincodeStart: CLR E Amov sp,#0c0hmov dispbuf ,#08hmov dispbuf+1, #04hmov dispbuf+2, #00hmov dispbuf+3, #08hmov dispbuf+4, #02hmov dispbuf+5, #00hmov dispbuf+6, #02hmov dispbuf+7, #07hmov disppoint,#02h ;第2位小数点亮LCALL dispSJMP $-3;------------------------------------------------------;数码管动态显示程序;包含小数点显示;位选码输出有两种方式:; DispSelection1: 一次一位; DispSelection2: 一次一字节;; 2009-08-20;-------------------------------------------------------Disp: MOV R7,#8MOV R0,#dispbufCLR LEDCLKSETB L EDDINDisp1: MOV A,@R0MOV DPTR,#DispTabMOVC A,@A+DPTRcpl a; LCALL Dispdot ;显示小数点程序MOV LEDDA TA,A ;在输出之前加入显示小数点程序LCALL DispSelection1 ;输出位选择信号,DispSelection2是第二种; lcall dispsel3LCALL Delay1msmov p2,#0ffhINC R0DJNZ R7,Disp1mov p2,#0ffhRET;-------------------------------------------------;位选码以一次一位方式输出;-------------------------------------------------dispsel3:mov dptr,#DispSTabmov a,r7movc a,@a+dptrcpl a; swap amov p2,aretDispSelection1:CJNE R7,#8,DispSelection11CLR L EDDINDispSelection11:SETB LEDCLKNOPCLR L EDCLKSETB LEDDINRET;-------------------------------------------------;位选码以一次一字节方式输出;-------------------------------------------------DispSelection2:MOV B,#8MOV DPTR,#DispSTabMOV A,R7MOVC A,@A+DPTRCPL ADispSelection21:RLC AMOV LEDDIN,CSETB LEDCLKNOPCLR L EDCLKDJNZ B,DispSelection21RETDispSTab: DB 00H,80H,20H,40H,10H,08H,04H,02H,01H;位选码数据表dispa equ 80h ;数码管各段数据定义dispb equ 40hdispc equ 20hdispd equ 10hdispe equ 08hdispf equ 04hdispg equ 02hdisph equ 01hdisp8 equ 0ffh-disphDispTab: db disp8-dispg,dispb+dispc,dispa+dispb+dispg+dispd+dispe ;0,1,2 db disp8-dispe-dispf,disp8-dispa-dispd-dispe,disp8-dispb-dispe;3,4,5db disp8-dispb,dispa+dispb+dispc,disp8,disp8-dispe ;6,7,8,9db disp8-dispd,disp8-dispa-dispb,disp8-dispb-dispc-dispg ;a,b,cdb disp8-dispa-dispf,disp8-dispb-dispc,disp8-dispb-dispc-dispd;d,e,fdb disp8-dispb-dispc,0ffh,00h,dispg ;H,全亮,全暗,-;--------------------------------------------------------------------;特征位小数点控制显示程序;把小数点显示程序加到显示码输出之前;输入:A : 显示译码值; R7:当前正在显示的LED编号;输出:无;--------------------------------------------------------------------Dispdot:MOV B,AMOV A,R7MOV DPTR,#DispSTabMOVC A,@A+DPTRANL A,disppointSETB C ;本行及以下4行可改成MOV C,PJZ Dispdot1CLR C;点亮小数点Dispdot1:CPL C ;本行根据情况增减MOV A,BCPL AMOV ACC.7,C ;小数点由D7控制; MOV LEDDA TA,A ;本行可以删除RETDelayNms:LCALL Delay1msDJNZ R7, $-3RETDelay1ms:PUSH 07MOV R7,#250 ;1msNOPNOPDJNZ R7, $-2POP 07RETEND3、编译下载实验程序,并修改错误(按附录说明)4、全速运行程序,查看实验现象。
51单片机实验手册

51单片机实验手册一、概述51单片机是一种经典的8位微控制器,具有广泛的应用领域。
本实验手册旨在提供详细的实验指导,帮助初学者快速入门,并为进一步的学习提供基础。
二、实验准备在进行51单片机实验之前,我们需要准备以下材料:1. 一块51单片机开发板2. USB数据线或者串口线3. 电脑及编程软件4. 面包板及对应的连接线5. 红、绿、蓝LED以及相应的电阻三、实验一:LED闪烁LED闪烁是最基础的实验之一,通过控制51单片机的I/O口状态,使LED灯交替亮灭。
1. 连接电路将51单片机的VCC引脚连接到正极,GND引脚连接到负极,将LED的长脚连接到P1.0引脚,短脚连接到GND引脚。
2. 编写程序使用C语言编写如下程序:```c#include <reg52.h>void main() {while(1) {P1 = 0x00; // P1置低电平,LED灯熄灭Delay(1000); // 延时1秒P1 = 0xFF; // P1置高电平,LED灯点亮Delay(1000); // 延时1秒}}void Delay(unsigned int t) {while (t--);}```3. 烧录程序将编写好的程序通过编程软件下载到51单片机中。
4. 运行实验将USB数据线或串口线连接到51单片机开发板和电脑,将开发板上的开关打开,观察LED灯的闪烁情况。
四、实验二:数码管显示通过控制51单片机的I/O口状态,驱动数码管显示数字。
1. 连接电路将51单片机的VCC引脚连接到正极,GND引脚连接到负极,将数码管的A、B、C、D、E、F、G引脚分别连接到P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6引脚。
2. 编写程序使用C语言编写如下程序:```c#include <reg52.h>unsigned char code segment[] = { // 数码管段码表0x3F, // 数字00x06, // 数字10x5B, // 数字20x4F, // 数字30x66, // 数字40x6D, // 数字50x7D, // 数字60x07, // 数字70x7F, // 数字80x6F // 数字9};void main() {unsigned int i;while(1) {for(i = 0; i < 10; i++) {P1 = segment[i]; // 依次在数码管上显示数字0-9 Delay(1000); // 延时1秒}}}void Delay(unsigned int t) {while (t--);}```3. 烧录程序将编写好的程序通过编程软件下载到51单片机中。
51单片机数码管显示及矩阵键盘扫描程序

51单片机数码管显示及矩阵键盘扫描程序硬件实验十一八段数码管实验一、实验任务1、在静态数码管上轮流显示数字0-9。
2、在两个4位数码管上动态显示数字0-9二、流程图及程序静态显示:流程图:程序代码:#include#define uchar unsigned chucharcodevalue[10]={0xC0,0xF9,0xA4,0xB0,0X99,0x92,0x82,0xF8,0 x80,0x90};//0 -9数码管显示段码void delay(char x) //延时子程序{uchar i;for(i=0;i<200;i++);}main() //主函数{int i;while(1){for(i=0;i<10;i++) //显示0-9{P0=codevalue[i];delay(500); //延时1秒}}}动态显示:#include#includetab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f}; //数码管显示数字字段unsigned char tab2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//片选字段unsigned char i,k,j,x;void delay(x); //声明延时子函数void main() //主函数{while(1){for(i=0;i<8;i++) //显示0-7{ P1=tab1[i];P0=tab2[i];delay(5); //延时}P1=tab1[8]; P0=tab2[0]; delay(5); //显示8-9P1=tab1[9]; P0=tab2[1]; delay(5);}}void delay(x) //延时函数定义{do{for(j=0;j<250;j++)for(k=0;k<250;k++);}}硬件实验十二矩阵键盘扫描显示一、实验任务1、把矩阵键盘上的按键输入的键码在静态数码管上显示出来。
51单片机最小系统电路图及实验
51单片机最小系统电路图及实验(含调试程序)--------------------------------------------------------------------------------51单片机最小系统电路图及实验一、任务开发单片机最小系统二、任务分析:该系统具有的功能:(1)具有2位LED数码管显示功能。
(2)具有八路发光二极管显示各种流水灯。
(3)可以完成各种奏乐,报警等发声音类实验。
(4)具有复位功能。
三、功能分析(1)两位LED数码管显示功能,我们可以利用单片机的P0口接两个数码管来现这个功能;(2)八路发光二极管显示可以利用P1口接八个发光二极管实现这个功能;(3)各种奏乐、报警等发声功能可以采用P2.0这个引脚接一蜂鸣器来实现。
(4)利用单片机的第9脚可以设计成复位系统,我们采用按键复位;利用单片机的18、19脚可以设计成时钟电路,我们利用单片机的内部振荡方式设计的。
四、设计框图五、最小系统电路图设计根据本系统的功能,和单片机的工作条件,我们设计出下面的电路图。
六、元器件件清单的确定:数码管:共阴极2只(分立)电解电容:10UF的一只30PF的电容2只220欧的电阻9只4.7K的电阻一只1.2K的电阻一只4.7K的排阻一只,12MHZ的晶振一只有源5V蜂名器一只AT89S51单片机一片常开按钮开关1只紧锁座一只(方便芯取下来的,绿色的)发光二极管(5MM红色)8只万能板电路版15*17CMS8550三极管一只4.5V电池盒一只,导线若干。
七、硬件电路的焊接按照原理图把上面的元件焊接好,详细步骤省略。
八、相关程序设计针对上面的电路原理图,设计出本系统的详细功能:(1)、第一个发光二极管点亮,同时数码管显示“1”。
(2)、第二个发光二极管点亮,同时数码管显示“2”。
(3)、依次类推到第八个发光二极管点亮,同时数码管显示“8”。
以上出现的是流水灯的效果(4)、所有的发光二极管灭了,同时数码管现实“0”。
单片机-4x4个矩阵按键控制数码管显示数字程序
单⽚机-4x4个矩阵按键控制数码管显⽰数字程序1 #include "8051.h"2 typedef unsigned char u8;3 typedef unsigned int u16;4 u8 smgduan[]= {5/*0 1 2 3 4 5 6 7 */60x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,7/*8 9 A B C D E F */80x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};910// P0⼝为数码管的位选的8位输⼊引脚11// P0 = 0x00;121314void Delayms(u16 ms);15void shumaguan(u8 n);16void DigDisplay();17void KeyTest();18void smg(u8 n, u8 m);19void key_4x4();2021void main()22 {23while(1)24 {25 key_4x4();26 }27 }2829// 不精确的延时函数30void Delayms(u16 ms)31 {32 unsigned int i, j;33for(i = ms; i > 0; i--)34for(j = 110; j > 0; j--);35return;36 }3738// 数码管根据74HC138译码器选择对应的段(选择哪个数码管显⽰)39void shumaguan(u8 n)40 {41switch(n)42 {43case0:44 LSA = 0;LSB = 0;LSC = 0;break;45case1:46 LSA = 1;LSB = 0;LSC = 0;break;47case2:48 LSA = 0;LSB = 1;LSC = 0;break;49case3:50 LSA = 1;LSB = 1;LSC = 0;break;51case4:52 LSA = 0;LSB = 0;LSC = 1;break;53case5:54 LSA = 1;LSB = 0;LSC = 1;break;55case6:56 LSA = 0;LSB = 1;LSC = 1;break;57case7:58 LSA = 1;LSB = 1;LSC = 1;break;59 }60 }6162// 数码管显⽰数字,并以⼗进制递增63void DigDisplay()64 {65 u8 i1 = 0;66 u8 i2 = 0;67 u8 i3 = 0;68 u8 i4 = 0;69 u8 i5 = 0;70 u8 i6 = 0;71 u8 i7 = 0;72 u8 i8 = 0;7374757677for (i8 = 0; i8 < 10; i8++)78for (i7 = 0; i7 < 10; i7++)79for (i6 = 0; i6 < 10; i7++)80for (i5 = 0; i5 < 10; i5++)81for (i4 = 0; i4 < 10; i4++)82for (i3 = 0; i3 < 10; i3++)83for (i2 = 0; i2 < 10; i2++)84for (i1 = 0; i1 < 10; i1++)85 {86 u16 cnt = 10;87while (cnt--)88 {89 shumaguan(0); //选中第⼀个数码管90 P0 = smgduan[i1]; //给他送⼀个数字91 Delayms(1); //稍微延时⼀下下92 shumaguan(1); //然后切换到第⼆个数码管。
单片机应用实验报告 2键盘、LED 数码管显示实验
}
int main(){init();来自while(1){
judge();
xianshi();
}
return 0;
}
五、实验步骤
六、附录
sbit LED2=P2^6;
int num=0;
unsigned char code dispcode[]=
{0x30,0xfc,0xa2,0xa4,0x6c,
0x25,0x21,0xbc,0x20,0x24};
void init()
{
key0=1;
key1=1;
key2=1;
}
void delayms(int a)
{int b=0;
for(a;a>0;a--)
for(b=110;b>0;b--);
}
int judge()
{
if(key0==0)
{
delayms(100);
if(key0==0)
{
red=0;
yell=1;
gre=1;
num++;
if(num==10)
num=0;
}
}
if(key1==0)
{
delayms(5);
if(key1==0)
{
red=1;
yell=0;
gre=1;
}
}
if(key2==0)
{
delayms(5);
if(key2==0)
{
red=1;
yell=1;
gre=0;
}
}
return 0;
}
void xianshi()
{
控制数码管显示实训报告
一、实训目的通过本次实训,使学生了解数码管的工作原理,掌握数码管驱动电路的设计方法,学会使用单片机或PLC等微控制器实现对数码管的控制,提高学生的实际动手能力和电子技术综合应用能力。
二、实训内容1. 数码管的结构与工作原理数码管是一种用来显示数字和字母的电子显示器件,通常由多个LED灯组成。
根据LED灯的连接方式,数码管分为共阴极和共阳极两种类型。
(1)共阴极数码管:LED灯的阴极相连,阳极分别独立引出,当给阳极加上高电平时,相应的LED灯点亮。
(2)共阳极数码管:LED灯的阳极相连,阴极分别独立引出,当给阴极加上低电平时,相应的LED灯点亮。
2. 数码管驱动电路设计(1)共阴极数码管驱动电路:使用译码器、驱动器和位选信号进行驱动。
(2)共阳极数码管驱动电路:使用译码器、驱动器和位选信号进行驱动。
3. 单片机控制数码管显示(1)51单片机控制数码管显示:编写程序,通过P1口输出位选信号,通过P2口输出段选信号,实现数码管显示数字0-9。
(2)PLC控制数码管显示:编写梯形图程序,通过输入/输出模块控制数码管显示。
三、实训步骤1. 准备实验器材:数码管、单片机或PLC、电源、导线等。
2. 设计数码管驱动电路,连接电路。
3. 编写单片机或PLC程序,实现数码管显示数字0-9。
4. 调试程序,观察数码管显示效果。
5. 改进程序,实现更多功能,如显示字母、动态扫描等。
四、实训结果与分析1. 数码管驱动电路设计成功,数码管显示正常。
2. 使用51单片机控制数码管显示数字0-9,程序运行正常。
3. 使用PLC控制数码管显示数字0-9,程序运行正常。
4. 通过实训,掌握了数码管的工作原理、驱动电路设计方法以及单片机或PLC控制数码管显示的基本技能。
五、实训心得1. 在本次实训中,我对数码管的结构和工作原理有了更深入的了解,掌握了数码管驱动电路的设计方法。
2. 通过编写单片机或PLC程序,实现了数码管显示数字0-9,提高了自己的编程能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数里面分2次将12位数据写入到数码管内部,第一次是循环写8次,第二次是循环写4次,低位在前,高位在后。我们看一下循环8次的函数体里面,首先是使时钟为低电平DCLK=0;然后将数据送到线上DIN=WS_8bit_0;紧接着将时钟置高电平DCLK=1;这样时钟就有了一个上升沿,将线上的数据写入到数码管内部,等全部12位数据写完LOA;+)
{
m=i%12;
if(m!=11&m!=10&m!=9)
{
Write_12bit_data(a[m],0X08);//依次显示第1位
Write_12bit_data(a[m+1],0X09);//依次显示第2位
Write_12bit_data(a[m+2],0X0A);//依次显示第3位
4.掌握CH451和微处理器接口设计。
5.掌握SPI总线的时序。
6.理解并掌握电路原理图。
7.编程实现数码管的循环移位显示,闪烁显示。
8.编程实现电子钟功能。
实
验
环
境
1. RZ8642实验箱一台
2.MCS-51微处理器模块
3.连接线若干根
4.11.0592MHz晶体一个
5.计算机一台(自备)
6.下载器一个
0X80,0X05命令用于设置显示参数:
用于设定CH451的显示参数:译码方式MODE,扫描极限LIMIT,显示亮度INTENSITY。译码方式MODE通过1位数据控制,置1时选择BCD译码方式,置0时选择不译码方式(默认值)。扫描极限LIMIT通过3位数据控制,数据001B~111B和000B分别设定扫描极限为1~7和8(默认值)。显示亮度INTENSITY通过4位数据控制,数据0001B~1111B和0000B分别设定显示驱动占空比为1/16~15/16和16/16(默认值)。命令数据表示选择译码方式、扫描极限为8。显示驱动占空比为16/16。
1.数码管显示模块由4位共阴极动态显示数码管、8位共阴极段码管及数码管显示驱动芯片CH451(U07)组成。我们通过该模块了解并掌握数码管、段码管及驱动芯片的结构和使用方法,通过编程实现CH451驱动数码管的显示。本实验模块中数码管采用的是四位共阴动态数码管。该数码管共有12个引脚,其中DIG0对应的为第一个数码管,DIG1对应的为第二个,DIG2对应的为第三个,DIG3对应的为第四个。A-F及DP为4个数码管公用。4个数码管为共阴极。当DIG0为低电平时,如果此时的A引脚为高电平,则第一个数码管的A段则会亮。
4.使能数码管函数ENch451( )
CLK用于提供串行时钟,CH451在其上升沿从DIN输入数据,在其下降沿从DOUT输出数据。CH451内部具有12位移位寄存器,在DCLK的上升沿,DIN上的位数据被移入移位寄存器的最高位寄存器,以此类推,原次低位数据移入最低位寄存器,在该上升沿后的第一个下降沿,原次低位数据从DOUT输出。
2.CH451具有硬件实现的高速4线串行接口,包括4个信号线:串行数据输入线DIN、串行数据时钟线DCLK、串行数据加载线LOAD、串行数据输出线DOUT。其中,DIN、DCLK、LOAD是带上拉的输入信号线,默认是高电平;DOUT在未启用键盘扫描功能时作为串行数据输出线,在启用键盘扫描功能后作为键盘中断和数据输出线,默认是高电平。DIN用于提供串行数据,高电平表示位数据1,低电平表示位数据0,串行数据输入的顺序是低位在前,高位在后。另外,在CH451上电复位后,单片机必须在DCLK输出串行时钟之前,先在DIN上输出一个低电平脉冲(由高电平变为低电平再恢复为高电平),通知CH451使能4线串行接口。
3.配置命令
Write_12bit_data(0X01,0X04);
Write_12bit_data(0X80,0X05);
0X01,0X04命令用于设置系统参数:
设定系统参数命令用于设定CH451的系统级参数:看门狗使WDOG,键盘扫描使能KEYB,显示驱动使能DISP。各个参数均通过1位数据控制,将相应的数据位置为1则启用该功能,否则关闭该功能(默认值)。该命令数据表示关闭看门狗的功能、关闭键盘扫描的功能、启用显示扫描驱动的功能。
{
unsigned int i;
unsigned int m;
uchar a[12]={0X02,0X00,0X01,0X06,0X01,0X01,0X00,0X03,0X00,0X02,0X02,0X06};
ENch451();
Write_12bit_data(0X01,0X04);
Write_12bit_data(0X80,0X05);
MCS-51微处理器模块上的P1.1接LED显示模块的时钟 ;
MCS-51微处理器模块上的P1.2接LED显示模块的数据锁存。
4.对LED.UV2工程,进行编译和调试。
5.利用下载器,将程序下载到AT89S51芯片里去。
6.观察一下数码管是否在循环显示“ 12345678”。
7.编程实现用数码管显示时间。
《信息技术综合实践》课程实验报告
专业名称
通信工程
年级
2016级
班级
二班
学生姓名
XXX
指导老师
XX
时间
2018.06.02
实验名称
6.3 数码管显示开发实验
实及
验要
目求
的
1.了解数码管工作原理。
2.了解数码管常用驱动的方法。
3.详细了解CH451芯片的技术资料(见芯片资料“数码管显示驱动模块芯片—CH451”)。
7.仿真器一台(自备)
8.编程器一台(自备)
1.用 KEIL新建一个工程LED.UV2,并新建一个源文件 LED.C添加到工程里。
2.将配套资料MCS51\MCS51例程\数码管显示文件夹下的LED.C里面的源程序拷贝到新建的源文件LED.C里去。
3.MCS-51微处理器模块上的P1.0接LED显示模块的数据输入 ;
1.打开KeiluVision2应用程序,新建一个工程,将LED.C文件添加到新建的工程中(将头文件中的头文件中的reg修改为AT89),在输出中选择生成相应的LED.HEX文件并保存到相应文件夹中。
2 2.按照实验内容进行实验箱的连线。
3 3.在main函数中的代码改动如下:
void main(void)