数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1974|回复: 20

[other] 想做一个单片机做的警示灯,求个程序~~

[复制链接]
发表于 2021-8-22 17:36:02 | 显示全部楼层 |阅读模式
本帖最后由 gdszyrx 于 2021-8-22 17:37 编辑

1脚 上电后即有输出,直到断电。3脚 受S1开关控制,当8脚为低时,3脚不输出,也会低电平。
输出方波就行,用NE556也可以,就是复杂点


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
发表于 2021-8-22 18:28:00 | 显示全部楼层
:dizzy:求人不如求己,这么简单的程序,arduino学个十分钟就能写出来。
回复 支持 反对

使用道具 举报

发表于 2021-8-23 18:30:50 | 显示全部楼层
my_diy 发表于 2021-8-22 18:28
求人不如求己,这么简单的程序,arduino学个十分钟就能写出来。

arduino  STC也能用么?
回复 支持 反对

使用道具 举报

发表于 2021-8-23 22:48:49 | 显示全部楼层
本帖最后由 ploestar 于 2021-8-24 17:59 编辑
  1. #include        <STC15Fxxxx.H>

  2. sbit KEY=P3^3;
  3. sbit T04=P3^4;
  4. sbit T50=P3^5;
  5.   u16 x,y;
  6. void Timer0Init(void)                //100毫秒@6.000MHz
  7. {
  8.         AUXR &= 0x7F;                //定时器时钟12T模式
  9.         TMOD &= 0xF0;                //设置定时器模式
  10.         TL0 = 0xB0;                  //设置定时初始值
  11.         TH0 = 0x3C;                  //设置定时初始值
  12.         TF0 = 0;                    //清除TF0标志
  13.         TR0 = 1;                    //定时器0开始计时
  14.         ET0 = 1;        //使能定时器0中断
  15. }

  16. void main()
  17. {
  18.         P3M1 = 0x00;
  19.         P3M0 = 0x30;
  20.         Timer0Init();
  21.         EA=1;
  22.         KEY=1;
  23.         while(1);
  24.         }
  25. void time0() interrupt 1
  26. {
  27.         x++;y++;
  28.         if(x>=4)  {T04=~T04;x=0;}
  29.         if(KEY)
  30.         {
  31.         if(y<500)  {T50=1;}
  32.         if(y>=500) {T50=0;}
  33.         if(y>=600)  y=0;
  34.   }
  35.         else
  36.         {
  37.           T50=0;
  38.           y=0;
  39.         }
  40.         }
复制代码


回复 支持 2 反对 0

使用道具 举报

发表于 2021-8-24 00:07:00 | 显示全部楼层
0.S4高0.4S低,还有0.2S去哪里:lol:
回复 支持 反对

使用道具 举报

发表于 2021-8-24 02:19:35 | 显示全部楼层
40560335 发表于 2021-8-24 00:07
0.S4高0.4S低,还有0.2S去哪里

呃,可能是既不高也不低,就像薛定谔猫一样。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-24 07:58:31 | 显示全部楼层

我是小白,这个代码能实现我上面说的功能?有注释就好了
回复 支持 反对

使用道具 举报

发表于 2021-8-24 08:59:45 | 显示全部楼层
人家楼主要1脚上电即输出1.25Hz的脉冲不行吗?:lol:
回复 支持 反对

使用道具 举报

发表于 2021-8-24 11:43:34 | 显示全部楼层

程序简单明了, :praise:
你这个是什么开发环境?
第六行的u32如果是在Keil开发环境应该有预处理语句吧?
第一行的库函数<STC15Fxxxx.H>是用STC官方提供的库吧?
//100毫秒@6.000MHz 你这个程序烧写时IRC频率选择6MHz?
回复 支持 反对

使用道具 举报

发表于 2021-8-24 12:21:45 来自手机浏览器 | 显示全部楼层
mmxx2015 发表于 2021-8-24 02:19
呃,可能是既不高也不低,就像薛定谔猫一样。

又不是非得凑1秒,0.4循环,汽车转向灯见过撒
回复 支持 反对

使用道具 举报

发表于 2021-8-24 12:31:45 来自手机浏览器 | 显示全部楼层
gdszyrx 发表于 2021-8-24 07:58
我是小白,这个代码能实现我上面说的功能?有注释就好了

能不能用,自己验证不就好了,要注释什么,就1个定时器,定时100毫秒,stcisp软件生成的,计数4次就是400毫秒,p34翻转一次状态,500次*100毫秒,就是50秒。都是最基本的东西,如果你只是要用这个,能用就完事了,如果是想学习,建议找个教程学习,入个门就能看懂
回复 支持 1 反对 0

使用道具 举报

发表于 2021-8-24 15:19:24 来自手机浏览器 | 显示全部楼层
xiaoyao_mdj 发表于 2021-8-24 11:43
程序简单明了,  
你这个是什么开发环境?
第六行的u32如果是在Keil开发环境应该有预处理语句吧?

u32直接换成int就行。头文件用stc15.h就可以了。定时时间用stc下载软件里有生成的。stc15系列的都可以用内部晶振,一般都有用11.0592MHz
回复 支持 反对

使用道具 举报

发表于 2021-8-24 16:08:15 | 显示全部楼层

真是好人啊。手速也快。
回复 支持 反对

使用道具 举报

发表于 2021-8-24 17:49:37 | 显示全部楼层
本帖最后由 ploestar 于 2021-8-24 17:52 编辑
xiaoyao_mdj 发表于 2021-8-24 11:43
程序简单明了,  
你这个是什么开发环境?
第六行的u32如果是在Keil开发环境应该有预处理语句吧?

u32随便写的,实际u16就行了,也就是unsigned int。这个程序用int也行,没啥影响。这些STC15Fxxxx.H里面都有
用STC15.H也行 ,少了部分宏定义,一般没啥影响
是的,6Mhz烧录
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-24 18:27:04 | 显示全部楼层
ploestar 发表于 2021-8-24 12:31
能不能用,自己验证不就好了,要注释什么,就1个定时器,定时100毫秒,stcisp软件生成的,计数4次就是400 ...

编译时出现这个:SSD是表示闪烁灯的缩写



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 2021-8-24 19:40:59 | 显示全部楼层
gdszyrx 发表于 2021-8-24 18:27
编译时出现这个:SSD是表示闪烁灯的缩写

没有头文件,烧录工具里面有,添加进去
回复 支持 反对

使用道具 举报

发表于 2021-8-24 19:47:37 | 显示全部楼层
本帖最后由 ploestar 于 2021-8-24 19:49 编辑


用这个头文件,前面几行代码修改一下



也可以去官网下STC15Fxxxx.h的头文件

这里也行,

不过,你这个编译器是啥?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-24 20:05:39 | 显示全部楼层
本帖最后由 gdszyrx 于 2021-8-24 20:10 编辑
ploestar 发表于 2021-8-24 19:47
用这个头文件,前面几行代码修改一下

论坛里下的KeilUV2绿色版的,新版的Keil编译后HEX文件会变大,老版本的不会

用新的Keil5也会报错,头文件添加了,u32也改成int32,然后显示:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 2021-8-24 20:07:40 | 显示全部楼层
修改,u32,改成int ,或者unsigned int
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-24 20:11:08 | 显示全部楼层
本帖最后由 gdszyrx 于 2021-8-24 20:38 编辑
ploestar 发表于 2021-8-24 20:07
修改,u32,改成int ,或者unsigned int

没用啊,显示这个:


后来找了下,原来是多了两个XX,把头文件命名为STC15FXX.H并保存到源文件夹就行了。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-28 10:45 , Processed in 0.374401 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表