数码管显示AD转换的电压值数码管显示秒表精编版

数码管显示AD转换的电压值数码管显示秒表精编版
数码管显示AD转换的电压值数码管显示秒表精编版

电子科技大学微电子与固体电子学院实验报告

实验名称现代电子技术综合实验

姓名:詹朋璇

学号:2011031030024

评分:

教师签字

电子科技大学教务处制

电子科技大学

实验报告

学生姓名:詹朋璇学号:2011031030024 指导教师:熊万安

实验地点:211大楼308 实验时间:2014. 6.30 晚

一、实验室名称:单片机技术综合实验室

二、

实验项目名称:数码管显示A/D转换的电压值&数码管显示秒表

三、实验学时:12

四、实验目的与任务:

1、熟悉系统设计与实现原理

2、掌握KEIL C51的基本使用方法

3、熟悉实验板的应用

4、连接电路,编程调试,实现各部分的功能

5、完成系统软件的编写与调试

五、实验器材

1、PC机一台

2、实验板一块

六、实验原理、步骤及内容

试验要求:数码管的第1位显示任务号1,第3位到第5位显示、

A/D转换的电压值,可调节电压,第7、8位显示两位学号;数码管第2位和第6位显示“-”号;

按按键key1进行切换,此时数码管第1位显示任务号2,第7、8位显示循环倒计时的秒表,范围为08秒到01秒后,再过01秒,秒表又显示为08秒;(单片机系统中利用定时器/计数器计数秒表的值:利用定时器T0延时1秒进行计数。),其它位显示不变,按按键key2时,秒表停止计数,再按按键key2时,秒表继续计数,按key1键,又回到任务1的显示状态。

当电压值大于2伏时,按按键不起作用。

1、硬件设计(可打印)

2、各部分硬件原理(可打印)

数码管动态扫描

TLS549ADC工作时序图3、软件设计

思考题:按键改用外部中断模式,电路如何修改(画示意图)?程序如何修改,写出中断服务程序。

答:将KEY1与KEY2键通过跳线分别接到INT0与INT1接口上。

开启中断:

SysInit()

{ …

EA=0; //禁止总中断

EX1=1; //使能/INT1 中断

EX0=1; //使能/INT0 中断

EA=1; }//使能总中断

中断服务程序:

void INT0SVC () interrupt 0

{

if(cnt<=31) cnt++;}

void INT1SVC () interrupt 2

{

if(cnt>=17) cnt--;}

七、总结及心得体会

1.利用单片机开发板上丰富的资源可以实现一个有一定功能的

系统。

2.懂得利用中断可以使单片机的效率提高。

八、对本实验过程及方法、手段的改进建议

实在是没有,都挺好的。

九、附录

1、程序

/*

利用TLC549 A/D转换器实现电压测量与显示

*/

#include //包含8051的SFR寄存器定义头文件

#include //扩展并行接口所需的绝对地址访问库函数

#define LED_dig XBYTE[0x9000] //8位数码管显示器的位选输出控制

#define LED_seg XBYTE[0x8000] //8位数码管显示器的段码(字形码)输出控制

#define KEY_IN XBYTE[0x8000]

//定义TLC549操作接口

sbit ADC_CS = P1^7;

sbit ADC_DA TA = P1^6;

sbit ADC_CLK = P1^5;

code unsigned char disp_seg[]= //显示段码

{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5f,0x79,0x 71,0x40,0x00,0xff};

// 0 1 2 3 4 5 6 7 8 9 a b c

d e f - blank,全亮

unsigned char DispBuf[8]; //定义显示缓冲区(由定时中断程序自动扫描)

unsigned char key_value,flag;//定义键盘返回值,任务标志

unsigned char y1000,y100,y10,y;//定义秒表的个位,十分位,百分位,千分位

unsigned short mbiao;//定义秒表计数单元

void delay(int ms); //延时大约1ms

unsigned char ReadAdc(void);//读取A/D转换结果

void AdcInit(void); //初始化ADC接口

void key_scan(void);

void main()

{

unsigned char i=0;

unsigned char volt, x100, x10, x;

TMOD &= 0x0f;

TMOD |= 0x10;

TH1 = 0xFC;

TL1 = 0x66;

TR1 = 1;

ET1 = 1;

TMOD &= 0xf0;

TMOD |= 0x01;

TH0 = 0xFC;

TL0 = 0x66;

TR0 = 1;

ET0 = 1;

EA =1;

AdcInit();

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

DispBuf[i] = 17; //全部8位显示灭

y1000=9;

y100=9;

y10=9;

y=9;

mbiao=9999;

flag=0;

while(1)

{

while(flag ==0)

{

volt = ReadAdc(); //得到A/D转换结果的数字量(0x00~0xff)

volt = volt * 250/256; //转换成电压值,其中Vr=2.5V

x100 = volt/100;

x10 = (volt - x100*100)/10;

x = (volt - x100*100)%10;

DispBuf[0] = 4;

DispBuf[1] = 2;

DispBuf[2] = 16;

DispBuf[3] = x;

DispBuf[4] = x10;

DispBuf[5] = x100;

DispBuf[6] = 16;

DispBuf[7] = 1;

delay(100);

if(key_value == 8&&volt<=200){flag = 1;mbiao=9000;while(key_value == 8);}

}

while(flag==1)

{

TR0=1;

volt = ReadAdc();

volt = volt * 250/256; //转换成电压值,其中Vr=2.5V

x100 = volt/100;

x10 = (volt - x100*100)/10;

x = (volt - x100*100)%10;

DispBuf[0] = y1000;

DispBuf[1] = 0;

DispBuf[2] = 16;

DispBuf[3] = x;

DispBuf[4] = x10;

DispBuf[5] = x100;

DispBuf[6]=16;

DispBuf[7]=2;

if(key_value == 8&&volt<=200){flag = 0;while(key_value == 8);}

else if(key_value == 7&&volt<=200){flag = 2;while(key_value == 7);}

}

while(flag==2)

{

TR0=!TR0;

if(key_value == 7){flag = 1;while(key_value == 7);}

}

}

}

/*

函数:T1INTSVC()

功能:定时器T1的中断服务函数

*/

void T1INTSVC() interrupt 3

{

code unsigned char com[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

static unsigned char n = 0;

TR1 = 0;

TH1 = 0xFC;

TL1 = 0x66;

TR1 = 1;

LED_dig = 0xFF; //暂停显示

if(flag==0)

{

if(n==5)

LED_seg = ~(disp_seg[DispBuf[n]]|0x80);

else

LED_seg = ~disp_seg[DispBuf[n]];//更新扫描数据

}

if(flag==1)

{ if(n==5)

LED_seg = ~(disp_seg[DispBuf[n]]|0x80);

else

if(n==4)

LED_seg = ~( disp_seg[DispBuf[n]] ); //更新扫描数据,else

LED_seg = ~disp_seg[DispBuf[n]]; //更新扫描数据}

if(flag==2)

{

LED_seg = ~disp_seg[DispBuf[n]]; //更新扫描数据}

LED_dig = ~com[n]; //重新显示

key_scan();

n++;

n &= 0x07;

}

void delay(int ms)

{

unsigned int i,j;

for(i=0; i

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

;

}

}

/*

函数:ReadAdc()

功能:读取A/D转换结果

返回:8位ADC代码

*/

unsigned char ReadAdc(void)

{

unsigned char d; //读取得ADC结果

unsigned char n; //ADC bit位计数

ADC_CS = 0;

n = 5;

while ( --n != 0 ); //模拟tsu时间

n = 8;

do

{

d <<= 1;

if ( ADC_DA TA )

d = d | 0x01; //或d++;

ADC_CLK = 1;

ADC_CLK = 0;

}while ( --n != 0 );

ADC_CS = 1;

return d;

}

/*

函数:AdcInit()

功能:初始化ADC接口

*/

void AdcInit(void)

{

ADC_CS = 1;

ADC_CLK = 0;

ADC_DATA = 1;

ReadAdc(); //空读一次,用于启动一次A/D转换过程}

void key_scan(void)

{

unsigned char key_in;

key_in = KEY_IN;

switch(key_in)

{

case 0xff:

key_value = 0;

break;

case ~0x01:

key_value = 1;

break;

case ~0x02:

key_value = 2;

break;

case ~0x04:

key_value = 3;

break;

case ~0x08:

key_value = 4;

break;

case ~0x10:

key_value = 5;

break;

case ~0x20:

key_value = 6;

break;

case ~0x40:

key_value = 7;

break;

case ~0x80:

key_value = 8;

break;

default:

break;

}

}

/*

函数:T1INTSVC()

功能:定时器T0的中断服务函数

*/

void T0INTSVC() interrupt 1

{

TR0 = 0;

TH0 = 0xFC;

TL0 = 0x66;

TR0 = 1;

if(mbiao<=9000&&TR0==1)mbiao=mbiao-1;

if(mbiao==0)mbiao=9000;

y1000=mbiao/1000;

y100=(mbiao-y1000*1000)/100;

y10=(mbiao-y1000*1000-y100*100)/10;

y=(mbiao-y1000*1000-y100*100)%10;

}

基于51单片机的4位数码管秒表

原理图: 源程序: /************************************************************* 标题:定时器中断精确到00.01的秒表 效果:能清零重新开始,暂停,继续计时,能精确到0.01秒 作者:皖绩小挺 说明:使用12M晶振,四位数码管,3个按键 ****************************************************************/ #include #define uint unsigned int #define uchar unsigned char uint temp,tt,qian,bai,shi,ge; sbit smg_q=P1^0; sbit smg_b=P1^1; sbit smg_s=P1^2; sbit smg_g=P1^3; sbit key1 = P3^7; sbit key2 = P3^6; sbit key3 = P3^5; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90};

uchar code table1[]={0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10}; //带小数点 void keyscan(); void display(uint shi,uint ge); void delay(uint z); void init(); /************************************************************** 主函数 ******************************************************************/ void main() { init();//初始化子程序 while(1) { if(tt==1) { tt=0; temp++; if(temp==10000) { temp=0; } qian=temp/1000; bai=temp%1000/100; shi=temp%100/10; ge=temp%10; } keyscan(); display(shi,ge); } } /********************************************************************* 延时 ***********************************************************************/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*********************************************************************

数码管显示转换的电压值数码管显示秒表

数码管显示转换的电压值数码管显示秒表 标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]

电子科技大学微电子与固体电子学院 实验报告 实验名称现代电子技术综合实验 姓名:詹朋璇 学号:20 评分: 教师签字 电子科技大学教务处制

电子科技大学 实验报告 学生姓名:詹朋璇学号: 20 指导教师:熊万安 实验地点: 211大楼308 实验时间:2014. 晚 一、实验室名称:单片机技术综合实验室 实验项目名称:数码管显示A/D转换的电压值&数码管显示秒表 二、实验学时: 12 三、实验目的与任务: 1、熟悉系统设计与实现原理 2、掌握KEIL C51的基本使用方法 3、熟悉实验板的应用 4、连接电路,编程调试,实现各部分的功能 5、完成系统软件的编写与调试 四、实验器材 1、PC机一台 2、实验板一块

五、实验原理、步骤及内容 试验要求:数码管的第1位显示任务号1,第3位到第5位显示、A/D转换的电压值,可调节电压,第7、8位显示两位学号;数码管第2位和第6位显示“-”号; 按按键key1进行切换,此时数码管第1位显示任务号2,第7、8位显示循环倒计时的秒表,范围为08秒到01秒后,再过01秒,秒表又显示为08秒;(单片机系统中利用定时器/计数器计数秒表的值:利用定时器T0延时1秒进行计数。),其它位显示不变,按按键key2时,秒表停止计数,再按按键key2时,秒表继续计数,按key1键,又回到任务1的显示状态。 当电压值大于2伏时,按按键不起作用。 1、硬件设计(可打印) 2、各部分硬件原理(可打印) 数码管动态扫描 TLS549ADC工作时序图 3、软件设计 按下

用LED数码管显示的秒表设计

单片机课程设计说明书 用LED 数码管显示的秒表设计 专业 电气工程及其自动化 学生姓名 刘宁 班级 B 电气081 学 号 04 指导教师 张兰红 完成日期 2011年 6月 26 日

目录 1、概述 (2) 2、课题方案设计 (2) 系统总体设计要求 (2) 系统模块结构论证 (2) 3、系统硬件设计 (3) 总体设计 (3) 单片机运行的最小系统 (4) 52单片机最小系统电路介绍 (4) 单片机的振荡电路与复位电路 (7) 数码管介绍 (8) 驱动电路 (9) 4、软硬件联调及调试结果 (10) 软硬件调试中出现的问题及解决措施 (10) 实物图 (11) 调试结果 (13) 5、结束语 (13) 参考文献 (14) 附录 (14) 附录1:基于单片机的秒表设计原理图 (14) 附录2:基于单片机的秒表设计PCB图 (15) 附录3:PROTEUS仿真图 (16) 附录4:基于单片机的秒表设计C语言程序清单 (17) 附录5:基于单片机的秒表设计元器件目录表 (19)

1、概述 21世纪是一个电子技术和电子元件有更大发展的世纪。回顾百年来电子技术和电子工业发展的成就,举世瞩目。作为一个电气专业的大学生,我们不但要有扎实的基础知识、课本知识,还应该有较强的动手能力。现实也要求我们既精通电子技术理论,更要掌握电子电路设计、实验研究和调试技术。课程设计就是一个理论联系实际的机会。 本次设计主要完成具备基本功能的电子秒表的理论设计,电子秒表是重要的记时工具,广泛运用于各行各业中。作为一种测量工具,电子秒表相对其它一般的记时工具具有便捷、准确、可比性高等优点,不仅可以提高精确度,而且可以大大减轻操作人员的负担,降低错误率。 在设计中应用到数码管,数码管主要用于楼体墙面,广告招牌、高档的DISCO、酒吧、夜总会、会所的门头广告牌等。特别适合应用于广告牌背景、立交桥、河、湖护栏、建筑物轮廓等大型动感光带之中,可产生彩虹般绚丽的效果。用护栏管装饰建筑物的轮廓,可以起到突出美彩亮化建筑物的效果。事实证明,它已经成为照明产品中的一只奇葩,绽放在动感都市。 2、课题方案设计 系统总体设计要求 用AT89C52设计一个2位LED数码显示“秒表”,显示时间为00~59秒,每秒自动加一。另设计一个“开始”按键和一个“复位”按键,一个“暂停”按键。接上电源后从00开始计时,至59后再回到00,继续循环。 系统模块结构论证 1.单片机模块选择 方案一:选用飞思卡尔单片机,飞思卡尔单片机功能强大,但是价格相对要高,而且对此不熟悉。

8路模拟信号输入数值显示电路设计报告

单片机/微机接口课程设计说明书 题目: 8路输入模拟信号数值显示电路设计 系部:信息与控制工程学院 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 2010年6 月21 日

目录 1 设计任务与要求 (1) 2 设计方案 (2) 3 系统硬件电路设计 (3) 3.1模拟信号采集电路 (3) 3.2数字处理模块电路 (3) 3.3数码显示模块电路 (4) 4 系统软件设计 (5) 4.1初始化程序 (5) 4.2主程序 (5) 4.3显示子程序 (5) 4.4模数转换测量子程序 (5) 5 检测与调试 (7) 6 设计结论 (8) 7 附录 (9) 附录一系统总设计图 (9) 附录二程序清单 (9) 8 参考文献 (14)

1 设计任务与要求 设计一个8路输入模拟信号数值显示电路,具体要求如下:1.1 8路模拟信号输入; 1.2 自动轮流显示通道模拟信号的数值; 1.3 最小分辨率为0.02V; 1.4 最大显示数值为255(输入为5V时); 1.5 模拟输入最大值为5V; 1.6 可作为数字电压表使用。

2 设计方案 8路输入模拟信号数值显示电路由A/D转换、数据处理及显示控制等组成。根据设计要求,要求能同时输入8路模拟信号,故在本设计中采用8路的数模转换器ADC0809。由单片机AT8952提供控制信号控制ADC0809,并对采集到的数据进行处理,通过软件编程实现8路模拟信号电压数值自动轮流显示。为得到8路模拟信号的数值进行轮流显示,本设计中采用了四个数码管,通过软件直接译码,间接驱动4个共阳极数码管,并通过动态显示来轮流显示4个数码管。系统总体框图设计如图一所示: 图一系统总体设计框图

单片机简易秒表课程设计..

单片机课程设计 题目:简易秒表 系部:机电工程系 专业:机电一体化 班级: 0 9 4 班 姓名:张三 学号:2009044056 指导教师:杨富强

目录 一摘要 (1) 二绪论 (2) 2.1单片机的发展 (2) 2.2 MCS-51系列单片机介绍 (4) 三设计任务及要求 (5) 四工作原理 (5) 4.1 七段数码管概述 (5) 4.2 MCS--51的引脚及相关功能 (7) 五简易秒表电路图 (8) 六流程图 (9) 七源程序 (10) 八系统硬件设计 (11) 九总结 (12) 十课程设计心得 (13) 参考文献 (14)

一摘要 单片机自70年代问世以来得到蓬勃发展,目前单片机功能正日渐完善:单片机集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以完成项目开发,不仅是开发简单,产品小巧美观,同时抗干扰能力加强,系统也更加稳定,使得它更加适合工业控制领域,具有更加广阔的市场前景;提供在线编程能力,加速了产品的开发进程,为企业产品上市赢得宝贵时间。此外单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。单片机的设计目标主要是增强“控制”能力,满足实时控制的需要。 本文的主要内容是掌握各种单片机的结构、接口、片上外设的特点,并利用自行制作的单片机最小系统,完成一个简单应用(简易秒表)的设计与软件及硬件设计制作,让读者掌握数字单片机最小系统的设计及单片机系统的应用方法。

二绪论 当前社会信息化建设在各地蓬勃发展,作为信息发布的终端显示设备,LE D显示屏己经广泛应用于工作和生活的各个方面,主要用于显示文字、图像、动画等。L E D显示屏的应用涉及社会的许多领域,主要包括:金融证券、体育场馆、道路交通、邮政电信、商场购物中心等服务领域的业务宣传及信息显示。L ED 是发光二极管的简称(L ig ht Em it ti ng D io de)。由于它具有亮度高、响应速度快、低电压、功耗小、耐震动、寿命长等优点,使其成为室内外信息显示终端的主要发光器件。LE D显示屏是20世纪90年代出现的新型平板显示器件,由于其亮度高、画面清晰、色彩鲜艳,使它在公众多媒体显示领域一枝独秀,因此市场空间巨大。LE D显示屏的发展可分为以下几个阶段:第一阶段为1990年到1995年,主要是单色和16级双色图文屏。用于显示文字和简单图片,主要用在车站、金融证券、银行、邮局等公共场所,作为公共信息显示工具。第二阶段是1995年到1999年,出现了64级、256级灰度的双基色视频屏。视频控制技术、图像处理技术、光纤通信技术等的应用将LE D显示屏提升到了一个新的台阶。LE D显示屏控制专用大规模集成电路芯片也在此时由国内企业开发出来并得以应用。第三阶段从1999年开始,红、纯绿、纯蓝LE D大量涌入中国,同时国内企业进行了深入的研发工作,使用红、绿、蓝三原色LE D生产的全彩色显示屏被广泛应用,大量进入体育场馆、会展中心、广场等公共场所,从而将国内的大屏幕带入全彩时代。 2.1单片机的发展 单片机也被称为微控制器(M ic ro co nt r ol le r),是因为它最早被用在工业控制领域。单片机由芯片内仅有CP U的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CP U集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。IN TE L的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片机又称单片微控制器,它不是完成某一个逻辑功能的

八路输入模拟信号的数值显示电路

八路输入模拟信号的数值显示电路 作品简介 八路输入模拟信号的数值显示电路由以下几部分组成:电源部分,模数转换部分,主控部分,数码显示部分,驱动单元这五个主要单元。电源部分是由220V电压通过变压器变压变成±12V的正弦波,在经过全桥电路和滤波电容在经过7805后变成5V固定电压,数模转换部分是由ADC0809数模转换模块提供,它的采样频率为8位、是一种以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址锁存译码后的信号,只选通8个模拟输入信号中的一个进行A/D转换,主控电路有单片机STC89C52组成,它是整个电路的核心。而数码显示电路是由4位共阳极数码管提供,驱动部分采用PNP型的三极管来驱动数码管。74LS74作为四分频使用,来提供ADC0809的时钟。

引言部分 智能仪器是计算机技术和测量仪器结合的产物,是含有微计算机或微处理器的测量仪器,由于他拥有对数据的存储、运算、逻辑判断及自动化操作等功能,具有一定智能作用,因而被称之为智能仪器。 智能仪器的出现,极大地扩充了传统仪器的应用范围。智能仪器实质上是一种硬件和软件的结合设计,并且充分利用了软件技术的强大功能,它把仪器的主要功能集中放在程序存储器ROM中,因而,当需要增加功能时,不需要全面改变硬件设计,而只要修改存放在ROM中的软件内容就可以很放便地改变仪器的功能。智能仪器凭借其体积小、功能强、功耗低等优势,迅速地在家用电器、科研单位和工业企业中得到了广泛的应用。 因此单片机的应用使智能仪器具有以下功能特点: 1、具有友好的人—机对话能力。 2、自动矫正零点满度和切换量程。 3、多点快速检测。 4、自动修正各类测量误差。 5、数字滤波。 6、数据处理。 7、各种控制规律。 8、多种输出形式。 9、数据通信。10、自诊断和故障监控。11、掉电保护。 模数转换:把连续变化的模拟量转化为在时间和幅值上离散的数字量。 模数转换器:实现模数转换的电路或器件,又称A/D转换器或ADC。 ADC是模拟量和数字量之间不可缺少的桥梁。A/D转换器在数字控制系统中拥有重要的地位。A/D转换器将各种模拟信号转换为抗干扰性更强的数字信号,直接进入数字计算机上进行处理,存储并产生数字控制信号。 1 总体方案: 把ADC0809的ALE的引脚置为高电平,地址锁存与译码器将A, B,C 三条地址线的地址信号进行锁存,经过一段延时,然后把ALE的引脚设为低电平。接着把START引脚置为高电平,经过一段延时,然后置为低电平,再经过一段延时,此时开始模数转换。当OE为高电平时。把转换好的数字量存放在内存某单元中,然后把OE置为低电平,延时,用这种方式依次把八个通道的模拟量转换为数字量存放在假设的某个单元中。当单片机接收到ADC0809的转换结束性号信号后(既OE为低电

2位数码管显示00-99的89c51单片机电子秒表设计 的程序和电路图

/*应该是2位数码管显示00-99的89c51单片机电子秒表设计的程序和电路图*/ P0段选,P2.0个位位选,P2.1十位位选。共阳数码管16M晶振。STRT EQU P2.5 STP EQU P2.6 CLRR EQU P2.7 ORG 00H AJMP MAIN ORG 0BH AJMP T0INT ORG 30H MAIN: MOV R0,#20 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV DPTR,#TABLE SETB EA SETB ET0 k1: LCALL DISP JB STRT,K2 LCALL DISP JNB STRT,$-3 AJMP START k2: JB STP,K3 LCALL DISP JNB STP,STOP K3: JB CLRR,K1 LCALL DISP JNB CLRR,CLEAR AJMP K3 START: SETB TR0 AJMP K1 STOP: CLR TR0 AJMP K2

CLEAR: CLR TR0 MOV 40H,#0 AJMP K1 T0INT: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R0,RTI MOV R0,#20 MOV A,40H CJNE A,#99,ADD1 MOV 40H,#00H CLR TR0 AJMP RTI ADD1: ADD A,#01H MOV 40H,A RTI: RETI DISP: MOV A,40H MOV B,#10 DIV AB ;//当前值除以10 MOV 20H,A ;//得出的商送给十位MOV 21H,B ;//得出的余数送给个位 CLR P2.0 SETB P2.1 MOV A,20H ;//十位显示 MOVC A,@A+DPTR MOV P0,A LCALL DELAY CLR P2.1 SETB P2.0 MOV A,21H ; //个位显示 MOVC A,@A+DPTR MOV P0,A RET DELAY: ;误差0us

0—5V电压测量数码管显示

《单片机课程设计》 课程设计报告 题目:电压测量LCD显示 院(系):机电与自动化学院 专业班级:电气0902 学生姓名:袁帅 学号:20092822066 指导教师:胡胜 20 11 年 12 月 11 日至20 11 年 12 月 23 日 华中科技大学武昌分校制

目录 1.课程设计任务与目的 (1) 1.1设计任务 (1) 1.2设计目的 (1) 2.硬件电路原理图 (1) 3.V/F转换电路 (2) 3.1V/F转换原理: (4) 3.2 V/F转换硬件原理图 (4) 3.3 LED硬件电路图 (5) 4.主程序流程图 (5) 4.1子程序名称:LOOP1 (6) 4.2子程序名称:PTDS (6) 5.有效测量数据 (7) 6.误差分析 (7) 7.心得体会 (8) 参考文献 (10) 附录1系统完整程序…………………………………………………………页码

1.课程设计任务与目的 本设计是简易数字电压表,随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。本设计为在参阅了大量资料的基础上应用所学知识设计完成的一种基于89C51单片机的一种电压测量电路,使用数码管模块显示。 1.1设计任务 0-5V电压测量(数码管显示) 要求:测量值在数码管上显示; 显示到小数点后三位; 1.2设计目的 1.通过课程设计,巩固所学的理论知识; 2.综合运用单片机课程中所学的理论知识,独立完成一个课题的设计; 3.通过查阅手册和参考文献资料,培养学生独立分析和解决实际问题的能力; 4.熟悉掌握各种芯片的类型和特性,并掌握合理选用的原则; 5.提高软件使用、硬件调试和排除故障的能力; 6.掌握数子电子仪器的使用方法; 7. 学会撰写课程设计论文,提高撰写设计报告的能力; 8. 培养严肃认真的工作作风和严谨的科学态度; 9. 经过查资料、选方案、设计电路、撰写设计报告、使学生得到一次较全面 的工程实践训练,通过理论联系实际,提高和培养创新能力,为后续课程的学习,毕业设计,毕业后的工作打下基础。 2.硬件电路原理图 按系统功能实现要求,决定控制系统采用AT89C52单片机,A/D转换采用

基于单片机的简易计时器设计

南华大学电气工程学院课程设计 摘要:单片机自70年代问世以来得到蓬勃发展,目前单片机功能正日渐完善:单片机集成越来越多资源,内部储存资源日益丰富,用户不需要扩充资源就可以完成项目开发,不仅是开发简单,产品小巧美观,同时抗干扰能力强,系统也更加稳定,使它更适合工业控制领域,具有更广阔的市场前景;提供在线编程能力,加速了产品的开发进程,为企业产品上市赢得了宝贵时间。本设计通过STC89C51单片机以及单片机最小系统和三极管驱动以及外围的按键和数码管显示等部件,设计一个基于单片机的简易计时器。设计通过四位一体共阳极数码管显示,并能通过按键对秒进行设置。 关键词:STC89C51单片机,驱动,四位一体数码管

南华大学电气工程学院课程设计 Abstract:SCM be booming since since the 70 s, MCU functions are increasingly perfect at present: single chip microcomputer integrated more and more resources, internal storage resource increasingly rich, users do not need to expand resources can complete the project development, is not only the development of simple, small beautiful products, at the same time, strong anti-jamming capability, system is more stable, make it more suitable for industrial control field, has a broad market prospect; Provide online programming ability, speeded up the process of product development, product for the enterprise to win the precious time. This design and triode driven by STC89C51 microcontroller and the single chip microcomputer minimum system and peripheral keys and digital tube display components, design a simple timer based on single chip microcomputer. Design through the four digital tube display, a total of anode, and can through the button to set the seconds. Keywords: STC89C51 microcontroller, drive, Four digital tube

数码管显示AD转换的电压值数码管显示秒表

电子科技大学微电子与固体电子学院实验报告 实验名称现代电子技术综合实验 姓名:詹朋璇 学号:2011031030024 评分: 教师签字 电子科技大学教务处制

电子科技大学 实验报告 学生姓名:詹朋璇学号:2011031030024 指导教师:熊万安 实验地点:211大楼308 实验时间:2014. 6.30 晚 一、实验室名称:单片机技术综合实验室 实验项目名称:数码管显示A/D转换的电压值&数码管显示秒表 二、实验学时:12 三、实验目的与任务: 1、熟悉系统设计与实现原理 2、掌握KEIL C51的基本使用方法 3、熟悉实验板的应用 4、连接电路,编程调试,实现各部分的功能 5、完成系统软件的编写与调试 四、实验器材 1、PC机一台 2、实验板一块 五、实验原理、步骤及内容 试验要求:数码管的第1位显示任务号1,第3位到第5位显示、A/D转换的电压值,可调节电压,第7、8位显示两位学号;数码管第2位和第6位显示“-”号;

按按键key1进行切换,此时数码管第1位显示任务号2,第7、8位显示循环倒计时的秒表,范围为08秒到01秒后,再过01秒,秒表又显示为08秒;(单片机系统中利用定时器/计数器计数秒表的值:利用定时器T0延时1秒进行计数。),其它位显示不变,按按键key2时,秒表停止计数,再按按键key2时,秒表继续计数,按key1键,又回到任务1的显示状态。 当电压值大于2伏时,按按键不起作用。 1、硬件设计(可打印) 2、各部分硬件原理(可打印) 数码管动态扫描 TLS549ADC工作时序图 3、软件设计 2按下

思考题:按键改用外部中断模式,电路如何修改(画示意图)?程序如何修改,写出中断服务程序。 答:将KEY1与KEY2键通过跳线分别接到INT0与INT1接口上。开启中断: SysInit() { … EA=0; //禁止总中断 EX1=1; //使能/INT1 中断 EX0=1; //使能/INT0 中断 EA=1; }//使能总中断 中断服务程序: void INT0SVC () interrupt 0 { if(cnt<=31) cnt++;} void INT1SVC () interrupt 2 { if(cnt>=17) cnt--;} 六、总结及心得体会 1.利用单片机开发板上丰富的资源可以实现一个有一定功能的系统。 2.懂得利用中断可以使单片机的效率提高。 七、对本实验过程及方法、手段的改进建议 实在是没有,都挺好的。 八、附录 1、程序 /* 利用TLC549 A/D转换器实现电压测量与显示 */ #include //包含8051的SFR寄存器定义头文件 #include //扩展并行接口所需的绝对地址访问库函数

秒表-六位数码管有效显示2

秒表-六位数码管有效显示 C51单片机

1.#include 2.#include 3.#define uchar unsigned char 1.void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255 2.void key_scan(); // 按键扫描 3.void key_to(); // 按键处理 4. 5.uchar code dis_code[11] = {0xc0,0xf9,0xa4,0xb0,0x99, //段 码表 6.// 0 1 2 3 4 对应内容 7. 0x92,0x82,0xf8,0x80,0x90,0xbf}; 8.// 5 6 7 8 9 - 9. 10.uchar data dis[8]; // dis[0]为百分之一秒值,dis[1]为十分之 一秒值 11. // dis[2],dis[5]为'-'段码的偏移量 12. // dis[3]为秒个位值,dis[4]为秒十位 值 13. // dis[6]为分个位值,dis[7]为分十位 值 14. 15.uchar data dot = 0; // 百分之一秒计数器(0.00s-0.99s) 16.uchar data sec = 0; // 秒计数器(00s-59s) 17.uchar data min = 0; // 分计数器(00m-99m) 18. 19.uchar data dis_b; // dis_b为位码选通数码管 20.uchar data dis_r; // dis_r为取段码时的偏移量 21. 22.uchar data key_t = 0; // 按键次数,初始为0 23. 24.sbit K = P1^4; // K键与P1.4相连 25. 26.void main() 27.{ 28. P2 = 0xff; // 关所有数码管 29. P1 = 0xff; // p1为准双向口,作输入时先写1 30. dis[2] = 10; // '-'在段码表中偏移量为10 31. dis[5] = 10; // '-'在段码表中偏移量为10 32. dis_b = 0x7f; // 初始选通P2.7口数码管 33. dis_r = 0; // 初始化偏移量为0 34. 35. TMOD = 0x11; // 定时/计数器0,1工作于方式1

模拟电压测量与显示课程设计说明书

燕山大学 课程设计说明书题目:模拟电压测量与显示

电气工程学院《课程设计》任务书 一份。 2013年7月1日

摘要 (1) 第一章总体设计 (2) 1.1 概述 (2) 1.2 硬件电路图及工作过程简介 (3) 1.3程序设计 (4) 1.4小结 (4) 第二章硬件设计 (5) 2.1 ADC0809 (5) 2.2 80C51 (7) 2.3 LED显示模块 (7) 第三章软件设计 (9) 3.1 程序流程图 (10) 3.2 程序代码 (12) 3.3 总结 (12) 第四章实验箱连线和实验结果 (13) 4.1 实验箱连线 (12) 4.2 实验结果 (12) 第五章收获与总结 (17) 参考文献 (20)

本课题介绍了一种基于单片机的模拟电压测量的设计。该设计根据伟福LAB2000P 实验箱设计,并在实验箱上实现。本设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯片80C51来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着ADC0809芯片工作。 该系统的测量电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此系统可以测量0-5V的1路模拟直流输入电压值,并通过一个四位一体的7段数码管显示出来,当测量值超过设定值时产生报警。 关键词:单片机;模拟电压测量;A/D转换;LAB2000P;80C51;ADC0809

第一章 总体设计 1.1 概述 一个完备的单片机应用系统包括硬件和软件两大部分,其中硬件部分包括扩展的存 储器、键盘、显示、前向通道、后向通道、控制接口电路以及相关芯片的外围电路等,软件的功能就是指挥单片机按预定的功能要求进行操作的程序。一个单片机系统只要系统的软、硬件紧密配合,协调一致,这样才是高性能的单片机系统。 本课题所设计的模拟电压测量系统主要包括两部分:硬件电路及软件程序。而硬件 电路采用 INTEL 公司的80C51作为主处理器,系统主要由信号采集、 转换、A/D 数据处理输出、显示等几个功能模块组成。各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用汇编语言编程,利用wave6000软件对其编译和仿真。系统框图如图1: 图1 .整体框图 被测直流电压由 A/D 转换单元采集后被量化,再由单片机对 A/D 转换的结果进 行标度变换,得到被测电压的数值,通过单片机转换结果、把结果输出给显示驱动单元,驱动数码管显示。 1.2 硬件电路图及工作过程简介

单片机实验——秒表--(详细步骤)

简易秒表制作 1子情境内容:制作简易秒表,利用按键构成键盘实现秒表的启动、停止与复位,利用LED数码管显示时间。 2 子情境目标: (1)通过简易秒表的制作,进一步熟悉LED数码管与单片机的接口电路(2)学习定时/计数器、中断技术的综合运用并会使用简易键盘 3 知识点链接 独立式按键的使用:图5-49为按键与单片机的连接图。 机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图5-50所示,抖动时间的长短与开关的机械特性有关,一般为5~10ms。 在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。本子情境中采用软件去抖。 图按键与单片机连接图图按键被按下时电压的变化 4 任务步骤 4.1 步骤一:PROTEUS电路设计,简易秒表的原理图如图5-51所示。 1、选取元器件 ①单片机:AT89C51 ②两位共阴极蓝色数码管:7SEG-MPX2-CC-BLUE ③排阻:RESPACK-8 ④按钮:BUTTON 2、放置元器件、放置电源和地、连线、元器件属性设置 简易秒表的原理图如图5-51所示,整个电路设计操作都在ISIS平台中进

行。与子情景3相似,故不详述。 图简易秒表的原理图4.2 步骤二:源程序设计与目标代码文件生成(1)程序流程图

主程序

图5-52 秒表流程图 (2)源程序设计 #include #define uint unsigned int #define uchar unsigned char sbit key1=P3^0; //定义"启动"按钮 sbit key2=P3^1; //定义"停止"按钮 sbit key3=P3^2; //定义"复位"按钮 uchar temp,aa,shi,ge; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; //共阴极数码管编码 void display(uchar shi,uchar ge); //声明显示子函数 void delay(uint z); //声明延时子函数 void init(); //声明初始化函数 void main() { init(); //调用初始化子程序 while(1) { if(key1==0) //检测"启动"按钮是否按下 { delay(10); //延时去抖动 if(key1==0) //再次检测"启动"按钮是否按下 { while(!key1); //松手检测,若按键没有释放,key1始终为 0,那么!key1始终为1,程序就一直停在此 while语句处 TR0=1; //启动定时器开始工作

51单片机秒表计时器课程设计报告(含C语言程序)

XXXXXX学院 51单片机系统设计课程设计报告 题目:秒表系统设计 专业、班级: 学生姓名: 学号: 指导教师: 分数:

[摘要]本设计是一个秒表计时器,采用51单片机实现。电路包括以下几部分: 单片机最小系统部分,数码管显示部分,摁键开关部分部分。电路选用共阴型4位数码管组成时钟显示电路;时钟的增减控制以及清零部分主要由轻触开关构成的摁键系统组成;信号接收和处理部分主要由单片机来执行。接通电源后,秒表计时器处于初始状态,4位数码管显示000.0。当摁下“开始”开关时,秒表开始计时,数码管显示当前状态的时间。当再次摁下开关时,数码管停止计时。摁下“清零”键后,系统重新回到初始状态。 [关键词]单片机最小系统秒表计时摁键控制

1、任务 设计一个秒表计时器,在51单片机的控制作用下,采用4个LED数码管显示时间,计时范围设置为00.0~60.0秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。 2、设计要求 (1)开始时显示00.0。每按下S1键一次,数值加1s; (2)每按下S2键一次,数值减1s; (3)每按下S3键一次,数值清零; (4)每按下S4键一次,启动定时器使数值开始自动每秒加1, 再次按下S4键,数值停止自动加1,保持显示原数。 3、发挥部分 (1)开关按键3:“复位 60.0”按键(用来60秒倒计时)。按键按下去时数码管复位为“60.0”(用于倒计时)。 (2)开关按键4:倒计时“逐渐自减”按键。按键按下去则是数码管开始“逐渐自减”倒计时。 (3)开关按键5:倒计时初始值“增加”按键。 (4)开关按键6:倒计时初始值“减小”按键。 4、课程设计的难点 单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现 LED 的动态扫描显示;三是如何对键盘输入进行编程。 5、课程设计仪器 集成电路芯片STC89C52,八段数码管,MCS-51系列单片机微机仿真课程系统中的软件(keil uvision2)。

用定时器计数器设计一个简单的秒表

目录 摘要................................................................................................ 错误!未定义书签。 1 Proteus简介错误!未定义书签。 2 主要相关硬件介绍错误!未定义书签。 AT89C52简介错误!未定义书签。 四位数码管错误!未定义书签。 74LS139芯片介绍错误!未定义书签。 3 设计原理错误!未定义书签。 4 电路设计错误!未定义书签。 电路框图设计错误!未定义书签。 电路模块介绍错误!未定义书签。 控制电路错误!未定义书签。 译码电路错误!未定义书签。 数码管显示电路错误!未定义书签。 仿真电路图错误!未定义书签。 5 设计代码错误!未定义书签。 6 仿真图错误!未定义书签。 7 仿真结果分析错误!未定义书签。 8 实物图错误!未定义书签。 9 心得体会错误!未定义书签。 参考文献错误!未定义书签。

摘要 现在单片机的运用越来越宽泛,大到导弹的导航装置、飞机上各种仪表的控制、计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理,小到广泛使用的各种智能IC卡、各种计时和计数器等等。本次课设我们要设计一个能显示计时状态和结果的秒表,它是基于定时器/计数器设计一个简单的秒表。 本次设计的数字电子秒表系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现四位LED显示,显示时间为0~秒,计时精度为秒,能正确地进行计时,并显示计时状态和结果。其中软件系统采用汇编或者C语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,并在keil中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。 关键词:秒表,AT89C51,proteus,C语言

秒表-六位数码管有效显示

?/************************************************************************** ?* 标题: 秒表-六位数码管有效显示(C51) ?* 作者: wentao https://www.360docs.net/doc/a313500915.html, ? https://www.360docs.net/doc/a313500915.html, ?* 日期: 2007.3.3 ?* 软件: Keil C51 V8.02 ?* 芯片: AT89X51 ?* 说明: 实验板实测通过,数码管为8位共阳 ?* 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途! ?**************************************************************************/? ?#include ?#include ?#define uchar unsigned char ? ?void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255 ?void key_scan(); // 按键扫描 ?void key_to(); // 按键处理 ? ?uchar code dis_code[11] = {0xc0,0xf9,0xa4,0xb0,0x99, //段码表 ?// 0 1 2 3 4 对应内容 ? 0x92,0x82,0xf8,0x80,0x90,0xbf}; ?// 5 6 7 8 9 - ? ?uchar data dis[8]; // dis[0]为百分之一秒值,dis[1]为十分之一秒值 ?// dis[2],dis[5]为'-'段码的偏移量 ?// dis[3]为秒个位值,dis[4]为秒十位值 ?// dis[6]为分个位值,dis[7]为分十位值 ? ?uchar data dot = 0; // 百分之一秒计数器(0.00s-0.99s) ?uchar data sec = 0; // 秒计数器(00s-59s) ?uchar data min = 0; // 分计数器(00m-99m) ? ?uchar data dis_b; // dis_b为位码选通数码管 ?uchar data dis_r; // dis_r为取段码时的偏移量 ? ?uchar data key_t = 0; // 按键次数,初始为0 ? ?sbit K = P1^4; // K键与P1.4相连 ? ?void main() ? { ?P2 = 0xff; // 关所有数码管 ?P1 = 0xff; // p1为准双向口,作输入时先写1

简易秒表LED数码管显示接口技术应用

单片机原理及应用 课程设计 设计题目:简易秒表LED数码管显示接口技术应用姓名:廖承润 学号:110105011118 专业班级:11级光信1班 指导教师:叶念渝 2014年5月

目录 1 内容及要求 (1) 2 设计思路 (1) 3 工作原理 (2) 4 硬件设计 (2) 5 软件设计 (3) 6 调试 (8) 7 修改意见 (9) 8 源程序 (9) 9 收获及体会 (12) 简易秒表LED数码管显示接口技术应用

1,内容及要求 (1)内容 ?如何运用单片机实现计时; ?如何显示时间; ?如何利用按键实施对秒表的控制。 ?定时器T0 或Tl 的定时时间作为时钟计时的基准 ?启动与停止定时器工作实现计时。 ?先用两个数码管动态显示时间,时间范围为0-60s ?用三个独立式按键实现秒表的启动、停止和复位功能。 ?A机发送,B机接收* (2)要求 ?通过简易秒表的制作,熟悉LED 数码管与单片机的接口方式; ?定时/计数器、中断技术的综合应用; ?学会简易键盘的使用。 ?利用按键构成键盘实现秒表的启动、停止与复位, ?利用LED 数码管显示时间。 ?*进行简单的串行通信。 2,设计思路 (1)硬件 ?采用P0 口输出并联控制两个数码管的8 个段选控制端。 ?用P2.0、P2.1分别控制两个LED 数码管的位选控制端。 ?这是典型的动态显示电路接法,LED 采用共阳极数码 ?三个按键采用独立式键盘接法, ?两个按键连接到外部中断INT0 、INT1 的输人引脚P3.2和P3.3, ?S4按键接到T1的外部脉冲输入引脚P3.5,以中断方式实现键盘输入状态 的扫描。 ?其中S2为启动按钮,S3为停止按钮,S4 清零按钮。 ?K1为复位键 (2)软件 ?根据设计的总体要求划分出各功能程序模块,分别确定主程序、子程序及 中断服务程序结构。 ?对各程序模块占用的单片机资源进行统一调配。 ?对各模块间的逻辑关系进行细化,优化程序结构; ?设计出各模块程序结构流程图。 ?最后依据流程图编制具体程序。 ?将整个程序划分为主程序、键盘扫描程序、秒计时程序三大模块。

相关文档
最新文档