本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
学习单片机有一段时间了,下面分享一下个人的学习心得,与单片机初学者共勉
由于没有购买学习板,所以在网下下载了个单片机仿真软件,这样就省去了有些没有硬件的烦恼和条件!好,下面是来自百度百科对这个仿真软件的简介……
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上着名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
下面是程序
设计一个数字时钟,显示范围为00:00:00~23:59:59。通过2个开关进行控制,其中开关K1用于调时,K2用于调分。
[**********************************************************************
本程序是一个简易电子时钟,精度一般,采用单片机内部定时器定时,
具有时,分,秒的显示功能
并具有时,分的调试功能。调试时,按一次,扬声器发出警报一次
程序分为延时,定时,显示,按键四个模块,程序较为简单,易理解![
[***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code duan[]=
{0xc0,0xF9,0xA4,0xB0,0x99, //数字 0-4
0x92,0x82,0xF8,0x80,0x90}; // 数字5-9
uchar shi,fen,miao; //变量时,分,秒
uchar time; // 统计中断次数
sbit keys=P1^0; //时按键校时
sbit keyf=P1^3; //分按键校时
sbit led=P1^7; //led灯表示扬声器
void init(); //初始化程序声明
void saomiao();//按键扫描程序声明
void delay(uint ms);//延时程序声明
void display(uchar shi,uchar fen,uchar miao); //显示程序声明
void main() //主程序
{
init();
while(1)
{
display(shi,fen,miao);
saomiao();
}
}
void init() //初始化程序
{
EA=1;ET0=1;TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
shi=0;
fen=0;
miao=0;
TR0=1;
}
void timer0() interrupt 1 //定时器中断程序
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if(time==20)
{
time=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)shi=0;
}
}
}
}
void delay(uint ms) //延时子程序
{
uchar y;
while(ms--)
for(y=0;y<113;y++);
}
void display(uchar shi,uchar fen,uchar miao)// 显示程序
{
P3=0x40;
P2=duan[miao/10];
delay(1);
P3=0x80;
P2=duan[miao%10];
delay(1);
P3=0x08;
P2=duan[fen/10];
delay(1);
P3=0x10;
P2=duan[fen%10];
delay(1);
P3=0x01;
P2=duan[shi/10];
delay(1);
P3=0x02;
P2=duan[shi%10];
delay(1);
P3=0x04;
P2=0xBF;//表示字符 -
delay(1);
P2=0xBF;
P3=0x20;//表示字符 -
delay(1);
}
void saomiao() //按键设置程序
{
if(keys==0)
{
delay(10); //消除按键抖动
if(keys==0)
{
shi++;
led=0; //报警信号,按键按下为亮 跳起灭
if(shi==24)
shi=0;
while(keys!=1);//若按键为0则进入死循环
}
}
if(keyf==0)
{
delay(10);
if(keyf==0)
{
fen++;
led=0;
if(fen==60)
fen=0;
while(keyf!=1);//当按键拿起时跳出循环
}
}
led=1;
}
挺简单的一个程序,其实如果想想你能认认真真看书,入门两三天后便可写出一个电子时钟!
呵呵,想象现在自己也算是实现了小个小小的目标!
[ 此帖被小子在西藏在2011-06-16 13:41重新编辑 ] |
|