单片机数码管显示实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
篇一:单片机应用实验报告 2键盘、LED 数码管显示实验
西华大学实验报告(理工类)
开课学院及实验室:机械工程与自动化学院计算机机房 实验
时间 : 2014年 5月20 日
一、 实验目的
二、 实验内容
三、实验电路
四、实验程序
#includereg52.h
sbit key0=P2 ;
sbit key1=P2 ;
sbit key2=P2 ;
sbit red=P1 ;
sbit yell=P1 ;
sbit gre=P1 ;
sbit LED1=P2 ;
sbit LED2=P2 ;
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;a0;a--)
for(b=110;b0;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()
{
delayms(5);
P0=dispcode[num];
LED1=0;
LED2=1;
delayms(5);
}
int main()
{
init();
while(1)
{
judge();
xianshi();
}
return 0;
}
五、实验步骤
六、附录
篇二:单片机实验两位数码管显示报告
一、实验目的
1、在之前单键实验和中断控制数码管“静态”显示实验的基础上,把单键判断、数码管显示和中断结合起来编写中断程序实现单键控制一位数码管;
2、在实现控制一位数码管显示的基础上用单键控(转 载于:www.cdFDs.cOM 池锝 网:单片机数码管显示实验报告)制两位数码管显示。
二、实验所需器材与软件
硬件:电脑、传输线、AT89S52单片机
软件:编程软件Keil uVision3;读写软件MePro V5.02
三、实验程序的及其分析:
1、单键控制一位数码管显示
主要设计思路:在中断主程序后加入单键判断键按下情况判断语句,把数码管显示程序放在中断子程序中。当有键按下且有中断请求时,重新给数码管显示偏移地址赋值,从而改变显示内容。
程序:
ORG 0000H
AJMP MAIN ;转向主程序
ORG 001BH ;中断矢量地址
AJMP T_INT ;转向中断服务程序
MAIN: ;主程序标号
MOV R3,#0;
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
偏移地址
MOV DPTR,#TAB;把表头地址赋值给寄存器DPTR MOV
TMOD,#10H;设定定时器工作于模式1
MOV TH1,#0FEH ;定时器赋初值
MOV TL1,#0EH
SETB ET1 ;开中断
SETB EA
SETB TR1 ;启动定时器
LOOP1:JNB P1.4, LOOP4
AJMP LOOP1
LOOP4:ACALL DELAY
JNB P1.4, LOOP_ADD 单键按下判断程序
LOOP_ADD:INC R3
CJNE R3,#10,LOOP8
MOV R3,#0
LOOP8: AJMP LOOP1
T_INT: MOV TH1,#0FEH
MOV TL1,#0EH
MOV A,R3 中断程序内嵌的数码管显示程序 MOVC A,@A+DPTR
MOV P0,A
MOV P2,#11111110B
RETI
TAB:DB 0C0H,0F9H,0A4H,0B0H ,99H,92H,82H,0F8H;表内容
DB 80H,90H
DELAY:MOV R5,#64H
LOOP5:MOV R7,#0FFH
LOOP6:NOP
NOP用于单键按下防抖动的延时程序
DJNZ R7,LOOP6
DJNZ R5,LOOP5
RET
2、单键控制两位数码管显示
设计思路:用两个寄存器分别存放数码管显示的个位和十位,并且在数码管显示程序中用移位指令对数码管的位码进行移位,使每次执行中断程序时显示一位数,循环两次中断程序后“静态”显示两位数字。
程序:
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP T_INT
MAIN:
MOV R0,#0 ;用来判断中断程序显示内容的位数
MOV R3,#0 ;把数码管显示的个位偏移地址存放在R3MOV R1,#0 ;把数码管显示的十位偏移地址存放在R1MOV R4 ,#0FEH ;数码管位码内容
MOV R2,#0 ;用于计算数码管位码移位次数
MOV DPTR,#TAB ;把表头地址赋给DPTR
MOV TMOD,#10H
MOV TH1,#0FEH
MOV TL1,#0EH
SETB ET1 中断启动初始化
SETB EA
SETB TR1
LOOP1:JNB P1.4, LOOP4;键按下判断程序
AJMP LOOP1
LOOP4:ACALL DELAY
JNB P1.4,LOOP_ADD
LOOP_ADD:INC R3 ;当有键按下时,个位偏移地址加一位
CJNE R3, #10, LOOP8 ;判断个位显示的数值是否超过9INC
R1 ;个位数值到9后十位进一位
MOV R3,#0 ;使个位显示为“0”
CJNE R1,#10,LOOP8 ;判断十位显示数值是否超过9
MOV R1,#0 ;显示满“99”后将数码管置“00” LOOP8: AJMP
LOOP1
T_INT:MOV TH1,#0FEH
MOV TL1,#0EH
CJNE R0, #2, LOOP10
MOV A, R3
INC R0 数码管个位和十位切换操作指令 AJMP LOOP11
LOOP10:MOV A,R1
MOV R0,#2
LOOP11:MOVC A,@A+DPTR
MOV P0,A
MOV P2,R4
MOV A,R4
RL A;显示完一个数码管后对位码向左移一位 MOV R4,A
INC R2 ;
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
移位次数
CJNE R2,#2,LOOP9 ;当移位次数为两次时,执行位码赋初始值指令 MOV R4,#0FEH ;令位码返回初始值
MOV R2,#0;移位次数清零
LOOP9:RETI
TAB:DB 0C0H,0F9H,0A4H,0B0H ,99H,92H,82H,0F8H;表内容
DB 80H,90H
DELAY:MOV R5,#99H
LOOP5:MOV R7,#0FFH
LOOP6:NOP
NOP 键防抖动延时判断程序
DJNZ R7,LOOP6
DJNZ R5,LOOP5
RET
四、实验结果分析
经过艰辛的调试工作,单键的按下判断程序能成功区分抖动键,实现按下与否判断,一位数码管和两位数码管显示均能按预定要求工作,但两位数码管显示程序设计逻辑有局限性,在自己所设计逻辑的模式下难以向上扩展,要实现三位以上数码管显示时有很大困难。
五、实验心得体会
每一次的实验内容都是在之前实验基础上进行的,因此,从多次实验经验来看,要想顺利完成当次实验,课前回顾之前所做实验内容也是颇为重要的。在写程序时应先想好程序设计基本思路,避免在原来的程序
模板
个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载
中漫无目的地插入程序,靠投机取巧实现实验要求,每次在实验中都有深深的体会,在编程序前想好思路,然后循着思路琢磨着怎么实现会比较容易,且能更好掌握程序逻
辑结构,免得实现了实验要求,自己却看懂所写的程序。在这次实验中,虽然实现了两位数码管的显示,但是数码管显示的个位和十位是通过存放在两个寄存器中实现的,再向上扩展至多位数码管显示却是难以实现,因此不是一个优良的程序结构,这也是这次实验最难突破的难点。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。
篇三:单片机数字时钟实验报告
数字时钟实验报告
一、 实验目的
1、熟悉单片机的结构和各引脚的的功能以及如何用程序控制。
2、学习用单片机对数字时钟控制、按键扫描及LED数码管显示的设计方法。
3、了解键盘的结构以及工作原理,通过单片机的定义实现对数码管时钟的调整。
二、实验要求
1、可以正常准确的显示时间.
2、可以通过键盘输入来对时间进行调整.
3、能够以两种时钟表示方式显示时间.
4、自由发挥其他功能.
三、实验基本原理
利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为0,每中断一次中断计数初值加1,当加到20时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。利用键盘实现对时钟的调整,定义四个按键,按下第一个按键位置跳变到“分”,
在按定义的第二个键每按一次数字加一,当数字到59时再按一次,直接跳变到00; 用第三个键控制“时”的12小时制还是24小时制,对键盘扫描,如果发现该键被
按下,则表示为12进制,每按一次第四个按键数字加一,当到达12时,再按一次直接跳到1,如果没有发现该按键,则默认为24小时制,当数字是23时,再按一次跳变到00,再按一下第一个键退出对事件的调整。
四、实验设计分析
针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系
统及80C51引脚结构。这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。 首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。最后进行功能扩展,在已经正确的设计基础上,添加额外的功能~
以下为具体的数字时钟实现程序段:
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
uchar sec,sec1,min,min1,hou,hou1,t,num,temp;
uint num1,num2,num3,n,k=0;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x40};
void init();
uchar keyscan();
void control();
void
display(uchar ,uchar ,uchar ,uchar ,uchar ,uchar ,uchar ,uchar ); void
delay(uint z)
{
uint x,y;
for(x=z;x0;x--)
for(y=110;y0;y--);
}
void main(){
init();
while(1){
TR0=0;
keyscan();
control();
TR0=1;
if(t==20){
t=0;
num1++;
if(num1==60){
num1=0;
num2++;
if(num2==60){
num2=0;
num3++;
if(num323)
num3=0;
}
}
}
sec1=num1/10;
sec=num1%10;
min1=num2/10;
min=num2%10;
hou1=num3/10;
hou=num3%10;
display(hou1,hou,10,min1,min,10,sec1,sec);
}
}
void init(){
t=0; num1=0,num2=0,num3=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
}
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar
k,uchar h){