实验一 吴思思 0130

作者: 吴思思0130 | 来源:发表于2018-05-18 16:46 被阅读52次

一、实验内容

在keil软件中编写程序,利用烧录软件下载hex文件实现在大板单片机的8*8点阵中显示“54”的指令。

二、keil的使用及生成hex文件

1.project->new uvision project->保存->Atmel->AT89C52->ok

2.file->text1->书写代码调试保存为.c类型

3.project->target->右击source group->add existing files to group->选择刚保存的.c格式文件

4.右击target->options for target->output->勾选creat hex file->再次调试->结果出现creating hex from"..."

5.打开烧录软件->芯片类型:STC89Cxx(new)->选择hex文件进行下载

三、程序编写

(利用原有基础实验10改编而成)

1.在单片机点阵中行线高电平有效,列线低电平有效。原有程序中u8 ledwei[ ]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}拆成二进制0111 1111,1011 1111,1101 1111,1110 1111,1111 0111,1111 1011,1111 1101,1111 1110,可以看出ledwei表示依次使得每一列有效,后面使用循环函数先控制选的列,再进行此列中哪个二极管发光的控制。

2..数字“54”设计

每一列的段选显示代码

当ledwei为0x7f即选择第一列时,通过图可以看出段选信号为1111 0001,以此类推得出所有代码。

3..程序如下:

#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器

#include

typedef unsigned int u16; //对数据类型进行声明定义

typedef unsigned char u8;

sbit SRCLK=P3^6;

sbit RCLK=P3^5;

sbit SER=P3^4;

u8 ledduan[ ]={0xf1,0x91,0x91,0x9f,0xf0,0x10,0x10,0xff};//确定每一列显示的二极管计算代码值

u8 ledwei[ ]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//后面利用循环函数依次选择某一列

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

* 函 数 名        : delay

* 函数功能   : 延时函数,i=1时,大约延时10us

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

void delay(u16 i)

{

while(i--);

}

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

* 函数名        : Hc595SendByte(u8 dat)

* 函数功能   : 向74HC595发送一个字节的数据

* 输入          : 无

* 输出        : 无

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

void Hc595SendByte(u8 dat)

{

u8 a;

SRCLK=0;

RCLK=0;

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

{

SER=dat>>7;

dat<<=1;

SRCLK=1;

_nop_();

_nop_();

SRCLK=0;

}

RCLK=1;

_nop_();

_nop_();

RCLK=0;

}

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

* 函 数 名      : main

* 函数功能 : 主函数

* 输    入      : 无

* 输    出    : 无

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

void main()

{

u8 i;

while(1)

{

P0=0x7f;

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

{

P0=ledwei[i];   //位选

Hc595SendByte(ledduan[i]); //发送段选数据

delay(100);   //延时

Hc595SendByte(0x00);  //消隐

}

}

}

四、注意

程序书写时:端口号必须大写!!!

单片机设置:一定要将JOE短接片短接到GND端,如果不需要595后面的小灯点亮可以拔掉JP595短接片!!!

人有视觉残留,当时间间隔过短时,会出现重影。消隐是为了防止进行下一次位选段选的时候受到上一位选的段选信号干扰。当显示完某列后,利用消隐关闭数码管,再进行下一位的显示。

五、结果

最终结果

相关文章

  • 实验一 吴思思 0130

    一、实验内容 在keil软件中编写程序,利用烧录软件下载hex文件实现在大板单片机的8*8点阵中显示“54”的指令...

  • 实验二 吴思思 0130

    一、实验内容 将大板的“按键控制数码管”改成适合小板的程序。(每按一次独立按键,数码管的数值增1) 二、大小板的差...

  • 午夜随笔

    子夜吴歌起,四面伊人红妆绮,思思思,谁人憩!

  • 2019娃娃童话002

    思思:你睏么? 小婉:你猜! 思思:我猜不到! 小婉:不睏。 思思:你妈你爸姓什么? 小婉:吴,周,嘿嘿~ 思思:...

  • 梦中低语(七)大结局上

    “吴昊对不起”思思突然趴在吴昊的胸口呜咽道。 “没事,亲爱的,有我在不要怕,一切都会过去的”吴昊轻轻抚摸着思思的头...

  • 你抛弃了我,我却为你生下孩子

    那年思思十八岁,遇见了吴亮。 十八岁的思思,满脸的胶原蛋白,皮肤嫩的能掐出水来。吴亮一眼就看上了这个大眼睛忽闪忽闪...

  • 思思思思

    1.这几天学习很痛苦,原本定的最坏计划是保三缺一,可以实际进度来看,这个目标很难实现,因为好多知识点理解起来实在是...

  • 20171208章思思:隋炀帝的大业梦

    【按:本课例由温州南浦实验中学章思思老师提供,是章思思老师2017年12月8日送教永嘉的一节课,我本人没有在现场观...

  • 春天的芭蕾

    聆听南方科技大学教育集团第二实验学校朱思思老师精彩的课程——《教学实践中的思维导图》后受益匪浅,朱思思老师...

  • 教学实践中的思维导图——一场寓教于乐的视觉盛宴

    8月8日,南方科技大学教育集团第二实验学校朱思思老师的讲座“教学实践中的思维导图”真的非常精彩,思思老师很有亲...

网友评论

    本文标题:实验一 吴思思 0130

    本文链接:https://www.haomeiwen.com/subject/eaggdftx.html