A. pic是什么意思
pic
开放分类: 嵌入式、集成电路、单片机、数字电路、自动控制
PIC系列单片机简介
一、引言
据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。这说明单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。
当今单片机厂商琳琅满目,产品性能各异。针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。同时,这种单片机指令多为单字节,程序存储器的空间利用率大大提高,有利于实现超小型化。属于CISC结构的单片机有Motorola和M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列等;属于RISC结构的有Intel8051系列、Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。一般来说,控制关系较简单的小家电,可以采用RISC型单片机;控制关系较复杂的场合,如通讯产品、工业控制系统应采用CISC单片机。不过,RISC单片机的迅速完善,使其佼佼者在控制关系复杂的场合也毫不逊色。
B. 请问,摇摇棒的设计思路,和pic单片机的c程序。谢谢!
以下是详细说明:
图形显示的原理:
利用人眼的视觉暂留效应,使手在摆动到不同位置的时候,让位于一条直线上的LED显示二维图像的不同的列,实现图形扫描显示。
物理机制:
当我们在摆动手臂的时候,短时间内摆动位置和左右幅度不会有太大变化,利用我们手臂的这个运动规律,只要能得到棒从一侧摆动到另一侧的时间,然后把这个时间分成N份,然后在每一份的时间里显示不同的花样就能实现图形的显示。当我们在摆动手臂的时候,并不能预先得知此次摆动需要的时间,怎样得到从一侧摆动到另一侧的时间呢?
再想想,短时间内我们手臂的摆动频率也不会有特别大的变化,我们只要能得到前一次摆动所用的时间,然后用这个时间近似得到下一次摆动所需要的时间,然后分N份就可以了。得到一次摆动所需的时间的任务由光遮断器完成,在棒上装一个可以摆动的用来遮挡光遮断器光线的细杆,粗细比光遮断器的狭缝稍宽,我用的是整流桥焊后剪下的一段管脚。每左右摆动一次这个杆就会通过一次光遮断器,使单片机产生一次中断,两次中断之间的时间就是想要得到的时间,实现这个功能用掉2051的一个定时器T0和外部中断INT0。然后用2051的另一个定时器T1,其定时时间是T0的N分之一,每次中断依次显示一列,就是照片上的效果。
再细想一下,手臂摆动的频率大于2Hz的时候才大概能由视觉暂留看出图形,再快也不过十几Hz,由T0为16位定时器的最长计时时间得到2051的时钟频率1MHz最合适,还有遮挡用的细杆的粗细也可以大概估算,使其不会对计时精度产生太大影响。
所用元件:
AT89C20518元
高亮LED共8个3.6元
电池盒0.5元
单面万用板8元可以裁成3块,做3个摇棒
陶瓷谐振器1元
光遮断器2元
电阻电容导线2元
外壳*0.7元可以裁成2块
可选元件:
电源开关1元
总成本不超过20元
*外壳我用在家乐福买的半透明文件夹卷成的
此电路电路非常简单,代码短,但是用到了2051的外部中断编程和T0、T1定时器编程,非常适合初学者练习。我制作这个玩具花费了两个晚上的时间。此电路和程序还有扩展改进的空间,如在长时间不摆动的情况下可以使单片机进入省电模式,显示不仅限于对称图片等,大家可以试试。
以下是源程序:
/*************************************************************************/
//---------------
//LED显示摇棒
//---------------
//作者:nim于http://www.21icbbs.com2005-1-7
//
//email:[email protected]
//
//本设计版权归作者所有,请勿擅自用于商业目的,转载请注明作者及出处
/*************************************************************************/
#include<reg51.h>
#defineSEG17//每帧图片分成17列来显示
#defineINTERVAL20//每幅图片在左右摇摆20次后换下一幅
typedefunsignedcharuchar;
typedefunsignedintuint;
codecharpattern[17][3]={//3幅图片的字模
{0xff,0xff,0xff},
{0xff,0xff,0xff},
{0xff,0xff,0xff},
{0xff,0x9f,0xff},
{0xff,0x6f,0xf9},
{0xff,0x77,0x65},
{0xfe,0xbb,0x1e},
{0x7e,0xdd,0xfe},
{0x00,0xee,0xfe},
{0x7e,0xdd,0xfe},
{0xfe,0xbb,0x1e},
{0xff,0x77,0x65},
{0xff,0x6f,0xf9},
{0xff,0x9f,0xff},
{0xff,0xff,0xff},
{0xff,0xff,0xff},
{0xff,0xff,0xff},
};
ucharphase,th1,tl1,index,count;
main()
{
EA=0;
EX0=1;
ET1=1;
PX0=1;
IT0=1;
TMOD=0x11;
index=0;
EA=1;
while(1)
{
}
}
voidInt0_Handle(void)interrupt0using2
{
uintt0_time;
TR0=0;
TR1=0;
TF1=0;
t0_time=TH0<<8|TL0;
TL0=0;
TH0=0;
TR0=1;
t0_time=65535-t0_time/SEG;
th1=t0_time/256;
TH1=th1;
tl1=t0_time%256;
TL1=tl1;
if(count<3*INTERVAL){//3幅图片循环
count++;
}
else{
count=0;
}
index=count/INTERVAL;
if(th1!=0xff||tl1!=0xff){//如果摆动特别慢,定时器溢出就不显示
phase=0;
TR1=1;
}
else{
TR1=0;
}
}
voidTimer1(void)interrupt3using3
{
if(phase<SEG)//17段依次显示
{
P1=pattern[phase][index];
phase++;
TH1=th1;
TL1=tl1;
}
}
C. 请问8位的pic单片机里,有自带LCD驱动的没
PIC16F917/916/914/913/946
PIC18F6390/6490/8390/8490/85J90
这些八位的PIC都带LCD驱动!
你说的能生成“底层驱动的软件”是举悔什么东东?是找在计算机上的点阵取模软件还是要做LCD显示的程序?如果是后者那就得你自己写了。
bu:
你也知道这是8位单片机,一般只有ARM那种编程很复杂需要API函数库类库调用的芯片才有这玩样。我没见过PIC八位的MCU有这东东蚂羡。它比起ARM之类的在lcd应闷答拍用上面没那么复杂和高级。普通的C编程就能实现。要用8位的MCU连接LCD还是下点功夫写程序把!