本次设计便携式商品条形码识别器,由四大模块组成。激光扫描,单片机,12864液晶显示器,电源模块。其工作的大致原理为,激光扫描到条形码并进行存储。同时蜂鸣器开始鸣响,然后扫描器将数据信息通过串口通信传输给单片机,单片机收到信息后会与事先设定好的程序进行对比,并将对比后的信息传输给12864液晶显示器。显示器也会根据事先设计好的程序进行相应的显示格式,并完成工作。
单片机源程序如下:
- #include
- #include
- #include
- #include
- #include
- #include
- #define uchar unsigned char
- #define uint unsigned int
- uint table1=0;
- unsigned char num,flag,a,i,j;
- uchar k;
- //uchar code table[]="I get ";
- uchar table_a[13]={"0123456789012"};
- uchar table_b[11]={"0123456789"};
- uchar code pin1[] = {"产品名称:"};
- uchar code pin2[] = {"产品价格:"};
- uchar code pin3[] = {" 元"};
- uchar code dis0[] = {"0123456789."};
- uchar code dis1[] = {"碧禹饮用水 "};
- uchar code dis2[] = {"心相印卫生纸"};
- uchar code dis3[] = {"小露珠抽纸 "};
- uchar code dis4[] = {"东立A4纸 "};
- uchar code dis5[] = {"美汁源可乐 "};
- uchar code dis6[] = {"便携条形码识别器"};
- uchar code s1[11] = {"36402200042"}; //碧禹应用水
- uchar code s2[11] = {"22868289158"}; //心心相印纸
- uchar code s3[11] = {"34704601062"}; //小露珠抽纸
- uchar code s4[11] = {"23608677129"}; //东立A4纸
- uchar code s5[11] = {"56416200166"}; //美汁源
- uchar code s6[11] = {"56416200166"}; //美汁源
- void change();
- void duibi();
- char cmp(uchar *str,uchar *str1);
- void init()
- {
- TMOD=0x20;
- TH1=0xfd;
- TL1=0xfd;
- TR1=1;
- REN=1;
- SM0=0;
- SM1=1;
- EA=1;
- ES=1;
- }
- void main()
- {
- init();
- Delay400Ms(); //启动等待,等LCD讲入工作状态
- LCDInit(); //LCM初始化
- Delay5Ms(); //延时片刻(可不要)
- DisplayListChar(0,0,dis6); //显示字库中的中文数字
- DisplayListChar(0,2,pin1); //显示字库中的中文数字
- DisplayListChar(0,4,pin3); //显示字库中的中文数字
- DisplayListChar(0,4,pin2); //显示字库中的中文数字
- while(1)
- {
- // change()
- duibi();
- switch(num)
- {
- case 0:DisplayListChar(0,3,dis1);lcd_pos(3,5);WriteDataLCD(dis0[0]);WriteDataLCD(dis0[3]);break;
- case 1:DisplayListChar(0,3,dis2);lcd_pos(3,5);WriteDataLCD(dis0[0]);WriteDataLCD(dis0[1]);break;
- case 2:DisplayListChar(0,3,dis3);lcd_pos(3,5);WriteDataLCD(dis0[0]);WriteDataLCD(dis0[3]);break;
- case 3:DisplayListChar(0,3,dis4);lcd_pos(3,5);WriteDataLCD(dis0[2]);WriteDataLCD(dis0[0]);break;
- case 4:DisplayListChar(0,3,dis5);lcd_pos(3,5);WriteDataLCD(dis0[0]);WriteDataLCD(dis0[4]);break;
- }
- /* lcd_pos(0,0); //设置显示位置为第二行的第1个字符
- for(i=0;i<11;i++)
- {
- k=table_b[i]-0x30;
- // k=s1[i]-0x30;
- WriteDataLCD(dis0[k]); //
- Delay5Ms();
- } */
- }
- }
- void ser() interrupt 4
- {
- RI=0;
- table_a[table1]=SBUF;
- if(table_a[0]==0x36)
- table1++;
- if(table1>12) table1=0;
- }
- void duibi()
- {
- for(i=0;i<13;i++)
- {
- table_b[i]=table_a[i+2];
- }
- if(cmp(table_b,s1)==1) num=0;
- if(cmp(table_b,s2)==1) num=1;
- if(cmp(table_b,s3)==1) num=2;
- if(cmp(table_b,s4)==1) num=3;
- if(cmp(table_b,s5)==1) num=4;
- }
- char cmp(uchar *str,uchar *str1)
- {
- int d,c=0;
- for(d=0;d<11;d++)
- {
- if(str[d]!=str1[d])
- {c=0;break;}
- else c=1;
- }
- return c;
- }
复制代码
全部资料51hei下载地址:
文档 电路 程序.zip
(977.27 KB, 下载次数: 95)
|