led流水灯的视频呵呵:
	
	
牛刀小试6.4 步进电机循环来回转动:
	
代码如下、如有不足,麻烦指正!
#include<stc89.h>
sbit mota = P1^5;
sbit motb = P1^6;
sbit motc = P1^7;
sbit motd = P3^5;
unsigned int n=1,x=0;
void delay(unsigned int t);
void right();
void left();
void delay(unsigned int t)    //延时函数
{
 unsigned int i,j;
 for(i=0;i<t;i++)
  for(j=0;j<114;j++);
}
void right()		        //反转函数
{
 while(x++!=500)
 {
 mota=0;
 motb=1;
 motc=1;
 motd=1;
 delay(n);
 mota=0;
 motb=0;
 motc=1;
 motd=1;
 delay(n);
 mota=1;
 motb=0;
 motc=1;
 motd=1;
 delay(n);
 mota=1;
 motb=0;
 motc=0;
 motd=1;
 delay(n);
 mota=1;
 motb=1;
 motc=0;
 motd=1;
 delay(n);
 mota=1;
 motb=1;
 motc=0;
 motd=0;
 delay(n);
 mota=1;
 motb=1;
 motc=1;
 motd=0;
 delay(n);
 mota=0;
 motb=1;
 motc=1;
 motd=0;
 delay(n);
 }
}
void left()				    //正转函数
{
 while(x++!=500)
 {
 motd=0;
 motc=1;
 motb=1;
 mota=1;
 delay(n);
 motd=0;
 motc=0;
 motb=1;
 mota=1;
 delay(n);
 motd=1;
 motc=0;
 motb=1;
 mota=1;
 delay(n);
 motd=1;
 motc=0;
 motb=0;
 mota=1;
 delay(n);
 motd=1;
 motc=1;
 motb=0;
 mota=1;
 delay(n);
 motd=1;
 motc=1;
 motb=0;
 mota=0;
 delay(n);
 motd=1;
 motc=1;
 motb=1;
 mota=0;
 delay(n);
 motd=0;
 motc=1;
 motb=1;
 mota=0;
 delay(n);
 }
}
void main()
{
 while(1)
 {
 x=0;
 left();
 delay(10);
 x=0;
 right();
 delay(10);
 }
}
	
牛刀小试7.3数码管最低位显示'E'
做的时候参考了教程、然后把0-f都给定义了。
	
	
	
代码如下、请指教哈哈
#include<stc89.h>
code unsigned char segment[] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e}; 
                                //0到f花样,其中a为10、b为11、类推
code unsigned char select[] = {0xff,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};  
unsigned char p=0; 			   
sbit hc595st=P0^4;
sbit hc595out=P2^3;
sbit hc595dat=P0^2;
void hc595write(unsigned char dat);
void led(unsigned int x,unsigned char n,unsigned char dp);
void delay(unsigned int time);
void error();	             
void error()  //错误显示函数
{
led(14,5,0);
led(10,4,0);
led(10,3,0);
led(0,2,0);
led(10,1,0);
}
void delay(unsigned int time)  //延时函数
{
 unsigned int i,j;
 for(i=0;i<time;i++)
  for(j=0;j<2;j++);
}
void hc595write(unsigned char dat)	  // 写入数据
{
 unsigned char m;
 hc595out=0;
 for(m=0;m<8;m++)
 {
  hc595st=0;
  if(0x80&dat)
   hc595dat=1;
  else
   hc595dat=0;
   hc595st=1;
   delay(3);
   dat<<=1;
 }
}
void led(unsigned int x,unsigned char n,unsigned char dp)  //显示(数码,位数,是否小数点)
{
 if((x<16)&&(x>=0)&&(n<9)&&(n>=0))	//判断出错
 {
 if(dp!=0)
 dp=segment[x];
 else
 dp=segment[x]|0x80;
 hc595write(dp);
 hc595write(select[n]);
 hc595out=1;
 delay(1);
 hc595out=0;
 delay(1);
 }
 else
 p=1;
}
void main()
{
while(1)
{
 if(p)
  error();
 else
 led(14,1,0);	//最低位显示”E“
}
}
	
牛刀小试13.3:在 LCD1602 的第一行显示“Hello!”,第二行显示“The world!”
调试了一晚、参考了一些资料、然后自己改改、弄了个头文件、以后要用到1602就比较方便了,共享给大家哈哈,不足指出、麻烦指出!多谢!
	
	
	
以下是主程序:
#include<stc89.h>
#include<1602.h>
void main(void)
{
code uchar *dat="Hello!";
code uchar *dats="The World!";
lcdinit();
DisplayListChar(0,0,dat);
DisplayListChar(0,1,dats);
while(1);
}
	头文件要不要来个回复可见呢
——回复可见内容——
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |