51单片机实验课二

2024-02-05 09:52
文章标签 单片机 51 实验课

本文主要是介绍51单片机实验课二,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实验任务一:

用C语言设计实现8个led灯左右移动显示效果。具体要求如下:

左移时,8个灯中的奇数位灯依次点亮;

右移时,8个灯中的偶数灯依次点亮;

如此循环往

#include <REGX52.H>
void Delay(unsigned int xms)		//可自定义延时时间段的延时函数
{unsigned char i, j;while(xms){xms--;i = 12;j = 169;do{while (--j);} while (--i);}
}
void main()
{unsigned char i,j;while (1)         //主循环{//LED灯为低电平点亮P2=0xFD;//1111 1101(灯7亮)for(i=0;i<4;i++)   //加入 for循环,表明for循环大括号中的程序循环执行4次{Delay(100);				P2<<=2;//1111 0100  //1101 1100  //0111 1100   P2=P2|0x03;//0000 0011//1111 0111(灯5亮)  //1101 1111(灯3亮)  //0111 1111(灯1亮)} P2=0xBF;//1011 1111(灯2亮)for(i=0;i<4;i++){Delay(100);				P2=P2>>2;//0010 1111  //0011 1011//0011 1110P2=P2|0xC0;//1110 1111(灯4亮)//1111 1011(灯6亮)//1111 1110(灯8亮)}P2=0xFE;           //重新赋初始值}
}

实验任务二:

动态扫描显示---Digital-tube-stable-display

用8个数码管从左到右稳定显示自己的学号的后8位

#include <REGX52.H>//数码管段选表
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Delay(unsigned int xms)
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}//数码管显示子函数
void Nixie(unsigned char Location,Number)
{switch(Location)		//位码输出{case 1:P2_4=1;P2_3=1;P2_2=1;break;case 2:P2_4=1;P2_3=1;P2_2=0;break;case 3:P2_4=1;P2_3=0;P2_2=1;break;case 4:P2_4=1;P2_3=0;P2_2=0;break;case 5:P2_4=0;P2_3=1;P2_2=1;break;case 6:P2_4=0;P2_3=1;P2_2=0;break;case 7:P2_4=0;P2_3=0;P2_2=1;break;case 8:P2_4=0;P2_3=0;P2_2=0;break;}P0=NixieTable[Number];	//段码输出Delay(1);				//显示一段时间P0=0x00;				//段码清零,消影
}void main()
{while(1){Nixie(1,2);		//在数码管的第1位显示2Nixie(2,2);		//在数码管的第2位显示2Nixie(3,2);		//在数码管的第3位显示2Nixie(4,1);   //在数码管的第4位显示1Nixie(5,0);		//在数码管的第5位显示0Nixie(6,2);		//在数码管的第6位显示2Nixie(7,1);		//在数码管的第7位显示1Nixie(8,4);		//在数码管的第8位显示4}
}

实验任务三:

Digital-tube-scrolling-display

将自己的学号每隔一定时间向右或向左滚动循环显示出来

#include <REGX52.H>
sbit LED0=P2^4;
sbit LED1=P2^3;
sbit LED2=P2^2;
#define tube P0
#define N 500
unsigned char code zima[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//存储数码管段选码
unsigned char number[10]={2,0,2,2,2,1,0,2,1,4};//存储学号信息
void delay(int i)		//延时函数
{while(i--);
}void main()
{unsigned int i,j,k,m,n,time;		//定义变量while(1){for(m=0;m<17;m++)			//滚动显示过程等效为17位{time=100;						while(time--){n=7;for(i=0;i<2;i++)			{LED0=i;					//控制位选for(j=0;j<2;j++)			{LED1=j;					//控制位选for(k=0;k<2;k++)			{LED2=k;					//控制位选if((n+m-7>9)||(n+m-7<0))			//控制段选tube=0x00;elsetube=zima[number[n+m-7]];n--;delay(100);		//延时tube=0x00;	//消隐}}}}}}
}

main 函数中使用了嵌套的循环来完成滚动显示学号的功能。

  • 外层循环 m 从 0 循环到 16,表示滚动显示的过程等效于 17 位。

  • 内层循环 time 从 100 循环减至 0,用于控制延时。

  • 在内层循环中,使用 n 来记录当前的位数,并在每次循环中减 1,用于控制位选。因为涉及到3个位选,所以有 2 * 2 * 2 = 8 种组合,所以需要三个嵌套循环。

  • 在每次位选循环中,判断 n+m-7 是否大于 9 或小于 0,如果是,则设置段选为 0x00,否则设置 tube 为对应的学号段选码。

  • 每次段选完之后,使用 delay 函数进行延时并清空 tube

这篇关于51单片机实验课二的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/680542

相关文章

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

代码训练营 Day26 | 47.排序II | 51. N-皇后 |

47.排序II 1.跟46题一样只不过加一个树层去重 class Solution(object):def backtracking(self,nums,path,result,used):# recursion stopif len(path) == len(nums):# collect our setresult.append(path[:])return for i in range(

基于stm32的河流检测系统-单片机毕业设计

文章目录 前言资料获取设计介绍功能介绍具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机设计精品

VB和51单片机串口通信讲解(只针对VB部分)

标记:该篇文章全部搬自如下网址:http://www.crystalradio.cn/thread-321839-1-1.html,谢谢啦            里面关于中文接收的部分,大家可以好好学习下,题主也在研究中................... Commport;设置或返回串口号。 SettingS:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口

MCU5.51单片机的最小系统

1.最小系统的组成部分 晶振电路(时钟),复位电路,电源电路(控制电压,保持稳定),下载电路(外加的,用于烧录程序) 烧录: 通过下载电路,把程序下载到单片机中用于运行 2.晶振电路 电路图: 是晶振 是电容 为了防止晶振起振时产生影响,因此加电容 3.复位电路 电路图: 按按钮RSTK1(保持一段时间的高电平)即可实现STC芯片的复位 4.电源电路 电路图:

单片机XTAL引脚引出的晶振分析

51单片机的18,19脚XTAL1,XTAL2用来提供外部振荡源给片内的时钟电路。 XTAL1和XTAL2引脚,该单片机可以使用外部时钟也可以使用内部时钟。 当使用内部时钟时,此二引线端用于外接石英晶体和微调电容; 当使用外部时钟时,用于接外部时钟信号,NMOS接XTAL2,CMOS接XTAL1。 原理: XTAL1和XTAL2分别是一个反相器的输入和输出。NMOS的反相器是

飞凌单片机开发IDE环境

飞凌单片机 资料下载选择芯片类型:MCU->GPIO选择芯片型号:FM8PE53B IDE工具安装: 资料下载 飞凌官网 选择芯片类型:MCU->GPIO 选择芯片型号:FM8PE53B IDE工具安装: 运行Generic ICE 0.02-250.03 setup,一直点击“下一步”即可。 双击运行:Generic ICE

基于51单片机的智能小车转向控制系统设计与实现

文章目录 前言资料获取设计介绍功能介绍具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机设计精品