文章目录

  • 作业2
    • 代码
  • 作业3
    • 作业3.1
    • 代码
    • 作业 3.2
    • 代码
    • 作业3.3
    • 代码
  • 作业4
    • 代码

作业2

原理比较简单,看代码就能理解,不过多解释了。

代码

/**Created By RainSure at 2022/9/26**/
#include <stdio.h>
#include <stdlib.h>
#include <reg52.h>#define LED1 P2
// P2^0:   D8
// P2^1:   D7
// P2^2:   D6
// P2^3:   D5
// P2^4:   D4
// P2^5:   D3
// P2^6:   D2
// P2^7:   D1unsigned char status[9] = {0x00, 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
unsigned char status1[9] = {0x00, 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe};
int flag = 0;sbit K1 = P3^2;
sbit K2 = P3^3;sbit K3 = P3^4;
sbit K4 = P3^5;void get_key() // »ñÈ¡°´¼üÊäÈë
{if(K1 == 0){flag = 0;}if(K2 == 0) {flag = 1;}
}void D1toD8()
{int i;for(i = 1; i <= 8; i ++) {int t = 2000000;  // get_key();if(flag == 1) {     // Èç¹ûÇл»ÎªD8toD1Ö±½ÓÇå³ýµ±Ç°×´Ì¬£¬²¢Í˳öLED1 = 0xff;break;}while(t --){get_key();LED1 = status1[i];if(K3 == 0) {  // Èç¹ûÍ£Ö¹Á÷Ë®while(1) {if(K4 == 0){break;  // ¼ÌÐøÁ÷Ë®   }}                              }}}
}
void D8toD1()
{int i;for(i = 1; i <= 8; i ++) {int t = 2000000;  //get_key();if(flag == 0) {       // Èç¹ûÇл»ÎªD1toD8Ö±½ÓÇå³ýµ±Ç°×´Ì¬£¬²¢Í˳öLED1 = 0xff;break;}while(t --){get_key();LED1 = status[i];if(K3 == 0) {  // Èç¹ûÍ£Ö¹Á÷Ë®while(1) {if(K4 == 0){break;  // ¼ÌÐøÁ÷Ë®   }}                              }}}
}
int main()
{while(1){if(flag == 0)   D1toD8();else D8toD1();}return 0;
}

作业3

作业3.1

代码

//#include<reg52.h>
//#include<stdio.h>
//#include<stdlib.h>
//
//
 实现D1小灯的呼吸效果
//sbit D1 = P2^7;
//
//int PWM_ON = 0;
//int PWM_FRE = 200;
//int PWM_COUNT;
//
//void Delay(int t)
//{//  int p;
//  int i;
//  for(p = t; p > 0; p --) {//      for(i = 0; i < 110; i ++) ;
//  }
//  // while(t --);
//}
//
//void to_init()
//{//  TMOD = 0x01;
//  TH0 = (65536 - 5) / 256;
//  TL0 = (65536 - 5) % 256;
//  ET0 = 1;
//  EA = 1;
//  TR0 = 1;
//}
//
//void Timer0() interrupt 1
//{//  TH0 = (65536 - 5) / 256;
//  TL0 = (65536 - 5) % 256;
//
//  PWM_COUNT ++;
//  if(PWM_COUNT == PWM_ON) {//      D1 = 1;
//  }
//  else if(PWM_COUNT == PWM_FRE){//      PWM_COUNT = 0;
//      D1 = 0;
//  }
//}
//
//int main()
//{//  D1 = 1;
//  to_init();
//  while(1) {//      int on;
//      D1 = 1;
        PWM_ON = 0;
        PWM_COUNT = 0;
//      for(on = 0; on < PWM_FRE; on += 2) {//          PWM_ON = on;
//          Delay(5);
//      }
//      for(on = PWM_FRE; on >= 0; on -= 2) {//          PWM_ON = on;
//          Delay(5);
//      }
//      D1 = 1;
//  }
//}#include<reg52.h>
#include<stdio.h>sbit D1 = P2^7; void delay(int i)
{while(i --);
}void main()
{int i;D1 = 1;while(1){for(i = 10; i <= 2000;i += 10){D1 = 0;           //亮delay(i); D1 = 1;         //灭delay(2000 - i);}                    //呼吸灯由暗变亮for(i = 2000; i >= 10; i -= 10){D1 = 0;          //亮delay(i); D1 = 1;       //灭delay(2000 - i);}                  //呼吸灯由亮变暗}
}

作业 3.2

代码

#include<stdio.h>
#include<reg52.h>sbit D1 = P2^7;
sbit D2 = P2^6;sbit K1 = P3^2;
sbit K2 = P3^3;int flag = 0;int T = 2000;
int tick = 500;void delay1(int t)
{int i;for(t; t > 0; t --) {for(i = 0; i < 410; i ++) ;}
}void get_key()
{if(K1 == 0) {delay1(50);if(K1 == 1) {flag ++;if(flag > 2) flag = 2;  }}if(K2 == 0) {delay1(50);if(K2 == 1) {flag --;if(flag < 0) flag = 0;   }}
}void Delay(int t)
{while(t --);
}void light1() // 亮度1
{D1 = 0;Delay(tick);D1 = 1;Delay(T - tick);
}void light2() // 亮度2
{D1 = 0;Delay(tick * 2);D1 = 1;Delay(T - tick * 2);
}void light3() // 亮度3
{D1 = 0;Delay(tick * 3);D1 = 1;Delay(T - tick * 3);
}void solve()
{if(flag == 0) {// D2 = 1;light1();}else if(flag == 1) {// D2 = 0;light2();}else if(flag >= 2) {// D2 = 1;light3();}
}
int main()
{D1 = 1; // 小灯一开始是灭的while(1) {get_key();solve();}return 0;
}

作业3.3

代码

#include<stdio.h>
#include<reg52.h>sbit D1 = P2^7;
sbit K1 = P3^2;
sbit K2 = P3^3;// 按下K1小灯持续变亮,直到最亮; 按下K2小灯变暗,直到完全熄灭int on = 0;  // 设置占空比
int flag = 0; // 0代表亮度上升,1代表亮度下降
int T = 2000; // 设置周期总时间void Delay(int t)
{while(t --);
}void get_key()
{if(K1 == 0) {flag = 0;}if(K2 == 0) {flag = 1;}
}void turn_on_light()
{if(on < 0) on = 0;if(on > T) on = T;D1 = 0;Delay(on);D1 = 1;Delay(T - on);
}void increasing_light()  // 小灯变亮
{while(on <= T) {turn_on_light();on += 10;}turn_on_light();
}void decreasing_light()  // 小灯变暗
{while(on >= 0) {turn_on_light();on -= 10;}turn_on_light();
}void solve()
{if(flag == 0) {increasing_light();}else if(flag == 1) {decreasing_light();}
}int main()
{while(1) {get_key();solve();}
}

作业4


注意在Keil中将频率设置为11.0592,否则可能会通信失败,单片机将无法接收到发送的字符。

代码

/*** Craeted by RainSure at 2022/09/29*
**/#include<stdio.h>
#include<reg52.h>#define LED1 P2
#define LED2 P0
sbit LED17 = P3^6;
int flag;
unsigned char receiveData;char status1[18] = {0x00, 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};  // 控制LED1
// char status2[18] = {0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, 0xff};  // 控制LED2
char status2[18] = {0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe, 0xff};  // 控制LED2//void Delay(int t)
//{//  // while(t --);
//  int i;
//  for(t; t > 0; t --) {//      for(i = 0; i < 110; i ++) ;
//  }
//}void Bright()  // 保持常亮
{LED1 = 0x00;LED2 = 0x00;LED17 = 0;
}void Flash()  // 保持闪烁
{int t = 2000000;while(t --) {LED1 = 0x00;LED2 = 0x00;LED17 = 0;}t = 2000000;while(t --) {LED1 = 0xff;LED2 = 0xff;LED17 = 1;}
}void D1toD17() // D1到D17流水
{int i;for(i = 1; i <= 17; i ++) {int t = 2000000;while(t --)   {LED1 = status1[i];LED2 = status2[i];if(i == 17) LED17 = 0;else LED17 = 1;}}
}void D17toD1() // D17到D1流水
{int i;for(i = 17; i >= 1; i --) {int t = 2000000;while(t --) {LED1 = status1[i];LED2 = status2[i];if(i == 17) LED17 = 0;else LED17 = 1;}}
}//void UsartInit()
//{//  SCON = 0x50;
//  TMOD = 0x20;
//  PCON = 0x80;
//  TH1 = 0xFD;
//  TL1 = 0xFD;
//  ES = 1;
//  EA = 1;
//  TR1 = 1;
//}
//
//void Usart() interrupt 4
//{//  RI = 0;
//  receiveData = SBUF;
//  flag = 1;
//}void initDate()
{SCON=0x50;//数据位8位,停止位1位,起始位1位//波特率设置 TMOD=0x20;//用到定时/计数器的方式2TH1=0xFD;TL1=0xFD;TR1=1; //启动定时器
}void recived()
{char commit;while(1){if(RI=='1'){RI=0;commit=SBUF;if(commit == '1'){// send("hello");Bright();}if(commit == '2'){// send("haha");Flash();}if(commit == '3'){D1toD17();}if(commit == '4'){D17toD1();} }}
}int main()
{while(1){// UsartInit();initDate();recived();
//      switch(receiveData)
//      {//      //  printf("%c\n", receiveData);
//          case '1' : Bright(); break;
//          case '2' : Flash(); break;
//          case '3' : D1toD17(); break;
//          case '4' : D17toD1(); break;
//          default : break;
//      }}return 0;
}

河北大学计算机科学与技术专业硬件实训——C语言控制51单片机实现LED小灯的控制相关推荐

  1. sketchup作品_18级园林工程技术专业课程实训作品展

    根据学院"三段式"人才培养组织模式,园林工程技术专业的任课老师在2019-2020学年一学期对学生进行了课程实训.目的是让学生能够在课程实训中,掌握本课程的专业知识和专业技能,具备 ...

  2. 大数据技术专业实习实训总结

    #自我介绍 我是一名大一学生,专业是:数据科学与大数据技术.目前学过的知识点有:C++,python,HDFS,MapReduce,Hadoop,Java等.虽然学过的知识点很多,但是没有对他有更深的 ...

  3. 湖南大学计算机科学与技术大二实训综合作业

    课程实验报告 课  程 名 称:STC实验板综合设计 实验项目名称:简易随身听 专  业 班 级:计科1502班 姓        名:杨   晶 学        号:201508010230 指 ...

  4. 自考本科计算机科学与技术有哪些科目,自考本科有计算机科学与技术专业吗?...

    自考本科有计算机科学与技术专业吗?关于这个问题中国教育在线自学平台小编就简单为大家说一下. 自考本科有计算机科学与技术专业.自考本科计算机科学与技术专业课程有C++程序设计(含实).数据结构(含实). ...

  5. 计算机科学与技术专业用什么笔记本,计算机科学与技术专业课程有哪些

    很多男生每年在填报志愿的时候,都会偏爱计算机相关的专业.那么,计算机科学与技术专业学什么课程呢?下面和小编一起来看看吧! 计算机科学与技术专业学什么 不同高校的计算机科学与技术专业的课程设定都是不一样 ...

  6. 计算机科学与技术专业实训手册,计算机科学与技术专业实习计划

    <计算机科学与技术专业实习计划>由会员分享,可在线阅读,更多相关<计算机科学与技术专业实习计划(2页珍藏版)>请在人人文库网上搜索. 1.计算机科学与技术专业实习计划教育实习是 ...

  7. 河北大学计算机科学与技术考研,计算机专业考研经验贴(重)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先,欢迎各路学弟学妹报考河北大学计算机专业研究生.作为学院新培养方案的第一届15级研一新生,我有幸和大家分享下本专业考研历程.其他专业也可参考一下,多少 ...

  8. 云计算机技术应用专业实训室建设,云桌面技术在高校实训室建设中的应用

    孙丽 常淑萍 摘要:目前,各地高校越来越多地选择将云桌面技术灵活运用于当前的实训室建设方案中.本文简要介绍了云桌面的基本概念,讨论了云桌面实训室相对于传统实训室的优势,以及应用的核心流程与要点. 关键 ...

  9. 西南交大计算机几个专业,西南交通大学计算机科学与技术专业

    西南交通大学计算机科学与技术专业 计算机科学与技术专业解读 计算机科学与技术专业 我校早在60年代初就创办了计算机技术专业,是全国较早设立该专业的高等学校之一.1978年由中科院院士曹建猷教授等主持恢 ...

最新文章

  1. 一流的管理者,都具备非凡的洞察力
  2. HTML基础标签入门
  3. master slave mysql_Mysql---Master-slave复制方案 - dba成长之路 - 博客频道 - CSDN.NET
  4. 中文版microbit:TurnipBit显示动态滚动字符教程实例
  5. HTML day02
  6. 剑指offer面试题26. 树的子结构(链表)
  7. python爬虫网页图片并保存到本地
  8. Volume Shadow Copy Service(VSS)如何工作
  9. 进销存excel_EXCEL进销存系统升级版,自动库存更新,利润毛利分析一键操作
  10. AI CC呼叫中心源码
  11. hello.java_hello java !
  12. HTML制作简单课程表
  13. mysql-使用Navicat导出sql查询数据
  14. Excel应用:去除重复项,进行个数计算。
  15. win10双 cd linux,win10系统将CdLinux装入硬盘的还原方案
  16. 安全浏览器无法安装?看这一篇就够了
  17. 如何使用计算机微信看小程序,微信电脑版怎么用小程序 在哪里打开
  18. 解密暗池:那些不为人知的交易
  19. 正则表达式包含某字符串且不包含某些字符串
  20. 千锋内部邮件曝光:学员高就业率的背后…

热门文章

  1. mac系统进入服务器,云服务器 mac系统
  2. Windows系统灵活使用自带的CMD控制台
  3. Discuz!6.0.0 开启社区论坛(BBS)新时代
  4. 用户登录测试用例设计
  5. NAT 2 - 利用Rotary NAT实现TCP流量负载均衡 [译] + GNS3实现
  6. matlab指针矩阵乘法,为什么MATLAB在矩阵乘法中速度这么快?
  7. CiteSpace学习笔记(三)——数据预处理
  8. sqlServer批量导出导入单表数据
  9. 虚假新闻检测的论文阅读笔记——sigir2021:User Preference-aware Fake News Detection
  10. 08.jdk动态代理原理