用单片机实现1位LED数码管显示0-9

合集下载

数码管静态显示实训报告

数码管静态显示实训报告

一、实训目的通过本次实训,掌握数码管静态显示的原理和方法,熟悉51单片机的编程技巧,以及如何利用单片机控制数码管显示特定的数字和字符。

同时,了解数码管在电子显示中的应用及其驱动电路的设计。

二、实训器材1. 51单片机开发板2. 数码管(共阴极或共阳极)3. 电阻4. 译码器(如74HC138)5. 驱动器(如74HC245)6. 连接线7. 编程软件(如Keil)8. 仿真软件(如Proteus)三、实训原理数码管静态显示是指每个数码管的每个段都由单片机的I/O口直接驱动。

当某个段需要显示时,相应的I/O口输出高电平或低电平,控制该段LED的亮灭。

共阴极数码管的段码共用一个电源的负极,高电平点亮;共阳极数码管的段码共用一个电源的正极,低电平点亮。

在本次实训中,我们使用51单片机的P0口输出段码数据,P2口输出位选信号,通过译码器和驱动器实现对数码管的驱动。

四、实训步骤1. 硬件连接(1)将数码管按照共阴极或共阳极的接法连接到单片机的P0口。

(2)将译码器的输入端连接到单片机的P2口。

(3)将驱动器的输入端连接到译码器的输出端。

(4)将驱动器的输出端连接到数码管的位选端。

2. 软件编写(1)定义数码管的字形码数组,存储0~9数字的字形码。

(2)编写主函数,通过循环遍历字形码数组,控制数码管显示相应的数字。

(3)编写延时函数,实现数字显示的间隔。

3. 仿真测试(1)使用Proteus软件搭建仿真电路。

(2)编写Keil软件中的程序,并编译生成HEX文件。

(3)将HEX文件下载到51单片机中。

(4)运行仿真程序,观察数码管显示的数字是否正确。

五、实训结果经过实训,我们成功实现了数码管静态显示功能。

数码管能够按照程序设置的方式,依次循环显示0~9十个数字。

六、实训心得1. 通过本次实训,我们了解了数码管静态显示的原理和实现方法,掌握了51单片机的编程技巧。

2. 在实训过程中,我们学会了如何使用译码器和驱动器扩展单片机的I/O口功能。

(单片机)

(单片机)

实验四一、实验题目:当K1键按下后,首先使蜂鸣器响一声,然后使LED1-LED8完成3种闪亮的花样(自己定义),每一种花样循环3次,然后周而复始。

二、keil代码:/*当K1键按下后,首先使蜂鸣器响一声,然后使LED1- LED8完成3种闪亮的花样(自己定义),每一种花样循环3次,然后周而复始。

*/#include<reg51.h>sbit P2_0=P2^0;//接蜂鸣器sbit P2_7=P2^7;sbit P1_0=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit P1_3=P1^3;sbit P1_4=P1^4;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;void DELAY(int time)//延时{while(time--){}}void BUZ_ON(){if(P2_7==0){P2_0=1;}else{ P2_0=0;}}void F1(void){int i;char data_group_mide[5]={0x00,0x18,0x24,0x42,0x81};//向两边延伸for(i=0;i<5;i++){P1=data_group_mide[i];DELAY(20000);}P1=0x00;}void F2(void){int i;char data_group_left[8]={0xFF,0x7F,0x3F,0x0F,0x07,0x03,0x01,0x00};//向左延伸for(i=0;i<8;i++){P1=data_group_left[i];DELAY(20000);P1=0x00;}void F3(void){int i;char date_group_right[8]={0x00,0x01,0x03,0x07,0x0f,0x3f,0x7f,0xff};//向右延伸for(i=0;i<8;i++){P1=date_group_right[i];DELAY(20000);}P1=0x00;}void main(){unsigned int i; //每种花样循环三次P2_0=0;P2_7=1;BUZ_ON();P1=0x00;while(P2_7==0){for(i=0;i<3;i++)//花样1 {F1();}for(i=0;i<3;i++)//花样2 {F2();}for(i=0;i<3;i++)//花样3 {F3();}}}三、protues电路图:四、实验截图:五、实验小结:通过本次实验,我们熟悉了protues的编译环境,对以后的单片机学习有很大帮助。

数码显示控制实验报告(3篇)

数码显示控制实验报告(3篇)

第1篇一、实验目的1. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。

二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。

51单片机通过控制数码显示模块的段选和位选,实现数字的显示。

移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。

在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。

三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。

四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。

2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。

3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。

4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。

五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。

单片机_两个数码管显示00~99

单片机_两个数码管显示00~99
delay(10); //延时
P0_1=1; //关闭个位显示
}
}
void key_ccan(void)
{
unsigned char ii;
P1=0xff;
ii=P1;
shi=num/10; //取出十位数
ge=num%10; //取出个位数
P0_0=1;P0_1=1; //关闭显示
P2=Tab[shi]; //P2口送出十位数据显示代码
P0_0=0; //打开十位显示
delay(10); //延时
P0_0=1; //关闭显示
P2=Tab[ge]; //P2口送出个位数据显示代码
P0_1=0; //打开个位显示
按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)//
#include<reg52.h>
sbit P0_0=P0^0; //个位数字
sbit P0_1=P0^1; //十位数字
void main()
{
P2=Tab[0];P0_0=0;P0_1=0;//显示00
num=0; //被显示的数置0
while(1)
{
key_ccan(); //调用按键扫描程序
for(i=0;i<count;i++) //显示个位、十位count次后显示的数加1
}
{
case 0xfe: num++;if(num==100) num=0; break;
case 0xfd: if(num==0) num=99;else num--;break;

实验四 LED数码管显示实验报告

实验四 LED数码管显示实验报告

实验名称 LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。

实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。

利用末位数码管循环显示数字0-F,显示切换频率为1Hz。

2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。

二、设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。

定时采用软件查询工作方式,利用JNB TF0, HERE实现。

置P0.6和P0.7端口为0,位选信号选定末位数码管。

通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。

寄存器R0自增1,并赋给A以取出下一个显示段码数据。

为减短代码长度,利用CJNE指令实现循环结构。

当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。

2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。

三、资源分配1.基础部分P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首 2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据 R5:存放十位显示数据 R6:存放百位显示数据 P1:输出段码数据DPTR: 指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename: test.asm;Decription: 末位数码管循环显示数字0-F,显示切换频率为1Hz。

proteus教学实验系统(单片机e型)实验指导

proteus教学实验系统(单片机e型)实验指导

目录(版本 1.03)第1章PROTEUS教学实验系统(单片机E型)简介及使用说明 (1)1.1 系统简介 (1)1.2 实验系统的硬件布局 (4)1.3 实验系统原理图 (5)1.4 实验板硬件图 (16)1.5 USB下载方式说明 (23)第2章硬件实验目录 (27)实验一I /O口输出实验—LED流水灯实验 (27)实验二I/O口输入/输出实验—模拟开关灯 (29)实验三8255并行I/O扩展实验 (31)实验四无译码的七段数码管显示实验 (33)实验五BCD译码的多位数码管扫描显示实验 (36)实验六独立式键盘实验 (38)实验七计数器实验 (40)实验八定时器实验 (42)实验九单个外部中断实验 (44)实验十中断嵌套实验 (46)实验十一矩阵键盘扫描实验 (49)实验十二串行端口并行输出扩充实验 (51)实验十三串行端口并行输入扩充实验 (53)实验十四单片机与PC之间串行通信实验 (55)实验十五双单片机通信实验 (58)实验十六I2C总线——AT24CXX存储器读写 (60)实验十七温度传感器DS18B20实验 (64)实验十八实时时钟DS1302实验 (66)实验十九A/D转换实验 (68)实验二十D/A转换实验 (70)实验二十一1602液晶显示的控制(44780) (72)实验二十二12864液晶显示的控制(KS0108) (74)实验二十三直流电机控制实验 (76)实验二十四步进电机控制实验 (78)实验二十五16X16阵列LED显示 (81)实验二十六直流电机测速实验 (83)实验二十七串行AD—TLC549实验 (85)实验二十八串行DA—TLC5615实验 (87)实验二十九继电器控制实验 (89)实验三十LCD 1602 IO方式驱动 (92)第3章软件仿真实验目录 (96)实验一可控硅驱动 (96)实验二光耦应用实验 (98)实验三单片机播放音乐实验 (100)实验四SD卡读写实验 (104)第1章PROTEUS教学实验系统(单片机E型)简介及使用说明1.1 系统简介【硬件特点】PROTEUS教学实验系统(单片机E型)是我公司陆续推出的PROTEUS教学实验系统第三版。

单片机实验

单片机实验

单片机实验第二次实验:图见实验题1.P1.0~P1.7这八个发光二极管全部点亮#include#define uchar unsigned char#define uint unsigned intsbit greenLed=P1^0;Delay(uint cnt){ uchar i;do{for(i=0;i<165;i++);}while(cnt--);}main(){ while(1){ greenLed=0;Delay(1000);greenLed=1;Delay(1000);}}2. P1.0~P1.7这八个发光二极管循环点亮#include delay(unsigned char cnt){ unsigned int i;do{for(i=0;i<6000;i++);}while(cnt--);}main(){ unsigned char a;P1=~a;while(1){if(a!=0){ delay(5);a<<=1;P1=~a;}else{a=0x01;P1=~a;}}}3.通过外部中断控制八盏灯分别右移,左移,闪烁,双灯同时左移。

#include#define uchar unsigned charuchar code LedTable[]= {0x03,0x0c,0x30,0xc0};uchar led_flag = 4;uchar a; Delay(uchar cnt){ unsigned int i;do{ for(i=0;i<6000;i++);}while(cnt--);}void Led_rr(void)//led右移函数{ uchar i;for(i=0;i<8;i++){ if(a == 0) a= 0x80;P1 = ~a;a >>= 1;}}void Led_rl(void)//led左移函数{ uchar i;for(i=0;i<8;i++){ if(a == 0) a= 0x01;P1 = ~a;a <<= 1;Delay(10);}}void Led_spark(void){ P1 = 0xff;Delay(10);P1 = 0;Delay(10);}void Led_lr_doble(){ uchar i;for (i=0;i<4;i++){ P1= ~LedTable[i];Delay(10);}}void int1(void) interrupt 2 //中断服务函数{ led_flag++;if(led_flag >= 3) led_flag = 0;}void main(void){ EA = 1;EX1 = 1;IT1 = 1;while(1){ if(led_flag ==4){ Led_spark();}if(led_flag == 0){ Led_rl();}if(led_flag == 1){ Led_rr();}if(led_flag == 2){ Led_lr_doble();}}第三次实验:1.设单片机的=12MHz,要求用定时器/计数器T0以方式1在P1.0脚上输出周期为4ms的方波。

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位

标准文档9创新实践实训报告学院信息电子技术学院专业电子信息工程班级14学籍号姓名指导教师蒋野2017年06月29日单片机控制秒表电路一、电路工作原理1.工作原理用STC89C52设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“暂停”键S2和一个“继续”键S3。

为使本设计系统更加完善,可以引入一个“复位”键S1,以方便对系统的控制。

如图。

本系统采用STC89C51单片机为中心器件,利用其定时器/计数器定时计数的原理,结合硬件电路如电源电路,晶振电路,复位电路和显示电路,以及一些按键电路等来设计计数器,将软硬件有机结合起来,其中软件系统采用汇编语言编写程序,包括显示程序,计数程序,中断,硬件系统利用Protues强大的功能来实现,简单易于观察,在仿真中就可以观察到实际的工作状态。

2.元器件作用(1)STC89C52单片机在电子行业中有着广泛的应用。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。

(2)时钟电路作用是为电路提供唯一的时钟信号。

(3)复位电路外接一个开关,控制电路复位,接通电源电路直接复位,如果没有开关亦可将复位电路引出导线接电源后断开。

(4)本设计要求使用共阳极的数码管,如下是共阳极的数码管的0-9编码:0xc0,0x92,0x82,0xf8,0x80,0x90,0xf9,0xa4,0xb0,0x99.(5)控制电路:S2按下电路停止计时,S3按下电路恢复计时。

二、程序流程图主程序流程图三、检测安装与调试1.元件检测共阳极数码管检测管脚序号利用万用表二极管档红表笔接一个抵住两个管脚,利用另一个接触其他,找出1,2两个管脚,继续分别找出A,D,C,D,E,F,G,Dp管脚。

单片机第 章答案

单片机第 章答案

第7章思考题及习题71.如果采用的晶振的频率为24MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少?答:晶振的频率为24MHz, 机器周期为0.5µs。

方式0最大定时时间=0.5µs×213=0.5µs×8192=4096µs方式1最大定时时间=0.5µs×216=0.5µs×65536=327686µs方式2最大定时时间=0.5µs×28=0.5µs×256=128µs2.定时器/计数器用作计数器模式时,对外界计数频率有何限制?答:外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。

3.定时器/计数器的工作方式2有什么特点?适用于哪些应用场合?答:方式2为初值自动装入的8位定时器/计数器,克服了在循环定时或循环计数应用时就存在用指令反复装入计数初值影响定时精度的问题。

适用于精确定时,比如波特率的产生。

4.TH x与TL x(x = 0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新?答:THx与TLx(x = 0,1)是计数器,其内容可以随时用指令更改,但是更改后的新值要等当前计数器计满后才能刷新。

答:THX与TLX(X=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值是立即刷新。

但在读THX、TLX的值时,应该先读THX值,后读TLX,再读THX。

若两次读得THX相同,则可确定读得的内容正确。

若前后两次读得的THX有变化,再重复上述过程。

5.Proteus虚拟仿真使用定时器T0,采用方式2定时,在P1.0脚输出周期为400µs,占空比为4:1的矩形脉冲,要求在P1.0脚接有虚拟示波器,观察P1.0脚输出的矩形脉冲波形。

51单片机-数码管显示

51单片机-数码管显示
P2=0x00; P0=0x03; delay(400); P0=0x9f; delay(400); P0=0x25; delay(400);
} void delay(int x) {
int i,j; for(i=0;i<x;i++)
for(j=1;j<120;j++); }
LED字型显示代码表
段符号
十六进制代码
显示 dp
g
f
e
d
c
b
a 共阴极 共阳极
0
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
0
9
0
A0
b
0
C0
d
0
E0
F
0
H0
P0
0
1
1
1
1
1
1
3FH
C0H
0
0
0
0
1
1
0
06H
F9H
1
0
1
1
0
1
1
5BH
A4H
1
0
0
1
1
1
1
4FH
B0H
1
1
0
0
1
Hale Waihona Puke 1066H
99H
1
1
0
1
1
0
1
6DH 92H
1
1
1
1
1
0
1
7DH
1. 静态显示的特点
静态显示就是单片机将所要显示的数据送出去后,数码管始终显示 该数据(不变),到下一次显示时,再传送一次新的显示数据。

单只数码管循环显示0~9

单只数码管循环显示0~9

单只数码管循环显示0-9报告设计题目:单只数码管循环显示0~9设计要求:单片机控制1只数码管,循环显示0~9需求分析:本设计要求单只数码管循环显示0~9,这里采用的是共阴极数码管。

让数码管显示数字的步骤为:1)使数码管的公共端接地(共阴极)上。

2)将显示码送到单片机的P0口,向数码管的各个段输出不同的电平,使单个数码管循环显示0-9这10个数字。

复位电路:在上电或复位过程中,控制CPU的复位状态:这段时间让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。

无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。

而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。

许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。

基本的复位方式单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。

89系列单片机的复位信号是从RST引脚输入到芯片的施密特触发器中的。

当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。

设计原理:一、数码管显示原理我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。

所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。

数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。

而共阳极就是将八个LED的阳极连在一起。

其原理图如下。

其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。

一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。

stm共阳数码管动态显示0~9999对应的代码

stm共阳数码管动态显示0~9999对应的代码

stm共阳数码管动态显示0~9999对应的代码文章主题:STM共阳数码管动态显示0~9999对应的代码在嵌入式系统开发领域,常常会使用到数码管来显示数字信息。

而对于STM32系列单片机来说,共阳数码管是一种常用的显示设备。

本文将以 STM 单片机为例,介绍如何动态显示 0 到 9999 对应的代码,并讨论其实现原理。

一、STM32单片机简介STM32 是意法半导体推出的 32 位 Flash 型存储器嵌入式微控制器产品系列。

它广泛应用于工业控制、消费类电子、电源管理、医疗保健和自动控制等领域。

STM32 单片机具有丰富的外设和强大的性能,因此备受开发者的青睐。

二、共阳数码管原理共阳数码管是一种常见的 LED 数码显示器件。

在共阳数码管中,所有的 LED 二极管的阳脚都连接在一起,而阴极则分别连接到对应的引脚上。

当将对应的引脚置为低电平时,LED 点亮,从而显示出相应的数字或字母。

三、动态显示 0 到 9999 对应的代码在 STM32 单片机中,动态显示 0 到 9999 对应的代码需要通过定时器和中断的方式来实现。

在初始化阶段,需要设置定时器的时钟周期和中断频率。

然后在中断服务函数中,根据需要显示的数字进行位选和段选操作,以便在共阳数码管上显示出对应的数字。

具体代码如下:```#include "stm32f10x.h"uint8_t dis_buf[4]; // 数码管显示缓存void TIM_Configuration(void){// 设置定时器的时钟周期和中断频率// ...}void NVIC_Configuration(void){// 设置中断优先级和使能// ...}void GPIO_Configuration(void) {// 设置数码管引脚对应 STM32 的引脚 // ...}void Number_Display(uint16_t num) {// 数字分解dis_buf[0] = num / 1000;dis_buf[1] = (num % 1000) / 100; dis_buf[2] = (num % 100) / 10;dis_buf[3] = num % 10;// 依次显示// ...}void TIM2_IRQHandler(void){// 中断服务函数,动态显示数字// ...}int main(void){// 初始化// ...while (1){// 主循环// ...}}```四、个人观点和理解动态显示共阳数码管需要较为复杂的逻辑控制和定时器中断处理,但通过合适的代码编写和优化,可以实现可靠、高效的数字显示效果。

数码管实验报告实验原理(3篇)

数码管实验报告实验原理(3篇)

第1篇一、实验背景数码管是一种常用的显示器件,它可以将数字、字母或其他符号显示出来。

数码管广泛应用于各种电子设备中,如计算器、电子钟、电子秤等。

本实验旨在通过实践操作,让学生了解数码管的工作原理,掌握数码管的驱动方法,以及数码管在电子系统中的应用。

二、实验原理1. 数码管类型数码管分为两种类型:七段数码管和液晶数码管。

本实验主要介绍七段数码管。

七段数码管由七个发光二极管(LED)组成,分别代表七个笔画。

当七个LED中的某个或某几个LED点亮时,就可以显示出相应的数字或符号。

根据发光二极管的连接方式,七段数码管可分为共阳极和共阴极两种类型。

2. 数码管驱动方式(1)静态驱动静态驱动是指每个数码管独立驱动,每个数码管都连接到单片机的I/O端口。

这种方式下,数码管显示的数字或符号不会闪烁,但需要较多的I/O端口资源。

(2)动态驱动动态驱动是指多个数码管共用一组I/O端口,通过控制每个数码管的扫描时间来实现动态显示。

这种方式可以节省I/O端口资源,但显示的数字或符号会有闪烁现象。

3. 数码管显示原理(1)共阳极数码管共阳极数码管的特点是七个LED的阳极连接在一起,形成公共阳极。

当要显示数字时,将对应的LED阴极接地,其他LED阴极接高电平,即可显示出相应的数字。

(2)共阴极数码管共阴极数码管的特点是七个LED的阴极连接在一起,形成公共阴极。

当要显示数字时,将对应的LED阳极接地,其他LED阳极接高电平,即可显示出相应的数字。

4. 数码管驱动电路(1)BCD码译码驱动器BCD码译码驱动器是一种将BCD码转换为七段数码管所需段码的电路。

常用的BCD码译码驱动器有CD4511、CD4518等。

(2)74HC595移位寄存器74HC595是一种8位串行输入、并行输出的移位寄存器,常用于数码管的动态驱动。

它可以将单片机输出的串行信号转换为并行信号,驱动数码管显示。

三、实验目的1. 了解数码管的工作原理和驱动方式。

单片机 考前复习习题5

单片机 考前复习习题5

习题55.1单项选择题(1) 在单片机应用系统中,LED数码管显示电路通常有显示方式。

A.静态 B.动态C.静态和动态 D.查询(2) 显示方式编程较简单,但占用I/O端口线多,其一般适用于显示位数较少的场合。

A.静态 B.动态 C.静态和动态 D.查询(3) LED数码管若采用动态显示方式,下列说法错误的是。

A.将各位数码管的段选线并联B.将段选线用一个8位I/O端口控制C.将各位数码管的公共端直接连接在+5V或者GND上D.将各位数码管的位选线用各自独立的I/O端口控制(4) 共阳极LED数码管加反相器驱动时显示字符“6”的段码是。

A.06H B. 7DH C.82H D.FAH(5) 一个单片机应用系统用LED数码管显示字符“8”的段码是80H,可以断定该显示系统用的是。

A.不加反相驱动的共阴极数码管B.加反相驱动的共阴极数码管或不加反相驱动的共阳极数码管C.加反相驱动的共阳极数码管D.以上都不对(6) 在共阳极数码管使用中,若要仅显示小数点,则其相应的字段码是。

A.80H B.10H C.40H D.7FH(7) 某一应用系统需要扩展10个功能键,通常采用方式更好。

A.独立式按键 B.矩阵式键盘 C.动态键盘 D.静态键盘(8) 按键开关的结构通常是机械弹性元件,在按键按下和断开时,触点在闭合和断开瞬间会产生接触不稳定,为消除抖动引起的不良后果常采用的方法有。

A.硬件去抖动 B.软件去抖动 C.硬、软件两种方法 D.单稳态电路去抖方法(9) 行列式(矩阵式)键盘的工作方式主要有。

A.编程扫描方式和中断扫描方式 B.独立查询方式和中断扫描方式c.中断扫描方式和直接访问方式 D.直接输入方式和直接访问方式5.2填空题请补充完整下列的程序。

如图1所示,上电复位后P1口所接的一个共阳极数码管循环显示数字0-9。

#include<reg51.h>Void delay(){unsigned int I;unsigned char j;for(i=0;i<1000;i++){for(j=0;j<121;j++){;}}}void main (){unsigned char led[]={0Xc0, 0Xf9, 0Xa4, 0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char k;while(1){P1= led[k] ; //点亮p1口K++;delay() ; // 调用延时}}图5.1 数码管循环显示数字5.3设计题(1) 基于MCS-5l设计电路并编程,实现共阳极数码管循环显示字符:“H”→“E”→“L”→“L”→“O”。

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位
(3)二次接通电源,电路依然不工作。
(4)复查电路:重新检测电路,利用万用表电流档,检测电路电流,发现电路无电流,检查40引脚VCC,发现单片机40引脚与插座短路,接触不良导致,陆续检查其他引脚。发现还有部分引脚短路。
(5)继续检查电路,直至数码管显示数字为止。
结果显示,秒表运行正常。按照预期实现了99s计时、暂停以及继续的功能。
附件
1.利用单片机完成一定的任务,你的创意(创新)是什么?
我的创意就是电路的布局,实验操作起来与仿真不同,需要注意很多细节,例如原件检测。我的电路布局既节省空间,又不影响电路结构。
2.程序
#include<reg52.h>
sbit W=P1^4;
sbit H=P1^6;
unsigned char msec,sec;
void delay(unsigned char i)
{
unsigned int j,k;
for(k=0;k<i;k++)
for(j=0;j<255;j++);
}
void To_INT(void) interrupt 1
2.元器件作用
(1)STC89C52单片机在电子行业中有着广泛的应用。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
9
创新实践实训报告
学院
信息电子技术学院
专业
电子信息工程

按键控制1位LED数码管显示0-9

按键控制1位LED数码管显示0-9

单片机课程设计姓名:陈素云班级:09电力方向2班学号:200920305340设计题目:按键控制1位LED数码管显示0-9设计要求:通过单片的I/O口与LED数码管所构成的单片机系统的软件编程,使学生掌握简单的单片机系统的设计,同时初步学全用汇编语言和C语言两种方式编程的基本方法。

学生必须采用单片机AT89C51为LED显示屏的控制为核心,分别置“1”或“0”,让某些段的LED 发光,其它的熄灭,然后达到显示不同的字符和图符号的目的. 学生根据前期设计的步骤按照设计报告内容的具体要求,选择前期设计的一个典型题目,写出详尽的课程设计报告,重点内容包括方案论证、完整的电路图、软件系统流程图及开发程序、组装调试内容和总结等。

目录第1节引言 (3)1.1 LED数码显示器概述 (3)1.2 设计任务 (5)1.3设计目的 (6)第2节 AT89C51单片机简介 (6)2.1 AT89C51单片机 (6)2.2 单片机管脚图 (7)2.3管脚说明 (7)2.4振荡器特性 (9)第3节设计主程序与硬件电路设计 (9)3.1设计的主程序 (10)3.2系统程序所需硬件 (10)3.2.1所需的硬件 (10)3.2.2所需硬件的结构图 (11)3.3 硬件电路总连接图 (12)第4节程序运行过程 (12)4.1分析步骤 (12)4.2 程序执行过程 (13)第5节程序运行结果 (13)总结参考文献第1节引言还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,能拼成各种各样的图形,LED数码管显示器实际上也是这么一个东西。

在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。

LED 数码显示器是单片机嵌入式系统中经常使用的显示器件。

一个“8”字型的显示模块用“a、b、c、d、e、f、g、h” 8 个发光二极管组合而成。

每个发光二极管称为一字段。

LED 数码显示器有共阳极和共阴极两种结构形式。

由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。

用单片机实现1位LED数码管显示0-9

用单片机实现1位LED数码管显示0-9

单片机课程设计题目1位LED数码管显示0—9姓名陈益明学号班级 09电力指导老师许丽汪厚新目录一:实验目的与任务…………………二:实验要求…………………………三:实验内容………………………….。

. 四:实验器材…………………………五:关于PLC控制LED介绍………。

六:原理图绘制说明…………………七:流程图绘制以及说明……………八:电路原理图与仿真………………九:源程序……………………………十:心得体会…………………………十一:参考文献………………………一、实验与任务结合实际情况,编程设计、布线、程序调试、检查与运行,完成一个与接近实际工程项目的课题,以培养学生的实际操作能力,适应生产一线工作的需要。

做到能检查出错误,熟练解决问题;对设备进行全面维修。

通过实训对PLC的组成、工作原理、现场调试以及基于网络化工作模式的基本配置与应用等有一个一系列的认识和提高。

利用51单片机、1个独立按键及1位7段数码管等器件,设计一个单片机输入显示系统,要求每按一下独立按键数码管显示数据加1(数码管初始值设为0,计到9后再加1 ,则数码管显示0).本次设计采用12MHz的晶体振荡器为单片机提供振荡周期,外加独立按键,复位电路和显示电路组成.二、实验要求1掌握可编程序控制器技术应用过程中的一些基本技能。

2、巩固、加深已学的理论知识。

3了解可编程控制器的装备、调试的全过程。

4、培养我们综合运用所学的理论知识和基本技能的能力,尤其是培养我们把理论和实际结合起来分析和解决问题的能力。

适应世界生产的需要。

培养出一批既有理论知识又有动手能力的人才。

三、实验内容1、练习设计、连接、调试控制电路;2、学习PLC程序编程;四、元器件清单五、关于PLC控制LED介绍:PLC可编程控制器:它采用一类可编程的存储器,用于其内部存储程序、执行逻辑运算、顺序控制、定时、计数与算数操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。

51单片机hc595控制一位数码管

51单片机hc595控制一位数码管

/*用hc595控制数码管,显示键盘的值*/#include<reg52.h>#define unchar unsigned char#define unint unsigned intunchar temp,num;sbit scl=P3^6;sbit sda=P3^4;sbit rclk=P3^5; //寄存器时钟unchar code table[]={0x40,0xf9,0x24,0x30,0x99,0x12,0x02,0xf8,0x00,0x10,0xbf,0xb9,0xb6,0}; //数码管编码void delay1()//短延时{;;}void delay(int z) //长延时{int a,b;for(a=0;a<110;a++)for(b=0;b<z;b++);}void init()//初始化{scl=1;sda=1;rclk=0;}void start()//开始条件{scl=1;delay1();sda=1;delay1();sda=0;delay1();}void stop()//停止{scl=1;delay1();sda=0;delay1();sda=1;delay1();}void write(unsigned char temp)//写{int i;start();for(i=0;i<8;i++){scl=0;rclk=0;delay1();sda=(bit)(temp&0x80);delay1();scl=1;delay1();delay1();temp<<=1;} rclk=1;stop();}//键盘扫描unchar scan(){// unchar num,temp;// num=17;P2=0xfd;temp=P2;temp=temp&0xf0;while(temp!=0xf0){P2=0xfd;temp=P2;temp=temp&0xf0;delay(10);while(temp!=0xf0){temp=P2;temp=temp&0xf0;switch(temp){case 0xe0:num=1;break;case 0xd0:num=2;break;case 0xb0:num=3;break;case 0x70:num=4;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}// display(num-1);}}P2=0xfb;temp=P2;temp=temp&0xf0;while(temp!=0xf0){P2=0xfb;temp=P2;temp=temp&0xf0;delay(10);while(temp!=0xf0){temp=P2;switch(temp){case 0xeb:num=5;break;case 0xdb:num=6;break;case 0xbb:num=7;break;case 0x7b:num=8;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}//display(num-1);}}P2=0xf7;temp=P2;temp=temp&0xf0;while(temp!=0xf0){P2=0xf7;temp=P2;temp=temp&0xf0;delay(10);while(temp!=0xf0){temp=P2;switch(temp){case 0xe7:num=9;break;case 0xd7:num=10;break;case 0xb7:num=11;break;case 0x77:num=12;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}// display(num-1);//delay(100);}}return num;}/*void display(unchar num) {P0=table[num-1];delay(10);} */void main()//主函数{init();delay1();while(1)//大循环{write(table[scan()]);}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计
题目1位LED数码管显示0-9
姓名陈益明
学号
班级 09电力
指导老师许丽汪厚新
目录
一:实验目的与任务…………………二:实验要求…………………………三:实验内容…………………………... 四:实验器材…………………………五:关于PLC控制LED介绍………. 六:原理图绘制说明…………………
七:流程图绘制以及说明……………八:电路原理图与仿真………………九:源程序……………………………十:心得体会…………………………
十一:参考文献………………………
一、实验与任务
结合实际情况,编程设计、布线、程序调试、检查与运行,完成一个与接近实际工程项目的课题,以培养学生的实际操作能力,适应生产一线工作的需要。

做到能检查出错误,熟练解决问题;对设备进行全面维修。

通过实训对PLC的组成、工作原理、现场调试以及基于网络化工作模式的基本配置与应用等有一个一系列的认识和提高。

利用51单片机、1个独立按键及1位7段数码管等器件,设计一个单片机输入显示系统,要求每按一下独立按键数码管显示数据加1(数码管初始值设为0,计到9后再加1 ,则数码管显示0)。

本次设计采用12MHz的晶体振荡器为单片机提供振荡周期,外加独立按键,复位电路和显示电路组成。

二、实验要求
1掌握可编程序控制器技术应用过程中的一些基本技能。

2、巩固、加深已学的理论知识。

3了解可编程控制器的装备、调试的全过程。

4、培养我们综合运用所学的理论知识和基本技能的能力,尤其是培养我们
把理论和实际结合起来分析和解决问题的能力。

适应世界生产的需要。

培养出一批既有理论知识又有动手能力的人才。

三、实验内容
1、练习设计、连接、调试控制电路;
2、学习PLC程序编程;
四、元器件清单
五、关于PLC控制LED介绍:
PLC可编程控制器:它采用一类可编程的存储器,用于其内部存储程序、执行逻辑运算、顺序控制、定时、计数与算数操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。

用PLC控制LED直接进行数据显示,可以降低成本,使得数据显示直观。

传统数显有两种方法:1、由PLC编制程序进行译码,来控制显示a-g段;2、利用译码组合电路产生a-g各段译码信号实现LED数码管显示。

前一种方法逻辑译码关系复杂,后一种方法译码电路冗长,都不利于显示的实现。

传统数显逻辑译码关系复杂,而用PLC的位组合元件和译码功能指令方法来实现
LED数显.前一种方法将表示十进制数的4位BCD码的位元件成组使用,形成位组合元件数显;后一种方法用7段译码指令把指定元件的低4位对应的十六进制数译码后,驱动数显.这两种方法逻辑简单,易于理解,便于实现。

设计任务:LED数码管显示:0到9
六、原理图绘制说明
本次设计主要用到单片机AT89C51、晶振时序电路。

AT89C51是一种带4KB闪烁可编程可擦出只读存储器的低电压、高性能CMOS微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微处理器,为很多嵌入式控制系统提供了一种灵活性高且廉价的方案,AT89C51的管脚分配,如图1:
图1 AT89C51芯片及管脚图
AT89C51单片机主要由4个输入输出端口(P0口、P1口、P2口、P3口)及个控制引脚组成的,本次设计用到P1、P2的部分引脚,及18、19脚外接晶振电容为单片机提供时钟,9管脚为复位引脚,外接复位电路。

晶振时序电路:XTAL1和XTAL2分别为片内反相放大器的输入和输出端,当单片机采用外部时钟信号时,前者接地,后者引入外部输入信号,本次设计采用12M的石英晶体振荡器为单片机提供时钟,如图2:
图2 AT89C51的晶振时序电路图
本次设计的原理图是在PROTEUS ISIS中绘制的,其工作界面分为原理图编辑窗口(Editing window)、预览窗口(Overview window)和工具栏。

1、新建*.dsn
打开绘图界面后,首先新建一个绘图文件,选择“【文件】——【新建设计】”,并保存成.dsn型文件。

2、绘制原理图
(1)添加元器件:元件拾取共有两种办法,一种是按类别查找和拾取元件,另一种是直接查找和拾取元件。

我采用的是前一种方法,元件通常以其英文名称或器件代号在库中存放。

我们在取一个元件时,首先要清楚它属于哪一大类,然后还要知道它归属哪一子类,这样就缩小了查找范围,然后在子类所列出的元件中逐个查找,根据显示的元件符号、参数来判断是否找到了所需要的元件。

双击找到的元件名,该元件便拾取到编辑界面中了。

右侧列表中自上而下分别为元件图形和元件封装。

具体如图3所示:
图3 分类拾取元件示意图
(2)元件的放置
在原理图编辑区的蓝色方框内,单击鼠标左键即完成元件的释放。

具体如图4所示:
图4 元件的放置示意图
(3)电路连线
PROTEUS的连线是非常智能的,它会判断你下一步的操作是否想连线从而自动连线,而不需要选择连线的操作,只需用鼠标左键单击编辑区元件的一个端点拖动到要连接的另外一个元件的端点,先松开左键后再单击鼠标左键,即完成一根连线。

如果要删除一根连线,右键双击连线即可。

根据设计完成连线后即可得到完整的电路原理图,具体如图5:
:
图5 连线后的完整电路原理图
七、流程图绘制以及说明
主程序设计说明
主程序主要分为四部分,包括复位电路部分、独立按键的判别部分、单
八、
前面的空挑勾,再“确定”,即可生成HEX文件,如图7所示:
图7 生成HEX文件示意图
在进入PROTEUS ISIS中,双击AT89C51芯片,出现如图8所示的对话框。

在“Program File”一项中查找“seg.hex”文件的路径并加上该文件即可开始仿真,如图8所示:
图8 keil的seg.hex文件载入单片机的示意图
2.在导入hex文件后,便可运行该设计系统,打开仿真开关,显示如图
九.源程序清单
ORG 0000H
SJMP MAIN
ORG 000BH
SJMP T0_ISR
ORG 0030H
MAIN:CLR A
MOV PTRD , #TABLE
MOVC A ,@A+DPTR
MOV P0 , A
MOV TMOR,#01H
MOV TH 0,#0D8H
MOV Tl0,#0EFH
SETB ET0
SETB EA
SETB TR0
PD: CJNE R0,#100,$
INC DPTR
CLR A
MOVC A ,@A+DPTR
CJNE A ,#00H,AAA
MOVDPTR,#TABLE ;如果花样数据完应重新循环
CLR A
MOVC A,@A+DPTR
AAA: MOV P0,A
MOV R0,#00H
SJMP PD
T0_ISR:
CLR TR0
MOV TH0,#0D8H
MOV TL0,#0EFH
INC R0
SETB TR0
RETI
TABLE:DB 3FH,06H,5BH 4FH,66H,6DH 7DH 07h,7FH,6FH,00H
END
十.心得体会:
实验体会:本次设计主要是针对刚刚学过的单片机知识,用汇编语言在KEIL4中编程,在PROTEUS中绘制原理图并进行仿真,通过对这两个软件的学习,了解了其功能的强大,掌握了AT89C51的内部结构及工作原理,对于我们以后的学习和实践有很大的指导意义。

这次课程设计使我在学习新知识的同时,还锻炼了我的意志品质,当调试程序出现错误时,并没有使我灰心,让我放弃,而是通过自己不懈的努力,弄懂了每一部分知识。

因此,本次课设对我以后无论是学习还是工作,都有着较大的帮助。

通过这次课程设计,使我意识到了课本上的知识远远不能满足当今社会的需要,让我知道了未来学习知识要更加注重实践与实用。

合理化建议:以后应增加类似本次课设的实践活动,同时应将软件实践活动,贯穿到整个学期之中,使得学到的软件都能更好、更多的应用到实践当中去。


现如今高速发展的电子领域中,大部分工作都不是一个人所能完成的,因此,团队合作尤其重要,因此希望在以后的实践中能够增加些团队合作的项目与课题。

十一.参考文献:
【1】郁汉琪主编. 数字电子技术实验及课题设计. 北京:高等教育出版社,1997 【2】高钦和. 可编程控制器应用技术与设计实例. 北京:人民邮电出版社,2004
【3】虞鹤松编. 可编程序控制器原理及应用. 南京:东南大学出版社,1995 【4】田庭主编. 常用可编程序控制器编程器及编程软件使用手册. 北京:机械工业出版社,1994
【5】仲肇新,彭侃编译. 可编程序控制器原理及应用. 广州:华南理工大学出版社,1995
【6】三菱公司编. 三菱FX2N可编程序控制器编程手册. 1998。

相关文档
最新文档