数码管实验报告

/*************************************************

实验名称:数码管实验一

实验目的:利用动态扫描方法在六位数码管上显示出稳定

的654321

*************************************************/

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit DUAN = P2^6;

sbit WEI = P2^7;

uchar code duan_table[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uchar code wei_table[]=

{0xfe,0xfd,0xfb,

0xf7,0xef,0xdf};

void delay_1ms(int);

void main()

{

int i,j;

j =0;

while(1)

{

for(i = 7;i > 1; i--)

{

/* P0 = duan_table[i-1];

DUAN = 1;

DUAN = 0;

P0 = 0xff;

P0 = wei_table[j++];

WEI = 1;

WEI = 0;

delay_1ms(1);

以上代码将会产生余晖,改用以下代码消除余晖*/

DUAN = 1;

P0 = duan_table[i-1];

DUAN = 0;

P0 = 0xff;//消除余晖

WEI = 1;

P0 = wei_table[j++];

WEI = 0;

delay_1ms(1);

}

if(j == 6)

j = 0;

}

}

void delay_1ms(int x)

{

int i, j;

for(i = 0; i < x; i++)

for(j = 0; j < 110; j++);

}

/**************************************************

实验名称:数码管实验二

实验目的:利用动态扫描方法和定时器1在数码管的前三位

显示出秒表,精确到1%秒,即后两位显示1%秒,

一直循环下去。(TH/TL填装9216)

**************************************************/

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit DUAN = P2^6;

sbit WEI = P2^7;

sbit SPK = P2^3;

uchar S_ms, B_ms, S;

uchar code duan_table0[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uchar code duan_table1[]=

{0xbf,0x86,0xdb,0xcf,

0xe6,0xed,0xfd,0x87,

0xff,0xef};

uchar code wei_table[]=

{0xfe,0xfd,0xfb,

0xf7,0xef,0xdf};

void delay_1ms(uchar);

void display(uchar,uchar,uchar);

void main()

{

S_ms = 0;

B_ms = 0;

S = 0;

TMOD = 0x10;

TH1 = (65535-9216)/256;

TL1 = (65535-9216)%256;

EA = 1;

ET1 = 1;

TR1 = 1;

while(1)

{

if(S_ms == 10)

{

S_ms = 0;

B_ms++;

if(B_ms == 10)

{

B_ms = 0;

S++;

SPK = 0;        //每过一秒响一声

delay_1ms(10);  //

SPK = 1;        //

if(S == 10)

{

S=0;

}

}

}

display(S,B_ms,S_ms);

}

}

void delay_1ms(uchar x)

{

uchar i, j;

for(i = 0; i < x; i++)

for(j = 0; j <110; j++);

}

void Time1() interrupt 3

{

TH1 = (65535-9216)/256;

TL1 = (65535-9216)%256;

S_ms++;

}

void display(uchar i,uchar j,uchar k)

{

DUAN = 1;

P0 = duan_table1[i];

DUAN = 0;

P0 = 0xff;

WEI = 1;

P0 = wei_table[0];

WEI = 0;

delay_1ms(1);

DUAN = 1;

P0 = duan_table0[j];

DUAN = 0;

P0 = 0xff;

WEI = 1;

P0 = wei_table[1];

WEI = 0;

delay_1ms(1);

DUAN = 1;

P0 = duan_table0[k];

DUAN = 0;

P0 = 0xff;

WEI = 1;

P0 = wei_table[2];

WEI = 0;

delay_1ms(1);

}

/**************************************************

实验名称:数码管实验三

实验目的:利用动态扫描和定时器1,在数码管上显示出从

765432开始以1%秒的速度往下递减直至764987,

并保持显示次数,与此同时利用定时器0以500ms

的速度进行流水灯从上至下移动,同时蜂鸣器

发声,当数码光上数减到停止时,实验板上流

水灯全部闪烁5次,数码管全熄灭。单片机进入

休眠状态。(0.01秒填装9216)

实验备注:该程序暂时解决不了因中断冲突而引起的数码管

显示延迟

**************************************************/

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit DUAN = P2^6;

sbit WEI = P2^7;

sbit SPK = P2^3;

long num;

uchar swan,wan,qian,bai,shi,ge,flag_0,flag_1;

uchar code duan_table[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uchar code wei_table[]=

{0xfe,0xfd,0xfb,

0xf7,0xef,0xdf};

void delay_1ms(uint);

void display(uchar,uchar,uchar,uchar,uchar,uchar);

void main()

{

uchar i;

flag_0 = 0;

flag_1 = 0;

num = 765432;

P1 = 0x7f;

TMOD = 0x11;

TH1 = (65536-9216)/256;

TL1 = (65536-9216)%256;

EA = 1;

ET0 = 1;

ET1 = 1;

// EX0 = 1;

//  EX1 = 1;

TR0 = 1;

TR1 = 1;

while(1)

{

if(flag_0 == 10)

{

flag_0 = 0;

P1 = _cror_(P1,1);

SPK = 0;

delay_1ms(100);

SPK = 1;

}

if(flag_1 == 90)

{

flag_1 = 0;

num = num - 90;

swan = num/100000;

wan = num/10000%10;

qian = num/1000%10;

bai = num/100%10;

shi = num%100/10;

ge = num%10;

}

display(swan,wan,qian,bai,shi,ge);

if(num == 764987)

{

ET0 = 0;

ET1 = 0;

for(i = 0;i < 5;i++)

{

P1 = 0;

SPK = 0;

delay_1ms(500);

P1 = 1;

SPK = 1;

delay_1ms(500);

}

PCON = 0x2;

}

}

}

void delay_1ms(uint x)

{

int i,j;

for(i = 0;i < x;i++)

for(j = 0;j < 110;j++);

}

void display(uchar swan,uchar wan,uchar qian,

uchar bai,uchar shi,uchar ge)

{

DUAN = 1;

P0 = duan_table[swan];

DUAN = 0;

P0 = 0xff;

WEI = 1;

P0 = wei_table[0];

WEI = 0;

delay_1ms(1);

DUAN = 1;

P0 = duan_table[wan];

DUAN = 0;

P0 = 0xff;

WEI = 1;

P0 = wei_table[1];

WEI = 0;

delay_1ms(1);

DUAN = 1;

P0 = duan_table[qian];

DUAN = 0;

P0 = 0xff;

WEI = 1;

P0 = wei_table[2];

WEI = 0;

delay_1ms(1);

DUAN = 1;

P0 = duan_table[bai];

DUAN = 0;

P0 = 0xff;

WEI = 1;

P0 = wei_table[3];

WEI = 0;

delay_1ms(1);

DUAN = 1;

P0 = duan_table[shi];

DUAN = 0;

P0 = 0xff;

WEI = 1;

P0 = wei_table[4];

WEI = 0;

delay_1ms(1);

DUAN = 1;

P0 = duan_table[ge];

DUAN = 0;

P0 = 0xff;

WEI = 1;

P0 = wei_table[5];

WEI = 0;

delay_1ms(1);

}

void Timer0() interrupt 1

{

TH0 = (65536-46080)/256;

TH0 = (65536-46080)%256;

flag_0++;

}

void Timer1() interrupt 3

{

TH1 = (65536-9216)/256;

TL1 = (65536-9216)%256;

flag_1++;

}

//void Ex_int0() interrupt 0

//{}

//void Ex_int1() interrupt 2

//{}

时间: 2024-10-09 22:03:54

数码管实验报告的相关文章

201506110135陈若倩词法分析实验报告

实验一.词法分析实验 商业软件工程专业   陈若倩  201506110135 一. 实验目的 通过设计一个词法分析程序,对词法进行分析,加强对词法的理解,掌握对程序设计语言的分解和理解. 二. 实验内容和要求 在原程序中输入源代码 对字符串表示的源程序 从左到右进行扫描和分解 根据词法规则 识别出一个一个具有独立意义的单词符号 以供语法分析之用 发现词法错误,则返回出错信息 在源程序中,自动识别单词,把单词分为五种,并输出对应的单词种别码. 识别关键字:main if int for whil

广外第二周的实验报告来这里分享一下

虽然有很多还不知道怎么改,可能也有很多测试不到的地方,但是通过这个星期我好歹了解了好多东西啊 实验报告 通过本次学习,能了解到VC6.0.是用于将已生成的C++语言源程序代码转换为计算机能读懂的目标代码,计算机用的均是二进制代码.编辑完成后它首先生成扩展名为obj的文件(程序编译后的二进制文件),若想进行之后的链接.运行过程,必须不断修改源程序文件至完全正确. 在文件→新建→源代码这里可以新建源代码:新建→打开项目或文件中可以打开以前写过的源代码或者程序:运行→编译中即把所打源文件转换为二进制代

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

词法分析实验报告

词法分析实验报告 一.        实验目的 编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节. 二.        实验内容和要求 实验内容: 对字符串表示的源程序,从左到右进行扫描和分解.根据词法规则,识别出一个一个具有独立意义的单词符号,以供语法分析之用,若发现词法错误,则返回出错信息. 实验要求: 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三. 实验方法.步骤及结果测试 源程序名:压缩包文件(rar或zip)中源程序

DAY01 WINDOWS 实验报告

DAY 01   Windows 实验一 实验名称:虚拟机的安装以及win7系统的安装 实验描述:学习安装虚拟机,以及安装不同的系统,可以满足用户不同时期的不同的需求 实验步骤: 步骤1:点击开始-选择vmware文件夹-点击Vmware Workstation                             步骤2:点击文件-新建虚拟机-下一步-选择客户机操作系统和版本-选择虚拟机安装位置-设置虚拟机的处理器.内存等信息-完成虚拟机裸机的安装 步骤3:点击编辑虚拟器-双击CD/DVD(

DAY02 WINDOWS 实验报告

实验一 实验名称: ghost做系统的备份与还原 实验描述:对系统进行备份,可以使用户在电脑中病毒或出故障后,可以还原到一个比较纯净的系统环境 实验步骤: 步骤1:点击编辑虚拟机设置-CD/DVD-选择镜像文件-选择超级急救箱 步骤2:启动虚拟机-进入资源管理器-运行超级急救箱安装文件 步骤3:重启系统-选择超级急救箱-选择ghost32 for winpe 步骤4:进入PE系统以后,点击ghost32程序-选择local->partition->To image-下一步-选择要备份的分区-选

数据结构与算法 第四次实验报告 图

数据结构与算法 第四次实验报告 姓名:许恺 学号:2014011329 班级:计算机14-1     中国石油大学(北京)计算机科学与技术系 1.图的定义,文件为"Graph.h" #ifndef GRAPH_H//定义头文件 #define GRAPH_H #include<string>//引入标准库中的头文件 using namespace std; const int MaxSize=12; struct ArcNode//定义边表结点 { int adjvex;/

《信息安全系统设计基础》第二次实验实验报告

<信息安全系统设计基础>实验二实验报告 实验报告封面 实验目的与要求 解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux 环境下串行程序设计的基本方法. 掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用.学习使用多线程来完成串口的收发处理. 熟悉linux开发环境,学会基于S3C2410的linux开发环境的配置和使用.使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程 实验步

《信息安全系统设计》第四次实验报告

实验报告:外设驱动设计 小组成员 :20145306张文锦,20145334赵文豪,20145331魏澍琛. 实验仪器:windows xp,arm开发板. 实验内容.步骤与体会 1. 进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器阅读理解源代码. 2. Makefile 中有两种编译方法,可以在本机上使用gcc:也可以使用交叉编译器进行编译. 如果编译的时候出现问题,需要是在/usr/src 下没有建立一个linux 连接,可以使用下面的命令:[[email