对于嵌套的结构体类型变量,访问其成员时应采用逐级访问的方法,直到获得所需访问的成员为止。利用结构体变量作函数参数,实现计算某学生3门课程平均成绩的功能。......
2023-11-20
1.任务要求
用单片机实现点亮1位LED信号灯的控制。1位LED信号灯控制的原理图如图1-1所示。
图1-1 1位LED信号灯控制的原理图
2.任务目的
(1)通过1位LED信号灯的闪烁控制,初步了解单片机控制系统的基本构成。
(2)了解什么是单片机最小应用系统。
(3)初步了解单片机应用系统的开发过程。
(4)掌握在Keil uVision环境中调试程序的基本方法。
(5)了解如何在Proteus环境中实现电路仿真应用。
3.任务分析
信号灯应用于很多电子产品中,如电源指示灯、交通灯等。本任务中LED信号灯的阴极与单片机引脚P1.0连接,阳极通过限流电阻接高电平。根据欧姆定律,当P1.0引脚为低电平时,电路导通,LED灯发光;当P1.0为高电平时,两边没有电压差,电路不导通,LED灯熄灭。
因此,让P1.0引脚每隔一段时间依次输出高、低电平信号,就可以实现LED信号灯的亮、灭控制,从而达到闪烁效果。
制作1位LED信号灯控制电路所需元器件清单如表1-1所示。
表1-1 1位LED信号灯控制电路所需元器件清单
4.源程序设计(www.chuimin.cn)
单片机应用系统包含硬件系统和软件系统两部分,两者缺一不可。因此,在完成单片机硬件电路设计后,还需编写相应的控制程序。1位LED信号灯闪烁控制的C语言源程序如下:
5.Keil uVision仿真实现
在这里只介绍主要步骤,详细过程在后面章节介绍。
(1)打开Keil uVision软件,点击“Project”→“New uVision Project”创建“LED1”项目,选择CPU类型,这里选Atmel(爱特梅尔)公司的AT89C51。
(2)新建一个“led.c”的C语言源程序,并添加到项目中。
(3)进行编译并生成“led1.hex”文件。
(4)进行仿真调试。
6.Proteus设计与仿真
(1)在Proteus ISIS中新建一个“led.dsn”的项目。
(2)完成电路图设计。
(3)添加在keil中生成的“led1.hex”文件。
(4)仿真调试。
7.任务小结
单片机芯片本身并不具备任何功能,必须借助开发人员完成系统的硬件、软件设计,调试成功的程序要装载到单片机系统的存储器中,运行程序,才能实现单片机应用系统特定的控制功能。
单片机应用系统的开发过程一般如下:分析设计要求→硬件设计→硬件电路设计制作→程序设计→软、硬件仿真调试→程序装载→功能测试。
有关单片机原理与应用 基于C语言的文章
对于嵌套的结构体类型变量,访问其成员时应采用逐级访问的方法,直到获得所需访问的成员为止。利用结构体变量作函数参数,实现计算某学生3门课程平均成绩的功能。......
2023-11-20
前面章节讨论了将数据写入文件和从文件中读取数据的方法。在上述两方面应用的文件数据处理中,文件操作的模式应该是“读写”文件。“读写”文件的打开模式有两大类:读为主的读写类模式和写为主的读写类模式。在对文件数据读写时,必须确认读写位置指针的性质是“读位置指针”还是“写位置指针”。下面通过两个示例展示文件“读写”模式的使用方法。......
2023-11-20
针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。......
2023-11-20
指数形式:如1.23e5 或12.3E5 都代表1.23×105。表2.3 中列出了C 语言中常用的转义字符及这些字符的含义。表2.3转义字符集下面程序中使用了几种转义字符,分析程序的执行结果。字符常量占有一个字节的存储空间,只能表示一个字符。......
2023-10-21
实现一维动态数组的基本步骤为:①定义合适数据类型的一级指针变量。③将动态分配存储区域的首地址转换为所需要的指针形式赋值给对应的指针变量。④将指针变量名作为一维数组名操作。为了模拟数据,程序中仍然要求被排序数组用随机函数生成。例8.18的程序除了被处理的数组是动态创建的之外,程序的功能和结构在第4章中已经进行了讨论,请读者参照第4章的知识自行分析。使用动态一维数组时,需要注意和直接定义一维数组之间的差异。......
2023-11-20
图5.3程序运行结果说明:定义函数时指定的形参变量在未出现函数调用时,并不占用内存的存储单元。图5.4程序运行结果说明:程序中实参与形参同名,但两者的作用范围不同,程序开始执行时,为主函数中的变量n分配存储空间,实参n 在主函数main()中有效;主函数调用函数s(),有效的是形参n。程序的运行结果表明,当函数调用时,实参的值传送给形参,在被调函数内部,形参的变化不会影响实参的值。......
2023-10-21
项目2:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。图3.15兔子问题输出结果根据以上的分析可以知道,循环次数可以为0,因此该程序是一个条件型循环,可以利用while语句编写程序。熟悉了循环结构在程序设计中的运用,循环结构语句包含了while语句、do…......
2023-11-18
将一维数组看成一个整体作为函数参数时,用数组名作为函数的形式参数或实际参数。一维数组作为函数的形式参数本质上是一个指针变量,所以在描述上不需要指定形参数组的长度。上面程序中函数sum的原型为:int sum;,表示了该函数在被调用时应该传递一个整型数组给一维数组形式参数v[],数组的长度由整型变量n表示,函数sum的功能是将用形式参数v表示的长度为n的数组元素求和。......
2023-11-20
相关推荐