单片机编写查表程序程序_单片机查表程序中使用的数据表格

单片机编写查表程序程序_单片机查表程序中使用的数据表格单片机c15c语言查表程序,单片机C语言程序举例(二)本文引用地址:http://www.eepw.com.cn/article/201611/320071.htm#include#in

单片机c15c语言查表程序,单片机C语言程序举例(二)
  本文引用地址:http://www.eepw.com.cn/article/201611/320071.htm

  #include#include#include

  unsigned int hour,minute,second,count;

  sbit RS = P2^4;//Pin4

  sbit RW = P2^5; //Pin5

  sbit E = P2^6;//Pin6

  sbit BLCtrl = P2^7;

  sbit KEY = P3^2;

  #define Data P0 //数据端口

  char data TimeNum[]=" ";

  char data Test1[]=" ";

  void DelayUs(unsigned char us)//delay us

  {

  unsigned char uscnt;

  uscnt=us>>1;

  while(–uscnt);

  }

  void DelayMs(unsigned char ms)//delay Ms

  {

  while(–ms)

  {

  DelayUs(250);

  DelayUs(250);

  DelayUs(250);

  DelayUs(250);

  }

  }

  void WriteCommand(unsigned char c)

  {

  DelayMs(5);//short delay before operation

  E=0;

  RS=0;

  RW=0;

  _nop_();

  E=1;

  Data=c;

  E=0;

  }

  void WriteData(unsigned char c)

  {

  DelayMs(5); //short delay before operation

  E=0;

  RS=1;

  RW=0;

  _nop_();

  E=1;

  Data=c;

  E=0;

  RS=0;

  }

  void ShowChar(unsigned char pos,unsigned char c)

  {

  unsigned char p;

  if (pos>=0x10)

  p=pos+0xb0; //是第二行则命令代码高4位为0xc

  else

  p=pos+0x80; //是第二行则命令代码高4位为0x8

  WriteCommand (p);//write command

  WriteData (c); //write data

  }

  void ShowString (unsigned char line,char *ptr)

  {

  unsigned char l,i;

  l=line<<4;

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

  ShowChar (l++,*(ptr+i));//循环显示16个字符

  }

  void InitLcd()

  {

  DelayMs(15);

  WriteCommand(0x38); //display mode

  WriteCommand(0x38); //display mode

  WriteCommand(0x38); //display mode

  WriteCommand(0x06); //显示光标移动位置

  WriteCommand(0x0c); //显示开及光标设置

  WriteCommand(0x01); //显示清屏

  }

  /

  void main(void)

  {

  InitLcd();//初始化液晶

  DelayMs(15);

  sprintf(Test1," www.haotun.com ");//第一行

  ShowString(0,Test1);

  sprintf(TimeNum,"LCM1602 Test ok!");//第二行

  ShowString(1,TimeNum);

  while(1){

  if(!KEY)

  {

  DelayMs(10);//按下去抖

  while(!KEY);

  if(KEY)

  {

  DelayMs(10);//释放去抖

  if(KEY)

  BLCtrl=!BLCtrl; //背光关掉或者打开

  }

  }

  }

  }

  9.步进电机控制

  #include

  unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格

  unsigned char code B_Rotation[4]={0x10,0x08,0x040,0x02};//反转表格

  void Delay(unsigned int i)//延时

  {

  while(–i);

  }

  main()

  {

  unsigned char i;

  while(1)

  {

  for(i=0;i<4;i++) //4相

  {

  P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格

  Delay(10000); //改变这个参数可以调整电机转速

  }

  }

  }

  10. 直流电机调速

  #include sbit KEY1 = P3^1;

  sbit PWM = P1^5;

  unsigned char CYCLE; //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms

  unsigned char PWM_ON ;//定义高电平时间

  void delay(unsigned int cnt)

  {

  while(–cnt);

  }

  main()

  {

  unsigned char PWM_Num;//定义档位

  TMOD |=0x01;//定时器设置 1ms in 12M crystal

  TH0=(65536-1000)/256;

  TL0=(65536-1000)%256;//定时1mS

  IE= 0x82; //打开中断

  TR0=1;

  CYCLE = 10;// 时间可以调整 这个是10步调整 周期10ms 8位PWM就是256步

  while(1)

  {

  if(!KEY1)

  {

  delay(10000);

  if(!KEY1)

  {

  PWM_Num++;

  if(PWM_Num==4)PWM_Num=0;

  switch(PWM_Num){

  case 0:P1=0xFE;PWM_ON=0;break;//高电平时长

  case 1:P1=0xFD;PWM_ON=4;break;

  case 2:P1=0xFB;PWM_ON=6;break;

  case 3:P1=0xF7;PWM_ON=8;break;

  default:break;

  }

  }

  }

  }

  }

  void tim(void) interrupt 1 using 1

  {

  static unsigned char count; //

  TH0=(65536-1000)/256;

  TL0=(65536-1000)%256;//定时1mS

  if (count==PWM_ON)

  {

  PWM = 1; //灯灭

  }

  count++;

  if(count == CYCLE)

  {

  count=0;

  if(PWM_ON!=0) //如果左右时间是0 保持原来状态

  PWM = 0;//灯亮

  }

  }

  11.秒表

  #include

  code unsigned char tab[]=

  {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  //共阴数码管 0-9

  unsigned char Dis_Shiwei;//定义十位

  unsigned char Dis_Gewei; //定义个位

  unsigned char S_Dis_Shiwei;//定义秒十位

  unsigned char S_Dis_Gewei; //定义秒个位

  unsigned char second,msecond;

  void CLR(void);

  void delay(unsigned int cnt)

  {

  while(–cnt);

  }

  main()

  {

  EX0=1;//外部中断0设置

  IT0=1;

  EX1=1;//外部中断1设置

  IT1=1;

  TMOD |=0x01;//定时器设置 10ms in 12M crystal

  TH0=0xd8;

  TL0=0xf0;

  ET0=1; //打开中断

  TR0=0;

  EA=1;

  CLR();

  while(1)

  {

  P0=S_Dis_Shiwei;//显示秒十位

  P2=1;

  delay(300);//短暂延时

  P0=S_Dis_Gewei; //显示秒个位

  P2=2;

  delay(300);

  P0=0x40; //显示秒个位

  P2=3;

  delay(300);

  P0=Dis_Shiwei;//显示十位

  P2=4;

  delay(300);//短暂延时

  P0=Dis_Gewei; //显示个位

  P2=5;

  delay(300);

  }

  }

  void tim(void) interrupt 1 using 1

  {

  TH0=0xd8;//重新赋值

  TL0=0xf0;

  msecond++;

  if (msecond==100)

  {

  msecond=0;

  second++;//秒加1

  if(second==100)

  second=0;

  S_Dis_Shiwei=tab[second/10];//十位显示值处理

  S_Dis_Gewei=tab[second%10]; //个位显示处理

  }

  Dis_Shiwei=tab[msecond/10];//十位显示值处理

  Dis_Gewei=tab[msecond%10]; //个位显示处理

  }

  void ISR_INT0(void) interrupt 0 using 1

  {

  TR0=!TR0; //利用外部中断打开和关闭定时器0 用于开始和停止计时

  }

  void ISR_INT1(void) interrupt 2 using 1

  {

  if(TR0==0)//停止时才可以清零

  CLR();

  }

  void CLR(void)

  {

  second=0; //利用外部中断清零

  msecond=0;

  Dis_Shiwei=tab[msecond/10];//十位显示值处理

  Dis_Gewei=tab[msecond%10]; //个位显示处理

  S_Dis_Shiwei=tab[second/10];//十位显示值处理

  S_Dis_Gewei=tab[second%10]; //个位显示处理

  }

  12.花样灯

  #include

  unsigned char code seg[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0x00,0,0×55,0x55,0xaa,0xaa};//rom允许情况可以无限添加

  void delay(unsigned int cnt)//简易延时

  {

  while(–cnt);

  }

  ///

  main()

  {

  unsigned char i;

  while(1)

  {

  P1=0xFE;//第一个LED亮

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

  {

  delay(10000);

  P1 <<=1;

  }

  P1=0x7F;//第七个LED亮

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

  {

  delay(10000);

  P1 >>=1;

  }

  P1=0xFE;//第一个LED亮

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

  {

  delay(10000);

  P1 <<=1;

  P1 |=0x01;

  }

  P1=0x7F;//第七个LED亮

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

  {

  delay(10000);

  P1 >>=1;

  P1 |=0x80;

  }

  for(i=0;i<16;i++)//查表可以简单的显示各种花样 实用性更强

  {

  delay(20000);

  P1=seg[i];

  }

  }

  }

  13.红绿灯

  #include

  bit red,green,yellow,turnred;

  code unsigned char tab[]=

  {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  //共阴数码管 0-9

  unsigned char Dis_Shiwei;//定义十位

  unsigned char Dis_Gewei; //定义个位

  void delay(unsigned int cnt)

  {

  while(–cnt);

  }

  main()

  {

  TMOD |=0x01;//定时器设置 10ms in 12M crystal

  TH0=0xd8;

  TL0=0xf0;

  IE= 0x82; //打开中断

  TR0=1;

  P1=0xfc;//红灯亮

  red =1;

  while(1)

  {

  P0=Dis_Shiwei;//显示十位

  P2=0;

  delay(300);//短暂延时

  P0=Dis_Gewei; //显示个位

  P2=1;

  delay(300);

  }

  }

  void tim(void) interrupt 1 using 1

  {

  static unsigned char second=60,count; //初值99

  TH0=0xd8;//重新赋值

  TL0=0xf0;

  count++;

  if (count==100)

  {

  count=0;

  second–;//秒减1

  if(second==0)

  { //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序

  if(red)

  {

  red=0;yellow=1;

  second=5;

  P1=0xF3;//黄灯亮5秒

  }

  else if(yellow && !turnred)

  {

  yellow=0;green=1;

  second=50;

  P1=0xCF;//绿灯亮50秒

  }

  else if(green)

  {

  yellow=1;green=0;

  second=5;

  P1=0xF3;//黄灯亮5秒

  turnred=1;

  }

  else if(yellow && turnred)

  {

  red=1;yellow=0;

  P1=0xFC;//红灯亮60秒

  second=60;

  turnred=0;

  }

  }

  Dis_Shiwei=tab[second/10];//十位显示值处理

  Dis_Gewei=tab[second%10]; //个位显示处理

  }

  }

激活谷谷主为您准备了激活教程,为节约您的时间请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/94191.html

(0)
上一篇 2024年 5月 26日
下一篇 2024年 5月 26日

相关推荐

  • l298n驱动器可用什么替代_l298n驱动模块怎么用

    l298n驱动器可用什么替代_l298n驱动模块怎么用电机驱动芯片-L298N介绍L298N,是一款接受高电压的电机驱动器,直流电机和步进电机都可以驱动。一片驱动芯片可同时控制两个直流减速电机做不同动作,在6V到46V的电压范围内,提供2安培的电流,并且具有过热自断和反馈检测功能。博主福利: 电子设计资料包(免费下载)L298

    2024年 5月 25日
  • 计算机组成原理白中英第六版课后题答案_计算机组成原理白中英第六版课后答案pdf

    计算机组成原理白中英第六版课后题答案_计算机组成原理白中英第六版课后答案pdf计算机组成原理课后习题答案(第六版 白中英版).docx计算机组成原理课后习题答案(第六版白中英版)计算机组成原理(第六版白中英版)是计算机科学与技术、电子信息工程及相关专业的重要教材,该书旨在介绍计算机的基本知识和技术,包括计算机的硬件组成

    激活谷笔记 2024年 6月 2日
  • 单片机查询方式是什么_单片机的查询方式

    单片机查询方式是什么_单片机的查询方式单片机学习之十:查询方式按键一、实验现象本文引用地址:http://www.eepw.com.cn/article/201609/310402.htm最右面的数码管初始显示0,每次按下外部按键K1执行加一,计数到九时重新回零。二、实验目的掌握读取外部按

    2024年 5月 27日
  • vscode与visual studio区别_visualstudio能写c吗

    vscode与visual studio区别_visualstudio能写c吗「好工具、高效率是新职人职场工作法则」,你有哪些工作提效的工具或方法?10 月 18 日「我的好物 100」微综艺首期上线,知乎答主 @洪泽鑫 分享道:「好工作、高效率是新职人职场工作法则」你还有什么高效的

    2024年 5月 16日
  • 哈夫曼树带权路径长度代码_求哈夫曼树的带权路径长度算法

    哈夫曼树带权路径长度代码_求哈夫曼树的带权路径长度算法哈夫曼树带权路径长度(WPL)计算概念路径:在一棵树中,从一个结点到另一个结点所经过的所有结点,被我们称为两个结点之间的路径路径长度:在一棵树中,从一个结点到另一个结点所经过的“边”的数量,被我们称为两个结

    2024年 5月 23日
  • pycharm用来干嘛_pycharm和python区别

    pycharm用来干嘛_pycharm和python区别pycharm和python的区别是什么?前言 PyCharm和Python是两个不同的东西。 Python是一种编程语言,是一种高级动态语言,被广泛用于Web开发、科学计算、人工智能等领域。 PyCharm 是一个Python

    2024年 5月 16日
  • python编程基础课程_零基础学python从入门到精通

    python编程基础课程_零基础学python从入门到精通python入门教程(非常详细),从零基础入门到精通,看完这一篇就够了前言 本文罗列了了python零基础入门到精通的详细教程,内容均以知识目录的形式展开。 01.python由来与发展介

    2024年 5月 15日
  • ubuntu 20.04无法进入桌面_ubuntu20.04崩溃后如何解决

    ubuntu 20.04无法进入桌面_ubuntu20.04崩溃后如何解决【解决】Ubuntu20.04启动后无法进入图形界面### 回答1:您好,如果您的Ubuntu 20.04无法进入图形界面,可能是由于以下原因之一:1. 显卡驱动问题:如果您的显卡驱动不兼容Ubuntu 20.04,可能会导致无法进入图形

    激活谷笔记 2024年 5月 8日
  • 如何用python将数据类型转换为字符串类型_如何用python将数据类型转换为字符串类型的方法

    如何用python将数据类型转换为字符串类型_如何用python将数据类型转换为字符串类型的方法Python数据类型转换详解目录1. Python的数据类型2. Python数据类型转换2.1 自动类型转换2.2 强制类型转换2.2.1 其他转字符串2.2.2 其他转数字类型2.2.3 其他转列表类型2.2.4 其他转元组类型2.2.5 其他转集合类型2.2.6 其他转字典类型总结1

    激活谷笔记 2024年 5月 22日
  • ubuntu1804安装ssh服务_ubuntu从镜像里面安装ssh

    ubuntu1804安装ssh服务_ubuntu从镜像里面安装ssh通过 SSH 命令行登录虚拟机¶通过 SSH 命令行登录虚拟机¶支持的虚拟机和客户端SSH 登录方式支持 Linux LXC 虚拟机和 Linux KVM 虚拟机。SSH 登录方式支持包括 Windows, macOS, Linux, iOS 和 Android 在内

    2024年 5月 10日
  • 分区表类型mbr与gp_分区表类型mbr与gpt

    分区表类型mbr与gp_分区表类型mbr与gpt固态硬盘分区表类型MBR与GUID怎么选?MBR和GUID的区别在解决“固态硬盘分区表类型MBR与GUID选哪个好?”这个问题之前,我们先来了解一下MBR和GUID的区别。MBR分区表:全称是Master Boot Record,即硬盘主引导记录分区表,只支持容量在

    2024年 5月 29日
  • 二叉排序树成功查找的时间复杂度_二叉排序树的查找的时间复杂度

    二叉排序树成功查找的时间复杂度_二叉排序树的查找的时间复杂度计算机/软工408考研数据结构总览如果觉得对你有帮助,欢迎点赞!408相关内容欢迎专栏:计算机/软工408考研知飞翀:408算法大题这样刷~0. 前言本篇文章旨在分析408中数据结构的考察内容、形式和重难点,帮助你打好有准备的仗。1. 数据结构在4

    2024年 5月 22日
关注微信