陈瑞陈虎 发表于 2012-11-19 10:16
我想知道 学这个 需要哪些知识基础?
1、数字电路知识,比如常用的74系列IC你得能看得懂datasheet ,明白寄存器、反相器、等基础的东东。
2、如果有基本的模拟电路知识那就最好了。
3、对电脑有一定的认识,比如硬件系统构成大概原理、什么叫操作系统、什么叫应用软件、他们之前的关系是什么?
4、要有一定的逻辑思维能力,因为程序的好与坏就是与编程者的逻辑能力有关。
5、要有足够的耐心,耐得住寂寞,守得住孤独。
6、坚持一年,你就可以做项目了。
另:我不太清楚你的基础如何,记住,兴趣最重要。其它的都是浮云。
我的级别不够 高,加好友也加不了,发言也受限,希望理解。
climber 发表于 2012-11-19 11:22
1、数字电路知识,比如常用的74系列IC你得能看得懂datasheet ,明白寄存器、反相器、等基础的东东。
2、如 ...
下面是我的情况 你看看学这个行不行
高中毕业 从事制冷维修4年了 会修理普通单项和三相电动机 有两年的水电安装经验 基本的电子元件会测量 热爱电脑 偶尔给人组装电脑 系统维护什么的 模拟电子技术会一点 不是很熟
陈瑞陈虎 发表于 2012-11-19 13:27
下面是我的情况 你看看学这个行不行
高中毕业 从事制冷维修4年了 会修理普通单项和三相电动机 有两年 ...
完全可以,有高中的知识足了。加油啊,不要再犹豫。
你懂的比我多,呵呵,对于制冷、电机我还真是外行,以后向你学习。呵呵
本帖最后由 climber 于 2012-12-12 20:21 编辑
haijiang 发表于 2012-12-10 10:34
一直在网上看视频,学的很乏味,想做个东西放在桌子上,给自己增加点信心,鼓励一下自己。手头有些元件,一 ...
这个程序网上很多,只是你没有看到,给你一个我项目中用的吧,你把引脚部分全部改为你的IO口就行了。附件是一个头文件,你包含进去就行了,希望你成功。
本帖最后由 climber 于 2012-12-13 21:56 编辑
haijiang 发表于 2012-12-12 21:24
非常感谢,可我的控制器是KS0108啊,你这个是7920
呵呵 ,那是你说错了,因为你前面写着:液晶的控制器是KS0108
KS0108 是不带字库的,驱动起来有点麻烦,主要是指字库初次不好理解。
7920 是带字库的,这个最容易了。
climber 发表于 2012-12-13 17:20
呵呵 ,那是你说错了,因为你前面写着:液晶的控制器是KS0108
KS0108 是不带字库的,驱动起来有点麻 ...
是比较麻烦,可是我手头只有这一块啊
帮忙看看这个程序,网上找的,但编译是报错。看看错的多吧,要是不太麻烦刚我改一下,谢谢了
climber 发表于 2012-12-13 22:47
呵呵,我也没有时间啊,如果你提一些问题讨论还可以,如果你让你帮你改程序,我时间不够,因为我平时也较忙 ...
哦,那帮我看看这个文件里的东西,他是用什么软件写的程序,我从keil里打开l怎么全是一段一段的呢?怎么才能把他放到一起去呀!谢谢
climber 发表于 2012-12-15 21:02
你解压后,看文件扩展名,如果是****.c 或者*****.h的留下,其它的都可以删除了,有一些是是KEIL的工程文件 ...
明白,是我之前没表达清楚,我自己用keil写程序时只会产生一个c文件,用记事本打开后,它里面包含了完整的程序。我(40楼)贴出来的那个是从网上找的,它里面包含了好几个c文件和h文件,打开后,一个里面只是一部分程序,并不完整。感觉是把一个完整的程序装在了几c个文件里面。这是怎么回事啊?我主要是想把他原来程序的位定义修改一下,然后再重新编译。可是他写的程序没在一个文件里面,我没办法修改和重新编译。
苏焕美 发表于 2013-1-25 17:07
我正在学AVR,请问入门要从哪里开始,!
如果你有51的基础那就快了,如果没有51的基础也不要怕,我推荐你学ATmega16 这个片子,因为功能较全面一点,封装有DIP40 的,自已做试验也方便焊接。学会ATmega16整个AVR系列的都通了。
1191727499 发表于 2013-1-27 13:40
我的学问不高,能行吗?
单片机并不需要很高的学问,只是你要对一些基础的东西要明白,否则理解起来有点困难,如果没有人教的话。因为是自学,所以有很多东西没有像学校那样系统的学习,所以开始的时候会难一点,不过不要怕。如果你对计算机还不是很了解的话,建议还是先了解一下计算机的构成及原理,这样再去学会好学一点。知识都是触类旁通的,关键看应用。最好能多学一点E文,关要有习惯看E文的DATASHEET,这个很重要。
周凯乐 发表于 2013-3-11 18:52
有stc资料吗?用keil4开发stc需要准备哪些软硬件?
STC资料很多啊,你上网搜“STC深圳宏晶”上官网有很多DATASHEET,具体的使用跟51是差不多的,只是有一些特殊的寄存器有点区别。如果用KEIL开发的话,你要有一个官方的下载器,当然你也可以自制一下,买的话要50元钱吧,建议买,不要浪费时间还有时不稳定。如果再搭一个试验平台就可以开工了,呵
你好楼主本人是初中毕业,电工干了有五六年,家电维修干了三年了,在技校学计算机维修学了两年,PLC编程电器维修都没有问题。PLC只要懂得电工电路图稍加学习即可完全掌握PLC,我也看过一些郭天祥的一些书籍,看着看着就懵了,单片机的数字电路模拟电路及外围电路硬件肯定是没有问题的,就是写程序就不行了,全是英语啊 本人不懂得英语啊,怎么学习呢 如何学习呢 可以学会C吗?
重点概念:PLC是由单片机等组成的应用系统,单片机应用电路可完成或替代PLC的使用功能,而PLC则不可替换单片机,PLC能组成系统实现自动控制功能,而单片机不仅可实现自动控制功能,更可设计或制造出PLC。
简单点说: PLC是单片机做的
请教,在做一个单键自锁开关(用的STC15F104W),按一下输出高电平,再按一下输出低电平(变成低电平时,延时10秒按键才有效)。
下面的代码有错误,还有延时代码也是复制过来的,看不懂
。
要怎么修改才能达到上面的要求,谢谢老师!
#include <STC15.h>
sbit K1 =P3^2 ; //按键
sbit JDQ=P3^3 ; //继电器
void delay() //延时函数
{ unsigned char i,j;
for(i=0;i<250;i++)
{
for(j=0;j<200;j++);
}
}
void main()
{
JDQ=0;
while(1);
{
if (K1==0) //
{
delay();
if (K1==0)
{
JDQ=~JDQ;
}
while(!K1);
else
JDQ=0;
}
}
- #include <STC15.h>
- #define kRelay_on 0 // 定义继电器打开值
- sbit K1 = P3 ^ 2; //按键
- sbit JDQ = P3 ^ 3; //继电器
- void delay(void) //延时函数
- {
- unsigned char i, j;
- for (i = 0; i < 250; i++) {
- for (j = 0; j < 200; j++) {
- ;
- }
- }
- }
- void delay_ms(unsigned int uiNumber) {
- while(uiNumber) {
- uiNumber--;
- // 这里是延时1ms函数内容
- delay();
- }
- }
- void main(void) {
- bit flagJDQ = !kRelay_on;
- JDQ = flagJDQ;
- while (1) {
- if (flagJDQ != JDQ) {
- if (JDQ == !kRelay_on) {
- delay_ms(10000);
- }
- flagJDQ = JDQ;
- } else {
- if (K1 == 0) {
- delay();
- if (K1 == 0) {
- JDQ = ~JDQ;
- }
- while (!K1) {
- }
- }
- }
- }
- }
复制代码
随便写了个简单例子,仅供参考。完整的写法是用定时器定时1秒,然后在循环中累计计数,就不用一直等待10秒。
本帖最后由 爱电器维修 于 2020-3-16 15:54 编辑
你好。我学单片机不是很好,现向你请教。想用1602LCM做显示的跑表来控制电源接通和断开还有用单片机设定电流和显示,在编程时用按键进行功能转换,设定时间秒和毫秒的数值怎样设计这个程序?
下面是我写的程序单就是不能转换status已设为全局变量。后面的调整大小还不知怎样和它连接请多多指教。
void set_display(void)
{
if(P3==0xef)
{
status++;
if(status>7){status=0;}
}
}
/******************************************************************************************/
void main(void)
{
InitLcd();
set_display();
switch(status)
{
case 1
isplayListChar(0,0,str0);
DisplayListChar(0,1,str1);delay(100); break;
case 2
isplayListChar(0,0,str2);
DisplayListChar(0,1,str3);delay(100);break;
default : break;
}
}